diff options
author | Matthias Clasen <mclasen@redhat.com> | 2023-05-11 22:28:46 +0000 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2023-05-11 22:28:46 +0000 |
commit | 3353eac2895f514e6247b2ee155f62ea588795a5 (patch) | |
tree | c8787914a8d1c1ba36b332c362f9c408fb12cc58 | |
parent | cdc135f11dd9806e0fdada7eccb0c164eb5503a6 (diff) | |
parent | 625c7c3d266986faec79156f10b3276120b31a5b (diff) | |
download | gtk+-3353eac2895f514e6247b2ee155f62ea588795a5.tar.gz |
Merge branch 'fix-focus-tests' into 'main'
spinbutton: Update baseline child
See merge request GNOME/gtk!5950
-rw-r--r-- | gtk/gtkspinbutton.c | 6 | ||||
-rw-r--r-- | gtk/gtkwidgetfocus.c | 26 |
2 files changed, 27 insertions, 5 deletions
diff --git a/gtk/gtkspinbutton.c b/gtk/gtkspinbutton.c index 447af1d640..f7ef127cc5 100644 --- a/gtk/gtkspinbutton.c +++ b/gtk/gtkspinbutton.c @@ -996,7 +996,6 @@ gtk_spin_button_init (GtkSpinButton *spin_button) { GtkEventController *controller; GtkGesture *gesture; - GtkLayoutManager *layout; spin_button->adjustment = NULL; spin_button->timer = 0; @@ -1012,9 +1011,6 @@ gtk_spin_button_init (GtkSpinButton *spin_button) spin_button->snap_to_ticks = FALSE; spin_button->width_chars = -1; - layout = gtk_widget_get_layout_manager (GTK_WIDGET (spin_button)); - gtk_box_layout_set_baseline_child (GTK_BOX_LAYOUT (layout), 1); - gtk_widget_update_orientation (GTK_WIDGET (spin_button), GTK_ORIENTATION_HORIZONTAL); spin_button->entry = gtk_text_new (); @@ -1217,11 +1213,13 @@ gtk_spin_button_set_orientation (GtkSpinButton *spin, { /* Current orientation of the box is vertical! */ gtk_widget_insert_after (spin->up_button, GTK_WIDGET (spin), spin->down_button); + gtk_box_layout_set_baseline_child (layout_manager, 0); } else { /* Current orientation of the box is horizontal! */ gtk_widget_insert_before (spin->up_button, GTK_WIDGET (spin), spin->entry); + gtk_box_layout_set_baseline_child (layout_manager, 1); } g_object_notify (G_OBJECT (spin), "orientation"); diff --git a/gtk/gtkwidgetfocus.c b/gtk/gtkwidgetfocus.c index df1c562ac6..4dc8f28fd5 100644 --- a/gtk/gtkwidgetfocus.c +++ b/gtk/gtkwidgetfocus.c @@ -17,6 +17,8 @@ #include "gtkwidgetprivate.h" #include "gtknative.h" +#include "gtkboxlayout.h" +#include "gtkorientable.h" typedef struct _CompareInfo CompareInfo; @@ -434,7 +436,29 @@ gtk_widget_focus_sort (GtkWidget *widget, { case GTK_DIR_TAB_FORWARD: case GTK_DIR_TAB_BACKWARD: - focus_sort_tab (widget, direction, focus_order); + { + GtkLayoutManager *layout = gtk_widget_get_layout_manager (widget); + if (GTK_IS_BOX_LAYOUT (layout)) + { + GtkOrientation orientation = gtk_orientable_get_orientation (GTK_ORIENTABLE (layout)); + if (orientation == GTK_ORIENTATION_HORIZONTAL) + { + if (direction == GTK_DIR_TAB_FORWARD) + focus_sort_left_right (widget, GTK_DIR_RIGHT, focus_order); + else + focus_sort_left_right (widget, GTK_DIR_LEFT, focus_order); + } + else + { + if (direction == GTK_DIR_TAB_FORWARD) + focus_sort_up_down (widget, GTK_DIR_DOWN, focus_order); + else + focus_sort_up_down (widget, GTK_DIR_UP, focus_order); + } + } + else + focus_sort_tab (widget, direction, focus_order); + } break; case GTK_DIR_UP: case GTK_DIR_DOWN: |