diff options
author | Stig Bjørlykke <stig@bjorlykke.org> | 2008-01-14 21:43:10 +0000 |
---|---|---|
committer | Stig Bjørlykke <stig@bjorlykke.org> | 2008-01-14 21:43:10 +0000 |
commit | ba3f5057b1d8ba1bdc102905b101b8b5ecb68f9b (patch) | |
tree | ad4ccda8a349df2a30aeab876414c432ccbfbe0b | |
parent | a6c7284e3b65acfb1c03db1e3a22e8e3a4bebf2a (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.c | 31 |
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); |