feat(chat): custom DragonX emoji via the :drgx: shortcode
Add a DragonX custom emoji to chat. The emoji picker gains a DragonX tile (first cell) that inserts the text ":drgx:"; message bodies containing it render the mark inline via layoutChatBodyRich, which flows text words + the emoji image with word wrap (plain bodies keep the tighter layoutChatBody path, so normal messages are unaffected). Other clients simply show the literal ":drgx:" text — a portable encoding with graceful degradation. The emoji is the DragonX SVG rasterized once at fixed brand colors (crimson body, white detail) via LoadTextureFromSvg — theme-independent so it looks identical for sender and receiver — exposed as App::getDrgxEmojiTexture(). Emoji insertion is factored into one insertToken() helper (space-prepend + on-chain byte cap), shared by the DragonX tile and the Unicode emojis. Drag-to-select text is skipped on ":drgx:" messages (their inline layout doesn't match the plain-text hit-test geometry); right-click "copy" still copies the whole message. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -479,6 +479,10 @@ public:
|
||||
// Coin logo texture accessor (DragonX currency icon for balance tab)
|
||||
ImTextureID getCoinLogoTexture() const { return coin_logo_tex_; }
|
||||
|
||||
// DragonX custom chat emoji (the ":drgx:" shortcode) — the mark in fixed brand colors, lazily
|
||||
// rasterized. Used by the emoji picker tile + inline in chat bubbles.
|
||||
ImTextureID getDrgxEmojiTexture() const { return drgx_emoji_tex_; }
|
||||
|
||||
/**
|
||||
* @brief Reload theme images (background gradient + logo) from new paths
|
||||
* @param bgPath Path to background image override (empty = use default)
|
||||
@@ -1085,6 +1089,8 @@ private:
|
||||
bool logo_loaded_ = false;
|
||||
bool logo_is_dark_variant_ = true; // tracks which variant is currently loaded
|
||||
ImU32 logo_accent_ = 0; // theme accent the SVG logo was last rasterized with (re-render on change)
|
||||
ImTextureID drgx_emoji_tex_ = 0; // ":drgx:" custom chat emoji (fixed brand colors) — rasterized once
|
||||
int drgx_emoji_w_ = 0, drgx_emoji_h_ = 0;
|
||||
|
||||
// Coin logo texture (DragonX currency icon, separate from wallet branding)
|
||||
ImTextureID coin_logo_tex_ = 0;
|
||||
|
||||
Reference in New Issue
Block a user