summaryrefslogtreecommitdiff
path: root/components/chatmessage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'components/chatmessage.cpp')
-rw-r--r--components/chatmessage.cpp17
1 files changed, 10 insertions, 7 deletions
diff --git a/components/chatmessage.cpp b/components/chatmessage.cpp
index a36b67f..37a8cb7 100644
--- a/components/chatmessage.cpp
+++ b/components/chatmessage.cpp
@@ -731,11 +731,14 @@ ChatMessageHeader::ChatMessageHeader(const Message *data) {
m_timestamp = Gtk::manage(new Gtk::Label);
m_avatar_ev = Gtk::manage(new Gtk::EventBox);
- auto buf = Abaddon::Get().GetImageManager().GetFromURLIfCached(data->Author.GetAvatarURL());
+ auto &img = Abaddon::Get().GetImageManager();
+ auto buf = img.GetFromURLIfCached(data->Author.GetAvatarURL());
if (buf)
m_avatar = Gtk::manage(new Gtk::Image(buf));
- else
- m_avatar = Gtk::manage(new Gtk::Image(Abaddon::Get().GetImageManager().GetPlaceholder(32)));
+ else {
+ m_avatar = Gtk::manage(new Gtk::Image(img.GetPlaceholder(32)));
+ img.LoadFromURL(data->Author.GetAvatarURL(), sigc::mem_fun(*this, &ChatMessageHeader::OnAvatarLoad));
+ }
get_style_context()->add_class("message-container");
m_author->get_style_context()->add_class("message-container-author");
@@ -824,6 +827,10 @@ void ChatMessageHeader::UpdateNameColor() {
m_author->set_markup(md);
}
+void ChatMessageHeader::OnAvatarLoad(const Glib::RefPtr<Gdk::Pixbuf> &pixbuf) {
+ m_avatar->property_pixbuf() = pixbuf;
+}
+
void ChatMessageHeader::AttachUserMenuHandler(Gtk::Widget &widget) {
widget.signal_button_press_event().connect([this](GdkEventButton *ev) -> bool {
if (ev->type == GDK_BUTTON_PRESS && ev->button == GDK_BUTTON_SECONDARY) {
@@ -857,7 +864,3 @@ void ChatMessageHeader::AddContent(Gtk::Widget *widget, bool prepend) {
if (prepend)
m_content_box->reorder_child(*widget, 1);
}
-
-void ChatMessageHeader::SetAvatarFromPixbuf(Glib::RefPtr<Gdk::Pixbuf> pixbuf) {
- m_avatar->property_pixbuf() = pixbuf;
-}