aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStig Bjørlykke <stig@bjorlykke.org>2008-01-14 21:43:10 +0000
committerStig Bjørlykke <stig@bjorlykke.org>2008-01-14 21:43:10 +0000
commitba3f5057b1d8ba1bdc102905b101b8b5ecb68f9b (patch)
treead4ccda8a349df2a30aeab876414c432ccbfbe0b
parenta6c7284e3b65acfb1c03db1e3a22e8e3a4bebf2a (diff)
Several profile enhancements:
- Give initial focus to the profiles list - Enter in the profiles list selects the profile - Give focus to the profile name when creating a new profile svn path=/trunk/; revision=24091
-rw-r--r--gtk/profile_dlg.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/gtk/profile_dlg.c b/gtk/profile_dlg.c
index a08b6077ef..5556dc2f26 100644
--- a/gtk/profile_dlg.c
+++ b/gtk/profile_dlg.c
@@ -30,6 +30,7 @@
#include <string.h>
#include <gtk/gtk.h>
+#include <gdk/gdkkeysyms.h>
#include <epan/filesystem.h>
#include <wiretap/file_util.h>
@@ -399,6 +400,23 @@ profile_sel_list_button_cb(GtkWidget *list, GdkEventButton *event,
return FALSE;
}
+static gint
+profile_key_release_cb(GtkWidget *list, GdkEventKey *event, gpointer data _U_)
+{
+ void (* func)(GtkWidget *, gpointer);
+ gpointer func_arg;
+
+ if (event->keyval == GDK_Return || event->keyval == GDK_KP_Enter) {
+ func = OBJECT_GET_DATA(list, E_PROF_SELFUNC_KEY);
+ func_arg = OBJECT_GET_DATA(list, E_PROF_SELARG_KEY);
+
+ if (func)
+ (*func)(list, func_arg);
+ }
+
+ return FALSE;
+}
+
static void
profile_sel_list_cb(GtkTreeSelection *sel, gpointer data _U_)
{
@@ -459,6 +477,7 @@ static void
profile_new_bt_clicked_cb(GtkWidget *w, gpointer data _U_)
{
GtkWidget *main_w = gtk_widget_get_toplevel(w);
+ GtkWidget *name_te = OBJECT_GET_DATA(main_w, E_PROF_NAME_TE_KEY);
GtkTreeView *profile_l = GTK_TREE_VIEW(OBJECT_GET_DATA(main_w, E_PROF_PROFILE_L_KEY));
GtkListStore *store;
GtkTreeIter iter;
@@ -473,6 +492,9 @@ profile_new_bt_clicked_cb(GtkWidget *w, gpointer data _U_)
gtk_list_store_set(store, &iter, 0, name, 1, fl_entry, -1);
/* Select the item. */
gtk_tree_selection_select_iter(gtk_tree_view_get_selection(profile_l), &iter);
+
+ gtk_editable_select_region(GTK_EDITABLE(name_te), 0, -1);
+ gtk_widget_grab_focus(name_te);
}
#if 0
@@ -498,6 +520,10 @@ profile_copy_bt_clicked_cb(GtkWidget *w, gpointer data _U_)
gtk_list_store_set(store, &iter, 0, new_name, 1, fl_entry, -1);
/* Select the item. */
gtk_tree_selection_select_iter(gtk_tree_view_get_selection(profile_l), &iter);
+
+ gtk_editable_select_region(GTK_EDITABLE(name_te), 0, -1);
+ gtk_widget_grab_focus(name_te);
+
g_free (new_name);
}
#endif
@@ -683,6 +709,7 @@ profile_dialog_new(void)
gtk_tree_selection_set_mode(sel, GTK_SELECTION_SINGLE);
SIGNAL_CONNECT(sel, "changed", profile_sel_list_cb, profile_vb);
SIGNAL_CONNECT(profile_l, "button_press_event", profile_sel_list_button_cb, NULL);
+ SIGNAL_CONNECT(profile_l, "key_release_event", profile_key_release_cb, NULL);
OBJECT_SET_DATA(main_w, E_PROF_PROFILE_L_KEY, profile_l);
gtk_container_add(GTK_CONTAINER(profile_sc), profile_l);
gtk_widget_show(profile_l);
@@ -760,6 +787,10 @@ profile_dialog_new(void)
g_free(l_select);
}
+ if (profile_l) {
+ gtk_widget_grab_focus(profile_l);
+ }
+
SIGNAL_CONNECT(main_w, "delete_event", profile_dlg_delete_event_cb, NULL);
SIGNAL_CONNECT(main_w, "destroy", profile_dlg_destroy_cb, NULL);