diff options
author | Didier Roche <didier.roche@canonical.com> | 2012-09-20 18:45:10 +0200 |
---|---|---|
committer | Didier Roche <didier.roche@canonical.com> | 2012-09-20 18:45:10 +0200 |
commit | c36de4d59150df37ec782a17fb3d14424fb4734a (patch) | |
tree | 61cd8a51b8dfb8089afeee0938e46945dae2f171 /libdbusmenu-gtk | |
parent | d1a1d09ea3487669f8622eb4106414eb01d41cfd (diff) | |
parent | ddaa8926d360ed0b6714aab4c06f4b91580bddbc (diff) | |
download | libdbusmenu-c36de4d59150df37ec782a17fb3d14424fb4734a.tar.gz libdbusmenu-c36de4d59150df37ec782a17fb3d14424fb4734a.tar.bz2 libdbusmenu-c36de4d59150df37ec782a17fb3d14424fb4734a.zip |
Import upstream version 12.10.0
Diffstat (limited to 'libdbusmenu-gtk')
-rw-r--r-- | libdbusmenu-gtk/Makefile.am | 8 | ||||
-rw-r--r-- | libdbusmenu-gtk/Makefile.in | 65 | ||||
-rw-r--r-- | libdbusmenu-gtk/genericmenuitem.c | 5 | ||||
-rw-r--r-- | libdbusmenu-gtk/parser.c | 63 |
4 files changed, 122 insertions, 19 deletions
diff --git a/libdbusmenu-gtk/Makefile.am b/libdbusmenu-gtk/Makefile.am index b52098f..a255a69 100644 --- a/libdbusmenu-gtk/Makefile.am +++ b/libdbusmenu-gtk/Makefile.am @@ -160,14 +160,14 @@ if HAVE_VALA if HAVE_INTROSPECTION vapidir = $(datadir)/vala/vapi -vapi_DATA = DbusmenuGtk$(VER)-0.4.vapi +vapi_DATA = dbusmenu-gtk$(VER)-0.4.vapi -DbusmenuGtk$(VER)-0.4.vapi: DbusmenuGtk$(VER)-0.4.tmp.gir Makefile.am - $(VALA_API_GEN) --library=DbusmenuGtk$(VER)-0.4 \ +dbusmenu-gtk$(VER)-0.4.vapi: DbusmenuGtk$(VER)-0.4.tmp.gir Makefile.am + $(VALA_API_GEN) --library=dbusmenu-gtk$(VER)-0.4 \ --pkg gdk-pixbuf-2.0 \ --pkg $(GTKVALA) \ --pkg atk \ - --pkg Dbusmenu-0.4 \ + --pkg dbusmenu-glib-0.4 \ --vapidir=$(top_builddir)/libdbusmenu-glib \ $< diff --git a/libdbusmenu-gtk/Makefile.in b/libdbusmenu-gtk/Makefile.in index 19481eb..d1586c1 100644 --- a/libdbusmenu-gtk/Makefile.in +++ b/libdbusmenu-gtk/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11.3 from Makefile.am. +# Makefile.in generated by automake 1.11.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -35,6 +35,23 @@ VPATH = @srcdir@ +am__make_dryrun = \ + { \ + am__dry=no; \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ + | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ + *) \ + for am__flg in $$MAKEFLAGS; do \ + case $$am__flg in \ + *=*|--*) ;; \ + *n*) am__dry=yes; break;; \ + esac; \ + done;; \ + esac; \ + test $$am__dry = yes; \ + } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -171,6 +188,11 @@ am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libdbusmenu_gtk_la_SOURCES) $(libdbusmenu_gtk3_la_SOURCES) DIST_SOURCES = $(libdbusmenu_gtk_la_SOURCES) \ $(libdbusmenu_gtk3_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac DATA = $(gir_DATA) $(pkgconfig_DATA) $(typelib_DATA) $(vapi_DATA) HEADERS = $(libdbusmenu_gtk3include_HEADERS) \ $(libdbusmenu_gtkinclude_HEADERS) @@ -494,7 +516,7 @@ INTROSPECTION_COMPILER_ARGS = --includedir=$(builddir) --includedir=$(top_buildd # VAPI Files ######################### @HAVE_INTROSPECTION_TRUE@@HAVE_VALA_TRUE@vapidir = $(datadir)/vala/vapi -@HAVE_INTROSPECTION_TRUE@@HAVE_VALA_TRUE@vapi_DATA = DbusmenuGtk$(VER)-0.4.vapi +@HAVE_INTROSPECTION_TRUE@@HAVE_VALA_TRUE@vapi_DATA = dbusmenu-gtk$(VER)-0.4.vapi all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-am @@ -537,7 +559,6 @@ dbusmenu-gtk3-0.4.pc: $(top_builddir)/config.status $(srcdir)/dbusmenu-gtk3-0.4. cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) - test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ @@ -545,6 +566,8 @@ install-libLTLIBRARIES: $(lib_LTLIBRARIES) else :; fi; \ done; \ test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } @@ -702,8 +725,11 @@ clean-libtool: -rm -rf .libs _libs install-girDATA: $(gir_DATA) @$(NORMAL_INSTALL) - test -z "$(girdir)" || $(MKDIR_P) "$(DESTDIR)$(girdir)" @list='$(gir_DATA)'; test -n "$(girdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(girdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(girdir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -720,8 +746,11 @@ uninstall-girDATA: dir='$(DESTDIR)$(girdir)'; $(am__uninstall_files_from_dir) install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) - test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -738,8 +767,11 @@ uninstall-pkgconfigDATA: dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) install-typelibDATA: $(typelib_DATA) @$(NORMAL_INSTALL) - test -z "$(typelibdir)" || $(MKDIR_P) "$(DESTDIR)$(typelibdir)" @list='$(typelib_DATA)'; test -n "$(typelibdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(typelibdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(typelibdir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -756,8 +788,11 @@ uninstall-typelibDATA: dir='$(DESTDIR)$(typelibdir)'; $(am__uninstall_files_from_dir) install-vapiDATA: $(vapi_DATA) @$(NORMAL_INSTALL) - test -z "$(vapidir)" || $(MKDIR_P) "$(DESTDIR)$(vapidir)" @list='$(vapi_DATA)'; test -n "$(vapidir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(vapidir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(vapidir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -774,8 +809,11 @@ uninstall-vapiDATA: dir='$(DESTDIR)$(vapidir)'; $(am__uninstall_files_from_dir) install-libdbusmenu_gtk3includeHEADERS: $(libdbusmenu_gtk3include_HEADERS) @$(NORMAL_INSTALL) - test -z "$(libdbusmenu_gtk3includedir)" || $(MKDIR_P) "$(DESTDIR)$(libdbusmenu_gtk3includedir)" @list='$(libdbusmenu_gtk3include_HEADERS)'; test -n "$(libdbusmenu_gtk3includedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdbusmenu_gtk3includedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdbusmenu_gtk3includedir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -792,8 +830,11 @@ uninstall-libdbusmenu_gtk3includeHEADERS: dir='$(DESTDIR)$(libdbusmenu_gtk3includedir)'; $(am__uninstall_files_from_dir) install-libdbusmenu_gtkincludeHEADERS: $(libdbusmenu_gtkinclude_HEADERS) @$(NORMAL_INSTALL) - test -z "$(libdbusmenu_gtkincludedir)" || $(MKDIR_P) "$(DESTDIR)$(libdbusmenu_gtkincludedir)" @list='$(libdbusmenu_gtkinclude_HEADERS)'; test -n "$(libdbusmenu_gtkincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdbusmenu_gtkincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdbusmenu_gtkincludedir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -1063,12 +1104,12 @@ $(glib_enum_c): $(builddir)/$(glib_enum_h) @HAVE_INTROSPECTION_TRUE@DbusmenuGtk$(VER)-0.4.gir: libdbusmenu-gtk$(VER).la -@HAVE_INTROSPECTION_TRUE@@HAVE_VALA_TRUE@DbusmenuGtk$(VER)-0.4.vapi: DbusmenuGtk$(VER)-0.4.tmp.gir Makefile.am -@HAVE_INTROSPECTION_TRUE@@HAVE_VALA_TRUE@ $(VALA_API_GEN) --library=DbusmenuGtk$(VER)-0.4 \ +@HAVE_INTROSPECTION_TRUE@@HAVE_VALA_TRUE@dbusmenu-gtk$(VER)-0.4.vapi: DbusmenuGtk$(VER)-0.4.tmp.gir Makefile.am +@HAVE_INTROSPECTION_TRUE@@HAVE_VALA_TRUE@ $(VALA_API_GEN) --library=dbusmenu-gtk$(VER)-0.4 \ @HAVE_INTROSPECTION_TRUE@@HAVE_VALA_TRUE@ --pkg gdk-pixbuf-2.0 \ @HAVE_INTROSPECTION_TRUE@@HAVE_VALA_TRUE@ --pkg $(GTKVALA) \ @HAVE_INTROSPECTION_TRUE@@HAVE_VALA_TRUE@ --pkg atk \ -@HAVE_INTROSPECTION_TRUE@@HAVE_VALA_TRUE@ --pkg Dbusmenu-0.4 \ +@HAVE_INTROSPECTION_TRUE@@HAVE_VALA_TRUE@ --pkg dbusmenu-glib-0.4 \ @HAVE_INTROSPECTION_TRUE@@HAVE_VALA_TRUE@ --vapidir=$(top_builddir)/libdbusmenu-glib \ @HAVE_INTROSPECTION_TRUE@@HAVE_VALA_TRUE@ $< diff --git a/libdbusmenu-gtk/genericmenuitem.c b/libdbusmenu-gtk/genericmenuitem.c index 91004c0..ae6d4c0 100644 --- a/libdbusmenu-gtk/genericmenuitem.c +++ b/libdbusmenu-gtk/genericmenuitem.c @@ -242,7 +242,7 @@ has_mnemonic (const gchar * string, gboolean previous_underscore) } /* Sanitize the label by removing "__" meaning "_" */ -gchar * +static gchar * sanitize_label (const gchar * in_label) { static GRegex * underscore_regex = NULL; @@ -335,10 +335,10 @@ set_label (GtkMenuItem * menu_item, const gchar * in_label) labelw = GTK_LABEL(gtk_accel_label_new(local_label)); gtk_label_set_use_markup(GTK_LABEL(labelw), TRUE); gtk_misc_set_alignment(GTK_MISC(labelw), 0.0, 0.5); + gtk_accel_label_set_accel_widget(GTK_ACCEL_LABEL(labelw), GTK_WIDGET(menu_item)); if (has_mnemonic(in_label, FALSE)) { gtk_label_set_use_underline(GTK_LABEL(labelw), TRUE); - gtk_accel_label_set_accel_widget(GTK_ACCEL_LABEL(labelw), GTK_WIDGET(menu_item)); gtk_label_set_markup_with_mnemonic(labelw, local_label); } else { gchar * sanitized = sanitize_label(local_label); @@ -365,7 +365,6 @@ set_label (GtkMenuItem * menu_item, const gchar * in_label) } else { if (has_mnemonic(in_label, FALSE)) { gtk_label_set_use_underline(GTK_LABEL(labelw), TRUE); - gtk_accel_label_set_accel_widget(GTK_ACCEL_LABEL(labelw), GTK_WIDGET(menu_item)); gtk_label_set_markup_with_mnemonic(labelw, local_label); } else { gchar * sanitized = sanitize_label(local_label); diff --git a/libdbusmenu-gtk/parser.c b/libdbusmenu-gtk/parser.c index 2f7277c..419c15f 100644 --- a/libdbusmenu-gtk/parser.c +++ b/libdbusmenu-gtk/parser.c @@ -60,6 +60,9 @@ typedef struct _ParserData gulong widget_accel_handler_id; gulong widget_toggle_handler_id; gulong widget_visible_handler_id; + gulong widget_screen_changed_handler_id; + + gulong settings_notify_handler_id; } ParserData; @@ -116,6 +119,12 @@ static void widget_notify_cb (GtkWidget * widget, static void widget_add_cb (GtkWidget * widget, GtkWidget * child, gpointer data); +static void widget_screen_changed_cb (GtkWidget * widget, + GdkScreen * old_screen, + gpointer data); +static void settings_notify_cb (GtkSettings * settings, + GParamSpec * pspec, + gpointer data); static gboolean should_show_image (GtkImage * image); static void menuitem_notify_cb (GtkWidget * widget, GParamSpec * pspec, @@ -130,6 +139,7 @@ static const char * interned_str_active = NULL; static const char * interned_str_always_show_image = NULL; static const char * interned_str_file = NULL; static const char * interned_str_gicon = NULL; +static const char * interned_str_gtk_menu_images = NULL; static const char * interned_str_icon_name = NULL; static const char * interned_str_icon_set = NULL; static const char * interned_str_image = NULL; @@ -155,6 +165,7 @@ ensure_interned_strings_loaded (void) interned_str_always_show_image = g_intern_static_string ("always-show-image"); interned_str_file = g_intern_static_string ("file"); interned_str_gicon = g_intern_static_string ("gicon"); + interned_str_gtk_menu_images = g_intern_static_string ("gtk-menu-images"); interned_str_icon_name = g_intern_static_string ("icon-name"); interned_str_icon_set = g_intern_static_string ("icon-set"); interned_str_image = g_intern_static_string ("image"); @@ -291,6 +302,9 @@ parser_data_free (ParserData * pdata) dbusmenu_gtk_clear_signal_handler (o, &pdata->widget_accel_handler_id); dbusmenu_gtk_clear_signal_handler (o, &pdata->widget_toggle_handler_id); dbusmenu_gtk_clear_signal_handler (o, &pdata->widget_visible_handler_id); + dbusmenu_gtk_clear_signal_handler (o, &pdata->widget_screen_changed_handler_id); + dbusmenu_gtk_clear_signal_handler (gtk_widget_get_settings (GTK_WIDGET (o)), + &pdata->settings_notify_handler_id); g_object_remove_weak_pointer(o, (gpointer*)&pdata->widget); /* since the DbusmenuMenuitem is being destroyed, uncache it from the GtkWidget */ @@ -746,6 +760,10 @@ construct_dbusmenu_for_widget (GtkWidget * widget) pdata->widget_add_handler_id = g_signal_connect (widget, "add", G_CALLBACK (widget_add_cb), mi); + pdata->widget_screen_changed_handler_id = g_signal_connect (widget, "screen-changed", + G_CALLBACK (widget_screen_changed_cb), mi); + widget_screen_changed_cb (widget, NULL, mi); + return mi; } @@ -1282,6 +1300,51 @@ widget_add_cb (GtkWidget *widget, handle_first_label (data); } +/* Pass NULL for pspec to update all settings at once */ +static void +widget_screen_changed_cb (GtkWidget * widget, GdkScreen * old_screen, gpointer data) +{ + DbusmenuMenuitem * mi = DBUSMENU_MENUITEM(data); + g_return_if_fail (mi != NULL); + + ParserData *pdata = (ParserData *)g_object_get_data(G_OBJECT(mi), PARSER_DATA); + + if (old_screen != NULL) + dbusmenu_gtk_clear_signal_handler (gtk_settings_get_for_screen (old_screen), + &pdata->settings_notify_handler_id); + pdata->settings_notify_handler_id = g_signal_connect (gtk_widget_get_settings (widget), "notify", + G_CALLBACK (settings_notify_cb), mi); + + /* And update widget now that we have a new GtkSettings */ + settings_notify_cb (gtk_widget_get_settings (widget), NULL, mi); +} + +/* Pass NULL for pspec to update all settings at once */ +static void +settings_notify_cb (GtkSettings * settings, GParamSpec * pspec, gpointer data) +{ + GValue prop_value = {0}; + DbusmenuMenuitem * mi = DBUSMENU_MENUITEM(data); + g_return_if_fail (mi != NULL); + + ensure_interned_strings_loaded (); + + if (pspec != NULL) + { + g_value_init (&prop_value, pspec->value_type); + g_object_get_property (G_OBJECT (settings), pspec->name, &prop_value); + } + + if (pspec == NULL || pspec->name == interned_str_gtk_menu_images) + { + ParserData *pdata = (ParserData *)g_object_get_data(G_OBJECT(mi), PARSER_DATA); + update_icon (mi, pdata, GTK_IMAGE(pdata->image)); + } + + if (pspec != NULL) + g_value_unset (&prop_value); +} + /* A child item was added to a menu we're watching. Let's try to integrate it. */ static void item_inserted_cb (GtkContainer *menu, |