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

« back to all changes in this revision

Viewing changes to plugins/unityshell/src/unity-root-accessible.cpp

  • Committer: Didier Roche
  • Date: 2011-07-21 16:17:59 UTC
  • mfrom: (55.813.3 upstream)
  • Revision ID: didier.roche@canonical.com-20110721161759-osmh94x428t2bf2b
* New upstream release.
* debian/control:
  - build-dep on libnotify-dev
  - bump libnux-1.0-dev dep for ABI break

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
#include "unitya11y.h"
30
30
 
31
31
/* GObject */
32
 
static void unity_root_accessible_class_init (UnityRootAccessibleClass *klass);
33
 
static void unity_root_accessible_init       (UnityRootAccessible *root);
34
 
static void unity_root_accessible_finalize   (GObject *object);
 
32
static void unity_root_accessible_class_init(UnityRootAccessibleClass* klass);
 
33
static void unity_root_accessible_init(UnityRootAccessible* root);
 
34
static void unity_root_accessible_finalize(GObject* object);
35
35
 
36
36
/* AtkObject.h */
37
 
static void       unity_root_accessible_initialize     (AtkObject *accessible,
38
 
                                                        gpointer   data);
39
 
static gint       unity_root_accessible_get_n_children (AtkObject *obj);
40
 
static AtkObject *unity_root_accessible_ref_child      (AtkObject *obj,
41
 
                                                        gint i);
42
 
static AtkObject *unity_root_accessible_get_parent     (AtkObject *obj);
 
37
static void       unity_root_accessible_initialize(AtkObject* accessible,
 
38
                                                   gpointer   data);
 
39
static gint       unity_root_accessible_get_n_children(AtkObject* obj);
 
40
static AtkObject* unity_root_accessible_ref_child(AtkObject* obj,
 
41
                                                  gint i);
 
42
static AtkObject* unity_root_accessible_get_parent(AtkObject* obj);
43
43
/* private */
44
 
static void       explore_children                     (AtkObject *obj);
 
44
static void       explore_children(AtkObject* obj);
45
45
 
46
46
 
47
47
#define UNITY_ROOT_ACCESSIBLE_GET_PRIVATE(obj)                          \
48
48
  (G_TYPE_INSTANCE_GET_PRIVATE ((obj), UNITY_TYPE_ROOT_ACCESSIBLE, UnityRootAccessiblePrivate))
49
49
 
50
 
G_DEFINE_TYPE (UnityRootAccessible, unity_root_accessible,  ATK_TYPE_OBJECT)
 
50
G_DEFINE_TYPE(UnityRootAccessible, unity_root_accessible,  ATK_TYPE_OBJECT)
51
51
 
52
52
struct _UnityRootAccessiblePrivate
53
53
{
54
54
  /* we save on window_list the accessible object for the windows
55
55
     registered */
56
 
  GSList *window_list;
 
56
  GSList* window_list;
57
57
};
58
58
 
59
59
static void
60
 
unity_root_accessible_class_init (UnityRootAccessibleClass *klass)
 
60
unity_root_accessible_class_init(UnityRootAccessibleClass* klass)
61
61
{
62
 
  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
63
 
  AtkObjectClass *atk_class = ATK_OBJECT_CLASS (klass);
 
62
  GObjectClass* gobject_class = G_OBJECT_CLASS(klass);
 
63
  AtkObjectClass* atk_class = ATK_OBJECT_CLASS(klass);
64
64
 
65
65
  gobject_class->finalize = unity_root_accessible_finalize;
66
66
 
70
70
  atk_class->get_parent = unity_root_accessible_get_parent;
71
71
  atk_class->initialize = unity_root_accessible_initialize;
72
72
 
73
 
  g_type_class_add_private (gobject_class, sizeof (UnityRootAccessiblePrivate));
 
73
  g_type_class_add_private(gobject_class, sizeof(UnityRootAccessiblePrivate));
74
74
}
75
75
 
76
76
static void
77
 
unity_root_accessible_init (UnityRootAccessible      *root)
 
77
unity_root_accessible_init(UnityRootAccessible*      root)
78
78
{
79
 
  root->priv = UNITY_ROOT_ACCESSIBLE_GET_PRIVATE (root);
 
79
  root->priv = UNITY_ROOT_ACCESSIBLE_GET_PRIVATE(root);
80
80
 
81
81
  root->priv->window_list = NULL;
82
82
}
83
83
 
84
84
AtkObject*
85
 
unity_root_accessible_new (void)
 
85
unity_root_accessible_new(void)
86
86
{
87
 
  AtkObject *accessible = NULL;
88
 
 
89
 
  accessible = ATK_OBJECT (g_object_new (UNITY_TYPE_ROOT_ACCESSIBLE, NULL));
90
 
 
91
 
  atk_object_initialize (accessible, NULL);
 
87
  AtkObject* accessible = NULL;
 
88
 
 
89
  accessible = ATK_OBJECT(g_object_new(UNITY_TYPE_ROOT_ACCESSIBLE, NULL));
 
90
 
 
91
  atk_object_initialize(accessible, NULL);
92
92
 
93
93
  return accessible;
94
94
}
95
95
 
96
96
static void
97
 
unity_root_accessible_finalize (GObject *object)
 
97
unity_root_accessible_finalize(GObject* object)
98
98
{
99
 
  UnityRootAccessible *root = UNITY_ROOT_ACCESSIBLE (object);
 
99
  UnityRootAccessible* root = UNITY_ROOT_ACCESSIBLE(object);
100
100
 
101
 
  g_return_if_fail (UNITY_IS_ROOT_ACCESSIBLE (object));
 
101
  g_return_if_fail(UNITY_IS_ROOT_ACCESSIBLE(object));
102
102
 
103
103
  if (root->priv->window_list)
104
 
    {
105
 
      g_slist_free (root->priv->window_list);
106
 
      root->priv->window_list = NULL;
107
 
    }
 
104
  {
 
105
    g_slist_free(root->priv->window_list);
 
106
    root->priv->window_list = NULL;
 
107
  }
108
108
 
109
 
  G_OBJECT_CLASS (unity_root_accessible_parent_class)->finalize (object);
 
109
  G_OBJECT_CLASS(unity_root_accessible_parent_class)->finalize(object);
110
110
}
111
111
 
112
112
/* AtkObject.h */
113
113
static void
114
 
unity_root_accessible_initialize (AtkObject *accessible,
115
 
                                  gpointer data)
 
114
unity_root_accessible_initialize(AtkObject* accessible,
 
115
                                 gpointer data)
116
116
{
117
117
  accessible->role = ATK_ROLE_APPLICATION;
118
118
 
119
119
  // FIXME: compiz doesn't set the program name using g_set_prgname,
120
120
  // and AFAIK, there isn't a way to get it. Requires further investigation.
121
121
  // accessible->name = g_get_prgname();
122
 
  atk_object_set_name (accessible, "unity");
123
 
  atk_object_set_parent (accessible, NULL);
 
122
  atk_object_set_name(accessible, "unity");
 
123
  atk_object_set_parent(accessible, NULL);
124
124
 
125
 
  ATK_OBJECT_CLASS (unity_root_accessible_parent_class)->initialize (accessible, data);
 
125
  ATK_OBJECT_CLASS(unity_root_accessible_parent_class)->initialize(accessible, data);
126
126
}
127
127
 
128
128
static gint
129
 
unity_root_accessible_get_n_children (AtkObject *obj)
 
129
unity_root_accessible_get_n_children(AtkObject* obj)
130
130
{
131
 
  UnityRootAccessible *root = UNITY_ROOT_ACCESSIBLE (obj);
 
131
  UnityRootAccessible* root = UNITY_ROOT_ACCESSIBLE(obj);
132
132
 
133
 
  return g_slist_length (root->priv->window_list);
 
133
  return g_slist_length(root->priv->window_list);
134
134
}
135
135
 
136
136
static AtkObject*
137
 
unity_root_accessible_ref_child (AtkObject *obj,
138
 
                                 gint i)
 
137
unity_root_accessible_ref_child(AtkObject* obj,
 
138
                                gint i)
139
139
{
140
 
  UnityRootAccessible *root = NULL;
 
140
  UnityRootAccessible* root = NULL;
141
141
  gint num = 0;
142
 
  AtkObject *item = NULL;
143
 
 
144
 
  root = UNITY_ROOT_ACCESSIBLE (obj);
145
 
  num = atk_object_get_n_accessible_children (obj);
146
 
  g_return_val_if_fail ((i < num)&&(i >= 0), NULL);
147
 
 
148
 
  item = ATK_OBJECT (g_slist_nth_data (root->priv->window_list, i));
 
142
  AtkObject* item = NULL;
 
143
 
 
144
  root = UNITY_ROOT_ACCESSIBLE(obj);
 
145
  num = atk_object_get_n_accessible_children(obj);
 
146
  g_return_val_if_fail((i < num) && (i >= 0), NULL);
 
147
 
 
148
  item = ATK_OBJECT(g_slist_nth_data(root->priv->window_list, i));
149
149
 
150
150
  if (!item)
151
151
    return NULL;
152
152
 
153
 
  g_object_ref (item);
 
153
  g_object_ref(item);
154
154
 
155
155
  return item;
156
156
}
157
157
 
158
158
static AtkObject*
159
 
unity_root_accessible_get_parent (AtkObject *obj)
 
159
unity_root_accessible_get_parent(AtkObject* obj)
160
160
{
161
161
  return NULL;
162
162
}
171
171
 * temporal. This method should be a internal root method, as part of
172
172
 * a basewindow::show callback, as in the case of gail
173
173
 */
174
 
AtkObject *
175
 
unity_root_accessible_add_window (UnityRootAccessible *self,
176
 
                                  nux::BaseWindow *window)
 
174
AtkObject*
 
175
unity_root_accessible_add_window(UnityRootAccessible* self,
 
176
                                 nux::BaseWindow* window)
177
177
{
178
 
  AtkObject *window_accessible = NULL;
 
178
  AtkObject* window_accessible = NULL;
179
179
  gint index = 0;
180
180
 
181
 
  g_return_val_if_fail (UNITY_IS_ROOT_ACCESSIBLE (self), NULL);
 
181
  g_return_val_if_fail(UNITY_IS_ROOT_ACCESSIBLE(self), NULL);
182
182
 
183
183
  window_accessible =
184
 
    unity_a11y_get_accessible (window);
 
184
    unity_a11y_get_accessible(window);
185
185
 
186
186
  self->priv->window_list =
187
 
    g_slist_append (self->priv->window_list, window_accessible);
188
 
 
189
 
  index = g_slist_index (self->priv->window_list, window_accessible);
190
 
 
191
 
  explore_children (window_accessible);
192
 
 
193
 
  g_signal_emit_by_name (self, "children-changed::add",
194
 
                         index, window_accessible, NULL);
 
187
    g_slist_append(self->priv->window_list, window_accessible);
 
188
 
 
189
  index = g_slist_index(self->priv->window_list, window_accessible);
 
190
 
 
191
  explore_children(window_accessible);
 
192
 
 
193
  g_signal_emit_by_name(self, "children-changed::add",
 
194
                        index, window_accessible, NULL);
195
195
 
196
196
  return window_accessible;
197
197
}
223
223
 *
224
224
 */
225
225
static void
226
 
explore_children (AtkObject *obj)
 
226
explore_children(AtkObject* obj)
227
227
{
228
228
  gint num = 0;
229
229
  gint i = 0;
230
 
  AtkObject *atk_child = NULL;
231
 
 
232
 
  g_return_if_fail (ATK_IS_OBJECT (obj));
233
 
 
234
 
  num = atk_object_get_n_accessible_children (obj);
 
230
  AtkObject* atk_child = NULL;
 
231
 
 
232
  g_return_if_fail(ATK_IS_OBJECT(obj));
 
233
 
 
234
  num = atk_object_get_n_accessible_children(obj);
235
235
 
236
236
  for (i = 0; i < num; i++)
237
 
    {
238
 
      atk_child = atk_object_ref_accessible_child (obj, i);
239
 
      explore_children (atk_child);
240
 
      g_object_unref (atk_child);
241
 
    }
 
237
  {
 
238
    atk_child = atk_object_ref_accessible_child(obj, i);
 
239
    explore_children(atk_child);
 
240
    g_object_unref(atk_child);
 
241
  }
242
242
}