Added comments explaining the use of gtk_container_set_focus_chain(), for future...
authorAndrej Kacian <andrej@kacian.sk>
Wed, 18 Jun 2014 19:10:51 +0000 (21:10 +0200)
committerAndrej Kacian <andrej@kacian.sk>
Wed, 18 Jun 2014 19:10:51 +0000 (21:10 +0200)
src/compose.c

index 801697e..28f13db 100644 (file)
@@ -6862,7 +6862,11 @@ static void compose_create_header_entry(Compose *compose)
        g_signal_connect(G_OBJECT(gtk_bin_get_child(GTK_BIN(combo))), "grab_focus",
                         G_CALLBACK(compose_grab_focus_cb), compose);
        gtk_widget_show(combo);
        g_signal_connect(G_OBJECT(gtk_bin_get_child(GTK_BIN(combo))), "grab_focus",
                         G_CALLBACK(compose_grab_focus_cb), compose);
        gtk_widget_show(combo);
-       
+
+       /* Putting only the combobox child into focus chain of its parent causes
+        * the parent to be skipped when changing focus via Tab or Shift+Tab.
+        * This eliminates need to pres Tab twice in order to really get from the
+        * combobox to next widget. */
        GList *l = NULL;
        l = g_list_prepend(l, gtk_bin_get_child(GTK_BIN(combo)));
        gtk_container_set_focus_chain(GTK_CONTAINER(combo), l);
        GList *l = NULL;
        l = g_list_prepend(l, gtk_bin_get_child(GTK_BIN(combo)));
        gtk_container_set_focus_chain(GTK_CONTAINER(combo), l);
@@ -8102,6 +8106,10 @@ static GtkWidget *compose_account_option_menu_create(Compose *compose)
        gtk_box_pack_start(GTK_BOX(hbox), optmenubox, FALSE, FALSE, 0);
        gtk_box_pack_start(GTK_BOX(hbox), from_name, TRUE, TRUE, 0);
 
        gtk_box_pack_start(GTK_BOX(hbox), optmenubox, FALSE, FALSE, 0);
        gtk_box_pack_start(GTK_BOX(hbox), from_name, TRUE, TRUE, 0);
 
+       /* Putting only the GtkEntry into focus chain of parent hbox causes
+        * the account selector combobox next to it to be unreachable when
+        * navigating widgets in GtkTable with up/down arrow keys.
+        * Note: gtk_widget_set_can_focus() was not enough. */
        GList *l = NULL;
        l = g_list_prepend(l, from_name);
        gtk_container_set_focus_chain(GTK_CONTAINER(hbox), l);
        GList *l = NULL;
        l = g_list_prepend(l, from_name);
        gtk_container_set_focus_chain(GTK_CONTAINER(hbox), l);