summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorouwou <26526779+ouwou@users.noreply.github.com>2021-01-17 23:24:44 -0500
committerouwou <26526779+ouwou@users.noreply.github.com>2021-01-17 23:24:44 -0500
commit4fd7f9d75e4edd42f559fc8653f8f82bf275e865 (patch)
treee0c9c1c2b7d2002d48bc094601424f3729db59b7
parent744e42892d3da3247df4e04f0d97e93e6d50799a (diff)
downloadabaddon-portaudio-4fd7f9d75e4edd42f559fc8653f8f82bf275e865.tar.gz
abaddon-portaudio-4fd7f9d75e4edd42f559fc8653f8f82bf275e865.zip
put tooltips on reactions
-rw-r--r--components/chatmessage.cpp6
-rw-r--r--emojis.cpp8
-rw-r--r--emojis.hpp2
3 files changed, 16 insertions, 0 deletions
diff --git a/components/chatmessage.cpp b/components/chatmessage.cpp
index 0981448..99926fb 100644
--- a/components/chatmessage.cpp
+++ b/components/chatmessage.cpp
@@ -475,6 +475,10 @@ Gtk::Widget *ChatMessageItemContainer::CreateReactionsComponent(const Message &d
// image
if (is_stock) { // unicode/stock
+ const auto shortcode = emojis.GetShortCodeForPattern(reaction.Emoji.Name);
+ if (shortcode != "")
+ ev->set_tooltip_text(shortcode);
+
const auto &pb = emojis.GetPixBuf(reaction.Emoji.Name);
Gtk::Image *img;
if (pb)
@@ -484,6 +488,8 @@ Gtk::Widget *ChatMessageItemContainer::CreateReactionsComponent(const Message &d
img->set_can_focus(false);
box->add(*img);
} else { // custom
+ ev->set_tooltip_text(reaction.Emoji.Name);
+
auto img = Gtk::manage(new LazyImage(reaction.Emoji.GetURL(), 16, 16));
img->set_can_focus(false);
box->add(*img);
diff --git a/emojis.cpp b/emojis.cpp
index e0bae2a..bdf3d35 100644
--- a/emojis.cpp
+++ b/emojis.cpp
@@ -25,6 +25,7 @@ bool EmojiResource::Load() {
if (shortcode_strlen > 0) {
std::fread(shortcode.data(), shortcode_strlen, 1, m_fp);
m_shortcode_index[shortcode] = pattern_hex;
+ m_pattern_shortcode_index[pattern_hex] = shortcode;
}
std::fread(&len, 4, 1, m_fp);
@@ -120,6 +121,13 @@ void EmojiResource::ReplaceEmojis(Glib::RefPtr<Gtk::TextBuffer> buf, int size) {
}
}
+std::string EmojiResource::GetShortCodeForPattern(const Glib::ustring &pattern) {
+ auto it = m_pattern_shortcode_index.find(pattern);
+ if (it != m_pattern_shortcode_index.end())
+ return it->second;
+ return "";
+}
+
const std::vector<Glib::ustring> &EmojiResource::GetPatterns() const {
return m_patterns;
}
diff --git a/emojis.hpp b/emojis.hpp
index 3d494c2..cbcb2ca 100644
--- a/emojis.hpp
+++ b/emojis.hpp
@@ -17,8 +17,10 @@ public:
const std::vector<Glib::ustring> &GetPatterns() const;
const std::map<std::string, std::string> &GetShortCodes() const;
void ReplaceEmojis(Glib::RefPtr<Gtk::TextBuffer> buf, int size = 24);
+ std::string GetShortCodeForPattern(const Glib::ustring &pattern);
private:
+ std::unordered_map<std::string, std::string> m_pattern_shortcode_index;
std::map<std::string, std::string> m_shortcode_index; // shortcode -> pattern
std::unordered_map<std::string, std::pair<int, int>> m_index; // pattern -> [pos, len]
FILE *m_fp = nullptr;