diff options
author | Michael Natterer <mitch@imendio.com> | 2006-01-17 15:49:18 +0000 |
---|---|---|
committer | Michael Natterer <mitch@src.gnome.org> | 2006-01-17 15:49:18 +0000 |
commit | fbcf58822770093dcd7210c513a83943e8a645fa (patch) | |
tree | afbfdb43edabf80b3b043ba359f45f0f8ff5a7dc /gtk/gtkbutton.c | |
parent | 4f1690df534cdbbaa7110616a51b70c222601583 (diff) | |
download | gtk+-fbcf58822770093dcd7210c513a83943e8a645fa.tar.gz |
remove the "child-spacing" style property again and add "inner-border"
2006-01-17 Michael Natterer <mitch@imendio.com>
* gtk/gtkbutton.c: remove the "child-spacing" style property again
and add "inner-border" instead. That's far more flexible and
"child-spacing" was a bad name anyway.
Diffstat (limited to 'gtk/gtkbutton.c')
-rw-r--r-- | gtk/gtkbutton.c | 67 |
1 files changed, 43 insertions, 24 deletions
diff --git a/gtk/gtkbutton.c b/gtk/gtkbutton.c index f5bfa9004e..93f433dfa7 100644 --- a/gtk/gtkbutton.c +++ b/gtk/gtkbutton.c @@ -41,6 +41,7 @@ static const GtkBorder default_default_border = { 1, 1, 1, 1 }; static const GtkBorder default_default_outside_border = { 0, 0, 0, 0 }; +static const GtkBorder default_inner_border = { 1, 1, 1, 1 }; /* Time out before giving up on getting a key release when animating * the close button. @@ -460,20 +461,18 @@ gtk_button_class_init (GtkButtonClass *klass) GTK_PARAM_READABLE)); /** - * GtkButton:child-spacing: + * GtkButton:inner-border: * - * Sets the spacing between the button edges and child. + * Sets the border between the button edges and child. * * Since: 2.10 */ gtk_widget_class_install_style_property (widget_class, - g_param_spec_int ("child-spacing", - _("Child spacing"), - _("Spacing between button edges and child."), - 0, - G_MAXINT, - 1, - GTK_PARAM_READABLE)); + g_param_spec_boxed ("inner-border", + P_("Inner Border"), + P_("Border between button edges and child."), + GTK_TYPE_BORDER, + GTK_PARAM_READABLE)); gtk_settings_install_property (g_param_spec_boolean ("gtk-button-images", P_("Show button images"), @@ -967,6 +966,7 @@ static void gtk_button_get_props (GtkButton *button, GtkBorder *default_border, GtkBorder *default_outside_border, + GtkBorder *inner_border, gboolean *interior_focus) { GtkWidget *widget = GTK_WIDGET (button); @@ -998,6 +998,19 @@ gtk_button_get_props (GtkButton *button, *default_outside_border = default_default_outside_border; } + if (inner_border) + { + gtk_widget_style_get (widget, "inner-border", &tmp_border, NULL); + + if (tmp_border) + { + *inner_border = *tmp_border; + g_free (tmp_border); + } + else + *inner_border = default_inner_border; + } + if (interior_focus) gtk_widget_style_get (widget, "interior-focus", interior_focus, NULL); } @@ -1008,21 +1021,22 @@ gtk_button_size_request (GtkWidget *widget, { GtkButton *button = GTK_BUTTON (widget); GtkBorder default_border; + GtkBorder inner_border; gint focus_width; gint focus_pad; - gint child_spacing; - gtk_button_get_props (button, &default_border, NULL, NULL); + gtk_button_get_props (button, &default_border, NULL, &inner_border, NULL); gtk_widget_style_get (GTK_WIDGET (widget), "focus-line-width", &focus_width, "focus-padding", &focus_pad, - "child-spacing", &child_spacing, NULL); - requisition->width = (GTK_CONTAINER (widget)->border_width + child_spacing + - GTK_WIDGET (widget)->style->xthickness) * 2; - requisition->height = (GTK_CONTAINER (widget)->border_width + child_spacing + - GTK_WIDGET (widget)->style->ythickness) * 2; + requisition->width = ((GTK_CONTAINER (widget)->border_width + + GTK_WIDGET (widget)->style->xthickness) * 2 + + inner_border.left + inner_border.right); + requisition->height = ((GTK_CONTAINER (widget)->border_width + + GTK_WIDGET (widget)->style->ythickness) * 2 + + inner_border.top + inner_border.bottom); if (GTK_WIDGET_CAN_DEFAULT (widget)) { @@ -1055,15 +1069,14 @@ gtk_button_size_allocate (GtkWidget *widget, gint xthickness = GTK_WIDGET (widget)->style->xthickness; gint ythickness = GTK_WIDGET (widget)->style->ythickness; GtkBorder default_border; + GtkBorder inner_border; gint focus_width; gint focus_pad; - gint child_spacing; - gtk_button_get_props (button, &default_border, NULL, NULL); + gtk_button_get_props (button, &default_border, NULL, &inner_border, NULL); gtk_widget_style_get (GTK_WIDGET (widget), "focus-line-width", &focus_width, "focus-padding", &focus_pad, - "child-spacing", &child_spacing, NULL); @@ -1078,12 +1091,18 @@ gtk_button_size_allocate (GtkWidget *widget, if (GTK_BIN (button)->child && GTK_WIDGET_VISIBLE (GTK_BIN (button)->child)) { - child_allocation.x = widget->allocation.x + border_width + child_spacing + xthickness; - child_allocation.y = widget->allocation.y + border_width + child_spacing + ythickness; + child_allocation.x = widget->allocation.x + border_width + inner_border.left + xthickness; + child_allocation.y = widget->allocation.y + border_width + inner_border.top + ythickness; - child_allocation.width = MAX (1, widget->allocation.width - (child_spacing + xthickness) * 2 - + child_allocation.width = MAX (1, widget->allocation.width - + xthickness * 2 - + inner_border.left - + inner_border.right - border_width * 2); - child_allocation.height = MAX (1, widget->allocation.height - (child_spacing + ythickness) * 2 - + child_allocation.height = MAX (1, widget->allocation.height - + ythickness * 2 - + inner_border.top - + inner_border.bottom - border_width * 2); if (GTK_WIDGET_CAN_DEFAULT (button)) @@ -1142,7 +1161,7 @@ _gtk_button_paint (GtkButton *button, widget = GTK_WIDGET (button); border_width = GTK_CONTAINER (widget)->border_width; - gtk_button_get_props (button, &default_border, &default_outside_border, &interior_focus); + gtk_button_get_props (button, &default_border, &default_outside_border, NULL, &interior_focus); gtk_widget_style_get (GTK_WIDGET (widget), "focus-line-width", &focus_width, "focus-padding", &focus_pad, |