[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