[Xfce4-commits] <xfce4-panel:devel> Allow double-click on treeview item for editing and adding.

Nick Schermer noreply at xfce.org
Sun Feb 7 16:44:01 CET 2010


Updating branch refs/heads/devel
         to 5ef9da15ed8353f7463f6ec1141f5cf2cdc5f3a4 (commit)
       from 21a3cca1d039c9150d3647102db608425e861c4b (commit)

commit 5ef9da15ed8353f7463f6ec1141f5cf2cdc5f3a4
Author: Nick Schermer <nick at xfce.org>
Date:   Sun Feb 7 16:38:37 2010 +0100

    Allow double-click on treeview item for editing and adding.

 plugins/launcher/launcher-dialog.c |   62 ++++++++++++++++++++++++++++++++++++
 1 files changed, 62 insertions(+), 0 deletions(-)

diff --git a/plugins/launcher/launcher-dialog.c b/plugins/launcher/launcher-dialog.c
index 6127d7e..8fa8d48 100644
--- a/plugins/launcher/launcher-dialog.c
+++ b/plugins/launcher/launcher-dialog.c
@@ -292,6 +292,35 @@ launcher_dialog_add_selection_changed (GtkTreeSelection     *selection,
 
 
 
+static gboolean
+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
+      && 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_get_sensitive (GTK_WIDGET (object)))
+        {
+          gtk_button_clicked (GTK_BUTTON (object));
+          return TRUE;
+        }
+    }
+
+  return FALSE;
+}
+
+
+
 static void
 launcher_dialog_add_response (GtkWidget            *widget,
                               gint                  response_id,
@@ -551,6 +580,35 @@ launcher_dialog_tree_selection_changed (GtkTreeSelection     *selection,
 
 
 
+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);
+
+  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, "item-edit");
+      panel_return_val_if_fail (GTK_IS_BUTTON (object), FALSE);
+      if (gtk_widget_get_sensitive (GTK_WIDGET (object)))
+        {
+          gtk_button_clicked (GTK_BUTTON (object));
+          return TRUE;
+        }
+    }
+
+  return FALSE;
+}
+
+
+
 static void
 launcher_dialog_item_button_clicked (GtkWidget            *button,
                                      LauncherPluginDialog *dialog)
@@ -931,6 +989,8 @@ launcher_dialog_show (LauncherPlugin *plugin)
   g_signal_connect (G_OBJECT (selection), "changed",
       G_CALLBACK (launcher_dialog_tree_selection_changed), dialog);
   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);
 
   /* connect bindings to the advanced properties */
   for (i = 0; i < G_N_ELEMENTS (binding_names); i++)
@@ -963,6 +1023,8 @@ launcher_dialog_show (LauncherPlugin *plugin)
   gtk_tree_selection_set_mode (selection, GTK_SELECTION_MULTIPLE);
   g_signal_connect (G_OBJECT (selection), "changed",
       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);
 
   /* setup search filter in the add dialog */
   object = gtk_builder_get_object (builder, "add-store-filter");



More information about the Xfce4-commits mailing list