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

Subscribers

People subscribed via source and target branches

to all changes: