Merge lp:~attente/unity-gtk-module/only-noun-icons into lp:unity-gtk-module/13.10

Proposed by William Hua
Status: Merged
Approved by: William Hua
Approved revision: 298
Merged at revision: 297
Proposed branch: lp:~attente/unity-gtk-module/only-noun-icons
Merge into: lp:unity-gtk-module/13.10
Diff against target: 151 lines (+74/-54)
1 file modified
lib/unity-gtk-menu-item.c (+74/-54)
To merge this branch: bzr merge lp:~attente/unity-gtk-module/only-noun-icons
Reviewer Review Type Date Requested Status
Lars Karlitski (community) Approve
PS Jenkins bot (community) continuous-integration Approve
Review via email: mp+172651@code.launchpad.net

Commit message

We no longer export verb icons in the menus. Only export potential noun icons that would appear in a GtkImage of a non-GtkImageMenuItem.

Description of the change

We no longer export verb icons in the menus. Only export potential noun icons that would appear in a GtkImage of a non-GtkImageMenuItem.

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Lars Karlitski (larsu) wrote :

Looks good to me. Thanks, Will.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'lib/unity-gtk-menu-item.c'
2--- lib/unity-gtk-menu-item.c 2013-06-17 17:32:33 +0000
3+++ lib/unity-gtk-menu-item.c 2013-07-02 19:38:34 +0000
4@@ -24,6 +24,76 @@
5 unity_gtk_menu_item,
6 G_TYPE_OBJECT);
7
8+typedef struct _UnityGtkSearch UnityGtkSearch;
9+
10+struct _UnityGtkSearch
11+{
12+ GType type;
13+ guint index;
14+ GObject *object;
15+};
16+
17+static void
18+g_object_get_nth_object (GObject *object,
19+ gpointer data)
20+{
21+ UnityGtkSearch *search = data;
22+
23+ g_return_if_fail (G_IS_OBJECT (object));
24+
25+ if (search->object == NULL)
26+ {
27+ if (g_type_is_a (G_OBJECT_TYPE (object), search->type))
28+ {
29+ if (search->index == 0)
30+ search->object = object;
31+ else
32+ search->index--;
33+ }
34+
35+ if (search->object == NULL && GTK_IS_CONTAINER (object))
36+ gtk_container_forall (GTK_CONTAINER (object), (GtkCallback) g_object_get_nth_object, data);
37+ }
38+}
39+
40+const gchar *
41+gtk_menu_item_get_nth_label (GtkMenuItem *menu_item,
42+ guint index)
43+{
44+ UnityGtkSearch search;
45+ const gchar *label = NULL;
46+
47+ g_return_val_if_fail (GTK_IS_MENU_ITEM (menu_item), NULL);
48+
49+ search.type = GTK_TYPE_LABEL;
50+ search.index = index;
51+ search.object = NULL;
52+
53+ g_object_get_nth_object (G_OBJECT (menu_item), &search);
54+
55+ if (search.object != NULL)
56+ label = gtk_label_get_label (GTK_LABEL (search.object));
57+
58+ return label != NULL && label[0] != '\0' ? label : NULL;
59+}
60+
61+static GtkImage *
62+gtk_menu_item_get_nth_image (GtkMenuItem *menu_item,
63+ guint index)
64+{
65+ UnityGtkSearch search;
66+
67+ g_return_val_if_fail (GTK_IS_MENU_ITEM (menu_item), NULL);
68+
69+ search.type = GTK_TYPE_IMAGE;
70+ search.index = index;
71+ search.object = NULL;
72+
73+ g_object_get_nth_object (G_OBJECT (menu_item), &search);
74+
75+ return search.object != NULL ? GTK_IMAGE (search.object) : NULL;
76+}
77+
78 static GIcon *
79 gtk_image_get_icon (GtkImage *image)
80 {
81@@ -409,12 +479,12 @@
82
83 g_return_val_if_fail (UNITY_GTK_IS_MENU_ITEM (item), NULL);
84
85- if (GTK_IS_IMAGE_MENU_ITEM (item->menu_item))
86+ if (item->menu_item != NULL && !GTK_IS_IMAGE_MENU_ITEM (item->menu_item))
87 {
88- GtkWidget *image = gtk_image_menu_item_get_image (GTK_IMAGE_MENU_ITEM (item->menu_item));
89+ GtkImage *image = gtk_menu_item_get_nth_image (item->menu_item, 0);
90
91- if (GTK_IS_IMAGE (image))
92- icon = gtk_image_get_icon (GTK_IMAGE (image));
93+ if (image != NULL)
94+ icon = gtk_image_get_icon (image);
95 }
96
97 return icon;
98@@ -519,53 +589,3 @@
99
100 g_free (space);
101 }
102-
103-typedef struct _UnityGtkSearch UnityGtkSearch;
104-
105-struct _UnityGtkSearch
106-{
107- GtkLabel *label;
108- guint index;
109-};
110-
111-static void
112-gtk_widget_get_nth_label (GtkWidget *widget,
113- gpointer data)
114-{
115- UnityGtkSearch *search = data;
116-
117- g_return_if_fail (GTK_IS_WIDGET (widget));
118-
119- if (search->label == NULL)
120- {
121- if (GTK_IS_LABEL (widget))
122- {
123- if (search->index == 0)
124- search->label = GTK_LABEL (widget);
125- else
126- search->index--;
127- }
128- else if (GTK_IS_CONTAINER (widget))
129- gtk_container_forall (GTK_CONTAINER (widget), gtk_widget_get_nth_label, data);
130- }
131-}
132-
133-const gchar *
134-gtk_menu_item_get_nth_label (GtkMenuItem *menu_item,
135- guint index)
136-{
137- UnityGtkSearch search;
138- const gchar *label = NULL;
139-
140- g_return_val_if_fail (GTK_IS_MENU_ITEM (menu_item), NULL);
141-
142- search.label = NULL;
143- search.index = index;
144-
145- gtk_widget_get_nth_label (GTK_WIDGET (menu_item), &search);
146-
147- if (search.label != NULL)
148- label = gtk_label_get_label (search.label);
149-
150- return label != NULL && label[0] != '\0' ? label : NULL;
151-}

Subscribers

People subscribed via source and target branches