Fixed bug in Value->setCurrentValue, and added GtkRange to regression test
[platform/core/uifw/at-spi2-atk.git] / libspi / value.c
index c099b2c..372bb0d 100644 (file)
@@ -25,6 +25,8 @@
 #include <stdio.h>
 #include <libspi/value.h>
 
+#define PARENT_TYPE SPI_TYPE_BASE
+
 /* Static function declarations */
 
 static void
@@ -48,7 +50,7 @@ impl__set_currentValue (PortableServer_Servant _servant,
 
 BONOBO_TYPE_FUNC_FULL (SpiValue,
                       Accessibility_Value,
-                      BONOBO_TYPE_OBJECT,
+                      PARENT_TYPE,
                       spi_value);
 
 
@@ -106,10 +108,16 @@ impl__get_minimumValue (PortableServer_Servant servant,
 
   g_return_val_if_fail (value != NULL, 0.0);
 
-  g_value_init (&gvalue, G_TYPE_FLOAT);
+  /*
+   * FIXME: ahem, there's no guarantee that
+   * atk_value_get_minimum_value returns a float.
+   * What we really need is a generic value API here
+   */
+
+  g_value_init (&gvalue, G_TYPE_DOUBLE);
   atk_value_get_minimum_value (value, &gvalue);
 
-  return (CORBA_float) g_value_get_float (&gvalue);
+  return (CORBA_float) g_value_get_double (&gvalue);
 }
 
 
@@ -122,10 +130,10 @@ impl__get_maximumValue (PortableServer_Servant servant,
 
   g_return_val_if_fail (value != NULL, 0.0);
 
-  g_value_init (&gvalue, G_TYPE_FLOAT);
+  g_value_init (&gvalue, G_TYPE_DOUBLE);
   atk_value_get_maximum_value (value, &gvalue);
 
-  return (CORBA_float) g_value_get_float (&gvalue);
+  return (CORBA_float) g_value_get_double (&gvalue);
 }
 
 
@@ -138,10 +146,10 @@ impl__get_currentValue (PortableServer_Servant servant,
 
   g_return_val_if_fail (value != NULL, 0.0);
 
-  g_value_init (&gvalue, G_TYPE_FLOAT);
+  g_value_init (&gvalue, G_TYPE_DOUBLE);
   atk_value_get_current_value (value, &gvalue);
 
-  return (CORBA_float) g_value_get_float (&gvalue);
+  return (CORBA_float) g_value_get_double (&gvalue);
 }
 
 
@@ -155,8 +163,8 @@ impl__set_currentValue (PortableServer_Servant servant,
 
   g_return_if_fail (avalue != NULL);
 
-  g_value_init (&gvalue, G_TYPE_FLOAT);
-  g_value_set_float (&gvalue, (gfloat) value);
+  g_value_init (&gvalue, G_TYPE_DOUBLE);
+  g_value_set_double (&gvalue, (gdouble) value);
 
   atk_value_set_current_value (avalue, &gvalue);
 }