#include "gtksettings.h"
#include "gtktypebuiltins.h"
#include "gtkwidgetprivate.h"
-#include "gtkgridlayout.h"
+#include "gtkboxlayout.h"
#include "gtktextprivate.h"
#include <stdio.h>
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);
}
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);
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)
{
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);
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);
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
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);
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");
}