[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