From 5010227e6bc10deff71669230c6c8e24c66a8023 Mon Sep 17 00:00:00 2001 From: Alexis Date: Fri, 26 Oct 2018 11:59:03 +0200 Subject: [PATCH] fix(tray): icons --- include/modules/sni/sni.hpp | 1 + src/modules/sni/sni.cpp | 26 +++++++++++--------------- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/include/modules/sni/sni.hpp b/include/modules/sni/sni.hpp index 16aebb35..daa6a58b 100644 --- a/include/modules/sni/sni.hpp +++ b/include/modules/sni/sni.hpp @@ -2,6 +2,7 @@ #include #include +#include namespace waybar::modules::SNI { diff --git a/src/modules/sni/sni.cpp b/src/modules/sni/sni.cpp index 0fa5a062..76235d9e 100644 --- a/src/modules/sni/sni.cpp +++ b/src/modules/sni/sni.cpp @@ -167,32 +167,28 @@ waybar::modules::SNI::Item::extractPixBuf(GVariant *variant) { void waybar::modules::SNI::Item::updateImage() { + image->set_from_icon_name("image-missing", Gtk::ICON_SIZE_MENU); + image->set_pixel_size(icon_size); if (!icon_name.empty()) { - auto pixbuf = getIconByName(icon_name, icon_size); - if (pixbuf->gobj() == nullptr) { + try { // Try to find icons specified by path and filename - try { - pixbuf = Gdk::Pixbuf::create_from_file(icon_name); + if (std::filesystem::exists(icon_name)) { + auto pixbuf = Gdk::Pixbuf::create_from_file(icon_name); if (pixbuf->gobj() != nullptr) { // An icon specified by path and filename may be the wrong size for // the tray pixbuf->scale_simple(icon_size - 2, icon_size - 2, - Gdk::InterpType::INTERP_BILINEAR); + Gdk::InterpType::INTERP_BILINEAR); + image->set(pixbuf); } - } catch (Glib::Error &e) { - std::cerr << "Exception: " << e.what() << std::endl; - pixbuf = getIconByName("image-missing", icon_size); + } else { + image->set(getIconByName(icon_name, icon_size)); } + } catch (Glib::Error &e) { + std::cerr << "Exception: " << e.what() << std::endl; } - if (pixbuf->gobj() == nullptr) { - pixbuf = getIconByName("image-missing", icon_size); - } - image->set(pixbuf); } else if (icon_pixmap) { image->set(icon_pixmap); - } else { - image->set_from_icon_name("image-missing", Gtk::ICON_SIZE_MENU); - image->set_pixel_size(icon_size); } if (!menu.empty()) { auto *dbmenu = dbusmenu_gtkmenu_new(bus_name.data(), menu.data());