diff options
author | Matthias Clasen <mclasen@redhat.com> | 2007-03-07 21:34:43 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2007-03-07 21:34:43 +0000 |
commit | 9aad97770aad69b956432517de9798adc0318d67 (patch) | |
tree | 49e1602528781e05053eba419c89476856145b2a /gtk/gtkexpander.c | |
parent | c0c2ac8e384ee76e35bdfa79ea7e6cfdaa82c734 (diff) | |
download | gtk+-9aad97770aad69b956432517de9798adc0318d67.tar.gz |
Draw the focus around the arrow if there is no label widget. (#124045,
2007-03-07 Matthias Clasen <mclasen@redhat.com>
* 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
Diffstat (limited to 'gtk/gtkexpander.c')
-rw-r--r-- | gtk/gtkexpander.c | 53 |
1 files changed, 33 insertions, 20 deletions
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), |