]> Pileus Git - ~andy/gtk/blob - gtk/a11y/gtkscrollbaraccessible.c
Avoid unreachable code
[~andy/gtk] / gtk / a11y / gtkscrollbaraccessible.c
1 /* GAIL - The GNOME Accessibility Implementation Library
2  * Copyright 2001 Sun Microsystems Inc.
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
16  */
17
18 #include "config.h"
19
20 #include <gtk/gtk.h>
21 #include "gtkscrollbaraccessible.h"
22
23
24 G_DEFINE_TYPE (GtkScrollbarAccessible, _gtk_scrollbar_accessible, GTK_TYPE_RANGE_ACCESSIBLE)
25
26 static void
27 _gtk_scrollbar_accessible_init (GtkScrollbarAccessible *accessible)
28 {
29 }
30
31 static void
32 gtk_scrollbar_accessible_initialize (AtkObject *accessible,
33                                      gpointer   data)
34 {
35   ATK_OBJECT_CLASS (_gtk_scrollbar_accessible_parent_class)->initialize (accessible, data);
36
37   accessible->role = ATK_ROLE_SCROLL_BAR;
38 }
39
40 static gint
41 gtk_scrollbar_accessible_get_index_in_parent (AtkObject *accessible)
42 {
43   GtkWidget *widget;
44   GtkWidget *parent;
45   GtkWidget *child;
46   GtkScrolledWindow *scrolled_window;
47   gint id;
48
49   widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (accessible));
50   if (widget == NULL)
51     return -1;
52
53   parent = gtk_widget_get_parent (widget);
54   if (!GTK_IS_SCROLLED_WINDOW (parent))
55     return ATK_OBJECT_CLASS (_gtk_scrollbar_accessible_parent_class)->get_index_in_parent (accessible);
56
57   scrolled_window = GTK_SCROLLED_WINDOW (parent);
58   id = 0;
59   child = gtk_bin_get_child (GTK_BIN (scrolled_window));
60   if (child)
61     {
62       if (widget == child)
63         return id;
64       id++;
65     }
66
67   child = gtk_scrolled_window_get_hscrollbar (scrolled_window);
68   if (child)
69     {
70       if (widget == child)
71         return id;
72       id++;
73     }
74   child = gtk_scrolled_window_get_vscrollbar (scrolled_window);
75   if (child)
76     {
77       if (widget == child)
78         return id;
79     }
80
81   return -1;
82 }
83
84 static void
85 _gtk_scrollbar_accessible_class_init (GtkScrollbarAccessibleClass *klass)
86 {
87   AtkObjectClass *class = ATK_OBJECT_CLASS (klass);
88
89   class->initialize = gtk_scrollbar_accessible_initialize;
90   class->get_index_in_parent = gtk_scrollbar_accessible_get_index_in_parent;
91 }