aboutsummaryrefslogtreecommitdiff
path: root/libdbusmenu-gtk/client.c
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2010-03-31 14:15:36 -0500
committerTed Gould <ted@gould.cx>2010-03-31 14:15:36 -0500
commitabd4bb02f717e6d27b77c903877a98d1a5a534b7 (patch)
tree901f7518f5da2db2a90075706bf0c18b5320f0c5 /libdbusmenu-gtk/client.c
parent85a76718ac641b83bb3a283d5819a3272fdd134c (diff)
parent1f308a47c578baec7ba7bfebb880e0ecf0a17688 (diff)
downloadlibdbusmenu-abd4bb02f717e6d27b77c903877a98d1a5a534b7.tar.gz
libdbusmenu-abd4bb02f717e6d27b77c903877a98d1a5a534b7.tar.bz2
libdbusmenu-abd4bb02f717e6d27b77c903877a98d1a5a534b7.zip
* Upstream merge
* Supporting AboutToShow in event callbacks to catch up with QT implementation.
Diffstat (limited to 'libdbusmenu-gtk/client.c')
-rw-r--r--libdbusmenu-gtk/client.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/libdbusmenu-gtk/client.c b/libdbusmenu-gtk/client.c
index 98f1cb2..3de42fe 100644
--- a/libdbusmenu-gtk/client.c
+++ b/libdbusmenu-gtk/client.c
@@ -109,10 +109,16 @@ static const gchar * data_menu = "dbusmenugtk-data-gtkmenu";
static gboolean
menu_pressed_cb (GtkMenuItem * gmi, DbusmenuMenuitem * mi)
{
- GValue value = {0};
- g_value_init(&value, G_TYPE_INT);
- g_value_set_int(&value, 0);
- dbusmenu_menuitem_handle_event(mi, "clicked", &value, gtk_get_current_event_time());
+ if (gtk_menu_item_get_submenu(gmi) == NULL) {
+ GValue value = {0};
+ g_value_init(&value, G_TYPE_INT);
+ g_value_set_int(&value, 0);
+ dbusmenu_menuitem_handle_event(mi, "clicked", &value, gtk_get_current_event_time());
+ } else {
+ /* TODO: We need to stop the display of the submenu
+ until this callback returns. */
+ dbusmenu_menuitem_send_about_to_show(mi, NULL, NULL);
+ }
return TRUE;
}