From 4c113ee01622e515492ac3c3197df0cd281d58d4 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Thu, 22 Sep 2011 10:28:57 -0700 Subject: [PATCH] Put the default focus on the dive list at startup This is some crazy stuff. Apparently the only sane way to do this is by hooking into the "realize" callback for the dive list widget. Whatever. Dirk did the googling to figure this all out. Suggested-by: Dirk Hohndel Signed-off-by: Linus Torvalds --- divelist.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/divelist.c b/divelist.c index c00da0b..97a5674 100644 --- a/divelist.c +++ b/divelist.c @@ -451,6 +451,15 @@ static GtkTreeViewColumn *divelist_column(struct DiveList *dl, int index, const return col; } +/* + * This is some crazy crap. The only way to get default focus seems + * to be to grab focus as the widget is being shown the first time. + */ +static void realize_cb(GtkWidget *tree_view, gpointer userdata) +{ + gtk_widget_grab_focus(tree_view); +} + GtkWidget *dive_list_create(void) { GtkTreeSelection *selection; @@ -490,6 +499,7 @@ GtkWidget *dive_list_create(void) "rules-hint", TRUE, NULL); + g_signal_connect_after(dive_list.tree_view, "realize", G_CALLBACK(realize_cb), NULL); g_signal_connect(selection, "changed", G_CALLBACK(selection_cb), dive_list.model); dive_list.container_widget = gtk_scrolled_window_new(NULL, NULL); -- 2.45.2