This is an automated email from the git hooks/post-receive script.

gottcode pushed a 
commit to branch 
master
in repository panel-plugins/xfce4-whiskermenu-plugin.

commit fb2992260f5f08879a3630a8262c8aa511326b22
Author: Graeme Gott <[email protected]>
Date:   Sun Jul 1 13:41:09 2018 -0400

    Fix regression of non-square panel image support. (bug #14506)
---
 panel-plugin/plugin.cpp | 37 +++++++++++++++++++++++++++++++------
 panel-plugin/plugin.h   |  1 +
 2 files changed, 32 insertions(+), 6 deletions(-)

diff --git a/panel-plugin/plugin.cpp b/panel-plugin/plugin.cpp
index 49cb665..5cf28a0 100644
--- a/panel-plugin/plugin.cpp
+++ b/panel-plugin/plugin.cpp
@@ -90,7 +90,8 @@ static void widget_add_css(GtkWidget* widget, const gchar* 
css)
 Plugin::Plugin(XfcePanelPlugin* plugin) :
        m_plugin(plugin),
        m_window(NULL),
-       m_opacity(100)
+       m_opacity(100),
+       m_file_icon(false)
 {
        // Load settings
        wm_settings = new Settings;
@@ -332,14 +333,12 @@ void Plugin::icon_changed(const gchar* icon)
        if (!g_path_is_absolute(icon))
        {
                gtk_image_set_from_icon_name(m_button_icon, icon, 
GTK_ICON_SIZE_BUTTON);
+               m_file_icon = false;
        }
        else
        {
-               GFile* file = g_file_new_for_path(icon);
-               GIcon* gicon = g_file_icon_new(file);
-               gtk_image_set_from_gicon(m_button_icon, gicon, 
GTK_ICON_SIZE_BUTTON);
-               g_object_unref(gicon);
-               g_object_unref(file);
+               gtk_image_clear(m_button_icon);
+               m_file_icon = true;
        }
 }
 
@@ -443,6 +442,32 @@ gboolean Plugin::size_changed(XfcePanelPlugin*, gint size)
 #endif
        gtk_image_set_pixel_size(m_button_icon, icon_size);
 
+       // Load icon from absolute path
+       if (m_file_icon)
+       {
+               const gint scale = gtk_widget_get_scale_factor(m_button);
+               gint max_width = icon_size * scale;
+               gint max_height = icon_size * scale;
+               if (mode == XFCE_PANEL_PLUGIN_MODE_HORIZONTAL)
+               {
+                       max_width *= 6;
+               }
+               else
+               {
+                       max_height *= 6;
+               }
+
+               GdkPixbuf* pixbuf = 
gdk_pixbuf_new_from_file_at_size(wm_settings->button_icon_name.c_str(), 
max_width, max_height, NULL);
+               if (pixbuf)
+               {
+                       // Handle high dpi
+                       cairo_surface_t* surface = 
gdk_cairo_surface_create_from_pixbuf(pixbuf, scale, NULL);
+                       gtk_image_set_from_surface(m_button_icon, surface);
+                       cairo_surface_destroy(surface);
+                       g_object_unref(pixbuf);
+               }
+       }
+
        if (wm_settings->button_title_visible)
        {
                gtk_widget_set_size_request(m_button, -1, -1);
diff --git a/panel-plugin/plugin.h b/panel-plugin/plugin.h
index d551ce6..561cb50 100644
--- a/panel-plugin/plugin.h
+++ b/panel-plugin/plugin.h
@@ -83,6 +83,7 @@ private:
        GtkImage* m_button_icon;
 
        int m_opacity;
+       bool m_file_icon;
 };
 
 }

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.
_______________________________________________
Xfce4-commits mailing list
[email protected]
https://mail.xfce.org/mailman/listinfo/xfce4-commits

Reply via email to