[gtk+] gtkscale: use accessor functions to access GtkRange



commit a64869db9ec3f3b35881c38c1df314dada4a07b0
Author: Javier Jardón <jjardon gnome org>
Date:   Fri Aug 13 01:38:35 2010 +0200

    gtkscale: use accessor functions to access GtkRange

 gtk/gtkscale.c |   99 +++++++++++++++++++++++++++++++------------------------
 1 files changed, 56 insertions(+), 43 deletions(-)
---
diff --git a/gtk/gtkscale.c b/gtk/gtkscale.c
index 45fa751..65ca027 100644
--- a/gtk/gtkscale.c
+++ b/gtk/gtkscale.c
@@ -36,6 +36,7 @@
 #include "gtkicontheme.h"
 #include "gtkmarshalers.h"
 #include "gtkbindings.h"
+#include "gtkorientable.h"
 #include "gtkprivate.h"
 #include "gtkintl.h"
 #include "gtkbuildable.h"
@@ -383,7 +384,11 @@ static void
 gtk_scale_orientation_notify (GtkRange         *range,
                               const GParamSpec *pspec)
 {
-  range->flippable = (range->orientation == GTK_ORIENTATION_HORIZONTAL);
+  GtkOrientation orientation;
+
+  orientation = gtk_orientable_get_orientation (GTK_ORIENTABLE (range));
+  gtk_range_set_flippable (range,
+                           orientation == GTK_ORIENTATION_HORIZONTAL);
 }
 
 static void
@@ -399,11 +404,7 @@ gtk_scale_init (GtkScale *scale)
 
   gtk_widget_set_can_focus (GTK_WIDGET (scale), TRUE);
 
-  range->slider_size_fixed = TRUE;
-  range->has_stepper_a = FALSE;
-  range->has_stepper_b = FALSE;
-  range->has_stepper_c = FALSE;
-  range->has_stepper_d = FALSE;
+  gtk_range_set_slider_size_fixed (range, TRUE);
 
   priv->draw_value = TRUE;
   priv->value_pos = GTK_POS_TOP;
@@ -754,7 +755,7 @@ gtk_scale_get_range_border (GtkRange  *range,
                             NULL);
 
 
-      if (GTK_RANGE (scale)->orientation == GTK_ORIENTATION_HORIZONTAL)
+      if (gtk_orientable_get_orientation (GTK_ORIENTABLE (scale)) == GTK_ORIENTATION_HORIZONTAL)
         {
           gtk_scale_get_mark_label_size (scale, GTK_POS_TOP, &n1, &w1, &h1, &n2, &w2, &h2);
           if (n1 > 0)
@@ -784,6 +785,7 @@ _gtk_scale_get_value_size (GtkScale *scale,
 
   if (priv->draw_value)
     {
+      GtkAdjustment *adjustment;
       PangoLayout *layout;
       PangoRectangle logical_rect;
       gchar *txt;
@@ -791,8 +793,9 @@ _gtk_scale_get_value_size (GtkScale *scale,
       range = GTK_RANGE (scale);
 
       layout = gtk_widget_create_pango_layout (GTK_WIDGET (scale), NULL);
+      adjustment = gtk_range_get_adjustment (range);
 
-      txt = _gtk_scale_format_value (scale, range->adjustment->lower);
+      txt = _gtk_scale_format_value (scale, gtk_adjustment_get_lower (adjustment));
       pango_layout_set_text (layout, txt, -1);
       g_free (txt);
       
@@ -803,7 +806,7 @@ _gtk_scale_get_value_size (GtkScale *scale,
       if (height)
 	*height = logical_rect.height;
 
-      txt = _gtk_scale_format_value (scale, range->adjustment->upper);
+      txt = _gtk_scale_format_value (scale, gtk_adjustment_get_upper (adjustment));
       pango_layout_set_text (layout, txt, -1);
       g_free (txt);
       
@@ -895,9 +898,9 @@ gtk_scale_style_set (GtkWidget *widget,
   gtk_widget_style_get (widget,
                         "slider-length", &slider_length,
                         NULL);
-  
-  range->min_slider_size = slider_length;
-  
+
+  gtk_range_set_min_slider_size (range, slider_length);
+
   _gtk_scale_clear_layout (GTK_SCALE (widget));
 
   GTK_WIDGET_CLASS (gtk_scale_parent_class)->style_set (widget, previous);
@@ -923,7 +926,7 @@ gtk_scale_size_request (GtkWidget      *widget,
   gtk_widget_style_get (widget, "slider-length", &slider_length, NULL);
 
 
-  if (range->orientation == GTK_ORIENTATION_HORIZONTAL)
+  if (gtk_orientable_get_orientation (GTK_ORIENTABLE (range)) == GTK_ORIENTATION_HORIZONTAL)
     {
       gtk_scale_get_mark_label_size (GTK_SCALE (widget), GTK_POS_TOP, &n1, &w1, &h1, &n2, &w2, &h2);
 
@@ -1004,6 +1007,8 @@ gtk_scale_expose (GtkWidget      *widget,
   if (priv->marks)
     {
       GtkAllocation allocation;
+      GtkOrientation orientation;
+      GdkRectangle range_rect;
       gint i;
       gint x1, x2, x3, y1, y2, y3;
       PangoLayout *layout;
@@ -1012,31 +1017,33 @@ gtk_scale_expose (GtkWidget      *widget,
       gint min_pos_before, min_pos_after;
       gint min_pos, max_pos;
 
+      orientation = gtk_orientable_get_orientation (GTK_ORIENTABLE (range));
       n_marks = _gtk_range_get_stop_positions (range, &marks);
       layout = gtk_widget_create_pango_layout (widget, NULL);
       gtk_widget_get_allocation (widget, &allocation);
+      gtk_range_get_range_rect (range, &range_rect);
 
-      if (range->orientation == GTK_ORIENTATION_HORIZONTAL)
+      if (orientation == GTK_ORIENTATION_HORIZONTAL)
         min_pos_before = min_pos_after = allocation.x;
       else
         min_pos_before = min_pos_after = allocation.y;
       for (m = priv->marks, i = 0; m; m = m->next, i++)
         {
           GtkScaleMark *mark = m->data;
-    
-          if (range->orientation == GTK_ORIENTATION_HORIZONTAL)
+
+          if (orientation == GTK_ORIENTATION_HORIZONTAL)
             {
               x1 = allocation.x + marks[i];
               if (mark->position == GTK_POS_TOP)
                 {
-                  y1 = allocation.y + range->range_rect.y;
+                  y1 = allocation.y + range_rect.y;
                   y2 = y1 - slider_width / 2;
                   min_pos = min_pos_before;
                   max_pos = allocation.x + find_next_pos (widget, m, marks + i, GTK_POS_TOP, 1) - min_sep;
                 }
               else
                 {
-                  y1 = allocation.y + range->range_rect.y + range->range_rect.height;
+                  y1 = allocation.y + range_rect.y + range_rect.height;
                   y2 = y1 + slider_width / 2;
                   min_pos = min_pos_after;
                   max_pos = allocation.x + find_next_pos (widget, m, marks + i, GTK_POS_TOP, 0) - min_sep;
@@ -1077,15 +1084,15 @@ gtk_scale_expose (GtkWidget      *widget,
             {
               if (mark->position == GTK_POS_LEFT)
                 {
-                  x1 = allocation.x + range->range_rect.x;
-                  x2 = allocation.x + range->range_rect.x - slider_width / 2;
+                  x1 = allocation.x + range_rect.x;
+                  x2 = allocation.x + range_rect.x - slider_width / 2;
                   min_pos = min_pos_before;
                   max_pos = allocation.y + find_next_pos (widget, m, marks + i, GTK_POS_LEFT, 1) - min_sep;
                 }
               else
                 {
-                  x1 = allocation.x + range->range_rect.x + range->range_rect.width;
-                  x2 = allocation.x + range->range_rect.x + range->range_rect.width + slider_width / 2;
+                  x1 = allocation.x + range_rect.x + range_rect.width;
+                  x2 = allocation.x + range_rect.x + range_rect.width + slider_width / 2;
                   min_pos = min_pos_after;
                   max_pos = allocation.y + find_next_pos (widget, m, marks + i, GTK_POS_LEFT, 0) - min_sep;
                 }
@@ -1130,9 +1137,11 @@ gtk_scale_expose (GtkWidget      *widget,
 
   if (priv->draw_value)
     {
+      GtkOrientation orientation;
       PangoLayout *layout;
       gint x, y;
 
+      orientation = gtk_orientable_get_orientation (GTK_ORIENTABLE (range));
       layout = gtk_scale_get_layout (scale);
       gtk_scale_get_layout_offsets (scale, &x, &y);
 
@@ -1142,7 +1151,7 @@ gtk_scale_expose (GtkWidget      *widget,
 			FALSE,
                         NULL,
                         widget,
-                        range->orientation == GTK_ORIENTATION_HORIZONTAL ?
+                        orientation == GTK_ORIENTATION_HORIZONTAL ?
                         "hscale" : "vscale",
                         x, y,
                         layout);
@@ -1161,8 +1170,10 @@ gtk_scale_real_get_layout_offsets (GtkScale *scale,
   GtkAllocation allocation;
   GtkWidget *widget = GTK_WIDGET (scale);
   GtkRange *range = GTK_RANGE (widget);
+  GdkRectangle range_rect;
   PangoLayout *layout = gtk_scale_get_layout (scale);
   PangoRectangle logical_rect;
+  gint slider_start, slider_end;
   gint value_spacing;
 
   if (!layout)
@@ -1178,33 +1189,35 @@ gtk_scale_real_get_layout_offsets (GtkScale *scale,
   pango_layout_get_pixel_extents (layout, NULL, &logical_rect);
 
   gtk_widget_get_allocation (widget, &allocation);
+  gtk_range_get_range_rect (range, &range_rect);
+  gtk_range_get_slider_range (range,
+                              &slider_start,
+                              &slider_end);
 
-  if (range->orientation == GTK_ORIENTATION_HORIZONTAL)
+  if (gtk_orientable_get_orientation (GTK_ORIENTABLE (range)) == GTK_ORIENTATION_HORIZONTAL)
     {
       switch (priv->value_pos)
         {
         case GTK_POS_LEFT:
-          *x = range->range_rect.x - value_spacing - logical_rect.width;
-          *y = range->range_rect.y + (range->range_rect.height - logical_rect.height) / 2;
+          *x = range_rect.x - value_spacing - logical_rect.width;
+          *y = range_rect.y + (range_rect.height - logical_rect.height) / 2;
           break;
 
         case GTK_POS_RIGHT:
-          *x = range->range_rect.x + range->range_rect.width + value_spacing;
-          *y = range->range_rect.y + (range->range_rect.height - logical_rect.height) / 2;
+          *x = range_rect.x + range_rect.width + value_spacing;
+          *y = range_rect.y + (range_rect.height - logical_rect.height) / 2;
           break;
 
         case GTK_POS_TOP:
-          *x = range->slider_start +
-            (range->slider_end - range->slider_start - logical_rect.width) / 2;
+          *x = slider_start + (slider_end - slider_start - logical_rect.width) / 2;
           *x = CLAMP (*x, 0, allocation.width - logical_rect.width);
-          *y = range->range_rect.y - logical_rect.height - value_spacing;
+          *y = range_rect.y - logical_rect.height - value_spacing;
           break;
 
         case GTK_POS_BOTTOM:
-          *x = range->slider_start +
-            (range->slider_end - range->slider_start - logical_rect.width) / 2;
+          *x = slider_start + (slider_end - slider_start - logical_rect.width) / 2;
           *x = CLAMP (*x, 0, allocation.width - logical_rect.width);
-          *y = range->range_rect.y + range->range_rect.height + value_spacing;
+          *y = range_rect.y + range_rect.height + value_spacing;
           break;
 
         default:
@@ -1217,25 +1230,25 @@ gtk_scale_real_get_layout_offsets (GtkScale *scale,
       switch (priv->value_pos)
         {
         case GTK_POS_LEFT:
-          *x = range->range_rect.x - logical_rect.width - value_spacing;
-          *y = range->slider_start + (range->slider_end - range->slider_start - logical_rect.height) / 2;
+          *x = range_rect.x - logical_rect.width - value_spacing;
+          *y = slider_start + (slider_end - slider_start - logical_rect.height) / 2;
           *y = CLAMP (*y, 0, allocation.height - logical_rect.height);
           break;
 
         case GTK_POS_RIGHT:
-          *x = range->range_rect.x + range->range_rect.width + value_spacing;
-          *y = range->slider_start + (range->slider_end - range->slider_start - logical_rect.height) / 2;
+          *x = range_rect.x + range_rect.width + value_spacing;
+          *y = slider_start + (slider_end - slider_start - logical_rect.height) / 2;
           *y = CLAMP (*y, 0, allocation.height - logical_rect.height);
           break;
 
         case GTK_POS_TOP:
-          *x = range->range_rect.x + (range->range_rect.width - logical_rect.width) / 2;
-          *y = range->range_rect.y - logical_rect.height - value_spacing;
+          *x = range_rect.x + (range_rect.width - logical_rect.width) / 2;
+          *y = range_rect.y - logical_rect.height - value_spacing;
           break;
 
         case GTK_POS_BOTTOM:
-          *x = range->range_rect.x + (range->range_rect.width - logical_rect.width) / 2;
-          *y = range->range_rect.y + range->range_rect.height + value_spacing;
+          *x = range_rect.x + (range_rect.width - logical_rect.width) / 2;
+          *y = range_rect.y + range_rect.height + value_spacing;
           break;
 
         default:
@@ -1320,7 +1333,7 @@ gtk_scale_get_layout (GtkScale *scale)
   if (priv->draw_value)
     {
       txt = _gtk_scale_format_value (scale,
-				     GTK_RANGE (scale)->adjustment->value);
+				     gtk_adjustment_get_value (gtk_range_get_adjustment (GTK_RANGE (scale))));
       pango_layout_set_text (priv->layout, txt, -1);
       g_free (txt);
     }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]