Merge lp:~om26er/ubuntu/natty/appmenu-gtk/appmenu-gtk-fix-655241-natty into lp:ubuntu/natty/appmenu-gtk

Proposed by Omer Akram
Status: Merged
Merged at revision: 28
Proposed branch: lp:~om26er/ubuntu/natty/appmenu-gtk/appmenu-gtk-fix-655241-natty
Merge into: lp:ubuntu/natty/appmenu-gtk
Diff against target: 153 lines (+140/-0)
2 files modified
debian/changelog (+7/-0)
debian/patches/do_not_show_duplicate_menus.patch (+133/-0)
To merge this branch: bzr merge lp:~om26er/ubuntu/natty/appmenu-gtk/appmenu-gtk-fix-655241-natty
Reviewer Review Type Date Requested Status
Ubuntu branches Pending
Review via email: mp+41758@code.launchpad.net

Description of the change

fixes bug 655241. the patch was taken from upstream trunk.

To post a comment you must log in.

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 2010-09-30 18:24:53 +0000
3+++ debian/changelog 2010-11-24 16:23:27 +0000
4@@ -1,3 +1,10 @@
5+appmenu-gtk (0.1.9-0ubuntu5) natty; urgency=low
6+
7+ * debian/patches/do_not_show_duplicate_menus.patch:
8+ - do not show duplicate menu items (LP: #655241)
9+
10+ -- Omer Akram <om26er@ubuntu.com> Wed, 24 Nov 2010 21:12:55 +0500
11+
12 appmenu-gtk (0.1.9-0ubuntu4) maverick; urgency=low
13
14 * cherry-picked from upstream:
15
16=== added directory 'debian/patches'
17=== added file 'debian/patches/do_not_show_duplicate_menus.patch'
18--- debian/patches/do_not_show_duplicate_menus.patch 1970-01-01 00:00:00 +0000
19+++ debian/patches/do_not_show_duplicate_menus.patch 2010-11-24 16:23:27 +0000
20@@ -0,0 +1,133 @@
21+From: Cody Russell <crussell@canonical.com>
22+Subject: Parent tracking. Fixes duplicate menuitems in some apps.
23+Origin: http://bazaar.launchpad.net/~canonical-dx-team/appmenu-gtk/trunk/revision/101
24+Bug: https://launchpad.net/bugs/655241
25+
26+=== modified file 'src/bridge.c'
27+--- src/bridge.c 2010-09-29 17:14:35 +0000
28++++ src/bridge.c 2010-10-06 16:48:44 +0000
29+@@ -696,6 +696,33 @@
30+ }
31+ }
32+
33++/*
34++ * We probably should have added a 'remove' method to the UbuntuMenuProxy early on,
35++ * but it's late in the cycle now.
36++ */
37++static void
38++child_notify_cb (GtkWidget *widget,
39++ GParamSpec *pspec,
40++ DbusmenuMenuitem *mi)
41++{
42++ if (pspec->name == g_intern_static_string ("parent"))
43++ {
44++ if (gtk_widget_get_parent (widget) == NULL)
45++ {
46++ g_signal_handlers_disconnect_by_func (widget,
47++ G_CALLBACK (child_notify_cb),
48++ mi);
49++
50++ DbusmenuMenuitem *parent = g_object_get_data (G_OBJECT (mi), "dbusmenu-parent");
51++
52++ if (DBUSMENU_IS_MENUITEM (parent) && DBUSMENU_IS_MENUITEM (mi))
53++ {
54++ dbusmenu_menuitem_child_delete (parent, mi);
55++ }
56++ }
57++ }
58++}
59++
60+ static DbusmenuMenuitem *
61+ construct_dbusmenu_for_widget (GtkWidget *widget, gboolean previous_separator)
62+ {
63+@@ -718,6 +745,7 @@
64+ else
65+ {
66+ gboolean visible = FALSE;
67++ gboolean sensitive = FALSE;
68+ gboolean label_set = FALSE;
69+
70+ g_signal_connect (widget,
71+@@ -776,16 +804,9 @@
72+ if (!g_object_get_data (G_OBJECT (widget), "gtk-empty-menu-item") && !GTK_IS_TEAROFF_MENU_ITEM (widget))
73+ {
74+ visible = gtk_widget_get_visible (widget);
75++ sensitive = gtk_widget_get_sensitive (widget);
76+ }
77+
78+- dbusmenu_menuitem_property_set_bool (mi,
79+- DBUSMENU_MENUITEM_PROP_VISIBLE,
80+- visible);
81+-
82+- dbusmenu_menuitem_property_set_bool (mi,
83+- DBUSMENU_MENUITEM_PROP_ENABLED,
84+- gtk_widget_get_sensitive (widget));
85+-
86+ dbusmenu_menuitem_property_set_shortcut_menuitem (mi, GTK_MENU_ITEM (widget));
87+
88+ g_signal_connect (G_OBJECT (widget),
89+@@ -803,6 +824,9 @@
90+
91+ if (action)
92+ {
93++ visible = gtk_action_is_visible (action);
94++ sensitive = gtk_action_is_sensitive (action);
95++
96+ g_signal_connect_object (action, "notify",
97+ G_CALLBACK (action_notify_cb),
98+ mi,
99+@@ -811,11 +835,24 @@
100+ }
101+ }
102+
103++ dbusmenu_menuitem_property_set_bool (mi,
104++ DBUSMENU_MENUITEM_PROP_VISIBLE,
105++ visible);
106++
107++ dbusmenu_menuitem_property_set_bool (mi,
108++ DBUSMENU_MENUITEM_PROP_ENABLED,
109++ sensitive);
110++
111+ g_signal_connect (G_OBJECT (mi),
112+ DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED,
113+ G_CALLBACK (item_activated),
114+ widget);
115+ }
116++
117++ g_signal_connect (widget,
118++ "notify",
119++ G_CALLBACK (child_notify_cb),
120++ mi);
121+ }
122+
123+ return mi;
124+@@ -947,6 +984,9 @@
125+
126+ if (!peek)
127+ {
128++ g_object_set_data (G_OBJECT (recurse->stack[recurse->count]),
129++ "dbusmenu-parent",
130++ recurse->stack[recurse->count - 1]);
131+ dbusmenu_menuitem_child_append (recurse->stack[recurse->count - 1],
132+ recurse->stack[recurse->count]);
133+ }
134+@@ -967,6 +1007,10 @@
135+
136+ if (!peek)
137+ {
138++ g_object_set_data (G_OBJECT (recurse->stack[recurse->count]),
139++ "dbusmenu-parent",
140++ recurse->stack[recurse->count - 1]);
141++
142+ dbusmenu_menuitem_child_append (item, recurse->stack[recurse->count]);
143+ }
144+ }
145+@@ -1290,6 +1334,7 @@
146+ {
147+ DbusmenuMenuitem *child_dmi = construct_dbusmenu_for_widget (child, FALSE);
148+
149++ g_object_set_data (G_OBJECT (child_dmi), "dbusmenu-parent", mi);
150+ dbusmenu_menuitem_child_add_position (mi,
151+ child_dmi,
152+ position);
153+

Subscribers

People subscribed via source and target branches

to all changes: