Ted Gould has proposed merging 
lp:~ted/indicator-appmenu/indicator-about-to-show into lp:indicator-appmenu.

Requested reviews:
  Indicator Applet Developers (indicator-applet-developers)


Makes it so that we pass the about to show signal down into the menuitem
-- 
https://code.launchpad.net/~ted/indicator-appmenu/indicator-about-to-show/+merge/35888
Your team ayatana-commits is subscribed to branch lp:indicator-appmenu.
=== modified file 'src/indicator-appmenu.c'
--- src/indicator-appmenu.c	2010-09-16 18:51:04 +0000
+++ src/indicator-appmenu.c	2010-09-17 21:15:57 +0000
@@ -130,6 +130,9 @@
 static GList * get_entries                                           (IndicatorObject * io);
 static guint get_location                                            (IndicatorObject * io,
                                                                       IndicatorObjectEntry * entry);
+static void entry_activate                                           (IndicatorObject * io,
+                                                                      IndicatorObjectEntry * entry,
+                                                                      guint timestamp);
 static void switch_default_app                                       (IndicatorAppmenu * iapp,
                                                                       WindowMenus * newdef,
                                                                       BamfWindow * active_window);
@@ -225,6 +228,7 @@
 
 	ioclass->get_entries = get_entries;
 	ioclass->get_location = get_location;
+	ioclass->entry_activate = entry_activate;
 
 	signals[WINDOW_REGISTERED] =  g_signal_new("window-registered",
 	                                      G_TYPE_FROM_CLASS(klass),
@@ -739,6 +743,29 @@
 	return count;
 }
 
+/* Responds to a menuitem being activated on the panel. */
+static void
+entry_activate (IndicatorObject * io, IndicatorObjectEntry * entry, guint timestamp)
+{
+	IndicatorAppmenu * iapp = INDICATOR_APPMENU(io);
+
+	if (iapp->default_app != NULL) {
+		window_menus_entry_activate(iapp->default_app, entry, timestamp);
+		return;
+	}
+
+	if (iapp->active_window == NULL) {
+		if (iapp->desktop_menu != NULL) {
+			window_menus_entry_activate(iapp->desktop_menu, entry, timestamp);
+		}
+		return;
+	}
+
+	/* Else we've got stubs, and the stubs don't care. */
+
+	return;
+}
+
 /* A helper for switch_default_app that takes care of the
    switching of the active window variable */
 static void

=== modified file 'src/window-menus.c'
--- src/window-menus.c	2010-09-16 21:24:09 +0000
+++ src/window-menus.c	2010-09-17 21:15:57 +0000
@@ -52,6 +52,7 @@
 	IndicatorObjectEntry ioentry;
 	gboolean disabled;
 	gboolean hidden;
+	DbusmenuMenuitem * mi;
 };
 
 #define WINDOW_MENUS_GET_PRIVATE(o) \
@@ -573,6 +574,8 @@
 	WMEntry * wmentry = g_new0(WMEntry, 1);
 	IndicatorObjectEntry * entry = &wmentry->ioentry;
 
+	wmentry->mi = newentry;
+
 	entry->label = GTK_LABEL(gtk_label_new_with_mnemonic(dbusmenu_menuitem_property_get(newentry, DBUSMENU_MENUITEM_PROP_LABEL)));
 
 	if (entry->label != NULL) {
@@ -707,3 +710,13 @@
 
 	return;
 }
+
+/* Signaled when the menu item is activated on the panel so we
+   can pass it down the stack. */
+void
+window_menus_entry_activate (WindowMenus * wm, IndicatorObjectEntry * entry, guint timestamp)
+{
+	WMEntry * wme = (WMEntry *)entry;
+	dbusmenu_menuitem_send_about_to_show(wme->mi, NULL, NULL);
+	return;
+}

=== modified file 'src/window-menus.h'
--- src/window-menus.h	2010-09-14 19:13:16 +0000
+++ src/window-menus.h	2010-09-17 21:15:57 +0000
@@ -73,6 +73,8 @@
 gboolean window_menus_get_error_state (WindowMenus * wm);
 void window_menus_entry_restore (WindowMenus * wm, IndicatorObjectEntry * entry);
 
+void window_menus_entry_activate (WindowMenus * wm, IndicatorObjectEntry * entry, guint timestamp);
+
 G_END_DECLS
 
 #endif

_______________________________________________
Mailing list: https://launchpad.net/~ayatana-commits
Post to     : ayatana-commits@lists.launchpad.net
Unsubscribe : https://launchpad.net/~ayatana-commits
More help   : https://help.launchpad.net/ListHelp

Reply via email to