[Xfce4-commits] <xfce4-appfinder:master> Add execute menu item to launch without closing the window.

Nick Schermer noreply at xfce.org
Sun Jan 6 17:30:01 CET 2013


Updating branch refs/heads/master
         to 2bf821e5fa33578d78baa617f33dca889e97c05b (commit)
       from 56d59a8d99bcb6810191fbdf8f6e9286c9c66928 (commit)

commit 2bf821e5fa33578d78baa617f33dca889e97c05b
Author: Nick Schermer <nick at xfce.org>
Date:   Sun Jan 6 17:29:02 2013 +0100

    Add execute menu item to launch without closing the window.

 src/appfinder-window.c |   36 +++++++++++++++++++++++++++++++-----
 1 files changed, 31 insertions(+), 5 deletions(-)

diff --git a/src/appfinder-window.c b/src/appfinder-window.c
index 021334a..d3cd567 100644
--- a/src/appfinder-window.c
+++ b/src/appfinder-window.c
@@ -108,7 +108,9 @@ static gboolean   xfce_appfinder_window_item_visible                  (GtkTreeMo
 static void       xfce_appfinder_window_item_changed                  (XfceAppfinderWindow         *window);
 static void       xfce_appfinder_window_row_activated                 (XfceAppfinderWindow         *window);
 static void       xfce_appfinder_window_icon_theme_changed            (XfceAppfinderWindow         *window);
-static void       xfce_appfinder_window_execute                       (XfceAppfinderWindow         *window);
+static void       xfce_appfinder_window_launch_clicked                (XfceAppfinderWindow         *window);
+static void       xfce_appfinder_window_execute                       (XfceAppfinderWindow         *window,
+                                                                       gboolean                     close_on_succeed);
 
 
 
@@ -391,7 +393,7 @@ xfce_appfinder_window_init (XfceAppfinderWindow *window)
   window->button_launch = button = gtk_button_new_with_mnemonic (_("La_unch"));
   gtk_container_add (GTK_CONTAINER (bbox), button);
   g_signal_connect_swapped (G_OBJECT (button), "clicked",
-      G_CALLBACK (xfce_appfinder_window_execute), window);
+      G_CALLBACK (xfce_appfinder_window_launch_clicked), window);
   gtk_widget_set_sensitive (button, FALSE);
   gtk_widget_show (button);
 
@@ -804,6 +806,15 @@ xfce_appfinder_window_view_get_selected (XfceAppfinderWindow  *window,
 
 
 static void
+xfce_appfinder_window_popup_menu_execute (GtkWidget           *mi,
+                                          XfceAppfinderWindow *window)
+{
+  xfce_appfinder_window_execute (window, FALSE);
+}
+
+
+
+static void
 xfce_appfinder_window_popup_menu_edit (GtkWidget           *mi,
                                        XfceAppfinderWindow *window)
 {
@@ -975,6 +986,12 @@ xfce_appfinder_window_popup_menu (GtkWidget           *view,
       gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
       gtk_widget_show (mi);
 
+      mi = gtk_image_menu_item_new_from_stock (GTK_STOCK_EXECUTE, NULL);
+      gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
+      g_signal_connect (G_OBJECT (mi), "activate",
+          G_CALLBACK (xfce_appfinder_window_popup_menu_execute), window);
+      gtk_widget_show (mi);
+
       mi = gtk_image_menu_item_new_from_stock (GTK_STOCK_EDIT, NULL);
       gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
       g_signal_connect (G_OBJECT (mi), "activate",
@@ -1165,7 +1182,7 @@ xfce_appfinder_window_entry_activate (GtkEditable         *entry,
       if (cursor_set)
         gtk_widget_grab_focus (window->view);
       else
-        xfce_appfinder_window_execute (window);
+        xfce_appfinder_window_execute (window, TRUE);
     }
   else if (gtk_widget_get_sensitive (window->button_launch))
     {
@@ -1570,7 +1587,16 @@ xfce_appfinder_window_execute_command (const gchar          *text,
 
 
 static void
-xfce_appfinder_window_execute (XfceAppfinderWindow *window)
+xfce_appfinder_window_launch_clicked (XfceAppfinderWindow *window)
+{
+  xfce_appfinder_window_execute (window, TRUE);
+}
+
+
+
+static void
+xfce_appfinder_window_execute (XfceAppfinderWindow *window,
+                               gboolean             close_on_succeed)
 {
   GtkTreeModel *model;
   GtkTreeIter   iter, orig;
@@ -1638,7 +1664,7 @@ xfce_appfinder_window_execute (XfceAppfinderWindow *window)
       g_error_free (error);
     }
 
-  if (result)
+  if (result && close_on_succeed)
     gtk_widget_destroy (GTK_WIDGET (window));
 }
 


More information about the Xfce4-commits mailing list