[gtk+] Make GtkSeparator use GtkStyleContext



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]