From a45553707461cf3381c74270b898e045071652ee Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 17 May 2004 18:51:24 +0000 Subject: [PATCH] Allocate space for the focus rectangle only if necessary. (#142668, 2004-05-17 Matthias Clasen * gtk/gtkbutton.c (gtk_button_size_request) (gtk_button_size_allocate, _gtk_button_paint): Allocate space for the focus rectangle only if necessary. (#142668, Michael Natterer) --- ChangeLog | 9 +++++++++ ChangeLog.pre-2-10 | 9 +++++++++ ChangeLog.pre-2-6 | 9 +++++++++ ChangeLog.pre-2-8 | 9 +++++++++ gtk/gtkbutton.c | 25 ++++++++++++++++--------- 5 files changed, 52 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index e50ea1f57e..f188965b9f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2004-05-17 Matthias Clasen + + Mreged from 2.4: + + * gtk/gtkbutton.c (gtk_button_size_request) + (gtk_button_size_allocate, _gtk_button_paint): Allocate + space for the focus rectangle only if necessary. (#142668, + Michael Natterer) + Sun May 16 23:11:47 2004 Matthias Clasen Merged from 2.4: diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index e50ea1f57e..f188965b9f 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,12 @@ +2004-05-17 Matthias Clasen + + Mreged from 2.4: + + * gtk/gtkbutton.c (gtk_button_size_request) + (gtk_button_size_allocate, _gtk_button_paint): Allocate + space for the focus rectangle only if necessary. (#142668, + Michael Natterer) + Sun May 16 23:11:47 2004 Matthias Clasen Merged from 2.4: diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index e50ea1f57e..f188965b9f 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,12 @@ +2004-05-17 Matthias Clasen + + Mreged from 2.4: + + * gtk/gtkbutton.c (gtk_button_size_request) + (gtk_button_size_allocate, _gtk_button_paint): Allocate + space for the focus rectangle only if necessary. (#142668, + Michael Natterer) + Sun May 16 23:11:47 2004 Matthias Clasen Merged from 2.4: diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index e50ea1f57e..f188965b9f 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,12 @@ +2004-05-17 Matthias Clasen + + Mreged from 2.4: + + * gtk/gtkbutton.c (gtk_button_size_request) + (gtk_button_size_allocate, _gtk_button_paint): Allocate + space for the focus rectangle only if necessary. (#142668, + Michael Natterer) + Sun May 16 23:11:47 2004 Matthias Clasen Merged from 2.4: diff --git a/gtk/gtkbutton.c b/gtk/gtkbutton.c index f60fb6820b..e049b8c6e5 100644 --- a/gtk/gtkbutton.c +++ b/gtk/gtkbutton.c @@ -915,8 +915,11 @@ gtk_button_size_request (GtkWidget *widget, requisition->height += child_requisition.height; } - requisition->width += 2 * (focus_width + focus_pad); - requisition->height += 2 * (focus_width + focus_pad); + if (!interior_focus && GTK_WIDGET_CAN_FOCUS (widget)) + { + requisition->width += 2 * (focus_width + focus_pad); + requisition->height += 2 * (focus_width + focus_pad); + } } static void @@ -932,8 +935,9 @@ gtk_button_size_allocate (GtkWidget *widget, GtkBorder default_border; gint focus_width; gint focus_pad; + gboolean interior_focus; - gtk_button_get_props (button, &default_border, NULL, NULL); + gtk_button_get_props (button, &default_border, NULL, &interior_focus); gtk_widget_style_get (GTK_WIDGET (widget), "focus-line-width", &focus_width, "focus-padding", &focus_pad, @@ -966,11 +970,14 @@ gtk_button_size_allocate (GtkWidget *widget, child_allocation.width = MAX (1, child_allocation.width - default_border.left - default_border.right); child_allocation.height = MAX (1, child_allocation.height - default_border.top - default_border.bottom); } - - child_allocation.x += focus_width + focus_pad; - child_allocation.y += focus_width + focus_pad; - child_allocation.width = MAX (1, child_allocation.width - (focus_width + focus_pad) * 2); - child_allocation.height = MAX (1, child_allocation.height - (focus_width + focus_pad) * 2); + + if (!interior_focus && GTK_WIDGET_CAN_FOCUS (widget)) + { + child_allocation.x += focus_width + focus_pad; + child_allocation.y += focus_width + focus_pad; + child_allocation.width = MAX (1, child_allocation.width - (focus_width + focus_pad) * 2); + child_allocation.height = MAX (1, child_allocation.height - (focus_width + focus_pad) * 2); + } if (button->depressed) { @@ -1044,7 +1051,7 @@ _gtk_button_paint (GtkButton *button, height -= default_outside_border.top + default_outside_border.bottom; } - if (!interior_focus && GTK_WIDGET_HAS_FOCUS (widget)) + if (!interior_focus && GTK_WIDGET_CAN_FOCUS (widget)) { x += focus_width + focus_pad; y += focus_width + focus_pad;