diff options
-rw-r--r-- | Makefile.am.enum | 2 | ||||
-rw-r--r-- | libdbusmenu-glib/Makefile.am | 23 | ||||
-rw-r--r-- | libdbusmenu-gtk/client.c | 13 | ||||
-rw-r--r-- | libdbusmenu-gtk/genericmenuitem.c | 10 | ||||
-rw-r--r-- | libdbusmenu-gtk/parser.c | 9 | ||||
-rw-r--r-- | tests/Makefile.am | 3 |
6 files changed, 46 insertions, 14 deletions
diff --git a/Makefile.am.enum b/Makefile.am.enum index 0503de0..a85061a 100644 --- a/Makefile.am.enum +++ b/Makefile.am.enum @@ -35,7 +35,7 @@ stamp-enum-types: $(glib_enum_headers) $(glib_enum_h): stamp-enum-types @true -$(glib_enum_c): $(glib_enum_h) +$(glib_enum_c): $(builddir)/$(glib_enum_h) $(QUIET_GEN)mkdir -p `dirname $(builddir)/$(glib_enum_c)` $(QUIET_GEN)$(GLIB_MKENUMS) \ --template $(srcdir)/$(enum_tmpl_c) \ diff --git a/libdbusmenu-glib/Makefile.am b/libdbusmenu-glib/Makefile.am index 5a04900..71dce6d 100644 --- a/libdbusmenu-glib/Makefile.am +++ b/libdbusmenu-glib/Makefile.am @@ -19,7 +19,6 @@ libdbusmenu_glibincludedir=$(includedir)/libdbusmenu-glib-0.4/libdbusmenu-glib/ EXPORTED_OBJECTS = \ - enum-types.h \ menuitem.h \ menuitem-proxy.h \ server.h \ @@ -27,6 +26,7 @@ EXPORTED_OBJECTS = \ libdbusmenu_glibinclude_HEADERS = \ $(EXPORTED_OBJECTS) \ + enum-types.h \ dbusmenu-glib.h \ types.h @@ -70,9 +70,16 @@ libdbusmenu_glib_la_LIBADD = \ pkgconfig_DATA = dbusmenu-glib-0.4.pc pkgconfigdir = $(libdir)/pkgconfig +ENUMHEADERS = \ + menuitem.h \ + menuitem-proxy.h \ + server.h \ + client.h \ + types.h + glib_enum_h = enum-types.h glib_enum_c = enum-types.c -glib_enum_headers = $(addprefix $(srcdir)/, $(libdbusmenu_glibinclude_HEADERS)) +glib_enum_headers = $(addprefix $(srcdir)/, $(ENUMHEADERS)) DISTCLEANFILES += \ enum-types.c \ @@ -158,16 +165,22 @@ INTROSPECTION_COMPILER_ARGS = --includedir=$(builddir) if HAVE_INTROSPECTION +introspection_objects = \ + $(addprefix $(srcdir)/, $(EXPORTED_OBJECTS)) \ + $(builddir)/enum-types.h + introspection_sources = \ - $(libdbusmenu_glibinclude_HEADERS) \ - $(EXPORTED_OBJECTS:.h=.c) + $(addprefix $(srcdir)/, $(EXPORTED_OBJECTS)) \ + $(srcdir)/dbusmenu-glib.h \ + $(srcdir)/types.h \ + $(introspection_objects:.h=.c) Dbusmenu-0.4.gir: libdbusmenu-glib.la Dbusmenu_0_4_gir_INCLUDES = \ GObject-2.0 Dbusmenu_0_4_gir_CFLAGS = $(DBUSMENUGLIB_CFLAGS) -I$(top_srcdir) Dbusmenu_0_4_gir_LIBS = libdbusmenu-glib.la -Dbusmenu_0_4_gir_FILES = $(addprefix $(srcdir)/, $(introspection_sources)) +Dbusmenu_0_4_gir_FILES = $(introspection_sources) Dbusmenu_0_4_gir_NAMESPACE = Dbusmenu Dbusmenu_0_4_gir_VERSION = 0.4 Dbusmenu_0_4_gir_EXPORT_PACKAGES = dbusmenu-glib-0.4 diff --git a/libdbusmenu-gtk/client.c b/libdbusmenu-gtk/client.c index 38b6a75..533764a 100644 --- a/libdbusmenu-gtk/client.c +++ b/libdbusmenu-gtk/client.c @@ -505,7 +505,6 @@ menu_item_stop_activating(DbusmenuMenuitem * mi) guint id = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(parent), data_idle_close_id)); if (id > 0) { - g_source_remove(id); g_object_set_data(G_OBJECT(parent), data_idle_close_id, GINT_TO_POINTER(0)); should_close = TRUE; @@ -575,6 +574,14 @@ close_in_idle (DbusmenuMenuitem * mi) } static void +cancel_idle_close_id (gpointer data) +{ + guint id = GPOINTER_TO_INT(data); + if (id > 0) + g_source_remove(id); +} + +static void submenu_notify_visible_cb (GtkWidget * menu, GParamSpec * pspec, DbusmenuMenuitem * mi) { if (gtk_widget_get_visible (menu)) { @@ -591,8 +598,8 @@ submenu_notify_visible_cb (GtkWidget * menu, GParamSpec * pspec, DbusmenuMenuite data_idle_close_id)); if (id == 0) { id = g_idle_add((GSourceFunc)close_in_idle, mi); - g_object_set_data(G_OBJECT(mi), data_idle_close_id, - GINT_TO_POINTER(id)); + g_object_set_data_full(G_OBJECT(mi), data_idle_close_id, + GINT_TO_POINTER(id), cancel_idle_close_id); } } } diff --git a/libdbusmenu-gtk/genericmenuitem.c b/libdbusmenu-gtk/genericmenuitem.c index ef77a2e..098de67 100644 --- a/libdbusmenu-gtk/genericmenuitem.c +++ b/libdbusmenu-gtk/genericmenuitem.c @@ -241,7 +241,12 @@ set_label (GtkMenuItem * menu_item, const gchar * in_label) /* We need to put the child into a new box and make the box the child of the menu item. Basically we're inserting a box in the middle. */ + #ifdef HAVE_GTK3 + GtkWidget * hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, + get_toggle_space(GTK_WIDGET(menu_item))); + #else GtkWidget * hbox = gtk_hbox_new(FALSE, get_toggle_space(GTK_WIDGET(menu_item))); + #endif g_object_ref(child); gtk_container_remove(GTK_CONTAINER(menu_item), child); gtk_box_pack_start(GTK_BOX(hbox), child, FALSE, FALSE, 0); @@ -457,7 +462,12 @@ genericmenuitem_set_image (Genericmenuitem * menu_item, GtkWidget * image) /* We need to put the child into a new box and make the box the child of the menu item. Basically we're inserting a box in the middle. */ + #ifdef HAVE_GTK3 + GtkWidget * hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, + get_toggle_space(GTK_WIDGET(menu_item))); + #else GtkWidget * hbox = gtk_hbox_new(FALSE, get_toggle_space(GTK_WIDGET(menu_item))); + #endif g_object_ref(child); gtk_container_remove(GTK_CONTAINER(menu_item), child); gtk_box_pack_end(GTK_BOX(hbox), child, TRUE, TRUE, 0); diff --git a/libdbusmenu-gtk/parser.c b/libdbusmenu-gtk/parser.c index e988c62..92932c5 100644 --- a/libdbusmenu-gtk/parser.c +++ b/libdbusmenu-gtk/parser.c @@ -1059,8 +1059,13 @@ widget_notify_cb (GtkWidget *widget, DBUSMENU_MENUITEM_PROP_VISIBLE, g_value_get_boolean (&prop_value)); } - else if (pspec->name == g_intern_static_string ("image") || - pspec->name == g_intern_static_string ("always-show-image")) + else if (pspec->name == g_intern_static_string ("always-show-image")) + { + GtkWidget *image = NULL; + g_object_get(widget, "image", &image, NULL); + update_icon (child, GTK_IMAGE(image)); + } + else if (pspec->name == g_intern_static_string ("image")) { GtkWidget *image; image = GTK_WIDGET (g_value_get_object (&prop_value)); diff --git a/tests/Makefile.am b/tests/Makefile.am index 5110b8e..a227916 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -29,9 +29,6 @@ TESTS += \ test-gtk-parser-test endif -XFAIL_TESTS = \ - test-glib-proxy - # The Python test only work on the system copy of # dbusmenu, so while they can be usefule they're not # good tests of what you're currently building. Handy |