mirror of
				https://github.com/rad4day/Waybar.git
				synced 2025-11-01 00:12:42 +01:00 
			
		
		
		
	Merge pull request #1670 from akliuxingyuan/master
This commit is contained in:
		| @@ -309,7 +309,7 @@ void Item::updateImage() { | ||||
|     pixbuf = pixbuf->scale_simple(width, scaled_icon_size, Gdk::InterpType::INTERP_BILINEAR); | ||||
|   } | ||||
|  | ||||
|   auto surface = Gdk::Cairo::create_surface_from_pixbuf(pixbuf, 0, image.get_window()); | ||||
|   auto surface = Gdk::Cairo::create_surface_from_pixbuf(pixbuf, image.get_scale_factor(), image.get_window()); | ||||
|   image.set(surface); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -15,6 +15,7 @@ | ||||
| #include <sstream> | ||||
| #include <utility> | ||||
|  | ||||
| #include "gdkmm/general.h" | ||||
| #include "glibmm/error.h" | ||||
| #include "glibmm/fileutils.h" | ||||
| #include "glibmm/refptr.h" | ||||
| @@ -173,18 +174,24 @@ bool Task::image_load_icon(Gtk::Image &image, const Glib::RefPtr<Gtk::IconTheme> | ||||
|   } | ||||
|  | ||||
|   Glib::RefPtr<Gdk::Pixbuf> pixbuf; | ||||
|   auto scaled_icon_size = size * image.get_scale_factor(); | ||||
|  | ||||
|   try { | ||||
|     pixbuf = icon_theme->load_icon(ret_icon_name, size, Gtk::ICON_LOOKUP_FORCE_SIZE); | ||||
|     pixbuf = icon_theme->load_icon(ret_icon_name, scaled_icon_size, Gtk::ICON_LOOKUP_FORCE_SIZE); | ||||
|   } catch (...) { | ||||
|     if (Glib::file_test(ret_icon_name, Glib::FILE_TEST_EXISTS)) | ||||
|       pixbuf = load_icon_from_file(ret_icon_name, size); | ||||
|       pixbuf = load_icon_from_file(ret_icon_name, scaled_icon_size); | ||||
|     else | ||||
|       pixbuf = {}; | ||||
|   } | ||||
|  | ||||
|   if (pixbuf) { | ||||
|     image.set(pixbuf); | ||||
|     if (pixbuf->get_width() != scaled_icon_size) { | ||||
|         int width = scaled_icon_size * pixbuf->get_width() / pixbuf->get_height(); | ||||
|         pixbuf = pixbuf->scale_simple(width, scaled_icon_size, Gdk::InterpType::INTERP_BILINEAR); | ||||
|     } | ||||
|     auto surface = Gdk::Cairo::create_surface_from_pixbuf(pixbuf, image.get_scale_factor(), image.get_window()); | ||||
|     image.set(surface); | ||||
|     return true; | ||||
|   } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Alex
					Alex