diff --git a/plugins/applicationsmenu/Makefile.am b/plugins/applicationsmenu/Makefile.am index 7f7779e..a6461e3 100644 --- a/plugins/applicationsmenu/Makefile.am +++ b/plugins/applicationsmenu/Makefile.am @@ -50,15 +50,20 @@ libapplicationsmenu_la_DEPENDENCIES = \ $(top_builddir)/common/libpanel-common.la # -# xfce4-popup-applicationsmenu script +# xfce4-popup-applicationsmenu and xfce4-toggle-applicationsmenu script # bin_SCRIPTS = \ - xfce4-popup-applicationsmenu + xfce4-popup-applicationsmenu \ + xfce4-toggle-applicationsmenu xfce4-popup-applicationsmenu: xfce4-popup-applicationsmenu.sh Makefile $(AM_V_GEN) $(SED) -e "s,\@bindir\@,$(bindir),g" \ -e "s,\@localedir\@,$(localedir),g" $< >$@ +xfce4-toggle-applicationsmenu: xfce4-toggle-applicationsmenu.sh Makefile + $(AM_V_GEN) $(SED) -e "s,\@bindir\@,$(bindir),g" \ + -e "s,\@localedir\@,$(localedir),g" $< >$@ + # # .desktop file # @@ -70,11 +75,13 @@ desktop_DATA = $(desktop_in_files:.desktop.in.in=.desktop) EXTRA_DIST = \ applicationsmenu-dialog.glade \ xfce4-popup-applicationsmenu.sh \ + xfce4-toggle-applicationsmenu.sh \ $(desktop_in_files) DISTCLEANFILES = \ $(desktop_DATA) \ - xfce4-popup-applicationsmenu + xfce4-popup-applicationsmenu \ + xfce4-toggle-applicationsmenu if MAINTAINER_MODE BUILT_SOURCES = \ diff --git a/plugins/applicationsmenu/applicationsmenu.c b/plugins/applicationsmenu/applicationsmenu.c index dc34e93..5a718f7 100644 --- a/plugins/applicationsmenu/applicationsmenu.c +++ b/plugins/applicationsmenu/applicationsmenu.c @@ -699,6 +699,24 @@ applications_menu_plugin_remote_event (XfcePanelPlugin *panel_plugin, /* don't popup another menu */ return TRUE; } + else if (strcmp (name, "toggle") == 0 + && GTK_WIDGET_VISIBLE (panel_plugin) + && panel_utils_grab_available ()) + { + if(gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (plugin->button))) + { + /* hide the menu */ + applications_menu_plugin_menu_deactivate (plugin->menu, plugin->button); + } + else + { + /* show the menu at the button */ + applications_menu_plugin_menu (plugin->button, NULL, plugin); + } + + /* don't popup another menu */ + return TRUE; + } return FALSE; }