[gtk+] Implement GailAdjustment::get_minimium_increment



commit 93fa95e79fb03add226954c0e679d2cf52f6392e
Author: Szilárd Pfeiffer <mailbox pfeifferszilard hu>
Date:   Mon Aug 9 21:12:46 2010 -0400

    Implement GailAdjustment::get_minimium_increment
    
    ...and use it in GailRange and GailSpinButton. Bug 625953.

 modules/other/gail/gailadjustment.c |   44 +++++++++++++++++++++++++++++++++++
 modules/other/gail/gailrange.c      |   20 ++++++++++++++++
 modules/other/gail/gailspinbutton.c |   20 ++++++++++++++++
 3 files changed, 84 insertions(+), 0 deletions(-)
---
diff --git a/modules/other/gail/gailadjustment.c b/modules/other/gail/gailadjustment.c
index 8a86835..5226488 100644
--- a/modules/other/gail/gailadjustment.c
+++ b/modules/other/gail/gailadjustment.c
@@ -38,6 +38,8 @@ static void	 gail_adjustment_get_maximum_value (AtkValue            *obj,
                                                     GValue              *value);
 static void	 gail_adjustment_get_minimum_value (AtkValue            *obj,
                                                     GValue              *value);
+static void	 gail_adjustment_get_minimum_increment (AtkValue        *obj,
+                                                    GValue              *value);
 static gboolean	 gail_adjustment_set_current_value (AtkValue            *obj,
                                                     const GValue        *value);
 
@@ -101,6 +103,7 @@ atk_value_interface_init (AtkValueIface *iface)
   iface->get_current_value = gail_adjustment_get_current_value;
   iface->get_maximum_value = gail_adjustment_get_maximum_value;
   iface->get_minimum_value = gail_adjustment_get_minimum_value;
+  iface->get_minimum_increment = gail_adjustment_get_minimum_increment;
   iface->set_current_value = gail_adjustment_set_current_value;
 }
 
@@ -164,6 +167,47 @@ gail_adjustment_get_minimum_value (AtkValue             *obj,
   g_value_set_double (value, minimum_value);
 }
 
+static void
+gail_adjustment_get_minimum_increment (AtkValue        *obj,
+                                       GValue          *value)
+{
+  GtkAdjustment* adjustment;
+  gdouble minimum_increment;
+ 
+  adjustment = GAIL_ADJUSTMENT (obj)->adjustment;
+  if (adjustment == NULL)
+  {
+    /* State is defunct */
+    return;
+  }
+
+  if (adjustment->step_increment != 0 &&
+      adjustment->page_increment != 0)
+    {
+      if (ABS (adjustment->step_increment) < ABS (adjustment->page_increment))
+        minimum_increment = adjustment->step_increment;
+      else
+        minimum_increment = adjustment->page_increment;
+    }
+  else if (adjustment->step_increment == 0 &&
+           adjustment->page_increment == 0)
+    {
+      minimum_increment = 0;
+    }
+  else if (adjustment->step_increment == 0)
+    {
+      minimum_increment = adjustment->page_increment;
+    }
+  else
+    {
+      minimum_increment = adjustment->step_increment;
+    }
+
+  memset (value,  0, sizeof (GValue));
+  g_value_init (value, G_TYPE_DOUBLE);
+  g_value_set_double (value, minimum_increment);
+}
+
 static gboolean	 
 gail_adjustment_set_current_value (AtkValue             *obj,
                                    const GValue         *value)
diff --git a/modules/other/gail/gailrange.c b/modules/other/gail/gailrange.c
index fc34eab..810baf8 100644
--- a/modules/other/gail/gailrange.c
+++ b/modules/other/gail/gailrange.c
@@ -48,6 +48,8 @@ static void	    gail_range_get_maximum_value (AtkValue       *obj,
                                                   GValue         *value);
 static void	    gail_range_get_minimum_value (AtkValue       *obj,
                                                   GValue         *value);
+static void         gail_range_get_minimum_increment (AtkValue       *obj,
+                                                      GValue         *value);
 static gboolean	    gail_range_set_current_value (AtkValue       *obj,
                                                   const GValue   *value);
 static void         gail_range_value_changed     (GtkAdjustment  *adjustment,
@@ -159,6 +161,7 @@ atk_value_interface_init (AtkValueIface *iface)
   iface->get_current_value = gail_range_get_current_value;
   iface->get_maximum_value = gail_range_get_maximum_value;
   iface->get_minimum_value = gail_range_get_minimum_value;
+  iface->get_minimum_increment = gail_range_get_minimum_increment;
   iface->set_current_value = gail_range_set_current_value;
 }
 
@@ -216,6 +219,23 @@ gail_range_get_minimum_value (AtkValue		*obj,
   atk_value_get_minimum_value (ATK_VALUE (range->adjustment), value);
 }
 
+static void
+gail_range_get_minimum_increment (AtkValue *obj, GValue *value)
+{
+ GailRange *range;
+
+  g_return_if_fail (GAIL_IS_RANGE (obj));
+
+  range = GAIL_RANGE (obj);
+  if (range->adjustment == NULL)
+    /*
+     * Adjustment has not been specified
+     */
+    return;
+
+  atk_value_get_minimum_increment (ATK_VALUE (range->adjustment), value);
+}
+
 static gboolean	 gail_range_set_current_value (AtkValue		*obj,
                                                const GValue	*value)
 {
diff --git a/modules/other/gail/gailspinbutton.c b/modules/other/gail/gailspinbutton.c
index 078bf10..767099d 100644
--- a/modules/other/gail/gailspinbutton.c
+++ b/modules/other/gail/gailspinbutton.c
@@ -42,6 +42,8 @@ static void      gail_spin_button_get_maximum_value (AtkValue       *obj,
                                                      GValue         *value);
 static void      gail_spin_button_get_minimum_value (AtkValue       *obj,
                                                      GValue         *value);
+static void      gail_spin_button_get_minimum_increment (AtkValue       *obj,
+                                                         GValue         *value);
 static gboolean  gail_spin_button_set_current_value (AtkValue       *obj,
                                                      const GValue   *value);
 static void      gail_spin_button_value_changed     (GtkAdjustment  *adjustment,
@@ -108,6 +110,7 @@ atk_value_interface_init (AtkValueIface *iface)
   iface->get_current_value = gail_spin_button_get_current_value;
   iface->get_maximum_value = gail_spin_button_get_maximum_value;
   iface->get_minimum_value = gail_spin_button_get_minimum_value;
+  iface->get_minimum_increment = gail_spin_button_get_minimum_increment;
   iface->set_current_value = gail_spin_button_set_current_value;
 }
 
@@ -165,6 +168,23 @@ gail_spin_button_get_minimum_value (AtkValue       *obj,
   atk_value_get_minimum_value (ATK_VALUE (spin_button->adjustment), value);
 }
 
+static void
+gail_spin_button_get_minimum_increment (AtkValue *obj, GValue *value)
+{
+ GailSpinButton *spin_button;
+
+  g_return_if_fail (GAIL_IS_SPIN_BUTTON (obj));
+
+  spin_button = GAIL_SPIN_BUTTON (obj);
+  if (spin_button->adjustment == NULL)
+    /*
+     * Adjustment has not been specified
+     */
+    return;
+
+  atk_value_get_minimum_increment (ATK_VALUE (spin_button->adjustment), value);
+}
+
 static gboolean  
 gail_spin_button_set_current_value (AtkValue       *obj,
                                     const GValue   *value)



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