mirror of
				https://github.com/rad4day/Waybar.git
				synced 2025-10-31 07:52:42 +01:00 
			
		
		
		
	Merge pull request #1018 from jgmdev/taskbar-icons
[wlr/taskbar] Fix unhandled exception crash when icon name is a path.
This commit is contained in:
		| @@ -1,5 +1,7 @@ | ||||
| #include "modules/wlr/taskbar.hpp" | ||||
|  | ||||
| #include "glibmm/error.h" | ||||
| #include "glibmm/fileutils.h" | ||||
| #include "glibmm/refptr.h" | ||||
| #include "util/format.hpp" | ||||
|  | ||||
| @@ -74,6 +76,16 @@ static std::vector<std::string> search_prefix() | ||||
|     return prefixes; | ||||
| } | ||||
|  | ||||
| static Glib::RefPtr<Gdk::Pixbuf> load_icon_from_file(std::string icon_path, int size) | ||||
| { | ||||
|     try { | ||||
|         auto pb = Gdk::Pixbuf::create_from_file(icon_path, size, size); | ||||
|         return pb; | ||||
|     } catch(...) { | ||||
|         return {}; | ||||
|     } | ||||
| } | ||||
|  | ||||
| /* Method 1 - get the correct icon name from the desktop file */ | ||||
| static std::string get_from_desktop_app_info(const std::string &app_id) | ||||
| { | ||||
| @@ -172,7 +184,17 @@ static bool image_load_icon(Gtk::Image& image, const Glib::RefPtr<Gtk::IconTheme | ||||
|         if (icon_name.empty()) | ||||
|             icon_name = "unknown"; | ||||
|  | ||||
|         auto pixbuf = icon_theme->load_icon(icon_name, size, Gtk::ICON_LOOKUP_FORCE_SIZE); | ||||
|         Glib::RefPtr<Gdk::Pixbuf> pixbuf; | ||||
|  | ||||
|         try { | ||||
|             pixbuf = icon_theme->load_icon(icon_name, size, Gtk::ICON_LOOKUP_FORCE_SIZE); | ||||
|         } catch(...) { | ||||
|             if (Glib::file_test(icon_name, Glib::FILE_TEST_EXISTS)) | ||||
|                 pixbuf = load_icon_from_file(icon_name, size); | ||||
|             else | ||||
|                 pixbuf = {}; | ||||
|         } | ||||
|  | ||||
|         if (pixbuf) { | ||||
|             image.set(pixbuf); | ||||
|             found = true; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Alex
					Alex