Revert "spinbutton: Use a grid layout"
authorMatthias Clasen <mclasen@redhat.com>
Sat, 29 Apr 2023 15:55:27 +0000 (11:55 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 29 Apr 2023 17:28:55 +0000 (13:28 -0400)
This reverts commit d648a7721e826717fb2c675d8202ab34e879d521.

gtk/gtkspinbutton.c

index e32f2774fb379e3503d8e3919796b471c6e8406f..d5a2e6c79880961c2eaf4adb931d0fa833dae1d5 100644 (file)
@@ -51,7 +51,7 @@
 #include "gtksettings.h"
 #include "gtktypebuiltins.h"
 #include "gtkwidgetprivate.h"
-#include "gtkgridlayout.h"
+#include "gtkboxlayout.h"
 #include "gtktextprivate.h"
 
 #include <stdio.h>
@@ -587,7 +587,7 @@ gtk_spin_button_class_init (GtkSpinButtonClass *class)
   add_spin_binding (widget_class, GDK_KEY_Page_Up, GDK_CONTROL_MASK, GTK_SCROLL_END);
   add_spin_binding (widget_class, GDK_KEY_Page_Down, GDK_CONTROL_MASK, GTK_SCROLL_START);
 
-  gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_GRID_LAYOUT);
+  gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_BOX_LAYOUT);
   gtk_widget_class_set_css_name (widget_class, I_("spinbutton"));
   gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_SPIN_BUTTON);
 }
@@ -813,7 +813,7 @@ gtk_spin_button_get_property (GObject      *object,
        g_value_set_double (value, gtk_adjustment_get_value (spin_button->adjustment));
       break;
     case PROP_ORIENTATION:
-      g_value_set_enum (value, spin_button->orientation);
+      g_value_set_enum (value, gtk_orientable_get_orientation (GTK_ORIENTABLE (gtk_widget_get_layout_manager (GTK_WIDGET (spin_button)))));
       break;
     case PROP_EDITING_CANCELED:
       g_value_set_boolean (value, spin_button->editing_canceled);
@@ -991,48 +991,6 @@ key_controller_focus_out (GtkEventController   *controller,
     gtk_spin_button_update (spin_button);
 }
 
-static void
-gtk_spin_button_update_orientation (GtkSpinButton *spin_button)
-{
-  GtkLayoutManager *layout;
-  GtkGridLayoutChild *child;
-
-  layout = gtk_widget_get_layout_manager (GTK_WIDGET (spin_button));
-
-  if (spin_button->orientation == GTK_ORIENTATION_HORIZONTAL)
-    {
-      gtk_grid_layout_set_baseline_row (GTK_GRID_LAYOUT (layout), 0);
-
-      child = GTK_GRID_LAYOUT_CHILD (gtk_layout_manager_get_layout_child (layout, spin_button->entry));
-      gtk_grid_layout_child_set_row (child, 0);
-      gtk_grid_layout_child_set_column (child, 0);
-
-      child = GTK_GRID_LAYOUT_CHILD (gtk_layout_manager_get_layout_child (layout, spin_button->up_button));
-      gtk_grid_layout_child_set_row (child, 0);
-      gtk_grid_layout_child_set_column (child, 1);
-
-      child = GTK_GRID_LAYOUT_CHILD (gtk_layout_manager_get_layout_child (layout, spin_button->down_button));
-      gtk_grid_layout_child_set_row (child, 0);
-      gtk_grid_layout_child_set_column (child, 2);
-    }
-  else
-    {
-      gtk_grid_layout_set_baseline_row (GTK_GRID_LAYOUT (layout), 1);
-
-      child = GTK_GRID_LAYOUT_CHILD (gtk_layout_manager_get_layout_child (layout, spin_button->up_button));
-      gtk_grid_layout_child_set_row (child, 0);
-      gtk_grid_layout_child_set_column (child, 0);
-
-      child = GTK_GRID_LAYOUT_CHILD (gtk_layout_manager_get_layout_child (layout, spin_button->entry));
-      gtk_grid_layout_child_set_row (child, 1);
-      gtk_grid_layout_child_set_column (child, 0);
-
-      child = GTK_GRID_LAYOUT_CHILD (gtk_layout_manager_get_layout_child (layout, spin_button->down_button));
-      gtk_grid_layout_child_set_row (child, 2);
-      gtk_grid_layout_child_set_column (child, 0);
-    }
-}
-
 static void
 gtk_spin_button_init (GtkSpinButton *spin_button)
 {
@@ -1100,7 +1058,8 @@ gtk_spin_button_init (GtkSpinButton *spin_button)
   g_signal_connect (gesture, "released", G_CALLBACK (button_released_cb), spin_button);
   g_signal_connect (gesture, "cancel", G_CALLBACK (button_cancel_cb), spin_button);
   gtk_widget_add_controller (GTK_WIDGET (spin_button->up_button), GTK_EVENT_CONTROLLER (gesture));
-  gtk_gesture_group (gtk_button_get_gesture (GTK_BUTTON (spin_button->up_button)), gesture);
+  gtk_gesture_group (gtk_button_get_gesture (GTK_BUTTON (spin_button->up_button)),
+                    gesture);
 
   gtk_spin_button_set_adjustment (spin_button, NULL);
 
@@ -1116,7 +1075,7 @@ gtk_spin_button_init (GtkSpinButton *spin_button)
                              GTK_EVENT_CONTROLLER (gesture));
 
   controller = gtk_event_controller_scroll_new (GTK_EVENT_CONTROLLER_SCROLL_VERTICAL |
-                                                GTK_EVENT_CONTROLLER_SCROLL_DISCRETE);
+                                               GTK_EVENT_CONTROLLER_SCROLL_DISCRETE);
   g_signal_connect (controller, "scroll",
                     G_CALLBACK (scroll_controller_scroll), spin_button);
   gtk_widget_add_controller (GTK_WIDGET (spin_button), controller);
@@ -1129,8 +1088,6 @@ gtk_spin_button_init (GtkSpinButton *spin_button)
   g_signal_connect (controller, "leave",
                     G_CALLBACK (key_controller_focus_out), spin_button);
   gtk_widget_add_controller (GTK_WIDGET (spin_button), controller);
-
-  gtk_spin_button_update_orientation (spin_button);
 }
 
 static void
@@ -1234,12 +1191,14 @@ static void
 gtk_spin_button_set_orientation (GtkSpinButton  *spin,
                                  GtkOrientation  orientation)
 {
+  GtkBoxLayout *layout_manager;
   GtkEditable *editable = GTK_EDITABLE (spin->entry);
 
   if (gtk_orientable_get_orientation (GTK_ORIENTABLE (spin)) == orientation)
     return;
 
-  spin->orientation = orientation;
+  layout_manager = GTK_BOX_LAYOUT (gtk_widget_get_layout_manager (GTK_WIDGET (spin)));
+  gtk_orientable_set_orientation (GTK_ORIENTABLE (layout_manager), orientation);
 
   gtk_widget_update_orientation (GTK_WIDGET (spin), orientation);
 
@@ -1251,7 +1210,16 @@ gtk_spin_button_set_orientation (GtkSpinButton  *spin,
            gtk_editable_get_alignment (editable) == 0.5)
     gtk_editable_set_alignment (editable, 0.0);
 
-  gtk_spin_button_update_orientation (spin);
+  if (orientation == GTK_ORIENTATION_HORIZONTAL)
+    {
+      /* Current orientation of the box is vertical! */
+      gtk_widget_insert_after (spin->up_button, GTK_WIDGET (spin), spin->down_button);
+    }
+  else
+    {
+      /* Current orientation of the box is horizontal! */
+      gtk_widget_insert_before (spin->up_button, GTK_WIDGET (spin), spin->entry);
+    }
 
   g_object_notify (G_OBJECT (spin), "orientation");
 }