Merge lp:~mterry/libdbusmenu/eclipse-rcp into lp:libdbusmenu/0.5

Proposed by Michael Terry
Status: Merged
Approved by: Ted Gould
Approved revision: 304
Merged at revision: 304
Proposed branch: lp:~mterry/libdbusmenu/eclipse-rcp
Merge into: lp:libdbusmenu/0.5
Diff against target: 35 lines (+18/-0)
1 file modified
libdbusmenu-gtk/parser.c (+18/-0)
To merge this branch: bzr merge lp:~mterry/libdbusmenu/eclipse-rcp
Reviewer Review Type Date Requested Status
Ted Gould (community) Approve
Review via email: mp+59277@code.launchpad.net

Description of the change

Yay, I finally figured out Eclipse and its RCP framework. Combined with the already-merged work for Emacs, this is the last piece.

This toggles the visibility of any menus we come across, which -- much like the fake 'activation' we do on toplevel items -- triggers RCP to fill out the menu.

I've tested this with both a sample RCP app and Eclipse itself (after disabling the blacklist in appmenu-gtk).

To post a comment you must log in.
Revision history for this message
Michael Terry (mterry) wrote :

Sorry, I should mention that it doesn't fix *all* issues with the menus. In particular, shortcuts still don't work right. But it's a lot of the way there.

Revision history for this message
Michael Terry (mterry) wrote :

Oy, and I forgot to get rid of the idle callback if the menuitem goes away. Don't merge this yet, I guess. I'll update with that fix.

Revision history for this message
Ted Gould (ted) wrote :

On Thu, 2011-04-28 at 13:45 +0000, Michael Terry wrote:
> Oy, and I forgot to get rid of the idle callback if the
> menuitem goes away. Don't merge this yet, I guess. I'll
> update with that fix.

It seems you could just ref() it? Seems that even if it survived a
little bit longer that wouldn't cause any harm.

Revision history for this message
Ronald Kinard (furyhunter) wrote :

If this change is merged, will it make it into Natty's package?

Revision history for this message
Ted Gould (ted) wrote :

Uhm, that'd would be the choice of the Ubuntu Desktop Team, but I'm willing to commit it to the dbusmenu 0.4 branch which would make it possible for them to put into Natty.

Revision history for this message
Michael Terry (mterry) wrote :

Finally got back to this and fixed the ref issue like you suggested, Ted. Please re-review this.

lp:~mterry/libdbusmenu/eclipse-rcp updated
304. By Michael Terry

ref menu until we're done toggling its visibility

Revision history for this message
Ted Gould (ted) wrote :

Looks good.

review: Approve
Revision history for this message
Ted Gould (ted) wrote :

I also merged this into the 0.4 branch.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'libdbusmenu-gtk/parser.c'
2--- libdbusmenu-gtk/parser.c 2011-04-27 02:39:06 +0000
3+++ libdbusmenu-gtk/parser.c 2011-05-18 18:20:51 +0000
4@@ -270,6 +270,16 @@
5 return item;
6 }
7
8+static gboolean
9+toggle_widget_visibility (GtkWidget * widget)
10+{
11+ gboolean vis = gtk_widget_get_visible (widget);
12+ gtk_widget_set_visible (widget, !vis);
13+ gtk_widget_set_visible (widget, vis);
14+ g_object_unref (G_OBJECT (widget));
15+ return FALSE;
16+}
17+
18 static void
19 watch_submenu(DbusmenuMenuitem * mi, GtkWidget * menu)
20 {
21@@ -285,6 +295,14 @@
22 G_CALLBACK (child_removed_cb),
23 mi);
24 g_object_add_weak_pointer(G_OBJECT (menu), (gpointer*)&pdata->shell);
25+
26+ /* Some apps (notably Eclipse RCP apps) don't fill contents of submenus
27+ until the menu is shown. So we fake that by toggling the visibility of
28+ any submenus we come across. Further, these apps need it done with a
29+ delay while they finish initializing, so we put the call in the idle
30+ queue. */
31+ g_idle_add((GSourceFunc)toggle_widget_visibility,
32+ g_object_ref (G_OBJECT (menu)));
33 }
34
35 static void

Subscribers

People subscribed via source and target branches