diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2010-12-24 19:33:14 +0100 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2010-12-24 19:38:14 +0100 |
commit | 92102c3bf448327de1b0d7154b4b098dba0e0f1f (patch) | |
tree | bdc5a475f1a41818d4956b4ac1cdbd1cc1713e72 /gtk/gtkseparator.c | |
parent | 7c35994bda5ad94e508a70e85a6db54aaf35376c (diff) | |
download | gtk+-92102c3bf448327de1b0d7154b4b098dba0e0f1f.tar.gz |
Make GtkSeparator use GtkStyleContext
Diffstat (limited to 'gtk/gtkseparator.c')
-rw-r--r-- | gtk/gtkseparator.c | 59 |
1 files changed, 31 insertions, 28 deletions
diff --git a/gtk/gtkseparator.c b/gtk/gtkseparator.c index 025b80f9bc..1de28a1a58 100644 --- a/gtk/gtkseparator.c +++ b/gtk/gtkseparator.c @@ -161,12 +161,17 @@ gtk_separator_get_preferred_size (GtkWidget *widget, { GtkSeparator *separator = GTK_SEPARATOR (widget); GtkSeparatorPrivate *private = separator->priv; - GtkStyle *style; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder border; gboolean wide_sep; gint sep_width; gint sep_height; - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_border (context, state, &border); + gtk_widget_style_get (widget, "wide-separators", &wide_sep, "separator-width", &sep_width, @@ -179,11 +184,11 @@ gtk_separator_get_preferred_size (GtkWidget *widget, } else if (orientation == GTK_ORIENTATION_VERTICAL) { - *minimum = *natural = wide_sep ? sep_height : style->ythickness; + *minimum = *natural = wide_sep ? sep_height : border.top; } else { - *minimum = *natural = wide_sep ? sep_width : style->xthickness; + *minimum = *natural = wide_sep ? sep_width : border.left; } } @@ -209,15 +214,16 @@ gtk_separator_draw (GtkWidget *widget, { GtkSeparator *separator = GTK_SEPARATOR (widget); GtkSeparatorPrivate *private = separator->priv; - GtkStateType state; - GtkStyle *style; + GtkStateFlags state; + GtkStyleContext *context; + GtkBorder padding; GdkWindow *window; gboolean wide_separators; gint separator_width; gint separator_height; int width, height; - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); gtk_widget_style_get (widget, "wide-separators", &wide_separators, "separator-width", &separator_width, @@ -225,39 +231,36 @@ gtk_separator_draw (GtkWidget *widget, NULL); window = gtk_widget_get_window (widget); - state = gtk_widget_get_state (widget); + state = gtk_widget_get_state_flags (widget); width = gtk_widget_get_allocated_width (widget); height = gtk_widget_get_allocated_height (widget); + gtk_style_context_get_padding (context, state, &padding); + + gtk_style_context_save (context); + gtk_style_context_set_state (context, state); + if (private->orientation == GTK_ORIENTATION_HORIZONTAL) { if (wide_separators) - gtk_paint_box (style, cr, - gtk_widget_get_state (widget), GTK_SHADOW_ETCHED_OUT, - widget, "hseparator", - 0, (height - separator_height) / 2, - width, separator_height); + gtk_render_frame (context, cr, + 0, (height - separator_height) / 2, + width, separator_height); else - gtk_paint_hline (style, cr, - gtk_widget_get_state (widget), - widget, "hseparator", - 0, width - 1, - (height - style->ythickness) / 2); + gtk_render_line (context, cr, + 0, (height - padding.top) / 2, + width - 1, (height - padding.top) / 2); } else { if (wide_separators) - gtk_paint_box (style, cr, - gtk_widget_get_state (widget), GTK_SHADOW_ETCHED_OUT, - widget, "vseparator", - (width - separator_width) / 2, 0, - separator_width, height); + gtk_render_frame (context, cr, + (width - separator_width) / 2, 0, + separator_width, height); else - gtk_paint_vline (style, cr, - gtk_widget_get_state (widget), - widget, "vseparator", - 0, height - 1, - (width - style->xthickness) / 2); + gtk_render_line (context, cr, + (width - padding.left) / 2, 0, + (width - padding.left) / 2, height - 1); } return FALSE; |