[gtk+/rendering-cleanup-next: 94/155] expander: Port to draw vfunc
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/rendering-cleanup-next: 94/155] expander: Port to draw vfunc
- Date: Wed, 15 Sep 2010 03:04:49 +0000 (UTC)
commit 61c910a221ab0304d8376d6b6cf4d7e9ac443fda
Author: Benjamin Otte <otte redhat com>
Date: Wed Sep 8 16:01:32 2010 +0200
expander: Port to draw vfunc
gtk/gtkexpander.c | 74 +++++++++++++++++++++++++----------------------------
1 files changed, 35 insertions(+), 39 deletions(-)
---
diff --git a/gtk/gtkexpander.c b/gtk/gtkexpander.c
index e8f90bd..a152e7e 100644
--- a/gtk/gtkexpander.c
+++ b/gtk/gtkexpander.c
@@ -87,8 +87,8 @@ static void gtk_expander_size_allocate (GtkWidget *widget,
GtkAllocation *allocation);
static void gtk_expander_map (GtkWidget *widget);
static void gtk_expander_unmap (GtkWidget *widget);
-static gboolean gtk_expander_expose (GtkWidget *widget,
- GdkEventExpose *event);
+static gboolean gtk_expander_draw (GtkWidget *widget,
+ cairo_t *cr);
static gboolean gtk_expander_button_press (GtkWidget *widget,
GdkEventButton *event);
static gboolean gtk_expander_button_release (GtkWidget *widget,
@@ -180,7 +180,7 @@ gtk_expander_class_init (GtkExpanderClass *klass)
widget_class->size_allocate = gtk_expander_size_allocate;
widget_class->map = gtk_expander_map;
widget_class->unmap = gtk_expander_unmap;
- widget_class->expose_event = gtk_expander_expose;
+ widget_class->draw = gtk_expander_draw;
widget_class->button_press_event = gtk_expander_button_press;
widget_class->button_release_event = gtk_expander_button_release;
widget_class->enter_notify_event = gtk_expander_enter_notify;
@@ -720,7 +720,7 @@ gtk_expander_unmap (GtkWidget *widget)
}
static void
-gtk_expander_paint_prelight (GtkExpander *expander)
+gtk_expander_paint_prelight (GtkExpander *expander, cairo_t *cr)
{
GtkAllocation allocation;
GtkWidget *widget;
@@ -749,8 +749,8 @@ gtk_expander_paint_prelight (GtkExpander *expander)
gtk_widget_get_allocation (widget, &allocation);
border_width = gtk_container_get_border_width (container);
- area.x = allocation.x + border_width;
- area.y = allocation.y + border_width;
+ area.x = border_width;
+ area.y = border_width;
area.width = allocation.width - (2 * border_width);
if (priv->label_widget && gtk_widget_get_visible (priv->label_widget))
@@ -767,48 +767,49 @@ gtk_expander_paint_prelight (GtkExpander *expander)
area.height = MAX (area.height, expander_size + 2 * expander_spacing);
area.height += !interior_focus ? (focus_width + focus_pad) * 2 : 0;
- gtk_paint_flat_box (gtk_widget_get_style (widget),
- gtk_widget_get_window (widget),
+ gtk_cairo_paint_flat_box (gtk_widget_get_style (widget),
+ cr,
GTK_STATE_PRELIGHT,
GTK_SHADOW_ETCHED_OUT,
- &area, widget, "expander",
+ widget, "expander",
area.x, area.y,
area.width, area.height);
}
static void
-gtk_expander_paint (GtkExpander *expander)
+gtk_expander_paint (GtkExpander *expander, cairo_t *cr)
{
GtkWidget *widget;
GdkRectangle clip;
+ GtkAllocation allocation;
GtkStateType state;
widget = GTK_WIDGET (expander);
get_expander_bounds (expander, &clip);
+ gtk_widget_get_allocation (widget, &allocation);
state = gtk_widget_get_state (widget);
if (expander->priv->prelight)
{
state = GTK_STATE_PRELIGHT;
- gtk_expander_paint_prelight (expander);
+ gtk_expander_paint_prelight (expander, cr);
}
- gtk_paint_expander (gtk_widget_get_style (widget),
- gtk_widget_get_window (widget),
+ gtk_cairo_paint_expander (gtk_widget_get_style (widget),
+ cr,
state,
- &clip,
widget,
"expander",
- clip.x + clip.width / 2,
- clip.y + clip.height / 2,
+ clip.x + clip.width / 2 - allocation.x,
+ clip.y + clip.height / 2 - allocation.y,
expander->priv->expander_style);
}
static void
-gtk_expander_paint_focus (GtkExpander *expander,
- GdkRectangle *area)
+gtk_expander_paint_focus (GtkExpander *expander,
+ cairo_t *cr)
{
GtkWidget *widget;
GtkExpanderPrivate *priv;
@@ -821,11 +822,13 @@ gtk_expander_paint_focus (GtkExpander *expander,
gint expander_size;
gint expander_spacing;
gboolean ltr;
+ GtkAllocation allocation;
widget = GTK_WIDGET (expander);
priv = expander->priv;
border_width = gtk_container_get_border_width (GTK_CONTAINER (widget));
+ gtk_widget_get_allocation (widget, &allocation);
gtk_widget_style_get (widget,
"interior-focus", &interior_focus,
@@ -841,10 +844,6 @@ gtk_expander_paint_focus (GtkExpander *expander,
if (priv->label_widget)
{
- GtkAllocation allocation;
-
- gtk_widget_get_allocation (widget, &allocation);
-
if (gtk_widget_get_visible (priv->label_widget))
{
GtkAllocation label_allocation;
@@ -857,8 +856,8 @@ gtk_expander_paint_focus (GtkExpander *expander,
width += 2 * focus_pad + 2 * focus_width;
height += 2 * focus_pad + 2 * focus_width;
- x = allocation.x + border_width;
- y = allocation.y + border_width;
+ x = border_width;
+ y = border_width;
if (ltr)
{
@@ -881,34 +880,31 @@ gtk_expander_paint_focus (GtkExpander *expander,
{
get_expander_bounds (expander, &rect);
- x = rect.x - focus_pad;
- y = rect.y - focus_pad;
+ x = rect.x - allocation.x - focus_pad;
+ y = rect.y - allocation.y - focus_pad;
width = rect.width + 2 * focus_pad;
height = rect.height + 2 * focus_pad;
}
- gtk_paint_focus (gtk_widget_get_style (widget),
- gtk_widget_get_window (widget),
+ gtk_cairo_paint_focus (gtk_widget_get_style (widget),
+ cr,
gtk_widget_get_state (widget),
- area, widget, "expander",
+ widget, "expander",
x, y, width, height);
}
static gboolean
-gtk_expander_expose (GtkWidget *widget,
- GdkEventExpose *event)
+gtk_expander_draw (GtkWidget *widget,
+ cairo_t *cr)
{
- if (gtk_widget_is_drawable (widget))
- {
- GtkExpander *expander = GTK_EXPANDER (widget);
+ GtkExpander *expander = GTK_EXPANDER (widget);
- gtk_expander_paint (expander);
+ gtk_expander_paint (expander, cr);
- if (gtk_widget_has_focus (widget))
- gtk_expander_paint_focus (expander, &event->area);
+ if (gtk_widget_has_focus (widget))
+ gtk_expander_paint_focus (expander, cr);
- GTK_WIDGET_CLASS (gtk_expander_parent_class)->expose_event (widget, event);
- }
+ GTK_WIDGET_CLASS (gtk_expander_parent_class)->draw (widget, cr);
return FALSE;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]