From 10da325fac243a0b8d6766508b3fc892d605531a Mon Sep 17 00:00:00 2001 From: Nick Schermer Date: Sun, 07 Nov 2010 19:49:09 +0000 Subject: Allow using enter in the launcher treeviews. --- 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 #include #include +#include #include #include @@ -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"); -- cgit v0.8.3.4