[gtk+] Make GtkSeparator use GtkStyleContext
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] Make GtkSeparator use GtkStyleContext
- Date: Fri, 24 Dec 2010 18:50:13 +0000 (UTC)
commit 92102c3bf448327de1b0d7154b4b098dba0e0f1f
Author: Carlos Garnacho <carlosg gnome org>
Date: Fri Dec 24 19:33:14 2010 +0100
Make GtkSeparator use GtkStyleContext
gtk/gtkseparator.c | 59 +++++++++++++++++++++++++++------------------------
1 files changed, 31 insertions(+), 28 deletions(-)
---
diff --git a/gtk/gtkseparator.c b/gtk/gtkseparator.c
index 025b80f..1de28a1 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;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]