spinbutton: Don't expand the buttons

When the spinbutton grows larger, distribute horizontal size to the
entry and vertical size to the buttons.

Obviously, horizontal size only matters for horizontal spinbuttons and
vertical for vertical spinbuttons.
This commit is contained in:
Benjamin Otte 2016-01-26 16:40:33 +01:00
parent 2c350f4469
commit ae31c00092

View File

@ -726,32 +726,36 @@ static void
update_node_ordering (GtkSpinButton *spin_button)
{
GtkSpinButtonPrivate *priv = spin_button->priv;
GtkCssGadget *middle, *last;
int down_button_pos, up_button_pos;
if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
{
if (gtk_widget_get_direction (GTK_WIDGET (spin_button)) == GTK_TEXT_DIR_LTR)
{
middle = priv->down_button;
last = priv->up_button;
down_button_pos = 1;
up_button_pos = -1;
}
else
{
middle = priv->down_button;
last = gtk_entry_get_gadget (GTK_ENTRY (spin_button));
down_button_pos = 1;
up_button_pos = 0;
}
}
else
{
middle = gtk_entry_get_gadget (GTK_ENTRY (spin_button));
last = priv->down_button;
up_button_pos = 0;
down_button_pos = -1;
}
gtk_box_gadget_set_orientation (GTK_BOX_GADGET (priv->gadget), priv->orientation);
gtk_box_gadget_remove_gadget (GTK_BOX_GADGET (priv->gadget), middle);
gtk_box_gadget_remove_gadget (GTK_BOX_GADGET (priv->gadget), last);
gtk_box_gadget_insert_gadget (GTK_BOX_GADGET (priv->gadget), -1, middle, TRUE, TRUE, GTK_ALIGN_FILL);
gtk_box_gadget_insert_gadget (GTK_BOX_GADGET (priv->gadget), -1, last, TRUE, TRUE, GTK_ALIGN_FILL);
gtk_box_gadget_remove_gadget (GTK_BOX_GADGET (priv->gadget), priv->up_button);
gtk_box_gadget_remove_gadget (GTK_BOX_GADGET (priv->gadget), priv->down_button);
gtk_box_gadget_insert_gadget (GTK_BOX_GADGET (priv->gadget),
up_button_pos, priv->up_button,
FALSE, TRUE, GTK_ALIGN_FILL);
gtk_box_gadget_insert_gadget (GTK_BOX_GADGET (priv->gadget),
down_button_pos, priv->down_button,
FALSE, TRUE, GTK_ALIGN_FILL);
}
static void
@ -796,7 +800,7 @@ gtk_spin_button_init (GtkSpinButton *spin_button)
g_object_unref (entry_node);
gtk_box_gadget_insert_gadget (GTK_BOX_GADGET (priv->gadget),
-1, gtk_entry_get_gadget (GTK_ENTRY (spin_button)),
TRUE, TRUE, GTK_ALIGN_FILL);
TRUE, FALSE, GTK_ALIGN_FILL);
priv->down_button = gtk_icon_helper_new_named ("button",
GTK_WIDGET (spin_button));
@ -807,7 +811,7 @@ gtk_spin_button_init (GtkSpinButton *spin_button)
gtk_css_node_set_state (gtk_css_gadget_get_node (priv->down_button), gtk_css_node_get_state (widget_node));
gtk_box_gadget_insert_gadget (GTK_BOX_GADGET (priv->gadget),
-1, priv->down_button,
TRUE, TRUE, GTK_ALIGN_FILL);
FALSE, TRUE, GTK_ALIGN_FILL);
priv->up_button = gtk_icon_helper_new_named ("button",
GTK_WIDGET (spin_button));
@ -818,7 +822,7 @@ gtk_spin_button_init (GtkSpinButton *spin_button)
gtk_css_node_set_state (gtk_css_gadget_get_node (priv->down_button), gtk_css_node_get_state (widget_node));
gtk_box_gadget_insert_gadget (GTK_BOX_GADGET (priv->gadget),
-1, priv->up_button,
TRUE, TRUE, GTK_ALIGN_FILL);
FALSE, TRUE, GTK_ALIGN_FILL);
gtk_spin_button_set_adjustment (spin_button, NULL);