Merge lp:~larsu/gtk/images-in-menubars into lp:~ubuntu-desktop/gtk/ubuntugtk3

Proposed by Lars Karlitski
Status: Merged
Approved by: Didier Roche-Tolomelli
Approved revision: 398
Merged at revision: 399
Proposed branch: lp:~larsu/gtk/images-in-menubars
Merge into: lp:~ubuntu-desktop/gtk/ubuntugtk3
Diff against target: 178 lines (+158/-0)
3 files modified
debian/changelog (+7/-0)
debian/patches/0002-gtkimagemenuitem-create-widget-for-action-icons-lazi.patch (+150/-0)
debian/patches/series (+1/-0)
To merge this branch: bzr merge lp:~larsu/gtk/images-in-menubars
Reviewer Review Type Date Requested Status
Didier Roche-Tolomelli Approve
Review via email: mp+246307@code.launchpad.net

This proposal supersedes a proposal from 2015-01-13.

Description of the change

Add 0002-gtkimagemenuitem-create-widget-for-action-icons-lazi.patch

See https://bugzilla.gnome.org/show_bug.cgi?id=742181 for details.

To post a comment you must log in.
Revision history for this message
Didier Roche-Tolomelli (didrocks) wrote :

Looking good and applied upstream! Thanks :)

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'debian/changelog'
2--- debian/changelog 2015-01-12 16:52:44 +0000
3+++ debian/changelog 2015-01-13 14:27:06 +0000
4@@ -1,3 +1,10 @@
5+gtk+3.0 (3.14.7-0ubuntu2) UNRELEASED; urgency=medium
6+
7+ * debian/patches/0002-gtkimagemenuitem-create-widget-for-action-icons-lazi.patch:
8+ Fix empty images next to menu items in GtkMenuBars
9+
10+ -- Lars Uebernickel <lars.uebernickel@ubuntu.com> Tue, 13 Jan 2015 13:40:20 +0100
11+
12 gtk+3.0 (3.14.7-0ubuntu1) vivid; urgency=medium
13
14 * New upstream bugfix release 3.14.7.
15
16=== added file 'debian/patches/0002-gtkimagemenuitem-create-widget-for-action-icons-lazi.patch'
17--- debian/patches/0002-gtkimagemenuitem-create-widget-for-action-icons-lazi.patch 1970-01-01 00:00:00 +0000
18+++ debian/patches/0002-gtkimagemenuitem-create-widget-for-action-icons-lazi.patch 2015-01-13 14:27:06 +0000
19@@ -0,0 +1,150 @@
20+From 76c667ab721038db7ee72d1d79078e19c89671a6 Mon Sep 17 00:00:00 2001
21+From: Lars Uebernickel <lars.uebernickel@canonical.com>
22+Date: Mon, 12 Jan 2015 09:04:11 +0100
23+Subject: [PATCH 2/2] gtkimagemenuitem: create widget for action icons lazily
24+
25+GtkImageMenuItem always packs a GtkImage when it is synced with a
26+related action. This is unnecessary when the action doesn't have an icon
27+set and results in excess padding when a GtkImageMenuItem is put in a
28+menu bar (GtkUIManager does this).
29+
30+Fix this by not creating the GtkImage for icon-less actions.
31+
32+https://bugzilla.gnome.org/show_bug.cgi?id=742181
33+---
34+ gtk/deprecated/gtkimagemenuitem.c | 67 +++++++++++++++++++--------------------
35+ 1 file changed, 32 insertions(+), 35 deletions(-)
36+
37+diff --git a/gtk/deprecated/gtkimagemenuitem.c b/gtk/deprecated/gtkimagemenuitem.c
38+index 8b6fc96..d150020 100644
39+--- a/gtk/deprecated/gtkimagemenuitem.c
40++++ b/gtk/deprecated/gtkimagemenuitem.c
41+@@ -672,22 +672,35 @@ gtk_image_menu_item_activatable_interface_init (GtkActivatableIface *iface)
42+ iface->sync_action_properties = gtk_image_menu_item_sync_action_properties;
43+ }
44+
45++static GtkWidget *
46++gtk_image_menu_item_ensure_image (GtkImageMenuItem *item)
47++{
48++ GtkWidget *image;
49++
50++ image = gtk_image_menu_item_get_image (item);
51++ if (!GTK_IS_IMAGE (image))
52++ {
53++ image = gtk_image_new ();
54++ gtk_widget_show (image);
55++ gtk_image_menu_item_set_image (item, image);
56++ }
57++
58++ return image;
59++}
60++
61+ static gboolean
62+ activatable_update_stock_id (GtkImageMenuItem *image_menu_item, GtkAction *action)
63+ {
64+- GtkWidget *image;
65+ const gchar *stock_id = gtk_action_get_stock_id (action);
66+
67+- image = gtk_image_menu_item_get_image (image_menu_item);
68+-
69+ G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
70+
71+- if (GTK_IS_IMAGE (image) &&
72+- stock_id && gtk_icon_factory_lookup_default (stock_id))
73++ if (stock_id && gtk_icon_factory_lookup_default (stock_id))
74+ {
75+- G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
76++ GtkWidget *image;
77++
78++ image = gtk_image_menu_item_ensure_image (image_menu_item);
79+ gtk_image_set_from_stock (GTK_IMAGE (image), stock_id, GTK_ICON_SIZE_MENU);
80+- G_GNUC_END_IGNORE_DEPRECATIONS;
81+ return TRUE;
82+ }
83+
84+@@ -699,7 +712,6 @@ activatable_update_stock_id (GtkImageMenuItem *image_menu_item, GtkAction *actio
85+ static gboolean
86+ activatable_update_gicon (GtkImageMenuItem *image_menu_item, GtkAction *action)
87+ {
88+- GtkWidget *image;
89+ GIcon *icon = gtk_action_get_gicon (action);
90+ const gchar *stock_id;
91+ gboolean ret = FALSE;
92+@@ -708,11 +720,11 @@ activatable_update_gicon (GtkImageMenuItem *image_menu_item, GtkAction *action)
93+
94+ G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
95+
96+- image = gtk_image_menu_item_get_image (image_menu_item);
97+-
98+- if (icon && GTK_IS_IMAGE (image) &&
99+- !(stock_id && gtk_icon_factory_lookup_default (stock_id)))
100++ if (icon && !(stock_id && gtk_icon_factory_lookup_default (stock_id)))
101+ {
102++ GtkWidget *image;
103++
104++ image = gtk_image_menu_item_ensure_image (image_menu_item);
105+ gtk_image_set_from_gicon (GTK_IMAGE (image), icon, GTK_ICON_SIZE_MENU);
106+ ret = TRUE;
107+ }
108+@@ -722,20 +734,21 @@ activatable_update_gicon (GtkImageMenuItem *image_menu_item, GtkAction *action)
109+ return ret;
110+ }
111+
112+-static void
113++static gboolean
114+ activatable_update_icon_name (GtkImageMenuItem *image_menu_item, GtkAction *action)
115+ {
116+- GtkWidget *image;
117+ const gchar *icon_name = gtk_action_get_icon_name (action);
118+
119+- image = gtk_image_menu_item_get_image (image_menu_item);
120+-
121+- if (GTK_IS_IMAGE (image) &&
122+- (gtk_image_get_storage_type (GTK_IMAGE (image)) == GTK_IMAGE_EMPTY ||
123+- gtk_image_get_storage_type (GTK_IMAGE (image)) == GTK_IMAGE_ICON_NAME))
124++ if (icon_name)
125+ {
126++ GtkWidget *image;
127++
128++ image = gtk_image_menu_item_ensure_image (image_menu_item);
129+ gtk_image_set_from_icon_name (GTK_IMAGE (image), icon_name, GTK_ICON_SIZE_MENU);
130++ return TRUE;
131+ }
132++
133++ return FALSE;
134+ }
135+
136+ static void
137+@@ -767,7 +780,6 @@ gtk_image_menu_item_sync_action_properties (GtkActivatable *activatable,
138+ GtkAction *action)
139+ {
140+ GtkImageMenuItem *image_menu_item;
141+- GtkWidget *image;
142+ gboolean use_appearance;
143+
144+ image_menu_item = GTK_IMAGE_MENU_ITEM (activatable);
145+@@ -781,21 +793,6 @@ gtk_image_menu_item_sync_action_properties (GtkActivatable *activatable,
146+ if (!use_appearance)
147+ return;
148+
149+- image = gtk_image_menu_item_get_image (image_menu_item);
150+- if (image && !GTK_IS_IMAGE (image))
151+- {
152+- gtk_image_menu_item_set_image (image_menu_item, NULL);
153+- image = NULL;
154+- }
155+-
156+- if (!image)
157+- {
158+- image = gtk_image_new ();
159+- gtk_widget_show (image);
160+- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (activatable),
161+- image);
162+- }
163+-
164+ if (!activatable_update_stock_id (image_menu_item, action) &&
165+ !activatable_update_gicon (image_menu_item, action))
166+ activatable_update_icon_name (image_menu_item, action);
167+--
168+2.1.4
169+
170
171=== modified file 'debian/patches/series'
172--- debian/patches/series 2014-12-17 16:24:21 +0000
173+++ debian/patches/series 2015-01-13 14:27:06 +0000
174@@ -21,3 +21,4 @@
175 mir-backend.patch
176 mir-backend-unmerged.patch
177 0001-Menu-items-force-loading-16x16-icons.patch
178+0002-gtkimagemenuitem-create-widget-for-action-icons-lazi.patch

Subscribers

People subscribed via source and target branches

to all changes: