ayatana-commits team mailing list archive
-
ayatana-commits team
-
Mailing list archive
-
Message #02373
[Merge] lp:~ted/dbusmenu/about-to-show-is-activate into lp:dbusmenu
Ted Gould has proposed merging lp:~ted/dbusmenu/about-to-show-is-activate into lp:dbusmenu.
Requested reviews:
DBus Menu Team (dbusmenu-team)
Making it so that we pass about-to-show up to menu items with children as activate
--
https://code.launchpad.net/~ted/dbusmenu/about-to-show-is-activate/+merge/35892
Your team ayatana-commits is subscribed to branch lp:dbusmenu.
=== modified file 'libdbusmenu-glib/menuitem.c'
--- libdbusmenu-glib/menuitem.c 2010-08-20 19:49:33 +0000
+++ libdbusmenu-glib/menuitem.c 2010-09-17 21:38:43 +0000
@@ -97,6 +97,7 @@
static void g_value_transform_STRING_BOOLEAN (const GValue * in, GValue * out);
static void g_value_transform_STRING_INT (const GValue * in, GValue * out);
static void handle_event (DbusmenuMenuitem * mi, const gchar * name, const GValue * value, guint timestamp);
+static void send_about_to_show (DbusmenuMenuitem * mi, dbusmenu_menuitem_about_to_show_cb cb, gpointer cb_data);
/* GObject stuff */
G_DEFINE_TYPE (DbusmenuMenuitem, dbusmenu_menuitem, G_TYPE_OBJECT);
@@ -114,6 +115,7 @@
object_class->get_property = get_property;
klass->handle_event = handle_event;
+ klass->send_about_to_show = send_about_to_show;
/**
DbusmenuMenuitem::property-changed:
@@ -387,6 +389,28 @@
return;
}
+/* Handles our about to show signal on items that submenus
+ exist. This is sending just activate now, but we should
+ probably consider a special signal in the future if GTK
+ gets more sophisticated about this. */
+static void
+send_about_to_show (DbusmenuMenuitem * mi, dbusmenu_menuitem_about_to_show_cb cb, gpointer cb_data)
+{
+ g_return_if_fail(DBUSMENU_IS_MENUITEM(mi));
+
+ if (dbusmenu_menuitem_get_children(mi) == NULL) {
+ g_warning("About to Show called on an item wihtout submenus. We're ignoring it.");
+ } else {
+ g_signal_emit(G_OBJECT(mi), signals[ITEM_ACTIVATED], 0, 0 /* timestamp */, TRUE);
+ }
+
+ if (cb != NULL) {
+ cb(mi, cb_data);
+ }
+
+ return;
+}
+
/* Public interface */
/**
Follow ups