use sigc in imgmanager to hopefully get rid of some lifetime errors

This commit is contained in:
ouwou
2020-10-04 15:31:39 -04:00
parent 77fc962de4
commit 69c4b0c948
4 changed files with 15 additions and 14 deletions

View File

@@ -70,7 +70,7 @@ ChannelListRowDMChannel::ChannelListRowDMChannel(const Channel *data) {
void ChannelListRowDMChannel::OnImageLoad(Glib::RefPtr<Gdk::Pixbuf> buf) {
if (m_icon != nullptr)
m_icon->property_pixbuf() = buf;
m_icon->property_pixbuf() = buf->scale_simple(24, 24, Gdk::INTERP_BILINEAR);
}
ChannelListRowGuild::ChannelListRowGuild(const Guild *data) {
@@ -85,13 +85,7 @@ ChannelListRowGuild::ChannelListRowGuild(const Guild *data) {
m_icon = Gtk::manage(new Gtk::Image(buf->scale_simple(24, 24, Gdk::INTERP_BILINEAR)));
else {
m_icon = Gtk::manage(new Gtk::Image(Abaddon::Get().GetImageManager().GetPlaceholder(24)));
Abaddon::Get().GetImageManager().LoadFromURL(data->GetIconURL("png", "32"), [this](Glib::RefPtr<Gdk::Pixbuf> ldbuf) {
Glib::signal_idle().connect([this, ldbuf]() -> bool {
m_icon->property_pixbuf() = ldbuf->scale_simple(24, 24, Gdk::INTERP_BILINEAR);
return false;
});
});
Abaddon::Get().GetImageManager().LoadFromURL(data->GetIconURL("png", "32"), sigc::mem_fun(*this, &ChannelListRowGuild::OnImageLoad));
}
} else {
m_icon = Gtk::manage(new Gtk::Image(Abaddon::Get().GetImageManager().GetPlaceholder(24)));
@@ -110,6 +104,10 @@ ChannelListRowGuild::ChannelListRowGuild(const Guild *data) {
show_all_children();
}
void ChannelListRowGuild::OnImageLoad(Glib::RefPtr<Gdk::Pixbuf> buf) {
m_icon->property_pixbuf() = buf->scale_simple(24, 24, Gdk::INTERP_BILINEAR);
}
ChannelListRowCategory::ChannelListRowCategory(const Channel *data) {
ID = data->ID;
m_ev = Gtk::manage(new Gtk::EventBox);