Merge lp:~themuso/unity/improve-shutdown-dialog-a11y into lp:unity
- improve-shutdown-dialog-a11y
- Merge into trunk
Status: | Merged |
---|---|
Approved by: | Stephen M. Webb |
Approved revision: | no longer in the source branch. |
Merged at revision: | 3698 |
Proposed branch: | lp:~themuso/unity/improve-shutdown-dialog-a11y |
Merge into: | lp:unity |
Diff against target: |
381 lines (+324/-0) 4 files modified
plugins/unityshell/src/nux-layout-accessible.cpp (+5/-0) plugins/unityshell/src/unity-session-button-accessible.cpp (+260/-0) plugins/unityshell/src/unity-session-button-accessible.h (+53/-0) plugins/unityshell/src/unitya11y.cpp (+6/-0) |
To merge this branch: | bzr merge lp:~themuso/unity/improve-shutdown-dialog-a11y |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Marco Trevisan (Treviño) | Approve | ||
PS Jenkins bot (community) | continuous-integration | Approve | |
Review via email:
|
Commit message
Implement accessibility for the optino buttons in the shutdown dialog.
Also improve the parent-child relationship between objects such that the shutdown message can be read with Orca flat review.
Description of the change
Implement accessibility for the optino buttons in the shutdown dialog.
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
PS Jenkins bot (ps-jenkins) wrote : | # |
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Marco Trevisan (Treviño) (3v1n0) wrote : | # |
412 + highlight_
424 + sigc::signal<void> highlight_change;
You don't need that, I'm using a nux::Property for highlighted, and it already supports signaling.
Just connect to highlighted.changed signal ;)
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:3672
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Marco Trevisan (Treviño) (3v1n0) wrote : | # |
376 + if (object-
377 + return unity_session_
It shuold work anyway, but I think it's better to use IsDerivedFromTy
Anyway this looks good now, thanks
Preview Diff
1 | === modified file 'plugins/unityshell/src/nux-layout-accessible.cpp' | |||
2 | --- plugins/unityshell/src/nux-layout-accessible.cpp 2012-08-15 14:05:18 +0000 | |||
3 | +++ plugins/unityshell/src/nux-layout-accessible.cpp 2014-02-25 01:48:00 +0000 | |||
4 | @@ -137,6 +137,7 @@ | |||
5 | 137 | std::list<nux::Area*> element_list; | 137 | std::list<nux::Area*> element_list; |
6 | 138 | gint num = 0; | 138 | gint num = 0; |
7 | 139 | std::list<nux::Area*>::iterator it; | 139 | std::list<nux::Area*>::iterator it; |
8 | 140 | AtkObject* parent = NULL; | ||
9 | 140 | 141 | ||
10 | 141 | g_return_val_if_fail(NUX_IS_LAYOUT_ACCESSIBLE(obj), 0); | 142 | g_return_val_if_fail(NUX_IS_LAYOUT_ACCESSIBLE(obj), 0); |
11 | 142 | num = atk_object_get_n_accessible_children(obj); | 143 | num = atk_object_get_n_accessible_children(obj); |
12 | @@ -156,6 +157,10 @@ | |||
13 | 156 | child = dynamic_cast<nux::Object*>(*it); | 157 | child = dynamic_cast<nux::Object*>(*it); |
14 | 157 | child_accessible = unity_a11y_get_accessible(child); | 158 | child_accessible = unity_a11y_get_accessible(child); |
15 | 158 | 159 | ||
16 | 160 | parent = atk_object_get_parent(child_accessible); | ||
17 | 161 | if (parent != obj) | ||
18 | 162 | atk_object_set_parent(child_accessible, obj); | ||
19 | 163 | |||
20 | 159 | g_object_ref(child_accessible); | 164 | g_object_ref(child_accessible); |
21 | 160 | 165 | ||
22 | 161 | return child_accessible; | 166 | return child_accessible; |
23 | 162 | 167 | ||
24 | === added file 'plugins/unityshell/src/unity-session-button-accessible.cpp' | |||
25 | --- plugins/unityshell/src/unity-session-button-accessible.cpp 1970-01-01 00:00:00 +0000 | |||
26 | +++ plugins/unityshell/src/unity-session-button-accessible.cpp 2014-02-25 01:48:00 +0000 | |||
27 | @@ -0,0 +1,260 @@ | |||
28 | 1 | /* | ||
29 | 2 | * Copyright (C) 2011 Canonical Ltd | ||
30 | 3 | * | ||
31 | 4 | * This program is free software: you can redistribute it and/or modify | ||
32 | 5 | * it under the terms of the GNU General Public License version 3 as | ||
33 | 6 | * published by the Free Software Foundation. | ||
34 | 7 | * | ||
35 | 8 | * This program is distributed in the hope that it will be useful, | ||
36 | 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
37 | 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
38 | 11 | * GNU General Public License for more details. | ||
39 | 12 | * | ||
40 | 13 | * You should have received a copy of the GNU General Public License | ||
41 | 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
42 | 15 | * | ||
43 | 16 | * Authored by: Luke Yelavich <luke.yelavich@canonical.com> | ||
44 | 17 | */ | ||
45 | 18 | |||
46 | 19 | /** | ||
47 | 20 | * SECTION:unity-session_button_accessible | ||
48 | 21 | * @Title: UnitySessionButtonAccessible | ||
49 | 22 | * @short_description: Implementation of the ATK interfaces for #unity::session::Button | ||
50 | 23 | * | ||
51 | 24 | * #UnitySessionButtonAccessible implements the required ATK interfaces of | ||
52 | 25 | * unity::Button, exposing the common elements on each basic individual | ||
53 | 26 | * element (position, extents, etc) | ||
54 | 27 | * | ||
55 | 28 | */ | ||
56 | 29 | |||
57 | 30 | #include "unity-session-button-accessible.h" | ||
58 | 31 | #include "SessionButton.h" | ||
59 | 32 | |||
60 | 33 | #include "unitya11y.h" | ||
61 | 34 | |||
62 | 35 | using namespace unity::session; | ||
63 | 36 | |||
64 | 37 | /* GObject */ | ||
65 | 38 | static void unity_session_button_accessible_class_init(UnitySessionButtonAccessibleClass* klass); | ||
66 | 39 | static void unity_session_button_accessible_init(UnitySessionButtonAccessible* session_button_accessible); | ||
67 | 40 | static void unity_session_button_accessible_dispose(GObject* object); | ||
68 | 41 | static void unity_session_button_accessible_finalize(GObject* object); | ||
69 | 42 | |||
70 | 43 | |||
71 | 44 | /* AtkObject.h */ | ||
72 | 45 | static void unity_session_button_accessible_initialize(AtkObject* accessible, | ||
73 | 46 | gpointer data); | ||
74 | 47 | static AtkStateSet* unity_session_button_accessible_ref_state_set(AtkObject* obj); | ||
75 | 48 | static const gchar* unity_session_button_accessible_get_name(AtkObject* obj); | ||
76 | 49 | |||
77 | 50 | |||
78 | 51 | /* AtkAction */ | ||
79 | 52 | static void atk_action_interface_init(AtkActionIface *iface); | ||
80 | 53 | static gboolean unity_session_button_accessible_do_action(AtkAction *action, | ||
81 | 54 | gint i); | ||
82 | 55 | static gint unity_session_button_accessible_get_n_actions(AtkAction *action); | ||
83 | 56 | static const gchar* unity_session_button_accessible_get_name(AtkAction *action, | ||
84 | 57 | gint i); | ||
85 | 58 | |||
86 | 59 | /* private/utility methods*/ | ||
87 | 60 | static void on_focus_change_cb(bool const& value, UnitySessionButtonAccessible* accessible); | ||
88 | 61 | |||
89 | 62 | G_DEFINE_TYPE_WITH_CODE(UnitySessionButtonAccessible, | ||
90 | 63 | unity_session_button_accessible, | ||
91 | 64 | NUX_TYPE_OBJECT_ACCESSIBLE, | ||
92 | 65 | G_IMPLEMENT_INTERFACE(ATK_TYPE_ACTION, | ||
93 | 66 | atk_action_interface_init)) | ||
94 | 67 | |||
95 | 68 | static void | ||
96 | 69 | unity_session_button_accessible_class_init(UnitySessionButtonAccessibleClass* klass) | ||
97 | 70 | { | ||
98 | 71 | GObjectClass* gobject_class = G_OBJECT_CLASS(klass); | ||
99 | 72 | AtkObjectClass* atk_class = ATK_OBJECT_CLASS(klass); | ||
100 | 73 | |||
101 | 74 | gobject_class->dispose = unity_session_button_accessible_dispose; | ||
102 | 75 | gobject_class->finalize = unity_session_button_accessible_finalize; | ||
103 | 76 | |||
104 | 77 | /* AtkObject */ | ||
105 | 78 | atk_class->initialize = unity_session_button_accessible_initialize; | ||
106 | 79 | atk_class->get_name = unity_session_button_accessible_get_name; | ||
107 | 80 | atk_class->ref_state_set = unity_session_button_accessible_ref_state_set; | ||
108 | 81 | } | ||
109 | 82 | |||
110 | 83 | static void | ||
111 | 84 | unity_session_button_accessible_init(UnitySessionButtonAccessible* session_button_accessible) | ||
112 | 85 | { | ||
113 | 86 | } | ||
114 | 87 | |||
115 | 88 | static void | ||
116 | 89 | unity_session_button_accessible_dispose(GObject* object) | ||
117 | 90 | { | ||
118 | 91 | G_OBJECT_CLASS(unity_session_button_accessible_parent_class)->dispose(object); | ||
119 | 92 | } | ||
120 | 93 | |||
121 | 94 | static void | ||
122 | 95 | unity_session_button_accessible_finalize(GObject* object) | ||
123 | 96 | { | ||
124 | 97 | G_OBJECT_CLASS(unity_session_button_accessible_parent_class)->finalize(object); | ||
125 | 98 | } | ||
126 | 99 | |||
127 | 100 | AtkObject* | ||
128 | 101 | unity_session_button_accessible_new(nux::Object* object) | ||
129 | 102 | { | ||
130 | 103 | AtkObject* accessible = NULL; | ||
131 | 104 | |||
132 | 105 | g_return_val_if_fail(dynamic_cast<Button*>(object), NULL); | ||
133 | 106 | |||
134 | 107 | accessible = ATK_OBJECT(g_object_new(UNITY_TYPE_SESSION_BUTTON_ACCESSIBLE, NULL)); | ||
135 | 108 | |||
136 | 109 | atk_object_initialize(accessible, object); | ||
137 | 110 | |||
138 | 111 | return accessible; | ||
139 | 112 | } | ||
140 | 113 | |||
141 | 114 | /* AtkObject.h */ | ||
142 | 115 | static void | ||
143 | 116 | unity_session_button_accessible_initialize(AtkObject* accessible, | ||
144 | 117 | gpointer data) | ||
145 | 118 | { | ||
146 | 119 | UnitySessionButtonAccessible* self = NULL; | ||
147 | 120 | nux::Object* nux_object = NULL; | ||
148 | 121 | Button* button = NULL; | ||
149 | 122 | |||
150 | 123 | ATK_OBJECT_CLASS(unity_session_button_accessible_parent_class)->initialize(accessible, data); | ||
151 | 124 | self = UNITY_SESSION_BUTTON_ACCESSIBLE(accessible); | ||
152 | 125 | |||
153 | 126 | accessible->role = ATK_ROLE_PUSH_BUTTON; | ||
154 | 127 | |||
155 | 128 | nux_object = nux_object_accessible_get_object(NUX_OBJECT_ACCESSIBLE(accessible)); | ||
156 | 129 | |||
157 | 130 | if (nux_object == NULL) /* defunct */ | ||
158 | 131 | return; | ||
159 | 132 | |||
160 | 133 | button = dynamic_cast<Button*>(nux_object); | ||
161 | 134 | |||
162 | 135 | button->highlighted.changed.connect(sigc::bind(sigc::ptr_fun(on_focus_change_cb), | ||
163 | 136 | UNITY_SESSION_BUTTON_ACCESSIBLE(self))); | ||
164 | 137 | } | ||
165 | 138 | |||
166 | 139 | static const gchar* | ||
167 | 140 | unity_session_button_accessible_get_name(AtkObject* obj) | ||
168 | 141 | { | ||
169 | 142 | const gchar* name; | ||
170 | 143 | |||
171 | 144 | g_return_val_if_fail(UNITY_IS_SESSION_BUTTON_ACCESSIBLE(obj), NULL); | ||
172 | 145 | |||
173 | 146 | name = ATK_OBJECT_CLASS(unity_session_button_accessible_parent_class)->get_name(obj); | ||
174 | 147 | if (name == NULL) | ||
175 | 148 | { | ||
176 | 149 | Button* button = NULL; | ||
177 | 150 | |||
178 | 151 | button = dynamic_cast<Button*>(nux_object_accessible_get_object(NUX_OBJECT_ACCESSIBLE(obj))); | ||
179 | 152 | |||
180 | 153 | if (button == NULL) /* State is defunct */ | ||
181 | 154 | name = NULL; | ||
182 | 155 | else | ||
183 | 156 | name = button->label().c_str(); | ||
184 | 157 | } | ||
185 | 158 | |||
186 | 159 | return name; | ||
187 | 160 | } | ||
188 | 161 | |||
189 | 162 | static AtkStateSet* | ||
190 | 163 | unity_session_button_accessible_ref_state_set(AtkObject* obj) | ||
191 | 164 | { | ||
192 | 165 | AtkStateSet* state_set = NULL; | ||
193 | 166 | nux::Object* nux_object = NULL; | ||
194 | 167 | Button* button = NULL; | ||
195 | 168 | |||
196 | 169 | g_return_val_if_fail(UNITY_IS_SESSION_BUTTON_ACCESSIBLE(obj), NULL); | ||
197 | 170 | |||
198 | 171 | state_set = ATK_OBJECT_CLASS(unity_session_button_accessible_parent_class)->ref_state_set(obj); | ||
199 | 172 | |||
200 | 173 | nux_object = nux_object_accessible_get_object(NUX_OBJECT_ACCESSIBLE(obj)); | ||
201 | 174 | |||
202 | 175 | if (nux_object == NULL) /* defunct */ | ||
203 | 176 | return state_set; | ||
204 | 177 | |||
205 | 178 | button = dynamic_cast<Button*>(nux_object); | ||
206 | 179 | |||
207 | 180 | atk_state_set_add_state(state_set, ATK_STATE_FOCUSABLE); | ||
208 | 181 | atk_state_set_add_state(state_set, ATK_STATE_ENABLED); | ||
209 | 182 | atk_state_set_add_state(state_set, ATK_STATE_SENSITIVE); | ||
210 | 183 | atk_state_set_add_state(state_set, ATK_STATE_VISIBLE); | ||
211 | 184 | atk_state_set_add_state(state_set, ATK_STATE_SHOWING); | ||
212 | 185 | |||
213 | 186 | if (button->highlighted) | ||
214 | 187 | { | ||
215 | 188 | atk_state_set_add_state(state_set, ATK_STATE_FOCUSED); | ||
216 | 189 | atk_state_set_add_state(state_set, ATK_STATE_SELECTED); | ||
217 | 190 | atk_state_set_add_state(state_set, ATK_STATE_ACTIVE); | ||
218 | 191 | } | ||
219 | 192 | |||
220 | 193 | return state_set; | ||
221 | 194 | } | ||
222 | 195 | |||
223 | 196 | /* private methods */ | ||
224 | 197 | static void | ||
225 | 198 | on_focus_change_cb(bool const& value, UnitySessionButtonAccessible* accessible) | ||
226 | 199 | { | ||
227 | 200 | nux::Object* nux_object = NULL; | ||
228 | 201 | Button* button = NULL; | ||
229 | 202 | |||
230 | 203 | nux_object = nux_object_accessible_get_object(NUX_OBJECT_ACCESSIBLE(accessible)); | ||
231 | 204 | |||
232 | 205 | if (nux_object == NULL) /* defunct */ | ||
233 | 206 | return; | ||
234 | 207 | |||
235 | 208 | button = dynamic_cast<Button*>(nux_object); | ||
236 | 209 | |||
237 | 210 | atk_object_notify_state_change(ATK_OBJECT(accessible), ATK_STATE_FOCUSED, button->highlighted); | ||
238 | 211 | atk_object_notify_state_change(ATK_OBJECT(accessible), ATK_STATE_SELECTED, button->highlighted); | ||
239 | 212 | atk_object_notify_state_change(ATK_OBJECT(accessible), ATK_STATE_ACTIVE, button->highlighted); | ||
240 | 213 | } | ||
241 | 214 | |||
242 | 215 | /* AtkAction */ | ||
243 | 216 | static void | ||
244 | 217 | atk_action_interface_init(AtkActionIface *iface) | ||
245 | 218 | { | ||
246 | 219 | iface->do_action = unity_session_button_accessible_do_action; | ||
247 | 220 | iface->get_n_actions = unity_session_button_accessible_get_n_actions; | ||
248 | 221 | iface->get_name = unity_session_button_accessible_get_name; | ||
249 | 222 | } | ||
250 | 223 | |||
251 | 224 | static gboolean | ||
252 | 225 | unity_session_button_accessible_do_action(AtkAction *action, | ||
253 | 226 | gint i) | ||
254 | 227 | { | ||
255 | 228 | Button* button = NULL; | ||
256 | 229 | nux::Object* nux_object = NULL; | ||
257 | 230 | |||
258 | 231 | g_return_val_if_fail(UNITY_IS_SESSION_BUTTON_ACCESSIBLE(action), FALSE); | ||
259 | 232 | |||
260 | 233 | nux_object = nux_object_accessible_get_object(NUX_OBJECT_ACCESSIBLE(action)); | ||
261 | 234 | if (nux_object == NULL) | ||
262 | 235 | return FALSE; | ||
263 | 236 | |||
264 | 237 | button = dynamic_cast<Button*>(nux_object); | ||
265 | 238 | |||
266 | 239 | button->activated.emit(); | ||
267 | 240 | |||
268 | 241 | return TRUE; | ||
269 | 242 | } | ||
270 | 243 | |||
271 | 244 | static gint | ||
272 | 245 | unity_session_button_accessible_get_n_actions(AtkAction *action) | ||
273 | 246 | { | ||
274 | 247 | g_return_val_if_fail(UNITY_IS_SESSION_BUTTON_ACCESSIBLE(action), 0); | ||
275 | 248 | |||
276 | 249 | return 1; | ||
277 | 250 | } | ||
278 | 251 | |||
279 | 252 | static const gchar* | ||
280 | 253 | unity_session_button_accessible_get_name(AtkAction *action, | ||
281 | 254 | gint i) | ||
282 | 255 | { | ||
283 | 256 | g_return_val_if_fail(UNITY_IS_SESSION_BUTTON_ACCESSIBLE(action), NULL); | ||
284 | 257 | g_return_val_if_fail(i == 0, NULL); | ||
285 | 258 | |||
286 | 259 | return "activate"; | ||
287 | 260 | } | ||
288 | 0 | 261 | ||
289 | === added file 'plugins/unityshell/src/unity-session-button-accessible.h' | |||
290 | --- plugins/unityshell/src/unity-session-button-accessible.h 1970-01-01 00:00:00 +0000 | |||
291 | +++ plugins/unityshell/src/unity-session-button-accessible.h 2014-02-25 01:48:00 +0000 | |||
292 | @@ -0,0 +1,53 @@ | |||
293 | 1 | /* | ||
294 | 2 | * Copyright (C) 2011 Canonical Ltd | ||
295 | 3 | * | ||
296 | 4 | * This program is free software: you can redistribute it and/or modify | ||
297 | 5 | * it under the terms of the GNU General Public License version 3 as | ||
298 | 6 | * published by the Free Software Foundation. | ||
299 | 7 | * | ||
300 | 8 | * This program is distributed in the hope that it will be useful, | ||
301 | 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
302 | 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
303 | 11 | * GNU General Public License for more details. | ||
304 | 12 | * | ||
305 | 13 | * You should have received a copy of the GNU General Public License | ||
306 | 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
307 | 15 | * | ||
308 | 16 | * Authored by: Alejandro Piñeiro Iglesias <apinheiro@igalia.com> | ||
309 | 17 | */ | ||
310 | 18 | |||
311 | 19 | #ifndef UNITY_SESSION_BUTTON_ACCESSIBLE_H | ||
312 | 20 | #define UNITY_SESSION_BUTTON_ACCESSIBLE_H | ||
313 | 21 | |||
314 | 22 | #include <atk/atk.h> | ||
315 | 23 | |||
316 | 24 | #include "nux-object-accessible.h" | ||
317 | 25 | |||
318 | 26 | G_BEGIN_DECLS | ||
319 | 27 | |||
320 | 28 | #define UNITY_TYPE_SESSION_BUTTON_ACCESSIBLE (unity_session_button_accessible_get_type ()) | ||
321 | 29 | #define UNITY_SESSION_BUTTON_ACCESSIBLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UNITY_TYPE_SESSION_BUTTON_ACCESSIBLE, UnitySessionButtonAccessible)) | ||
322 | 30 | #define UNITY_SESSION_BUTTON_ACCESSIBLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UNITY_TYPE_SESSION_BUTTON_ACCESSIBLE, UnitySessionButtonAccessibleClass)) | ||
323 | 31 | #define UNITY_IS_SESSION_BUTTON_ACCESSIBLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UNITY_TYPE_SESSION_BUTTON_ACCESSIBLE)) | ||
324 | 32 | #define UNITY_IS_SESSION_BUTTON_ACCESSIBLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UNITY_TYPE_SESSION_BUTTON_ACCESSIBLE)) | ||
325 | 33 | #define UNITY_SESSION_BUTTON_ACCESSIBLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UNITY_TYPE_SESSION_BUTTON_ACCESSIBLE, UnitySessionButtonAccessibleClass)) | ||
326 | 34 | |||
327 | 35 | typedef struct _UnitySessionButtonAccessible UnitySessionButtonAccessible; | ||
328 | 36 | typedef struct _UnitySessionButtonAccessibleClass UnitySessionButtonAccessibleClass; | ||
329 | 37 | |||
330 | 38 | struct _UnitySessionButtonAccessible | ||
331 | 39 | { | ||
332 | 40 | NuxObjectAccessible parent; | ||
333 | 41 | }; | ||
334 | 42 | |||
335 | 43 | struct _UnitySessionButtonAccessibleClass | ||
336 | 44 | { | ||
337 | 45 | NuxObjectAccessibleClass parent_class; | ||
338 | 46 | }; | ||
339 | 47 | |||
340 | 48 | GType unity_session_button_accessible_get_type(void); | ||
341 | 49 | AtkObject* unity_session_button_accessible_new(nux::Object* object); | ||
342 | 50 | |||
343 | 51 | G_END_DECLS | ||
344 | 52 | |||
345 | 53 | #endif /* __UNITY_SESSION_BUTTON_ACCESSIBLE_H__ */ | ||
346 | 0 | 54 | ||
347 | === modified file 'plugins/unityshell/src/unitya11y.cpp' | |||
348 | --- plugins/unityshell/src/unitya11y.cpp 2014-01-25 13:39:49 +0000 | |||
349 | +++ plugins/unityshell/src/unitya11y.cpp 2014-02-25 01:48:00 +0000 | |||
350 | @@ -42,6 +42,7 @@ | |||
351 | 42 | #include "QuicklistView.h" | 42 | #include "QuicklistView.h" |
352 | 43 | #include "QuicklistMenuItem.h" | 43 | #include "QuicklistMenuItem.h" |
353 | 44 | #include "SwitcherView.h" | 44 | #include "SwitcherView.h" |
354 | 45 | #include "SessionButton.h" | ||
355 | 45 | #include "unity-launcher-accessible.h" | 46 | #include "unity-launcher-accessible.h" |
356 | 46 | #include "unity-launcher-icon-accessible.h" | 47 | #include "unity-launcher-icon-accessible.h" |
357 | 47 | #include "unity-panel-view-accessible.h" | 48 | #include "unity-panel-view-accessible.h" |
358 | @@ -53,11 +54,13 @@ | |||
359 | 53 | #include "unity-quicklist-accessible.h" | 54 | #include "unity-quicklist-accessible.h" |
360 | 54 | #include "unity-quicklist-menu-item-accessible.h" | 55 | #include "unity-quicklist-menu-item-accessible.h" |
361 | 55 | #include "unity-switcher-accessible.h" | 56 | #include "unity-switcher-accessible.h" |
362 | 57 | #include "unity-session-button-accessible.h" | ||
363 | 56 | 58 | ||
364 | 57 | using namespace unity; | 59 | using namespace unity; |
365 | 58 | using namespace unity::dash; | 60 | using namespace unity::dash; |
366 | 59 | using namespace unity::launcher; | 61 | using namespace unity::launcher; |
367 | 60 | using namespace unity::panel; | 62 | using namespace unity::panel; |
368 | 63 | using namespace unity::session; | ||
369 | 61 | 64 | ||
370 | 62 | static GHashTable* accessible_table = NULL; | 65 | static GHashTable* accessible_table = NULL; |
371 | 63 | /* FIXME: remove accessible objects when not required anymore */ | 66 | /* FIXME: remove accessible objects when not required anymore */ |
372 | @@ -187,6 +190,9 @@ | |||
373 | 187 | if (object->Type().IsDerivedFromType(unity::switcher::SwitcherView::StaticObjectType)) | 190 | if (object->Type().IsDerivedFromType(unity::switcher::SwitcherView::StaticObjectType)) |
374 | 188 | return unity_switcher_accessible_new(object); | 191 | return unity_switcher_accessible_new(object); |
375 | 189 | 192 | ||
376 | 193 | if (object->Type().IsDerivedFromType(Button::StaticObjectType)) | ||
377 | 194 | return unity_session_button_accessible_new(object); | ||
378 | 195 | |||
379 | 190 | /* NUX classes */ | 196 | /* NUX classes */ |
380 | 191 | if (object->Type().IsDerivedFromType(nux::TextEntry::StaticObjectType)) | 197 | if (object->Type().IsDerivedFromType(nux::TextEntry::StaticObjectType)) |
381 | 192 | return nux_text_entry_accessible_new(object); | 198 | return nux_text_entry_accessible_new(object); |
PASSED: Continuous integration, rev:3670 jenkins. qa.ubuntu. com/job/ unity-ci/ 685/ jenkins. qa.ubuntu. com/job/ unity-trusty- amd64-ci/ 221 jenkins. qa.ubuntu. com/job/ unity-trusty- armhf-ci/ 217 jenkins. qa.ubuntu. com/job/ unity-trusty- i386-ci/ 219
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild: s-jenkins. ubuntu- ci:8080/ job/unity- ci/685/ rebuild
http://