From 9aad97770aad69b956432517de9798adc0318d67 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 7 Mar 2007 21:34:43 +0000 Subject: [PATCH] Draw the focus around the arrow if there is no label widget. (#124045, 2007-03-07 Matthias Clasen * gtk/gtkexpander.c (gtk_expander_paint_focus): Draw the focus around the arrow if there is no label widget. (#124045, Cody Russell) svn path=/trunk/; revision=17419 --- ChangeLog | 6 ++++++ gtk/gtkexpander.c | 53 +++++++++++++++++++++++++++++------------------ 2 files changed, 39 insertions(+), 20 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4c2ca61144..707c90e31e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-03-07 Matthias Clasen + + * gtk/gtkexpander.c (gtk_expander_paint_focus): Draw the + focus around the arrow if there is no label widget. + (#124045, Cody Russell) + 2007-03-07 Matthias Clasen * gtk/gtkcombo.c: (gtk_combo_init): diff --git a/gtk/gtkexpander.c b/gtk/gtkexpander.c index e078da7e8b..5e38ec980e 100644 --- a/gtk/gtkexpander.c +++ b/gtk/gtkexpander.c @@ -789,6 +789,7 @@ gtk_expander_paint_focus (GtkExpander *expander, { GtkWidget *widget; GtkExpanderPrivate *priv; + GdkRectangle rect; gint x, y, width, height; gboolean interior_focus; gint border_width; @@ -815,35 +816,47 @@ gtk_expander_paint_focus (GtkExpander *expander, width = height = 0; - if (priv->label_widget && GTK_WIDGET_VISIBLE (priv->label_widget)) + if (priv->label_widget) { - GtkAllocation label_allocation = priv->label_widget->allocation; + if (GTK_WIDGET_VISIBLE (priv->label_widget)) + { + GtkAllocation label_allocation = priv->label_widget->allocation; - width = label_allocation.width; - height = label_allocation.height; - } + width = label_allocation.width; + height = label_allocation.height; + } - width += 2 * focus_pad + 2 * focus_width; - height += 2 * focus_pad + 2 * focus_width; + width += 2 * focus_pad + 2 * focus_width; + height += 2 * focus_pad + 2 * focus_width; - x = widget->allocation.x + border_width; - y = widget->allocation.y + border_width; + x = widget->allocation.x + border_width; + y = widget->allocation.y + border_width; - if (ltr) - { - if (interior_focus) - x += expander_spacing * 2 + expander_size; + if (ltr) + { + if (interior_focus) + x += expander_spacing * 2 + expander_size; + } + else + { + x += widget->allocation.width - 2 * border_width + - expander_spacing * 2 - expander_size - width; + } + + if (!interior_focus) + { + width += expander_size + 2 * expander_spacing; + height = MAX (height, expander_size + 2 * expander_spacing); + } } else { - x += widget->allocation.width - 2 * border_width - - expander_spacing * 2 - expander_size - width; - } + get_expander_bounds (expander, &rect); - if (!interior_focus) - { - width += expander_size + 2 * expander_spacing; - height = MAX (height, expander_size + 2 * expander_spacing); + x = rect.x - focus_pad; + y = rect.y - focus_pad; + width = rect.width + 2 * focus_pad; + height = rect.height + 2 * focus_pad; } gtk_paint_focus (widget->style, widget->window, GTK_WIDGET_STATE (widget),