From a4b0d14666d23ed908fd991b7435997436c2d79a Mon Sep 17 00:00:00 2001 From: John Darrington Date: Wed, 6 Sep 2017 08:53:54 +0200 Subject: [PATCH] PsppireDataEditor: focus the datum entry widget when F2 is pressed --- src/ui/gui/psppire-data-editor.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/ui/gui/psppire-data-editor.c b/src/ui/gui/psppire-data-editor.c index a3431349b1..d8c5cbf3a4 100644 --- a/src/ui/gui/psppire-data-editor.c +++ b/src/ui/gui/psppire-data-editor.c @@ -227,6 +227,20 @@ psppire_data_editor_set_focus_child (GtkContainer *container, GTK_CONTAINER_CLASS (parent_class)->set_focus_child (container, widget); } + +static gboolean +on_key_press (GtkWidget *w, GdkEventKey *e) +{ + PsppireDataEditor *de = PSPPIRE_DATA_EDITOR (w); + if (e->keyval == GDK_KEY_F2 && + PSPPIRE_DATA_EDITOR_DATA_VIEW == gtk_notebook_get_current_page (GTK_NOTEBOOK (de))) + { + gtk_widget_grab_focus (de->datum_entry); + } + + return FALSE; +} + static void psppire_data_editor_class_init (PsppireDataEditorClass *klass) { @@ -238,6 +252,7 @@ psppire_data_editor_class_init (PsppireDataEditorClass *klass) GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkContainerClass *container_class = GTK_CONTAINER_CLASS (klass); GtkNotebookClass *notebook_class = GTK_NOTEBOOK_CLASS (klass); + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); parent_class = g_type_class_peek_parent (klass); @@ -246,8 +261,8 @@ psppire_data_editor_class_init (PsppireDataEditorClass *klass) object_class->get_property = psppire_data_editor_get_property; container_class->set_focus_child = psppire_data_editor_set_focus_child; - notebook_class->switch_page = psppire_data_editor_switch_page; + widget_class->key_press_event = on_key_press; data_store_spec = g_param_spec_pointer ("data-store", @@ -524,6 +539,8 @@ psppire_data_editor_init (PsppireDataEditor *de) g_free (fontname); set_font_recursively (GTK_WIDGET (de), de->font); } + + gtk_widget_add_events (GTK_WIDGET (de), GDK_KEY_PRESS_MASK); } GtkWidget* -- 2.30.2