[gtk+/gtk-3-22] testmenubutton: Fix inverted keynav in the GtkMenu



commit 30effaf7fc576bb84688a3978d0c608a6d02e8f4
Author: Daniel Boles <dboles src gnome org>
Date:   Sun Oct 8 13:15:33 2017 +0100

    testmenubutton: Fix inverted keynav in the GtkMenu
    
    GtkMenu’s own keynav code, which actually bothers to account for the
    layout of items, only happens if columns > 1. So, adding items to 1
    column using a reverse loop meant they were placed in the Menu’s list of
    children in that order, and because we only have 1 column, Menu passes
    keynav up to MenuShell, which doesn’t adjust for the items’ positions.
    
    ‘Fix’ that here by adding items in the same order they’ll have when laid
    out in the Menu, so keynav does what you’d expect, not the opposite. For
    that, it’s simpler just to use gtk_container_add().
    
    Let’s presume users are using add(), attach() with a non-inverted loop,
    or attach() with arguments that create 2+ columns and so GtkMenu keynav.

 tests/testmenubutton.c |   12 +++++-------
 1 files changed, 5 insertions(+), 7 deletions(-)
---
diff --git a/tests/testmenubutton.c b/tests/testmenubutton.c
index 670b9ee..8aadb81 100644
--- a/tests/testmenubutton.c
+++ b/tests/testmenubutton.c
@@ -105,23 +105,21 @@ int main (int argc, char **argv)
 
        /* Button with GtkMenu */
        menu_widget = gtk_menu_new ();
-       for (i = 5; i > 0; i--) {
+       for (i = 0; i < 5; ++i) {
                GtkWidget *item;
 
-               if (i == 3) {
+               if (i == 2) {
                        item = gtk_menu_item_new_with_mnemonic ("_Copy");
                } else {
                        char *label;
 
-                       label = g_strdup_printf ("Item _%d", i);
+                       label = g_strdup_printf ("Item _%d", i + 1);
                        item = gtk_menu_item_new_with_mnemonic (label);
                        g_free (label);
                }
+
                gtk_menu_item_set_use_underline (GTK_MENU_ITEM (item), TRUE);
-               gtk_menu_attach (GTK_MENU (menu_widget),
-                                item,
-                                0, 1,
-                                i - 1, i);
+               gtk_container_add (GTK_CONTAINER (menu_widget), item);
        }
        gtk_widget_show_all (menu_widget);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]