[Xfce4-commits] <xfce4-panel:devel> Use custom icon size names in various plugins.
Nick Schermer
noreply at xfce.org
Mon Feb 15 15:34:05 CET 2010
Updating branch refs/heads/devel
to d24e473e23f193c8619b00d9c1df3a2610bee0f2 (commit)
from 73cfde852e5e8dc4053e1bdb10fd637f7b3d0d3b (commit)
commit d24e473e23f193c8619b00d9c1df3a2610bee0f2
Author: Nick Schermer <nick at xfce.org>
Date: Mon Feb 15 15:18:26 2010 +0100
Use custom icon size names in various plugins.
Add panel-launcher-menu, panel-window-menu and panel-directory-menu
icon size names for the plugins.
docs/README.gtkrc-2.0 | 19 +++++++++----
plugins/directorymenu/directorymenu.c | 9 +++---
plugins/launcher/launcher.c | 48 +++++----------------------------
plugins/windowmenu/windowmenu.c | 47 +++++++++++++++++++++++++-------
4 files changed, 62 insertions(+), 61 deletions(-)
diff --git a/docs/README.gtkrc-2.0 b/docs/README.gtkrc-2.0
index 46af292..ca1dfd7 100644
--- a/docs/README.gtkrc-2.0
+++ b/docs/README.gtkrc-2.0
@@ -41,12 +41,8 @@ class "XfceTasklist" style "xfce-tasklist-style"
XfceLauncherPlugin
------------------
-style "xfce-launcher-plugin-style"
-{
- # Size of the icons of the menu, in pixels.
- XfceLauncherPlugin::menu-icon-size = 36
-}
-class "XfceLauncherPlugin" style "xfce-launcher-plugin-style"
+You can set a custom icon size in gtk-icon-sizes with the name
+panel-launcher-menu. The default icon size is 32px.
@@ -65,6 +61,10 @@ class "XfcePanelImage" style "xfce-panel-image-style"
XfceWindowMenuPlugin
--------------------
+You can set a custom icon size in gtk-icon-sizes with the name
+panel-window-menu. The default icon size is 16px. Note that the window
+icons are 16 or 32 pixels, all other sizes will result in scaling.
+
style "xfce-window-menu-plugin-style"
{
# Ellipsizing used in the menu label.
@@ -79,3 +79,10 @@ style "xfce-window-menu-plugin-style"
XfceWindowMenuPlugin::minimized-icon-lucency = 50
}
class "XfceWindowMenuPlugin" style "xfce-window-menu-plugin-style"
+
+
+
+XfceDirectoryMenuPlugin
+-----------------------
+You can set a custom icon size in gtk-icon-sizes with the name
+panel-directory-menu. The default icon size is 16px.
diff --git a/plugins/directorymenu/directorymenu.c b/plugins/directorymenu/directorymenu.c
index af088ce..0816554 100644
--- a/plugins/directorymenu/directorymenu.c
+++ b/plugins/directorymenu/directorymenu.c
@@ -100,7 +100,7 @@ XFCE_PANEL_DEFINE_PLUGIN (DirectoryMenuPlugin, directory_menu_plugin)
static GQuark menu_file = 0;
-
+static GtkIconSize menu_icon_size = GTK_ICON_SIZE_INVALID;
static void
@@ -148,6 +148,7 @@ directory_menu_plugin_class_init (DirectoryMenuPluginClass *klass)
EXO_PARAM_READWRITE));
menu_file = g_quark_from_static_string ("dir-menu-file");
+ menu_icon_size = gtk_icon_size_register ("panel-directory-menu", 16, 16);
}
@@ -757,7 +758,7 @@ directory_menu_plugin_menu_load (GtkWidget *menu,
g_object_ref (dir), (GClosureNotify) g_object_unref, 0);
gtk_widget_show (mi);
- image = gtk_image_new_from_stock (GTK_STOCK_OPEN, GTK_ICON_SIZE_MENU);
+ image = gtk_image_new_from_stock (GTK_STOCK_OPEN, menu_icon_size);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi), image);
gtk_widget_show (image);
@@ -768,7 +769,7 @@ directory_menu_plugin_menu_load (GtkWidget *menu,
g_object_ref (dir), (GClosureNotify) g_object_unref, 0);
gtk_widget_show (mi);
- image = gtk_image_new_from_icon_name ("terminal", GTK_ICON_SIZE_MENU);
+ image = gtk_image_new_from_icon_name ("terminal", menu_icon_size);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi), image);
gtk_widget_show (image);
@@ -882,7 +883,7 @@ directory_menu_plugin_menu_load (GtkWidget *menu,
icon = g_file_info_get_icon (info);
if (G_LIKELY (icon != NULL))
{
- image = gtk_image_new_from_gicon (icon, GTK_ICON_SIZE_MENU);
+ image = gtk_image_new_from_gicon (icon, menu_icon_size);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi), image);
gtk_widget_show (image);
}
diff --git a/plugins/launcher/launcher.c b/plugins/launcher/launcher.c
index c64efcc..0586012 100644
--- a/plugins/launcher/launcher.c
+++ b/plugins/launcher/launcher.c
@@ -39,7 +39,6 @@
#include "launcher-dialog.h"
#define ARROW_BUTTON_SIZE (12)
-#define DEFAULT_MENU_ICON_SIZE (GTK_ICON_SIZE_DND)
#define MENU_POPUP_DELAY (225)
#define NO_ARROW_INSIDE_BUTTON(plugin) ((plugin)->arrow_position != LAUNCHER_ARROW_INTERNAL \
|| LIST_HAS_ONE_OR_NO_ENTRIES ((plugin)->items))
@@ -56,8 +55,6 @@ static void launcher_plugin_set_property (GObject
guint prop_id,
const GValue *value,
GParamSpec *pspec);
-static void launcher_plugin_style_set (GtkWidget *widget,
- GtkStyle *previous_style);
static void launcher_plugin_construct (XfcePanelPlugin *panel_plugin);
static void launcher_plugin_free_data (XfcePanelPlugin *panel_plugin);
static void launcher_plugin_removed (XfcePanelPlugin *panel_plugin);
@@ -173,6 +170,10 @@ static void launcher_plugin_uri_list_free (GSList
+static GtkIconSize menu_icon_size = GTK_ICON_SIZE_INVALID;
+
+
+
struct _LauncherPluginClass
{
XfcePanelPluginClass __parent__;
@@ -193,7 +194,6 @@ struct _LauncherPlugin
GdkPixbuf *tooltip_cache;
guint menu_timeout_id;
- GtkIconSize menu_icon_size;
guint disable_tooltips : 1;
guint move_first : 1;
@@ -246,7 +246,6 @@ static const GtkTargetEntry drop_targets[] =
static void
launcher_plugin_class_init (LauncherPluginClass *klass)
{
- GtkWidgetClass *gtkwidget_class;
GObjectClass *gobject_class;
XfcePanelPluginClass *plugin_class;
@@ -254,9 +253,6 @@ launcher_plugin_class_init (LauncherPluginClass *klass)
gobject_class->get_property = launcher_plugin_get_property;
gobject_class->set_property = launcher_plugin_set_property;
- gtkwidget_class = GTK_WIDGET_CLASS (klass);
- gtkwidget_class->style_set = launcher_plugin_style_set;
-
plugin_class = XFCE_PANEL_PLUGIN_CLASS (klass);
plugin_class->construct = launcher_plugin_construct;
plugin_class->free_data = launcher_plugin_free_data;
@@ -305,14 +301,6 @@ launcher_plugin_class_init (LauncherPluginClass *klass)
LAUNCHER_ARROW_DEFAULT,
EXO_PARAM_READWRITE));
- gtk_widget_class_install_style_property (gtkwidget_class,
- g_param_spec_enum ("menu-icon-size",
- NULL,
- "GtkIconSize used in the menu",
- GTK_TYPE_ICON_SIZE,
- DEFAULT_MENU_ICON_SIZE,
- EXO_PARAM_READABLE));
-
launcher_signals[ITEMS_CHANGED] =
g_signal_new (g_intern_static_string ("items-changed"),
G_TYPE_FROM_CLASS (klass),
@@ -323,6 +311,7 @@ launcher_plugin_class_init (LauncherPluginClass *klass)
/* initialize the quark */
launcher_plugin_quark = g_quark_from_static_string ("xfce-launcher-plugin");
+ menu_icon_size = gtk_icon_size_register ("panel-launcher-menu", 32, 32);
}
@@ -341,7 +330,6 @@ launcher_plugin_init (LauncherPlugin *plugin)
plugin->child = NULL;
plugin->tooltip_cache = NULL;
plugin->menu_timeout_id = 0;
- plugin->menu_icon_size = DEFAULT_MENU_ICON_SIZE;
/* monitor the default icon theme for changes */
icon_theme = gtk_icon_theme_get_default ();
@@ -817,27 +805,6 @@ update_arrow:
static void
-launcher_plugin_style_set (GtkWidget *widget,
- GtkStyle *previous_style)
-{
- LauncherPlugin *plugin = XFCE_LAUNCHER_PLUGIN (widget);
- GtkIconSize menu_icon_size;
-
- /* let gtk update the widget style */
- (*GTK_WIDGET_CLASS (launcher_plugin_parent_class)->style_set) (widget, previous_style);
-
- /* read the style properties */
- gtk_widget_style_get (widget, "menu-icon-size", &menu_icon_size, NULL);
- if (plugin->menu_icon_size != menu_icon_size)
- {
- plugin->menu_icon_size = menu_icon_size;
- launcher_plugin_menu_destroy (plugin);
- }
-}
-
-
-
-static void
launcher_plugin_file_changed (GFileMonitor *monitor,
GFile *changed_file,
GFile *other_file,
@@ -1479,10 +1446,9 @@ launcher_plugin_menu_construct (LauncherPlugin *plugin)
/* set the icon if one is set */
icon_name = garcon_menu_item_get_icon_name (item);
- if (!exo_str_is_empty (icon_name)
- && plugin->menu_icon_size != GTK_ICON_SIZE_INVALID)
+ if (!exo_str_is_empty (icon_name))
{
- image = gtk_image_new_from_icon_name (icon_name, plugin->menu_icon_size);
+ image = gtk_image_new_from_icon_name (icon_name, menu_icon_size);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi), image);
gtk_widget_show (image);
}
diff --git a/plugins/windowmenu/windowmenu.c b/plugins/windowmenu/windowmenu.c
index e9673ea..a83000a 100644
--- a/plugins/windowmenu/windowmenu.c
+++ b/plugins/windowmenu/windowmenu.c
@@ -140,6 +140,7 @@ XFCE_PANEL_DEFINE_PLUGIN_RESIDENT (WindowMenuPlugin, window_menu_plugin)
static GQuark window_quark = 0;
+static GtkIconSize menu_icon_size = GTK_ICON_SIZE_INVALID;
@@ -227,6 +228,7 @@ window_menu_plugin_class_init (WindowMenuPluginClass *klass)
EXO_PARAM_READABLE));
window_quark = g_quark_from_static_string ("window-list-window-quark");
+ menu_icon_size = gtk_icon_size_register ("panel-window-menu", 16, 16);
}
@@ -625,10 +627,10 @@ window_menu_plugin_active_window_changed (WnckScreen *screen,
goto show_desktop_icon;
/* get the window icon and set the tooltip */
- pixbuf = wnck_window_get_icon (window);
gtk_widget_set_tooltip_text (GTK_WIDGET (icon),
wnck_window_get_name (window));
+ pixbuf = wnck_window_get_icon (window);
if (G_LIKELY (pixbuf != NULL))
xfce_panel_image_set_from_pixbuf (icon, pixbuf);
else
@@ -964,13 +966,15 @@ static GtkWidget *
window_menu_plugin_menu_window_item_new (WnckWindow *window,
WindowMenuPlugin *plugin,
PangoFontDescription *italic,
- PangoFontDescription *bold)
+ PangoFontDescription *bold,
+ gint icon_w,
+ gint icon_h)
{
const gchar *name, *tooltip;
gchar *utf8 = NULL;
gchar *decorated = NULL;
GtkWidget *mi, *label, *image;
- GdkPixbuf *pixbuf, *lucent = NULL;
+ GdkPixbuf *pixbuf, *lucent = NULL, *scaled = NULL;
panel_return_val_if_fail (WNCK_IS_WINDOW (window), NULL);
@@ -1015,15 +1019,32 @@ window_menu_plugin_menu_window_item_new (WnckWindow *window,
if (plugin->minimized_icon_lucency > 0)
{
- /* get the window mini icon */
+ /* get the window icon */
pixbuf = wnck_window_get_mini_icon (window);
+ if (pixbuf != NULL
+ && (gdk_pixbuf_get_width (pixbuf) < icon_w
+ || gdk_pixbuf_get_height (pixbuf) < icon_h))
+ pixbuf = wnck_window_get_icon (window);
+
if (pixbuf != NULL)
{
+ /* scle the icon if needed */
+ if (gdk_pixbuf_get_width (pixbuf) > icon_w
+ || gdk_pixbuf_get_height (pixbuf) > icon_h)
+ {
+ scaled = gdk_pixbuf_scale_simple (pixbuf, icon_w, icon_h, GDK_INTERP_BILINEAR);
+ if (G_LIKELY (scaled != NULL))
+ pixbuf = scaled;
+ }
+
/* dimm the icon if the window is minimized */
if (wnck_window_is_minimized (window)
&& plugin->minimized_icon_lucency < 100)
- pixbuf = lucent = exo_gdk_pixbuf_lucent (pixbuf,
- plugin->minimized_icon_lucency);
+ {
+ lucent = exo_gdk_pixbuf_lucent (pixbuf, plugin->minimized_icon_lucency);
+ if (G_LIKELY (lucent != NULL))
+ pixbuf = lucent;
+ }
/* set the menu item label */
image = gtk_image_new_from_pixbuf (pixbuf);
@@ -1032,6 +1053,8 @@ window_menu_plugin_menu_window_item_new (WnckWindow *window,
if (lucent != NULL)
g_object_unref (G_OBJECT (lucent));
+ if (scaled != NULL)
+ g_object_unref (G_OBJECT (scaled));
}
}
@@ -1137,6 +1160,7 @@ window_menu_plugin_menu_new (WindowMenuPlugin *plugin)
guint n_workspaces = 0;
const gchar *name = NULL;
gchar *utf8 = NULL, *label;
+ gint w, h;
panel_return_val_if_fail (XFCE_IS_WINDOW_MENU_PLUGIN (plugin), NULL);
panel_return_val_if_fail (WNCK_IS_SCREEN (plugin->screen), NULL);
@@ -1144,6 +1168,9 @@ window_menu_plugin_menu_new (WindowMenuPlugin *plugin)
italic = pango_font_description_from_string ("italic");
bold = pango_font_description_from_string ("bold");
+ if (!gtk_icon_size_lookup (menu_icon_size, &w, &h))
+ w = h = 16;
+
menu = gtk_menu_new ();
g_signal_connect (G_OBJECT (menu), "selection-done",
G_CALLBACK (window_menu_plugin_menu_selection_done), plugin->button);
@@ -1207,7 +1234,7 @@ window_menu_plugin_menu_new (WindowMenuPlugin *plugin)
continue;
/* create the menu item */
- mi = window_menu_plugin_menu_window_item_new (window, plugin, italic, bold);
+ mi = window_menu_plugin_menu_window_item_new (window, plugin, italic, bold, w, h);
gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
gtk_widget_show (mi);
@@ -1282,7 +1309,7 @@ window_menu_plugin_menu_new (WindowMenuPlugin *plugin)
continue;
/* create the menu item */
- mi = window_menu_plugin_menu_window_item_new (window, plugin, italic, bold);
+ mi = window_menu_plugin_menu_window_item_new (window, plugin, italic, bold, w, h);
gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
gtk_widget_show (mi);
}
@@ -1300,7 +1327,7 @@ window_menu_plugin_menu_new (WindowMenuPlugin *plugin)
G_CALLBACK (window_menu_plugin_workspace_add), plugin);
gtk_widget_show (mi);
- image = gtk_image_new_from_stock (GTK_STOCK_ADD, GTK_ICON_SIZE_MENU);
+ image = gtk_image_new_from_stock (GTK_STOCK_ADD, menu_icon_size);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi), image);
gtk_widget_show (mi);
@@ -1328,7 +1355,7 @@ window_menu_plugin_menu_new (WindowMenuPlugin *plugin)
g_free (label);
g_free (utf8);
- image = gtk_image_new_from_stock (GTK_STOCK_REMOVE, GTK_ICON_SIZE_MENU);
+ image = gtk_image_new_from_stock (GTK_STOCK_REMOVE, menu_icon_size);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi), image);
gtk_widget_show (mi);
}
More information about the Xfce4-commits
mailing list