Fix bug in calculation of number of toggle states
authorPadraig O'Briain <padraigo@src.gnome.org>
Mon, 19 Nov 2001 10:13:52 +0000 (10:13 +0000)
committerPadraig O'Briain <padraigo@src.gnome.org>
Mon, 19 Nov 2001 10:13:52 +0000 (10:13 +0000)
* atk/atkobject.c (atk_object_notify_state_change):
Fix bug in calculation of number of toggle states

* atk/atkstate.c:
Correct out-by-1 error in atk_state_type_register()
Use type (number of states defined) in atk_state_type_get_name()
and atk_state_type_for_name()

ChangeLog
atk/atkobject.c
atk/atkstate.c

index db9120f..a03b20e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2001-11-19  Padraig O'Briain  <padraig.obriain@sun.com>
+
+       * atk/atkobject.c (atk_object_notify_state_change):
+       Fix bug in calculation of number of toggle states
+
+       * atk/atkstate.c:
+       Correct out-by-1 error in atk_state_type_register()
+       Use type (number of states defined) in atk_state_type_get_name()
+       and atk_state_type_for_name()
+       
 2001-11-17  Padraig O'Briain  <padraig.obriain@sun.com>
 
        * atk/atkeditabletext.c:
index 5a9450a..682c837 100755 (executable)
@@ -719,9 +719,12 @@ atk_object_notify_state_change (AtkObject *accessible,
                                 AtkState  state,
                                 gboolean  value)
 {
+#define N_TOGGLE_STATES 2
   AtkPropertyValues  values = { 0, };
-  AtkState toggle_states[] = { ATK_STATE_EXPANDED, ATK_STATE_COLLAPSED };
-  AtkState toggled_states[] = { ATK_STATE_COLLAPSED, ATK_STATE_EXPANDED };
+  AtkState toggle_states[N_TOGGLE_STATES] = { ATK_STATE_EXPANDED, 
+                                              ATK_STATE_COLLAPSED };
+  AtkState toggled_states[N_TOGGLE_STATES] = { ATK_STATE_COLLAPSED, 
+                                               ATK_STATE_EXPANDED };
 
   values.property_name = atk_object_name_property_state;
   if (value)
@@ -731,7 +734,7 @@ atk_object_notify_state_change (AtkObject *accessible,
        g_value_init (&values.new_value, G_TYPE_INT);
        g_value_set_int (&values.new_value, state);
 
-       for (i = 0; i < sizeof (toggle_states); i ++)
+       for (i = 0; i < N_TOGGLE_STATES; i++)
          {
            if (toggle_states[i] == state)
              {
index 1070bd0..0b2ae7b 100755 (executable)
@@ -21,6 +21,8 @@
 
 #include <string.h>
 
+static guint type = ATK_STATE_LAST_DEFINED;
+
 #define NUM_POSSIBLE_STATES               (sizeof(AtkState)*8)
 
 static gchar* state_names[NUM_POSSIBLE_STATES] = {
@@ -67,8 +69,8 @@ static gchar* state_names[NUM_POSSIBLE_STATES] = {
 AtkStateType
 atk_state_type_register (const gchar *name)
 {
-  static guint type = ATK_STATE_LAST_DEFINED;
-  if (type < NUM_POSSIBLE_STATES)
+
+  if (type < NUM_POSSIBLE_STATES -1)
   {
     state_names[++type] = g_strdup (name); 
     return (type);
@@ -89,14 +91,11 @@ atk_state_type_get_name (AtkStateType state)
 {
   gint n;
 
-  if (state == 0)
-    return NULL;
-
-  for (n=0; n<NUM_POSSIBLE_STATES; n++)
-  {
-    if (state == n) 
+  if (state < type)
+    {
+      n = state; 
       return state_names[n];
-  }
+    }
 
   return NULL;
 }
@@ -117,7 +116,7 @@ atk_state_type_for_name (const gchar *name)
   g_return_val_if_fail (name != NULL, 0);
   g_return_val_if_fail (strlen (name) > 0, 0);
 
-  for (i = 0; i < NUM_POSSIBLE_STATES; i++)
+  for (i = 0; i < type; i++)
   {
     if (state_names[i] == NULL)
       continue;