diff --git a/src/helper/icon-loader.cpp b/src/helper/icon-loader.cpp index 2e65ae019cdd8a2e7149f6ca09411fd346371b4b..9ee0faa60b456a7ad7986bda90b4ce26b155ab59 100644 --- a/src/helper/icon-loader.cpp +++ b/src/helper/icon-loader.cpp @@ -35,25 +35,30 @@ Glib::RefPtr sp_get_icon_pixbuf(Glib::ustring icon_name, gint size) icon_theme->prepend_search_path(get_path_ustring(SYSTEM, ICONS)); icon_theme->prepend_search_path(get_path_ustring(USER, ICONS)); } + Glib::RefPtr< Gdk::Window > window = Gdk::Window::get_default_root_window(); + double scale = window->get_scale_factor(); try { if (prefs->getBool("/theme/symbolicIcons", false)) { gchar colornamed[64]; sp_svg_write_color(colornamed, sizeof(colornamed), prefs->getInt("/theme/symbolicColor", 0x000000ff)); Gdk::RGBA color; color.set(colornamed); + // TODO: migrate to "lookup_by_gicon_for_scale" as documentations says about HiDPI. + // Currenlty docs couldent be followed + // broken, missing or incomplete Gtk::IconInfo iconinfo = - icon_theme->lookup_icon(icon_name + Glib::ustring("-symbolic"), size, Gtk::ICON_LOOKUP_FORCE_SIZE); + icon_theme->lookup_icon(icon_name + Glib::ustring("-symbolic"), size, scale, Gtk::ICON_LOOKUP_FORCE_SIZE); if (bool(iconinfo)) { // TODO: view if we need parametrice other colors bool was_symbolic = false; _icon_pixbuf = iconinfo.load_symbolic(color, color, color, color, was_symbolic); } else { - _icon_pixbuf = icon_theme->load_icon(icon_name, size, Gtk::ICON_LOOKUP_FORCE_SIZE); + _icon_pixbuf = icon_theme->load_icon(icon_name, size, scale, Gtk::ICON_LOOKUP_FORCE_SIZE); } } else { - _icon_pixbuf = icon_theme->load_icon(icon_name, size, Gtk::ICON_LOOKUP_FORCE_SIZE); + _icon_pixbuf = icon_theme->load_icon(icon_name, size, scale, Gtk::ICON_LOOKUP_FORCE_SIZE); } } catch (const Gtk::IconThemeError &e) {