~om26er/ubuntu/oneiric/unity/sru-778256

« back to all changes in this revision

Viewing changes to plugins/unityshell/src/nux-layout-accessible.cpp

Update formatting to match style (as close as possible)

Show diffs side-by-side

added added

removed removed

Lines of Context:
33
33
#include "unitya11y.h"
34
34
 
35
35
/* GObject */
36
 
static void nux_layout_accessible_class_init (NuxLayoutAccessibleClass *klass);
37
 
static void nux_layout_accessible_init       (NuxLayoutAccessible *layout_accessible);
 
36
static void nux_layout_accessible_class_init(NuxLayoutAccessibleClass* klass);
 
37
static void nux_layout_accessible_init(NuxLayoutAccessible* layout_accessible);
38
38
 
39
39
/* AtkObject.h */
40
 
static void       nux_layout_accessible_initialize     (AtkObject *accessible,
41
 
                                                        gpointer   data);
42
 
static gint       nux_layout_accessible_get_n_children (AtkObject *obj);
43
 
static AtkObject *nux_layout_accessible_ref_child      (AtkObject *obj,
44
 
                                                        gint i);
 
40
static void       nux_layout_accessible_initialize(AtkObject* accessible,
 
41
                                                   gpointer   data);
 
42
static gint       nux_layout_accessible_get_n_children(AtkObject* obj);
 
43
static AtkObject* nux_layout_accessible_ref_child(AtkObject* obj,
 
44
                                                  gint i);
45
45
 
46
46
/* private */
47
 
static void       on_view_changed_cb                   (nux::Layout *layout,
48
 
                                                        nux::Area *area,
49
 
                                                        AtkObject *acccessible,
50
 
                                                        gboolean is_add);
51
 
static int        search_for_child                     (AtkObject *accessible,
52
 
                                                        nux::Layout *layout,
53
 
                                                        nux::Area *area);
 
47
static void       on_view_changed_cb(nux::Layout* layout,
 
48
                                     nux::Area* area,
 
49
                                     AtkObject* acccessible,
 
50
                                     gboolean is_add);
 
51
static int        search_for_child(AtkObject* accessible,
 
52
                                   nux::Layout* layout,
 
53
                                   nux::Area* area);
54
54
 
55
 
G_DEFINE_TYPE (NuxLayoutAccessible, nux_layout_accessible,  NUX_TYPE_AREA_ACCESSIBLE)
 
55
G_DEFINE_TYPE(NuxLayoutAccessible, nux_layout_accessible,  NUX_TYPE_AREA_ACCESSIBLE)
56
56
 
57
57
static void
58
 
nux_layout_accessible_class_init (NuxLayoutAccessibleClass *klass)
 
58
nux_layout_accessible_class_init(NuxLayoutAccessibleClass* klass)
59
59
{
60
 
  AtkObjectClass *atk_class = ATK_OBJECT_CLASS (klass);
 
60
  AtkObjectClass* atk_class = ATK_OBJECT_CLASS(klass);
61
61
 
62
62
  /* AtkObject */
63
63
  atk_class->initialize = nux_layout_accessible_initialize;
66
66
}
67
67
 
68
68
static void
69
 
nux_layout_accessible_init (NuxLayoutAccessible *layout_accessible)
 
69
nux_layout_accessible_init(NuxLayoutAccessible* layout_accessible)
70
70
{
71
71
}
72
72
 
73
73
AtkObject*
74
 
nux_layout_accessible_new (nux::Object *object)
 
74
nux_layout_accessible_new(nux::Object* object)
75
75
{
76
 
  AtkObject *accessible = NULL;
77
 
 
78
 
  g_return_val_if_fail (dynamic_cast<nux::Layout *>(object), NULL);
79
 
 
80
 
  accessible = ATK_OBJECT (g_object_new (NUX_TYPE_LAYOUT_ACCESSIBLE, NULL));
81
 
 
82
 
  atk_object_initialize (accessible, object);
 
76
  AtkObject* accessible = NULL;
 
77
 
 
78
  g_return_val_if_fail(dynamic_cast<nux::Layout*>(object), NULL);
 
79
 
 
80
  accessible = ATK_OBJECT(g_object_new(NUX_TYPE_LAYOUT_ACCESSIBLE, NULL));
 
81
 
 
82
  atk_object_initialize(accessible, object);
83
83
 
84
84
  return accessible;
85
85
}
86
86
 
87
87
/* AtkObject.h */
88
88
static void
89
 
nux_layout_accessible_initialize (AtkObject *accessible,
90
 
                                  gpointer data)
 
89
nux_layout_accessible_initialize(AtkObject* accessible,
 
90
                                 gpointer data)
91
91
{
92
 
  nux::Object *nux_object = NULL;
93
 
  nux::Layout *layout = NULL;
 
92
  nux::Object* nux_object = NULL;
 
93
  nux::Layout* layout = NULL;
94
94
 
95
 
  ATK_OBJECT_CLASS (nux_layout_accessible_parent_class)->initialize (accessible, data);
 
95
  ATK_OBJECT_CLASS(nux_layout_accessible_parent_class)->initialize(accessible, data);
96
96
 
97
97
  accessible->role = ATK_ROLE_PANEL;
98
98
 
99
 
  nux_object = nux_object_accessible_get_object (NUX_OBJECT_ACCESSIBLE (accessible));
100
 
  layout = dynamic_cast<nux::Layout *>(nux_object);
101
 
 
102
 
  layout->ViewAdded.connect (sigc::bind (sigc::ptr_fun (on_view_changed_cb),
103
 
                                         accessible, TRUE));
104
 
 
105
 
  layout->ViewRemoved.connect (sigc::bind (sigc::ptr_fun (on_view_changed_cb),
106
 
                                           accessible, FALSE));
 
99
  nux_object = nux_object_accessible_get_object(NUX_OBJECT_ACCESSIBLE(accessible));
 
100
  layout = dynamic_cast<nux::Layout*>(nux_object);
 
101
 
 
102
  layout->ViewAdded.connect(sigc::bind(sigc::ptr_fun(on_view_changed_cb),
 
103
                                       accessible, TRUE));
 
104
 
 
105
  layout->ViewRemoved.connect(sigc::bind(sigc::ptr_fun(on_view_changed_cb),
 
106
                                         accessible, FALSE));
107
107
}
108
108
 
109
109
static gint
110
 
nux_layout_accessible_get_n_children (AtkObject *obj)
 
110
nux_layout_accessible_get_n_children(AtkObject* obj)
111
111
{
112
 
  nux::Object *nux_object = NULL;
113
 
  nux::Layout *layout = NULL;
114
 
  std::list<nux::Area *> element_list;
115
 
 
116
 
  g_return_val_if_fail (NUX_IS_LAYOUT_ACCESSIBLE (obj), 0);
117
 
 
118
 
  nux_object = nux_object_accessible_get_object (NUX_OBJECT_ACCESSIBLE (obj));
 
112
  nux::Object* nux_object = NULL;
 
113
  nux::Layout* layout = NULL;
 
114
  std::list<nux::Area*> element_list;
 
115
 
 
116
  g_return_val_if_fail(NUX_IS_LAYOUT_ACCESSIBLE(obj), 0);
 
117
 
 
118
  nux_object = nux_object_accessible_get_object(NUX_OBJECT_ACCESSIBLE(obj));
119
119
  if (!nux_object) /* state is defunct */
120
120
    return 0;
121
121
 
122
 
  layout = dynamic_cast<nux::Layout *>(nux_object);
123
 
 
124
 
  element_list = layout->GetChildren ();
125
 
 
126
 
  return element_list.size ();
 
122
  layout = dynamic_cast<nux::Layout*>(nux_object);
 
123
 
 
124
  element_list = layout->GetChildren();
 
125
 
 
126
  return element_list.size();
127
127
}
128
128
 
129
 
static AtkObject *
130
 
nux_layout_accessible_ref_child (AtkObject *obj,
131
 
                                 gint i)
 
129
static AtkObject*
 
130
nux_layout_accessible_ref_child(AtkObject* obj,
 
131
                                gint i)
132
132
{
133
 
  nux::Object *nux_object = NULL;
134
 
  nux::Object *child = NULL;
135
 
  AtkObject *child_accessible = NULL;
136
 
  nux::Layout *layout = NULL;
137
 
  std::list<nux::Area *> element_list;
 
133
  nux::Object* nux_object = NULL;
 
134
  nux::Object* child = NULL;
 
135
  AtkObject* child_accessible = NULL;
 
136
  nux::Layout* layout = NULL;
 
137
  std::list<nux::Area*> element_list;
138
138
  gint num = 0;
139
 
  std::list<nux::Area *>::iterator it;
140
 
 
141
 
  g_return_val_if_fail (NUX_IS_LAYOUT_ACCESSIBLE (obj), 0);
142
 
  num = atk_object_get_n_accessible_children (obj);
143
 
  g_return_val_if_fail ((i < num)&&(i >= 0), NULL);
144
 
 
145
 
  nux_object = nux_object_accessible_get_object (NUX_OBJECT_ACCESSIBLE (obj));
 
139
  std::list<nux::Area*>::iterator it;
 
140
 
 
141
  g_return_val_if_fail(NUX_IS_LAYOUT_ACCESSIBLE(obj), 0);
 
142
  num = atk_object_get_n_accessible_children(obj);
 
143
  g_return_val_if_fail((i < num) && (i >= 0), NULL);
 
144
 
 
145
  nux_object = nux_object_accessible_get_object(NUX_OBJECT_ACCESSIBLE(obj));
146
146
  if (!nux_object) /* state is defunct */
147
147
    return 0;
148
148
 
149
 
  layout = dynamic_cast<nux::Layout *>(nux_object);
150
 
 
151
 
  element_list = layout->GetChildren ();
152
 
 
153
 
  it = element_list.begin ();
154
 
  std::advance (it, i);
155
 
 
156
 
  child = dynamic_cast<nux::Object *>(*it);
157
 
  child_accessible = unity_a11y_get_accessible (child);
158
 
 
159
 
  g_object_ref (child_accessible);
 
149
  layout = dynamic_cast<nux::Layout*>(nux_object);
 
150
 
 
151
  element_list = layout->GetChildren();
 
152
 
 
153
  it = element_list.begin();
 
154
  std::advance(it, i);
 
155
 
 
156
  child = dynamic_cast<nux::Object*>(*it);
 
157
  child_accessible = unity_a11y_get_accessible(child);
 
158
 
 
159
  g_object_ref(child_accessible);
160
160
 
161
161
  return child_accessible;
162
162
}
163
163
 
164
164
/* private */
165
165
static void
166
 
on_view_changed_cb (nux::Layout *layout,
167
 
                    nux::Area *area,
168
 
                    AtkObject *accessible,
169
 
                    gboolean is_add)
 
166
on_view_changed_cb(nux::Layout* layout,
 
167
                   nux::Area* area,
 
168
                   AtkObject* accessible,
 
169
                   gboolean is_add)
170
170
{
171
 
  const gchar *signal_name = NULL;
172
 
  AtkObject *atk_child = NULL;
 
171
  const gchar* signal_name = NULL;
 
172
  AtkObject* atk_child = NULL;
173
173
  gint index;
174
174
 
175
 
  g_return_if_fail (NUX_IS_LAYOUT_ACCESSIBLE (accessible));
 
175
  g_return_if_fail(NUX_IS_LAYOUT_ACCESSIBLE(accessible));
176
176
 
177
 
  atk_child = unity_a11y_get_accessible (area);
 
177
  atk_child = unity_a11y_get_accessible(area);
178
178
 
179
179
  if (is_add)
180
 
    {
181
 
      signal_name = "children-changed::add";
182
 
      index = nux_layout_accessible_get_n_children (accessible) - 1;
183
 
    }
 
180
  {
 
181
    signal_name = "children-changed::add";
 
182
    index = nux_layout_accessible_get_n_children(accessible) - 1;
 
183
  }
184
184
  else
185
 
    {
186
 
      signal_name = "children-changed::remove";
187
 
      index = search_for_child (accessible, layout, area);
188
 
    }
189
 
 
190
 
  g_debug ("[a11y][layout] view change. parent=(%p:%s), child=(%p:%s) at (%i) added=(%i)",
191
 
           accessible, atk_object_get_name (accessible),
192
 
           atk_child, atk_object_get_name (atk_child),
193
 
           index, is_add);
194
 
 
195
 
  g_signal_emit_by_name (accessible, signal_name, index, atk_child, NULL);
 
185
  {
 
186
    signal_name = "children-changed::remove";
 
187
    index = search_for_child(accessible, layout, area);
 
188
  }
 
189
 
 
190
  g_debug("[a11y][layout] view change. parent=(%p:%s), child=(%p:%s) at (%i) added=(%i)",
 
191
          accessible, atk_object_get_name(accessible),
 
192
          atk_child, atk_object_get_name(atk_child),
 
193
          index, is_add);
 
194
 
 
195
  g_signal_emit_by_name(accessible, signal_name, index, atk_child, NULL);
196
196
}
197
197
 
198
198
static int
199
 
search_for_child (AtkObject *accessible,
200
 
                  nux::Layout *layout,
201
 
                  nux::Area *area)
 
199
search_for_child(AtkObject* accessible,
 
200
                 nux::Layout* layout,
 
201
                 nux::Area* area)
202
202
{
203
 
  std::list<nux::Area *> element_list;
204
 
  std::list<nux::Area *>::iterator it;
205
 
  nux::Area *current_area = NULL;
 
203
  std::list<nux::Area*> element_list;
 
204
  std::list<nux::Area*>::iterator it;
 
205
  nux::Area* current_area = NULL;
206
206
  gint result = 0;
207
207
  gboolean found = FALSE;
208
208
 
209
 
  element_list = layout->GetChildren ();
 
209
  element_list = layout->GetChildren();
210
210
 
211
 
  for (it = element_list.begin (); it != element_list.end (); it++,result++)
 
211
  for (it = element_list.begin(); it != element_list.end(); it++, result++)
 
212
  {
 
213
    current_area = *it;
 
214
    if (current_area == area)
212
215
    {
213
 
      current_area = *it;
214
 
      if (current_area == area)
215
 
        {
216
 
          found = TRUE;
217
 
          break;
218
 
        }
 
216
      found = TRUE;
 
217
      break;
219
218
    }
 
219
  }
220
220
 
221
221
  if (!found) result = -1;
222
222