]> Pileus Git - ~andy/gtk/commitdiff
gail: Fix scrollbar index_in_parent() implementation
authorBenjamin Otte <otte@redhat.com>
Thu, 9 Jun 2011 04:16:23 +0000 (06:16 +0200)
committerBenjamin Otte <otte@redhat.com>
Thu, 9 Jun 2011 04:16:23 +0000 (06:16 +0200)
modules/other/gail/gailscrollbar.c

index 7bdae98a927b0e8371524f58e550eab268ae5764..5d93c9ac0d98ccea6a1450346173ff0cf0f9f06d 100644 (file)
@@ -59,9 +59,9 @@ gail_scrollbar_get_index_in_parent (AtkObject *accessible)
 {
   GtkWidget *widget;
   GtkWidget *parent;
+  GtkWidget *child;
   GtkScrolledWindow *scrolled_window;
-  gint n_children;
-  GList *children;
+  gint id;
 
   widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (accessible));
 
@@ -79,31 +79,28 @@ gail_scrollbar_get_index_in_parent (AtkObject *accessible)
     return ATK_OBJECT_CLASS (gail_scrollbar_parent_class)->get_index_in_parent (accessible);
 
   scrolled_window = GTK_SCROLLED_WINDOW (parent);
-  children = gtk_container_get_children (GTK_CONTAINER (scrolled_window));
-  n_children = g_list_length (children);
-  g_list_free (children);
-
-  if (GTK_IS_HSCROLLBAR (widget))
-  {
-    if (!gtk_scrolled_window_get_hscrollbar (scrolled_window))
+  id = 0;
+  child = gtk_bin_get_child (GTK_BIN (scrolled_window));
+  if (child)
     {
-      n_children = -1;
+      if (widget == child)
+        return id;
+      id++;
     }
-  }
-  else if (GTK_IS_VSCROLLBAR (widget))
-  {
-    if (!gtk_scrolled_window_get_vscrollbar (scrolled_window))
+
+  child = gtk_scrolled_window_get_hscrollbar (scrolled_window);
+  if (child)
     {
-      n_children = -1;
+      if (widget == child)
+        return id;
+      id++;
     }
-    else if (gtk_scrolled_window_get_hscrollbar (scrolled_window))
+  child = gtk_scrolled_window_get_vscrollbar (scrolled_window);
+  if (child)
     {
-      n_children++;
+      if (widget == child)
+        return id;
     }
-  }
-  else
-  {
-    n_children = -1;
-  }
-  return n_children;
+
+  return -1;
 }