[Xfce4-commits] <xfce4-panel:master> Allow using enter in the launcher treeviews.

Nick Schermer noreply at xfce.org
Sun Nov 7 20:52:02 CET 2010


Updating branch refs/heads/master
         to 10da325fac243a0b8d6766508b3fc892d605531a (commit)
       from de2ebcb59c77eeb30918d40271cb8ab0393d6fc0 (commit)

commit 10da325fac243a0b8d6766508b3fc892d605531a
Author: Nick Schermer <nick at xfce.org>
Date:   Sun Nov 7 20:49:09 2010 +0100

    Allow using enter in the launcher treeviews.

 plugins/launcher/launcher-dialog.c |  108 +++++++++++++++++++++++++-----------
 1 files changed, 75 insertions(+), 33 deletions(-)

diff --git a/plugins/launcher/launcher-dialog.c b/plugins/launcher/launcher-dialog.c
index f19e73f..fbb981c 100644
--- a/plugins/launcher/launcher-dialog.c
+++ b/plugins/launcher/launcher-dialog.c
@@ -30,6 +30,7 @@
 #include <garcon/garcon.h>
 #include <xfconf/xfconf.h>
 #include <gio/gio.h>
+#include <gdk/gdkkeysyms.h>
 
 #include <common/panel-private.h>
 #include <common/panel-utils.h>
@@ -67,14 +68,16 @@ enum
 
 
 
-static void launcher_dialog_items_set_item         (GtkTreeModel         *model,
-                                                    GtkTreeIter          *iter,
-                                                    GarconMenuItem       *item);
-static void launcher_dialog_tree_save              (LauncherPluginDialog *dialog);
-static void launcher_dialog_tree_selection_changed (GtkTreeSelection     *selection,
-                                                    LauncherPluginDialog *dialog);
-static void launcher_dialog_items_unload           (LauncherPluginDialog *dialog);
-static void launcher_dialog_items_load             (LauncherPluginDialog *dialog);
+static void     launcher_dialog_items_set_item         (GtkTreeModel         *model,
+                                                        GtkTreeIter          *iter,
+                                                        GarconMenuItem       *item);
+static void     launcher_dialog_tree_save              (LauncherPluginDialog *dialog);
+static void     launcher_dialog_tree_selection_changed (GtkTreeSelection     *selection,
+                                                        LauncherPluginDialog *dialog);
+static gboolean launcher_dialog_press_event            (LauncherPluginDialog *dialog,
+                                                        const gchar          *object_name);
+static void     launcher_dialog_items_unload           (LauncherPluginDialog *dialog);
+static void     launcher_dialog_items_load             (LauncherPluginDialog *dialog);
 
 
 
@@ -297,24 +300,32 @@ launcher_dialog_add_button_press_event (GtkTreeView          *treeview,
                                         GdkEventButton       *event,
                                         LauncherPluginDialog *dialog)
 {
-  GObject *object;
-
   panel_return_val_if_fail (GTK_IS_BUILDER (dialog->builder), FALSE);
   panel_return_val_if_fail (GTK_IS_TREE_VIEW (treeview), FALSE);
 
-  if (event->button == 1  && event->type == GDK_2BUTTON_PRESS
+  if (event->button == 1
+      && event->type == GDK_2BUTTON_PRESS
       && event->window == gtk_tree_view_get_bin_window (treeview)
       && gtk_tree_view_get_path_at_pos (treeview, event->x, event->y,
                                         NULL, NULL, NULL, NULL))
-    {
-      object = gtk_builder_get_object (dialog->builder, "button-add");
-      panel_return_val_if_fail (GTK_IS_BUTTON (object), FALSE);
-      if (GTK_WIDGET_SENSITIVE (object))
-        {
-          gtk_button_clicked (GTK_BUTTON (object));
-          return TRUE;
-        }
-    }
+    return launcher_dialog_press_event (dialog, "button-add");
+
+  return FALSE;
+}
+
+
+
+static gboolean
+launcher_dialog_add_key_press_event (GtkTreeView          *treeview,
+                                     GdkEventKey          *event,
+                                     LauncherPluginDialog *dialog)
+{
+  panel_return_val_if_fail (GTK_IS_BUILDER (dialog->builder), FALSE);
+  panel_return_val_if_fail (GTK_IS_TREE_VIEW (treeview), FALSE);
+
+  if (event->keyval == GDK_KEY_Return
+      || event->keyval == GDK_KEY_KP_Enter)
+    return launcher_dialog_press_event (dialog, "button-add");
 
   return FALSE;
 }
@@ -517,7 +528,6 @@ launcher_dialog_tree_drag_data_received (GtkWidget            *treeview,
 
 
 
-
 static void
 launcher_dialog_tree_selection_changed (GtkTreeSelection     *selection,
                                         LauncherPluginDialog *dialog)
@@ -581,12 +591,31 @@ launcher_dialog_tree_selection_changed (GtkTreeSelection     *selection,
 
 
 static gboolean
+launcher_dialog_press_event (LauncherPluginDialog *dialog,
+                             const gchar          *object_name)
+{
+  GObject *object;
+
+  panel_return_val_if_fail (GTK_IS_BUILDER (dialog->builder), FALSE);
+
+  object = gtk_builder_get_object (dialog->builder, object_name);
+  panel_return_val_if_fail (GTK_IS_BUTTON (object), FALSE);
+  if (GTK_WIDGET_SENSITIVE (object))
+    {
+      gtk_button_clicked (GTK_BUTTON (object));
+      return TRUE;
+    }
+
+  return FALSE;
+}
+
+
+
+static gboolean
 launcher_dialog_tree_button_press_event (GtkTreeView          *treeview,
                                          GdkEventButton       *event,
                                          LauncherPluginDialog *dialog)
 {
-  GObject *object;
-
   panel_return_val_if_fail (GTK_IS_BUILDER (dialog->builder), FALSE);
   panel_return_val_if_fail (GTK_IS_TREE_VIEW (treeview), FALSE);
 
@@ -594,15 +623,24 @@ launcher_dialog_tree_button_press_event (GtkTreeView          *treeview,
       && event->window == gtk_tree_view_get_bin_window (treeview)
       && gtk_tree_view_get_path_at_pos (treeview, event->x, event->y,
                                         NULL, NULL, NULL, NULL))
-    {
-      object = gtk_builder_get_object (dialog->builder, "item-edit");
-      panel_return_val_if_fail (GTK_IS_BUTTON (object), FALSE);
-      if (GTK_WIDGET_SENSITIVE (object))
-        {
-          gtk_button_clicked (GTK_BUTTON (object));
-          return TRUE;
-        }
-    }
+    return launcher_dialog_press_event (dialog, "item-edit");
+
+  return FALSE;
+}
+
+
+
+static gboolean
+launcher_dialog_tree_key_press_event (GtkTreeView          *treeview,
+                                      GdkEventKey          *event,
+                                      LauncherPluginDialog *dialog)
+{
+  panel_return_val_if_fail (GTK_IS_BUILDER (dialog->builder), FALSE);
+  panel_return_val_if_fail (GTK_IS_TREE_VIEW (treeview), FALSE);
+
+  if (event->keyval == GDK_KEY_Return
+      || event->keyval == GDK_KEY_KP_Enter)
+    return launcher_dialog_press_event (dialog, "item-edit");
 
   return FALSE;
 }
@@ -991,6 +1029,8 @@ launcher_dialog_show (LauncherPlugin *plugin)
   launcher_dialog_tree_selection_changed (selection, dialog);
   g_signal_connect (G_OBJECT (object), "button-press-event",
       G_CALLBACK (launcher_dialog_tree_button_press_event), dialog);
+  g_signal_connect (G_OBJECT (object), "key-press-event",
+      G_CALLBACK (launcher_dialog_tree_key_press_event), dialog);
 
   /* connect bindings to the advanced properties */
   for (i = 0; i < G_N_ELEMENTS (binding_names); i++)
@@ -1006,7 +1046,7 @@ launcher_dialog_show (LauncherPlugin *plugin)
   g_signal_connect (G_OBJECT (object), "response",
       G_CALLBACK (launcher_dialog_add_response), dialog);
   g_signal_connect (G_OBJECT (object), "delete-event",
-      G_CALLBACK (gtk_true), NULL);
+      G_CALLBACK (gtk_widget_hide_on_delete), NULL);
 
   /* setup sorting in the add dialog */
   object = gtk_builder_get_object (builder, "add-store");
@@ -1025,6 +1065,8 @@ launcher_dialog_show (LauncherPlugin *plugin)
       G_CALLBACK (launcher_dialog_add_selection_changed), dialog);
   g_signal_connect (G_OBJECT (object), "button-press-event",
       G_CALLBACK (launcher_dialog_add_button_press_event), dialog);
+  g_signal_connect (G_OBJECT (object), "key-press-event",
+      G_CALLBACK (launcher_dialog_add_key_press_event), dialog);
 
   /* setup search filter in the add dialog */
   object = gtk_builder_get_object (builder, "add-store-filter");



More information about the Xfce4-commits mailing list