From c20280810ab86d65b7ef5089002c24be90e49d43 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 11 Mar 2004 21:10:49 +0000 Subject: Use the same logic as GtkEntry when calculating border width. (#116368, Thu Mar 11 22:12:14 2004 Matthias Clasen * gtk/gtkspinbutton.c (gtk_spin_button_size_request): Use the same logic as GtkEntry when calculating border width. (#116368, reported by Morten Welinder) --- gtk/gtkspinbutton.c | 43 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) (limited to 'gtk/gtkspinbutton.c') diff --git a/gtk/gtkspinbutton.c b/gtk/gtkspinbutton.c index 7a65b5b028..1c4c30924b 100644 --- a/gtk/gtkspinbutton.c +++ b/gtk/gtkspinbutton.c @@ -616,6 +616,40 @@ compute_double_length (double val, int digits) return a + digits + extra; } +/* Keep in sync with gtkentry.c ! + */ +static void +get_borders (GtkEntry *entry, + gint *xborder, + gint *yborder) +{ + GtkWidget *widget = GTK_WIDGET (entry); + gint focus_width; + gboolean interior_focus; + + gtk_widget_style_get (widget, + "interior-focus", &interior_focus, + "focus-line-width", &focus_width, + NULL); + + if (entry->has_frame) + { + *xborder = widget->style->xthickness; + *yborder = widget->style->ythickness; + } + else + { + *xborder = 0; + *yborder = 0; + } + + if (!interior_focus) + { + *xborder += focus_width; + *yborder += focus_width; + } +} + static void gtk_spin_button_size_request (GtkWidget *widget, GtkRequisition *requisition) @@ -641,6 +675,7 @@ gtk_spin_button_size_request (GtkWidget *widget, gint digit_width; gboolean interior_focus; gint focus_width; + gint xborder, yborder; gtk_widget_style_get (widget, "interior-focus", &interior_focus, @@ -673,9 +708,11 @@ gtk_spin_button_size_request (GtkWidget *widget, w = PANGO_PIXELS (MIN (string_len, max_string_len) * digit_width); width = MAX (width, w); - requisition->width = width + /* INNER_BORDER */ 2 * 2; - if (!interior_focus) - requisition->width += 2 * focus_width; + get_borders (entry, &xborder, &yborder); + + xborder += 2; /* INNER_BORDER */ + + requisition->width = width + xborder * 2; } requisition->width += arrow_size + 2 * widget->style->xthickness; -- cgit v1.2.1