Merge lp:~jbicha/indicator-keyboard/drop-patches into lp:indicator-keyboard
- drop-patches
- Merge into trunk
Proposed by
Jeremy Bícha
Status: | Merged |
---|---|
Approved by: | William Hua |
Approved revision: | 93 |
Merged at revision: | 94 |
Proposed branch: | lp:~jbicha/indicator-keyboard/drop-patches |
Merge into: | lp:indicator-keyboard |
Diff against target: |
2287 lines (+0/-2220) 12 files modified
.pc/.quilt_patches (+0/-1) .pc/.quilt_series (+0/-1) .pc/.version (+0/-1) .pc/applied-patches (+0/-3) .pc/default-icon-colour.patch/lib/main.vala (+0/-754) .pc/disable-experimental-non-null.patch/tests/Makefile.am (+0/-18) .pc/disable-experimental-non-null.patch/tests/main.vala (+0/-675) .pc/relax-test-missing-ibus.patch/tests/main.vala (+0/-675) debian/patches/default-icon-colour.patch (+0/-10) debian/patches/disable-experimental-non-null.patch (+0/-68) debian/patches/relax-test-missing-ibus.patch (+0/-11) debian/patches/series (+0/-3) |
To merge this branch: | bzr merge lp:~jbicha/indicator-keyboard/drop-patches |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
William Hua (community) | Approve | ||
Review via email: mp+177306@code.launchpad.net |
Commit message
Description of the change
the upstream branch shouldn't need patches...
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === removed directory '.pc' |
2 | === removed file '.pc/.quilt_patches' |
3 | --- .pc/.quilt_patches 2013-06-22 20:26:13 +0000 |
4 | +++ .pc/.quilt_patches 1970-01-01 00:00:00 +0000 |
5 | @@ -1,1 +0,0 @@ |
6 | -debian/patches |
7 | |
8 | === removed file '.pc/.quilt_series' |
9 | --- .pc/.quilt_series 2013-06-22 20:26:13 +0000 |
10 | +++ .pc/.quilt_series 1970-01-01 00:00:00 +0000 |
11 | @@ -1,1 +0,0 @@ |
12 | -series |
13 | |
14 | === removed file '.pc/.version' |
15 | --- .pc/.version 2013-06-22 20:26:13 +0000 |
16 | +++ .pc/.version 1970-01-01 00:00:00 +0000 |
17 | @@ -1,1 +0,0 @@ |
18 | -2 |
19 | |
20 | === removed file '.pc/applied-patches' |
21 | --- .pc/applied-patches 2013-07-17 20:06:48 +0000 |
22 | +++ .pc/applied-patches 1970-01-01 00:00:00 +0000 |
23 | @@ -1,3 +0,0 @@ |
24 | -default-icon-colour.patch |
25 | -disable-experimental-non-null.patch |
26 | -relax-test-missing-ibus.patch |
27 | |
28 | === removed directory '.pc/default-icon-colour.patch' |
29 | === removed directory '.pc/default-icon-colour.patch/lib' |
30 | === removed file '.pc/default-icon-colour.patch/lib/main.vala' |
31 | --- .pc/default-icon-colour.patch/lib/main.vala 2013-07-17 18:47:22 +0000 |
32 | +++ .pc/default-icon-colour.patch/lib/main.vala 1970-01-01 00:00:00 +0000 |
33 | @@ -1,754 +0,0 @@ |
34 | -[DBus (name = "com.canonical.indicator.keyboard")] |
35 | -public class Indicator.Keyboard.Service : Object { |
36 | - |
37 | - private bool use_gtk; |
38 | - private bool use_bamf; |
39 | - private MainLoop? loop; |
40 | - private Settings indicator_settings; |
41 | - private Settings source_settings; |
42 | - private Settings per_window_settings; |
43 | - private Gnome.XkbInfo xkb_info; |
44 | - private IBus.Bus? ibus; |
45 | - private Bamf.Matcher? matcher; |
46 | - private Gee.HashMap<string, uint>? window_sources; |
47 | - |
48 | - private SimpleActionGroup? action_group; |
49 | - private SimpleAction? indicator_action; |
50 | - private MenuModel? menu_model; |
51 | - private Menu? sources_menu; |
52 | - |
53 | - private Icon?[]? icons; |
54 | - private string[]? icon_strings; |
55 | - private int[]? icon_string_uniques; |
56 | - private uint[]? icon_string_subscripts; |
57 | - |
58 | - [DBus (visible = false)] |
59 | - public Service (ref unowned string[] args) { |
60 | - Bus.own_name (BusType.SESSION, |
61 | - "com.canonical.indicator.keyboard", |
62 | - BusNameOwnerFlags.ALLOW_REPLACEMENT | ("--force" in args ? BusNameOwnerFlags.REPLACE : 0), |
63 | - this.handle_bus_acquired, |
64 | - null, |
65 | - this.handle_name_lost); |
66 | - |
67 | - this.use_gtk = "--use-gtk" in args; |
68 | - this.use_bamf = "--use-bamf" in args; |
69 | - |
70 | - if (this.use_gtk) { |
71 | - this.use_gtk = Gtk.init_check (ref args); |
72 | - } else { |
73 | - Gdk.init (ref args); |
74 | - } |
75 | - |
76 | - this.indicator_settings = new Settings ("com.canonical.indicator.keyboard"); |
77 | - this.indicator_settings.changed["visible"].connect (this.handle_changed_visible); |
78 | - |
79 | - this.source_settings = new Settings ("org.gnome.desktop.input-sources"); |
80 | - this.source_settings.changed["current"].connect (this.handle_changed_current); |
81 | - this.source_settings.changed["sources"].connect (this.handle_changed_sources); |
82 | - |
83 | - this.per_window_settings = new Settings ("org.gnome.libgnomekbd.desktop"); |
84 | - this.per_window_settings.changed["group-per-window"].connect (this.handle_changed_group_per_window); |
85 | - |
86 | - this.xkb_info = new Gnome.XkbInfo (); |
87 | - |
88 | - migrate_keyboard_layouts (); |
89 | - |
90 | - update_window_sources (); |
91 | - |
92 | - this.loop = new MainLoop (); |
93 | - ((!) this.loop).run (); |
94 | - } |
95 | - |
96 | - [DBus (visible = false)] |
97 | - private IBus.Bus get_ibus () { |
98 | - if (this.ibus == null) { |
99 | - IBus.init (); |
100 | - this.ibus = new IBus.Bus (); |
101 | - } |
102 | - |
103 | - return (!) this.ibus; |
104 | - } |
105 | - |
106 | - [DBus (visible = false)] |
107 | - private void migrate_keyboard_layouts () { |
108 | - if (!this.indicator_settings.get_boolean ("migrated")) { |
109 | - var builder = new VariantBuilder (new VariantType ("a(ss)")); |
110 | - var length = 0; |
111 | - |
112 | - var layout_settings = new Settings ("org.gnome.libgnomekbd.keyboard"); |
113 | - var layouts = layout_settings.get_strv ("layouts"); |
114 | - |
115 | - foreach (var layout in layouts) { |
116 | - var source = layout; |
117 | - |
118 | - source = source.replace (" ", "+"); |
119 | - source = source.replace ("\t", "+"); |
120 | - |
121 | - builder.add ("(ss)", "xkb", source); |
122 | - length++; |
123 | - } |
124 | - |
125 | - var engines = get_ibus ().list_active_engines (); |
126 | - |
127 | - foreach (var engine in engines) { |
128 | - if (length == 0 || engine.name.has_prefix ("xkb")) { |
129 | - var source = "us"; |
130 | - string? layout = engine.get_layout (); |
131 | - string? variant = engine.get_layout_variant (); |
132 | - |
133 | - if (layout != null && ((!) layout).length == 0) { |
134 | - layout = null; |
135 | - } |
136 | - |
137 | - if (variant != null && ((!) variant).length == 0) { |
138 | - variant = null; |
139 | - } |
140 | - |
141 | - if (layout != null && variant != null) { |
142 | - source = @"$((!) layout)+$((!) variant)"; |
143 | - } else if (layout != null) { |
144 | - source = (!) layout; |
145 | - } |
146 | - |
147 | - builder.add ("(ss)", "xkb", source); |
148 | - length++; |
149 | - } |
150 | - |
151 | - if (!engine.name.has_prefix ("xkb")) { |
152 | - builder.add ("(ss)", "ibus", engine.name); |
153 | - length++; |
154 | - } |
155 | - } |
156 | - |
157 | - this.source_settings.set_value ("sources", builder.end ()); |
158 | - |
159 | - this.indicator_settings.set_boolean ("migrated", true); |
160 | - } |
161 | - } |
162 | - |
163 | - [DBus (visible = false)] |
164 | - private void update_window_sources () { |
165 | - if (this.use_bamf) { |
166 | - var group_per_window = this.per_window_settings.get_boolean ("group-per-window"); |
167 | - |
168 | - if (group_per_window != (this.window_sources != null)) { |
169 | - if (group_per_window) { |
170 | - this.window_sources = new Gee.HashMap<string, uint> (); |
171 | - this.matcher = Bamf.Matcher.get_default (); |
172 | - ((!) this.matcher).active_window_changed.connect (this.handle_active_window_changed); |
173 | - } else { |
174 | - ((!) this.matcher).active_window_changed.disconnect (this.handle_active_window_changed); |
175 | - this.matcher = null; |
176 | - this.window_sources = null; |
177 | - } |
178 | - } |
179 | - } |
180 | - } |
181 | - |
182 | - [DBus (visible = false)] |
183 | - private void handle_changed_group_per_window (string key) { |
184 | - update_window_sources (); |
185 | - } |
186 | - |
187 | - [DBus (visible = false)] |
188 | - private void handle_active_window_changed (Bamf.View? old_view, Bamf.View? new_view) { |
189 | - if (old_view != null) { |
190 | - ((!) this.window_sources)[((!) old_view).path] = this.source_settings.get_uint ("current"); |
191 | - } |
192 | - |
193 | - if (new_view != null) { |
194 | - if (!((!) this.window_sources).has_key (((!) new_view).path)) { |
195 | - var default_group = this.per_window_settings.get_int ("default-group"); |
196 | - |
197 | - if (default_group >= 0) { |
198 | - this.source_settings.set_uint ("current", (uint) default_group); |
199 | - } |
200 | - } else { |
201 | - this.source_settings.set_uint ("current", ((!) this.window_sources)[((!) new_view).path]); |
202 | - } |
203 | - } |
204 | - } |
205 | - |
206 | - [DBus (visible = false)] |
207 | - private Gtk.StyleContext? get_style_context () { |
208 | - Gtk.StyleContext? context = null; |
209 | - |
210 | - if (this.use_gtk) { |
211 | - Gdk.Screen? screen = Gdk.Screen.get_default (); |
212 | - |
213 | - if (screen != null) { |
214 | - context = new Gtk.StyleContext (); |
215 | - ((!) context).set_screen ((!) screen); |
216 | - |
217 | - var path = new Gtk.WidgetPath (); |
218 | - path.append_type (typeof (Gtk.MenuItem)); |
219 | - ((!) context).set_path (path); |
220 | - } |
221 | - } |
222 | - |
223 | - return context; |
224 | - } |
225 | - |
226 | - [DBus (visible = false)] |
227 | - protected virtual Icon? create_icon (string? text, uint subscript) { |
228 | - Icon? icon = null; |
229 | - |
230 | - var style = get_style_context (); |
231 | - |
232 | - if (style != null) { |
233 | - const int W = 22; |
234 | - const int H = 22; |
235 | - const int w = 20; |
236 | - const int h = 20; |
237 | - const double R = 2.0; |
238 | - const double TEXT_SIZE = 12.0; |
239 | - const double SUBSCRIPT_SIZE = 8.0; |
240 | - |
241 | - Pango.FontDescription description; |
242 | - var colour = ((!) style).get_color (Gtk.StateFlags.NORMAL); |
243 | - ((!) style).get (Gtk.StateFlags.NORMAL, Gtk.STYLE_PROPERTY_FONT, out description); |
244 | - |
245 | - var surface = new Cairo.ImageSurface (Cairo.Format.ARGB32, W, H); |
246 | - var context = new Cairo.Context (surface); |
247 | - |
248 | - context.translate (0.5 * (W - w), 0.5 * (H - h)); |
249 | - |
250 | - context.new_sub_path (); |
251 | - context.arc (R, R, R, Math.PI, -0.5 * Math.PI); |
252 | - context.arc (w - R, R, R, -0.5 * Math.PI, 0); |
253 | - context.arc (w - R, h - R, R, 0, 0.5 * Math.PI); |
254 | - context.arc (R, h - R, R, 0.5 * Math.PI, Math.PI); |
255 | - context.close_path (); |
256 | - |
257 | - context.set_source_rgba (colour.red, colour.green, colour.blue, colour.alpha); |
258 | - context.fill (); |
259 | - context.set_operator (Cairo.Operator.CLEAR); |
260 | - |
261 | - if (text != null) { |
262 | - var text_layout = Pango.cairo_create_layout (context); |
263 | - text_layout.set_alignment (Pango.Alignment.CENTER); |
264 | - description.set_absolute_size (Pango.units_from_double (TEXT_SIZE)); |
265 | - text_layout.set_font_description (description); |
266 | - text_layout.set_text ((!) text, -1); |
267 | - Pango.cairo_update_layout (context, text_layout); |
268 | - int text_width; |
269 | - int text_height; |
270 | - text_layout.get_pixel_size (out text_width, out text_height); |
271 | - |
272 | - if (subscript > 0) { |
273 | - var subscript_layout = Pango.cairo_create_layout (context); |
274 | - subscript_layout.set_alignment (Pango.Alignment.CENTER); |
275 | - description.set_absolute_size (Pango.units_from_double (SUBSCRIPT_SIZE)); |
276 | - subscript_layout.set_font_description (description); |
277 | - subscript_layout.set_text (@"$subscript", -1); |
278 | - Pango.cairo_update_layout (context, subscript_layout); |
279 | - int subscript_width; |
280 | - int subscript_height; |
281 | - subscript_layout.get_pixel_size (out subscript_width, out subscript_height); |
282 | - |
283 | - context.save (); |
284 | - context.translate ((w - (text_width + subscript_width)) / 2, (h - text_height) / 2); |
285 | - Pango.cairo_layout_path (context, text_layout); |
286 | - context.fill (); |
287 | - context.restore (); |
288 | - |
289 | - context.save (); |
290 | - context.translate ((w + (text_width - subscript_width)) / 2, (h + text_height) / 2 - subscript_height); |
291 | - Pango.cairo_layout_path (context, subscript_layout); |
292 | - context.fill (); |
293 | - context.restore (); |
294 | - } else { |
295 | - context.save (); |
296 | - context.translate ((w - text_width) / 2, (h - text_height) / 2); |
297 | - Pango.cairo_layout_path (context, text_layout); |
298 | - context.fill (); |
299 | - context.restore (); |
300 | - } |
301 | - } |
302 | - |
303 | - var buffer = new ByteArray (); |
304 | - |
305 | - surface.write_to_png_stream ((data) => { |
306 | - buffer.append (data); |
307 | - return Cairo.Status.SUCCESS; |
308 | - }); |
309 | - |
310 | - icon = new BytesIcon (ByteArray.free_to_bytes ((owned) buffer)); |
311 | - } |
312 | - |
313 | - return icon; |
314 | - } |
315 | - |
316 | - [DBus (visible = false)] |
317 | - private string get_icon_string (uint index) { |
318 | - string? icon_string = null; |
319 | - |
320 | - if (this.icon_strings == null) { |
321 | - var array = this.source_settings.get_value ("sources"); |
322 | - this.icon_strings = new string[array.n_children ()]; |
323 | - } |
324 | - |
325 | - if (index < ((!) this.icon_strings).length) { |
326 | - icon_string = this.icon_strings[index]; |
327 | - |
328 | - if (icon_string == null) { |
329 | - var array = this.source_settings.get_value ("sources"); |
330 | - |
331 | - string type; |
332 | - string name; |
333 | - |
334 | - array.get_child (index, "(ss)", out type, out name); |
335 | - |
336 | - if (type == "xkb") { |
337 | - string? short_name; |
338 | - |
339 | - this.xkb_info.get_layout_info (name, null, out short_name, null, null); |
340 | - |
341 | - if (short_name != null) { |
342 | - this.icon_strings[index] = get_abbreviation ((!) short_name); |
343 | - icon_string = this.icon_strings[index]; |
344 | - } |
345 | - } |
346 | - } |
347 | - } |
348 | - |
349 | - if (icon_string == null) { |
350 | - icon_string = ""; |
351 | - } |
352 | - |
353 | - return (!) icon_string; |
354 | - } |
355 | - |
356 | - [DBus (visible = false)] |
357 | - private bool is_icon_string_unique (uint index) { |
358 | - bool icon_string_unique = true; |
359 | - |
360 | - if (this.icon_string_uniques == null) { |
361 | - var array = this.source_settings.get_value ("sources"); |
362 | - this.icon_string_uniques = new int[array.n_children ()]; |
363 | - |
364 | - for (var i = 0; i < ((!) this.icon_string_uniques).length; i++) { |
365 | - this.icon_string_uniques[i] = -1; |
366 | - } |
367 | - } |
368 | - |
369 | - if (index < ((!) this.icon_string_uniques).length) { |
370 | - if (this.icon_string_uniques[index] == -1) { |
371 | - this.icon_string_uniques[index] = 1; |
372 | - |
373 | - var icon_string = get_icon_string (index); |
374 | - |
375 | - for (var i = 0; i < ((!) this.icon_string_uniques).length && this.icon_string_uniques[index] == 1; i++) { |
376 | - if (i != index && get_icon_string (i) == icon_string) { |
377 | - this.icon_string_uniques[index] = 0; |
378 | - } |
379 | - } |
380 | - } |
381 | - |
382 | - icon_string_unique = this.icon_string_uniques[index] != 0; |
383 | - } |
384 | - |
385 | - return icon_string_unique; |
386 | - } |
387 | - |
388 | - [DBus (visible = false)] |
389 | - private uint get_icon_string_subscript (uint index) { |
390 | - uint icon_string_subscript = 0; |
391 | - |
392 | - if (this.icon_string_subscripts == null) { |
393 | - var array = this.source_settings.get_value ("sources"); |
394 | - this.icon_string_subscripts = new uint[array.n_children ()]; |
395 | - } |
396 | - |
397 | - if (index < ((!) this.icon_string_subscripts).length) { |
398 | - icon_string_subscript = this.icon_string_subscripts[index]; |
399 | - |
400 | - if (icon_string_subscript == 0) { |
401 | - this.icon_string_subscripts[index] = 1; |
402 | - |
403 | - for (var i = (int) index - 1; i >= 0 && this.icon_string_subscripts[index] == 1; i--) { |
404 | - if (get_icon_string (i) == get_icon_string (index)) { |
405 | - this.icon_string_subscripts[index] = get_icon_string_subscript (i) + 1; |
406 | - } |
407 | - } |
408 | - |
409 | - icon_string_subscript = this.icon_string_subscripts[index]; |
410 | - } |
411 | - } |
412 | - |
413 | - return icon_string_subscript; |
414 | - } |
415 | - |
416 | - [DBus (visible = false)] |
417 | - private Icon? get_icon (uint index) { |
418 | - Icon? icon = null; |
419 | - |
420 | - if (this.icons == null) { |
421 | - var array = this.source_settings.get_value ("sources"); |
422 | - this.icons = new Icon?[array.n_children ()]; |
423 | - } |
424 | - |
425 | - if (index < ((!) this.icons).length) { |
426 | - icon = this.icons[index]; |
427 | - |
428 | - if (icon == null) { |
429 | - var array = this.source_settings.get_value ("sources"); |
430 | - |
431 | - string type; |
432 | - string name; |
433 | - |
434 | - array.get_child (index, "(ss)", out type, out name); |
435 | - |
436 | - if (type == "xkb") { |
437 | - var icon_string = get_icon_string (index); |
438 | - var icon_unique = is_icon_string_unique (index); |
439 | - var icon_subscript = get_icon_string_subscript (index); |
440 | - |
441 | - if (icon_string.get_char () != '\0') { |
442 | - string icon_name; |
443 | - |
444 | - if (icon_unique) { |
445 | - icon_name = @"indicator-keyboard-$((!) icon_string)"; |
446 | - } else { |
447 | - icon_name = @"indicator-keyboard-$((!) icon_string)-$icon_subscript"; |
448 | - } |
449 | - |
450 | - if (this.use_gtk) { |
451 | - var icon_theme = Gtk.IconTheme.get_default (); |
452 | - Gtk.IconInfo? icon_info = icon_theme.lookup_icon (icon_name, 22, 0); |
453 | - |
454 | - if (icon_info != null) { |
455 | - try { |
456 | - this.icons[index] = Icon.new_for_string (((!) icon_info).get_filename ()); |
457 | - } catch (Error error) { |
458 | - this.icons[index] = null; |
459 | - } |
460 | - } |
461 | - } else { |
462 | - this.icons[index] = new ThemedIcon (icon_name); |
463 | - } |
464 | - } |
465 | - |
466 | - if (this.icons[index] == null) { |
467 | - if (icon_unique) { |
468 | - this.icons[index] = create_icon (icon_string, 0); |
469 | - } else { |
470 | - this.icons[index] = create_icon (icon_string, icon_subscript); |
471 | - } |
472 | - } |
473 | - } else if (type == "ibus") { |
474 | - var names = new string[2]; |
475 | - names[0] = name; |
476 | - |
477 | - var engines = get_ibus ().get_engines_by_names (names); |
478 | - |
479 | - if (engines.length > 0) { |
480 | - var engine = engines[0]; |
481 | - |
482 | - try { |
483 | - this.icons[index] = Icon.new_for_string (engine.get_icon ()); |
484 | - } catch (Error error) { |
485 | - warning ("error: %s", error.message); |
486 | - } |
487 | - } |
488 | - } |
489 | - |
490 | - icon = this.icons[index]; |
491 | - } |
492 | - } |
493 | - |
494 | - return icon; |
495 | - } |
496 | - |
497 | - [DBus (visible = false)] |
498 | - protected virtual SimpleActionGroup create_action_group (Action root_action) { |
499 | - var group = new SimpleActionGroup (); |
500 | - |
501 | - group.insert (root_action); |
502 | - group.insert (this.source_settings.create_action ("current")); |
503 | - |
504 | - var action = new SimpleAction ("map", null); |
505 | - action.activate.connect (this.handle_activate_map); |
506 | - group.insert (action); |
507 | - |
508 | - action = new SimpleAction ("chart", null); |
509 | - action.activate.connect (this.handle_activate_chart); |
510 | - group.insert (action); |
511 | - |
512 | - action = new SimpleAction ("settings", null); |
513 | - action.activate.connect (this.handle_activate_settings); |
514 | - group.insert (action); |
515 | - |
516 | - return group; |
517 | - } |
518 | - |
519 | - [DBus (visible = false)] |
520 | - private void update_indicator_action () { |
521 | - var visible = this.indicator_settings.get_boolean ("visible"); |
522 | - var current = this.source_settings.get_uint ("current"); |
523 | - var icon = get_icon (current); |
524 | - Variant state; |
525 | - |
526 | - if (icon != null) { |
527 | - state = new Variant.parsed ("{ 'visible' : <%b>, 'icon' : %v }", visible, ((!) icon).serialize ()); |
528 | - } else { |
529 | - state = new Variant.parsed ("{ 'visible' : <%b> }", visible); |
530 | - } |
531 | - |
532 | - get_indicator_action ().set_state (state); |
533 | - } |
534 | - |
535 | - [DBus (visible = false)] |
536 | - private SimpleAction get_indicator_action () { |
537 | - if (this.indicator_action == null) { |
538 | - var state = new Variant.parsed ("{ 'visible' : <false> }"); |
539 | - this.indicator_action = new SimpleAction.stateful ("indicator", null, state); |
540 | - update_indicator_action (); |
541 | - } |
542 | - |
543 | - return (!) this.indicator_action; |
544 | - } |
545 | - |
546 | - [DBus (visible = false)] |
547 | - public SimpleActionGroup get_action_group () { |
548 | - if (this.action_group == null) { |
549 | - this.action_group = create_action_group (get_indicator_action ()); |
550 | - } |
551 | - |
552 | - return (!) this.action_group; |
553 | - } |
554 | - |
555 | - [DBus (visible = false)] |
556 | - protected virtual MenuModel create_menu_model (MenuModel section_menu) { |
557 | - var menu = new Menu (); |
558 | - |
559 | - var submenu = new Menu (); |
560 | - |
561 | - submenu.append_section (null, section_menu); |
562 | - |
563 | - var section = new Menu (); |
564 | - section.append (_ ("Character Map"), "indicator.map"); |
565 | - section.append (_ ("Keyboard Layout Chart"), "indicator.chart"); |
566 | - section.append (_ ("Text Entry Settings..."), "indicator.settings"); |
567 | - submenu.append_section (null, section); |
568 | - |
569 | - var indicator = new MenuItem.submenu ("x", submenu); |
570 | - indicator.set_attribute ("x-canonical-type", "s", "com.canonical.indicator.root"); |
571 | - indicator.set_detailed_action ("indicator.indicator"); |
572 | - menu.append_item (indicator); |
573 | - |
574 | - return menu; |
575 | - } |
576 | - |
577 | - [DBus (visible = false)] |
578 | - private string get_display_name (string layout) { |
579 | - string? language = Xkl.get_language_name (layout); |
580 | - string? country = Xkl.get_country_name (layout); |
581 | - var has_language = language != null && ((!) language).get_char () != '\0'; |
582 | - var has_country = country != null && ((!) country).get_char () != '\0'; |
583 | - |
584 | - if (has_language && has_country) { |
585 | - return @"$((!) language) ($((!) country))"; |
586 | - } else if (has_language) { |
587 | - return (!) language; |
588 | - } else if (has_country) { |
589 | - return (!) country; |
590 | - } else { |
591 | - return ""; |
592 | - } |
593 | - } |
594 | - |
595 | - [DBus (visible = false)] |
596 | - private void update_sources_menu () { |
597 | - if (this.sources_menu != null) { |
598 | - var menu = get_sources_menu (); |
599 | - |
600 | - while (menu.get_n_items () > 0) |
601 | - menu.remove (0); |
602 | - |
603 | - VariantIter iter; |
604 | - string type; |
605 | - string name; |
606 | - |
607 | - this.source_settings.get ("sources", "a(ss)", out iter); |
608 | - |
609 | - for (var i = 0; iter.next ("(ss)", out type, out name); i++) { |
610 | - if (type == "xkb") { |
611 | - string? display_name; |
612 | - string? layout_name; |
613 | - |
614 | - this.xkb_info.get_layout_info (name, out display_name, null, out layout_name, null); |
615 | - |
616 | - if (display_name != null) { |
617 | - name = (!) display_name; |
618 | - } else if (layout_name != null) { |
619 | - name = get_display_name ((!) layout_name); |
620 | - } |
621 | - } |
622 | - else if (type == "ibus") { |
623 | - var names = new string[2]; |
624 | - names[0] = name; |
625 | - |
626 | - var engines = get_ibus ().get_engines_by_names (names); |
627 | - |
628 | - if (engines.length > 0) { |
629 | - var engine = engines[0]; |
630 | - string? language = engine.get_language (); |
631 | - string? display_name = engine.get_longname (); |
632 | - |
633 | - if (language != null) { |
634 | - language = Xkl.get_language_name ((!) language); |
635 | - } |
636 | - |
637 | - if (language != null && display_name != null) { |
638 | - name = @"$((!) language) ($((!) display_name))"; |
639 | - } else if (language != null) { |
640 | - name = (!) language; |
641 | - } else if (display_name != null) { |
642 | - name = (!) display_name; |
643 | - } |
644 | - } |
645 | - } |
646 | - |
647 | - var menu_item = new MenuItem (name, "indicator.current"); |
648 | - menu_item.set_attribute (Menu.ATTRIBUTE_TARGET, "u", i); |
649 | - |
650 | - var icon = get_icon (i); |
651 | - if (icon != null) { |
652 | - menu_item.set_icon ((!) icon); |
653 | - } |
654 | - |
655 | - menu.append_item (menu_item); |
656 | - } |
657 | - } else { |
658 | - get_sources_menu (); |
659 | - } |
660 | - } |
661 | - |
662 | - [DBus (visible = false)] |
663 | - private Menu get_sources_menu () { |
664 | - if (this.sources_menu == null) { |
665 | - this.sources_menu = new Menu (); |
666 | - update_sources_menu (); |
667 | - } |
668 | - |
669 | - return (!) this.sources_menu; |
670 | - } |
671 | - |
672 | - [DBus (visible = false)] |
673 | - public MenuModel get_menu_model () { |
674 | - if (this.menu_model == null) { |
675 | - this.menu_model = create_menu_model (get_sources_menu ()); |
676 | - } |
677 | - |
678 | - return (!) this.menu_model; |
679 | - } |
680 | - |
681 | - [DBus (visible = false)] |
682 | - private void handle_changed_visible (string key) { |
683 | - update_indicator_action (); |
684 | - } |
685 | - |
686 | - [DBus (visible = false)] |
687 | - private void handle_changed_current (string key) { |
688 | - update_indicator_action (); |
689 | - } |
690 | - |
691 | - [DBus (visible = false)] |
692 | - private void handle_changed_sources (string key) { |
693 | - this.icon_string_subscripts = null; |
694 | - this.icon_string_uniques = null; |
695 | - this.icon_strings = null; |
696 | - this.icons = null; |
697 | - |
698 | - update_sources_menu (); |
699 | - update_indicator_action (); |
700 | - } |
701 | - |
702 | - [DBus (visible = false)] |
703 | - private void handle_activate_map (Variant? parameter) { |
704 | - try { |
705 | - Process.spawn_command_line_async ("gucharmap"); |
706 | - } catch (SpawnError error) { |
707 | - warning ("error: %s", error.message); |
708 | - } |
709 | - } |
710 | - |
711 | - [DBus (visible = false)] |
712 | - private void handle_activate_chart (Variant? parameter) { |
713 | - var layout = "us"; |
714 | - string? variant = null; |
715 | - |
716 | - var current = this.source_settings.get_uint ("current"); |
717 | - var array = this.source_settings.get_value ("sources"); |
718 | - |
719 | - if (current < array.n_children ()) { |
720 | - string type; |
721 | - string name; |
722 | - |
723 | - array.get_child (current, "(ss)", out type, out name); |
724 | - |
725 | - if (type == "xkb") { |
726 | - this.xkb_info.get_layout_info (name, null, null, out layout, out variant); |
727 | - } else if (type == "ibus") { |
728 | - var names = new string[2]; |
729 | - names[0] = name; |
730 | - |
731 | - var engines = get_ibus ().get_engines_by_names (names); |
732 | - |
733 | - if (engines.length > 0) { |
734 | - var engine = engines[0]; |
735 | - |
736 | - layout = engine.get_layout (); |
737 | - variant = engine.get_layout_variant (); |
738 | - } |
739 | - } |
740 | - } |
741 | - |
742 | - try { |
743 | - string command; |
744 | - |
745 | - if (variant != null && ((!) variant).get_char () != '\0') { |
746 | - command = @"gkbd-keyboard-display -l \"$layout\t$((!) variant)\""; |
747 | - } else { |
748 | - command = @"gkbd-keyboard-display -l $layout"; |
749 | - } |
750 | - |
751 | - Process.spawn_command_line_async (command); |
752 | - } catch (SpawnError error) { |
753 | - warning ("error: %s", error.message); |
754 | - } |
755 | - } |
756 | - |
757 | - [DBus (visible = false)] |
758 | - private void handle_activate_settings (Variant? parameter) { |
759 | - try { |
760 | - Process.spawn_command_line_async ("gnome-control-center region layouts"); |
761 | - } catch (SpawnError error) { |
762 | - warning ("error: %s", error.message); |
763 | - } |
764 | - } |
765 | - |
766 | - [DBus (visible = false)] |
767 | - private void handle_bus_acquired (DBusConnection connection, string name) { |
768 | - try { |
769 | - connection.export_action_group ("/com/canonical/indicator/keyboard", get_action_group ()); |
770 | - connection.export_menu_model ("/com/canonical/indicator/keyboard/desktop", get_menu_model ()); |
771 | - } catch (Error error) { |
772 | - warning ("error: %s", error.message); |
773 | - } |
774 | - } |
775 | - |
776 | - [DBus (visible = false)] |
777 | - private void handle_name_lost (DBusConnection? connection, string name) { |
778 | - ((!) this.loop).quit (); |
779 | - this.loop = null; |
780 | - } |
781 | - |
782 | - [DBus (visible = false)] |
783 | - public static int main (string[] args) { |
784 | - new Service (ref args); |
785 | - return 0; |
786 | - } |
787 | -} |
788 | |
789 | === removed directory '.pc/disable-experimental-non-null.patch' |
790 | === removed directory '.pc/disable-experimental-non-null.patch/tests' |
791 | === removed file '.pc/disable-experimental-non-null.patch/tests/Makefile.am' |
792 | --- .pc/disable-experimental-non-null.patch/tests/Makefile.am 2013-07-17 19:17:32 +0000 |
793 | +++ .pc/disable-experimental-non-null.patch/tests/Makefile.am 1970-01-01 00:00:00 +0000 |
794 | @@ -1,18 +0,0 @@ |
795 | -TESTS = indicator-keyboard-test |
796 | - |
797 | -check_PROGRAMS = indicator-keyboard-tests |
798 | - |
799 | -AM_CFLAGS = -w |
800 | -AM_LDFLAGS = -lm |
801 | -AM_VALAFLAGS = --enable-experimental-non-null \ |
802 | - --metadatadir $(top_srcdir)/deps \ |
803 | - --vapidir $(top_srcdir)/deps |
804 | - |
805 | -indicator_keyboard_tests_SOURCES = main.vala \ |
806 | - config.vala |
807 | -indicator_keyboard_tests_VALAFLAGS = $(AM_VALAFLAGS) \ |
808 | - --pkg gio-2.0 |
809 | -indicator_keyboard_tests_CFLAGS = $(AM_CFLAGS) \ |
810 | - $(GIO_CFLAGS) |
811 | -indicator_keyboard_tests_LDFLAGS = $(AM_LDFLAGS) \ |
812 | - $(GIO_LIBS) |
813 | |
814 | === removed file '.pc/disable-experimental-non-null.patch/tests/main.vala' |
815 | --- .pc/disable-experimental-non-null.patch/tests/main.vala 2013-07-04 04:12:14 +0000 |
816 | +++ .pc/disable-experimental-non-null.patch/tests/main.vala 1970-01-01 00:00:00 +0000 |
817 | @@ -1,675 +0,0 @@ |
818 | -const int TIMEOUT_S = 1; |
819 | -const int TIMEOUT_MS = 1000; |
820 | - |
821 | -[DBus (name = "com.canonical.indicator.keyboard.test")] |
822 | -public class Service : Object { |
823 | - |
824 | - [DBus (visible = false)] |
825 | - private string? _command; |
826 | - |
827 | - [DBus (visible = false)] |
828 | - public string? command { |
829 | - get { return _command; } |
830 | - } |
831 | - |
832 | - public void execute (string command) { |
833 | - this._command = command; |
834 | - |
835 | - var pspec = this.get_class ().find_property ("command"); |
836 | - |
837 | - if (pspec != null) { |
838 | - this.notify["command"] ((!) pspec); |
839 | - } |
840 | - } |
841 | -} |
842 | - |
843 | -struct Fixture { |
844 | - TestDBus? bus; |
845 | - uint service_name; |
846 | - DBusConnection? connection; |
847 | - Service? service; |
848 | - uint object_name; |
849 | -} |
850 | - |
851 | -static void start_service (Fixture *fixture) { |
852 | - if (fixture.connection != null) { |
853 | - try { |
854 | - fixture.service = new Service (); |
855 | - fixture.object_name = ((!) fixture.connection).register_object ("/com/canonical/indicator/keyboard/test", fixture.service); |
856 | - } catch (IOError error) { |
857 | - fixture.connection = null; |
858 | - fixture.service = null; |
859 | - fixture.object_name = 0; |
860 | - |
861 | - Test.message ("error: %s", error.message); |
862 | - Test.fail (); |
863 | - } |
864 | - } |
865 | -} |
866 | - |
867 | -static void begin_test (void *data) { |
868 | - var fixture = (Fixture *) data; |
869 | - |
870 | - fixture.bus = new TestDBus (TestDBusFlags.NONE); |
871 | - ((!) fixture.bus).add_service_dir (SERVICE_DIR); |
872 | - ((!) fixture.bus).up (); |
873 | - |
874 | - var loop = new MainLoop (null, false); |
875 | - |
876 | - fixture.service_name = Bus.own_name (BusType.SESSION, |
877 | - "com.canonical.indicator.keyboard.test", |
878 | - BusNameOwnerFlags.ALLOW_REPLACEMENT | BusNameOwnerFlags.REPLACE, |
879 | - (connection, name) => { |
880 | - if (loop.is_running ()) { |
881 | - fixture.connection = connection; |
882 | - |
883 | - start_service (fixture); |
884 | - |
885 | - loop.quit (); |
886 | - } |
887 | - }, |
888 | - null, |
889 | - (connection, name) => { |
890 | - if (loop.is_running ()) { |
891 | - fixture.connection = null; |
892 | - fixture.service = null; |
893 | - fixture.object_name = 0; |
894 | - |
895 | - loop.quit (); |
896 | - } |
897 | - }); |
898 | - |
899 | - loop.run (); |
900 | - |
901 | - if (fixture.connection == null) { |
902 | - Test.message ("error: Unable to connect to com.canonical.indicator.keyboard.test."); |
903 | - Test.fail (); |
904 | - } |
905 | -} |
906 | - |
907 | -static void end_test (void *data) { |
908 | - var fixture = (Fixture *) data; |
909 | - |
910 | - if (fixture.object_name != 0) { |
911 | - ((!) fixture.connection).unregister_object (fixture.object_name); |
912 | - fixture.object_name = 0; |
913 | - } |
914 | - |
915 | - if (fixture.service_name != 0) { |
916 | - Bus.unown_name (fixture.service_name); |
917 | - fixture.service_name = 0; |
918 | - } |
919 | - |
920 | - fixture.service = null; |
921 | - fixture.connection = null; |
922 | - |
923 | - if (fixture.bus != null) { |
924 | - ((!) fixture.bus).down (); |
925 | - fixture.bus = null; |
926 | - } |
927 | -} |
928 | - |
929 | -static void test_activate_input_source (void *data) { |
930 | - var fixture = (Fixture *) data; |
931 | - |
932 | - if (fixture.object_name == 0) { |
933 | - Test.message ("error: Test fixture not initialized."); |
934 | - Test.fail (); |
935 | - return; |
936 | - } |
937 | - |
938 | - try { |
939 | - var current = 0; |
940 | - var sources = "[('xkb', 'us'), ('xkb', 'ca+eng'), ('xkb', 'epo'), ('ibus', 'pinyin')]"; |
941 | - Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources current $current"); |
942 | - Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources sources \"$sources\""); |
943 | - } catch (SpawnError error) { |
944 | - Test.message ("error: %s", error.message); |
945 | - Test.fail (); |
946 | - return; |
947 | - } |
948 | - |
949 | - var action_group = DBusActionGroup.get ((!) fixture.connection, |
950 | - "com.canonical.indicator.keyboard", |
951 | - "/com/canonical/indicator/keyboard"); |
952 | - var loop = new MainLoop (null, false); |
953 | - var signal_name = action_group.action_state_changed["current"].connect ((action, state) => { |
954 | - loop.quit (); |
955 | - }); |
956 | - |
957 | - action_group.list_actions (); |
958 | - action_group.activate_action ("current", new Variant.uint32 (2)); |
959 | - |
960 | - var source = Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return false; }); |
961 | - loop.run (); |
962 | - Source.remove (source); |
963 | - action_group.disconnect (signal_name); |
964 | - |
965 | - var state = action_group.get_action_state ("current"); |
966 | - var current = ((!) state).get_uint32 (); |
967 | - assert (current == 2); |
968 | - |
969 | - try { |
970 | - string output; |
971 | - Process.spawn_command_line_sync ("gsettings get org.gnome.desktop.input-sources current", out output); |
972 | - assert (strcmp (output, "uint32 2\n") == 0); |
973 | - } catch (SpawnError error) { |
974 | - Test.message ("error: %s", error.message); |
975 | - Test.fail (); |
976 | - return; |
977 | - } |
978 | -} |
979 | - |
980 | -static void test_activate_character_map (void *data) { |
981 | - var fixture = (Fixture *) data; |
982 | - |
983 | - if (fixture.object_name == 0) { |
984 | - Test.message ("error: Test fixture not initialized."); |
985 | - Test.fail (); |
986 | - return; |
987 | - } |
988 | - |
989 | - var action_group = DBusActionGroup.get ((!) fixture.connection, |
990 | - "com.canonical.indicator.keyboard", |
991 | - "/com/canonical/indicator/keyboard"); |
992 | - var loop = new MainLoop (null, false); |
993 | - var signal_name = ((!) fixture.service).notify["command"].connect ((pspec) => { |
994 | - loop.quit (); |
995 | - }); |
996 | - |
997 | - action_group.activate_action ("map", null); |
998 | - |
999 | - var source = Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return false; }); |
1000 | - loop.run (); |
1001 | - Source.remove (source); |
1002 | - ((!) fixture.service).disconnect (signal_name); |
1003 | - |
1004 | - assert (strcmp ((!) ((!) fixture.service).command, "'gucharmap '") == 0); |
1005 | -} |
1006 | - |
1007 | -static void test_activate_keyboard_layout_chart (void *data) { |
1008 | - var fixture = (Fixture *) data; |
1009 | - |
1010 | - if (fixture.object_name == 0) { |
1011 | - Test.message ("error: Test fixture not initialized."); |
1012 | - Test.fail (); |
1013 | - return; |
1014 | - } |
1015 | - |
1016 | - try { |
1017 | - var current = 1; |
1018 | - var sources = "[('xkb', 'us'), ('xkb', 'ca+eng'), ('xkb', 'epo'), ('ibus', 'pinyin')]"; |
1019 | - Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources current $current"); |
1020 | - Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources sources \"$sources\""); |
1021 | - } catch (SpawnError error) { |
1022 | - Test.message ("error: %s", error.message); |
1023 | - Test.fail (); |
1024 | - return; |
1025 | - } |
1026 | - |
1027 | - var action_group = DBusActionGroup.get ((!) fixture.connection, |
1028 | - "com.canonical.indicator.keyboard", |
1029 | - "/com/canonical/indicator/keyboard"); |
1030 | - var loop = new MainLoop (null, false); |
1031 | - var signal_name = ((!) fixture.service).notify["command"].connect ((pspec) => { |
1032 | - loop.quit (); |
1033 | - }); |
1034 | - |
1035 | - action_group.activate_action ("chart", null); |
1036 | - |
1037 | - var source = Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return false; }); |
1038 | - loop.run (); |
1039 | - Source.remove (source); |
1040 | - ((!) fixture.service).disconnect (signal_name); |
1041 | - |
1042 | - assert (strcmp ((!) ((!) fixture.service).command, "'gkbd-keyboard-display -l ca\teng'") == 0); |
1043 | -} |
1044 | - |
1045 | -static void test_activate_text_entry_settings (void *data) { |
1046 | - var fixture = (Fixture *) data; |
1047 | - |
1048 | - if (fixture.object_name == 0) { |
1049 | - Test.message ("error: Test fixture not initialized."); |
1050 | - Test.fail (); |
1051 | - return; |
1052 | - } |
1053 | - |
1054 | - var action_group = DBusActionGroup.get ((!) fixture.connection, |
1055 | - "com.canonical.indicator.keyboard", |
1056 | - "/com/canonical/indicator/keyboard"); |
1057 | - var loop = new MainLoop (null, false); |
1058 | - var signal_name = ((!) fixture.service).notify["command"].connect ((pspec) => { |
1059 | - loop.quit (); |
1060 | - }); |
1061 | - |
1062 | - action_group.activate_action ("settings", null); |
1063 | - |
1064 | - var source = Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return false; }); |
1065 | - loop.run (); |
1066 | - Source.remove (source); |
1067 | - ((!) fixture.service).disconnect (signal_name); |
1068 | - |
1069 | - assert (strcmp ((!) ((!) fixture.service).command, "'gnome-control-center region layouts'") == 0); |
1070 | -} |
1071 | - |
1072 | -static void test_migration (void *data) { |
1073 | - var fixture = (Fixture *) data; |
1074 | - |
1075 | - if (fixture.object_name == 0) { |
1076 | - Test.message ("error: Test fixture not initialized."); |
1077 | - Test.fail (); |
1078 | - return; |
1079 | - } |
1080 | - |
1081 | - try { |
1082 | - var migrated = false; |
1083 | - var sources = "[('xkb', 'us')]"; |
1084 | - var layouts = "['us', 'ca\teng', 'epo']"; |
1085 | - Process.spawn_command_line_sync (@"gsettings set com.canonical.indicator.keyboard migrated $migrated"); |
1086 | - Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources sources \"$sources\""); |
1087 | - Process.spawn_command_line_sync (@"gsettings set org.gnome.libgnomekbd.keyboard layouts \"$layouts\""); |
1088 | - } catch (SpawnError error) { |
1089 | - Test.message ("error: %s", error.message); |
1090 | - Test.fail (); |
1091 | - return; |
1092 | - } |
1093 | - |
1094 | - try { |
1095 | - var cancellable = new Cancellable (); |
1096 | - |
1097 | - var source = Timeout.add_seconds (TIMEOUT_S, () => { cancellable.cancel (); return false; }); |
1098 | - |
1099 | - var dbus_proxy = new DBusProxy.sync ((!) fixture.connection, |
1100 | - DBusProxyFlags.NONE, |
1101 | - null, |
1102 | - "org.freedesktop.DBus", |
1103 | - "/", |
1104 | - "org.freedesktop.DBus", |
1105 | - cancellable); |
1106 | - |
1107 | - Source.remove (source); |
1108 | - |
1109 | - if (cancellable.is_cancelled ()) { |
1110 | - Test.message ("error: Unable to connect to org.freedesktop.DBus."); |
1111 | - Test.fail (); |
1112 | - return; |
1113 | - } |
1114 | - |
1115 | - dbus_proxy.call_sync ("StartServiceByName", new Variant ("(su)", "com.canonical.indicator.keyboard", 0), DBusCallFlags.NONE, TIMEOUT_MS); |
1116 | - } catch (Error error) { |
1117 | - Test.message ("error: %s", error.message); |
1118 | - Test.fail (); |
1119 | - return; |
1120 | - } |
1121 | - |
1122 | - try { |
1123 | - string sources; |
1124 | - Process.spawn_command_line_sync ("gsettings get org.gnome.desktop.input-sources sources", out sources); |
1125 | - assert (strcmp (sources, "[('xkb', 'us'), ('xkb', 'ca+eng'), ('xkb', 'epo')]\n") == 0); |
1126 | - } catch (SpawnError error) { |
1127 | - Test.message ("error: %s", error.message); |
1128 | - Test.fail (); |
1129 | - return; |
1130 | - } |
1131 | -} |
1132 | - |
1133 | -static void test_no_migration (void *data) { |
1134 | - var fixture = (Fixture *) data; |
1135 | - |
1136 | - if (fixture.object_name == 0) { |
1137 | - Test.message ("error: Test fixture not initialized."); |
1138 | - Test.fail (); |
1139 | - return; |
1140 | - } |
1141 | - |
1142 | - try { |
1143 | - var migrated = true; |
1144 | - var sources = "[('xkb', 'us')]"; |
1145 | - var layouts = "['us', 'ca\teng', 'epo']"; |
1146 | - Process.spawn_command_line_sync (@"gsettings set com.canonical.indicator.keyboard migrated $migrated"); |
1147 | - Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources sources \"$sources\""); |
1148 | - Process.spawn_command_line_sync (@"gsettings set org.gnome.libgnomekbd.keyboard layouts \"$layouts\""); |
1149 | - } catch (SpawnError error) { |
1150 | - Test.message ("error: %s", error.message); |
1151 | - Test.fail (); |
1152 | - return; |
1153 | - } |
1154 | - |
1155 | - try { |
1156 | - var cancellable = new Cancellable (); |
1157 | - |
1158 | - var source = Timeout.add_seconds (TIMEOUT_S, () => { cancellable.cancel (); return false; }); |
1159 | - |
1160 | - var dbus_proxy = new DBusProxy.sync ((!) fixture.connection, |
1161 | - DBusProxyFlags.NONE, |
1162 | - null, |
1163 | - "org.freedesktop.DBus", |
1164 | - "/", |
1165 | - "org.freedesktop.DBus", |
1166 | - cancellable); |
1167 | - |
1168 | - Source.remove (source); |
1169 | - |
1170 | - if (cancellable.is_cancelled ()) { |
1171 | - Test.message ("error: Unable to connect to org.freedesktop.DBus."); |
1172 | - Test.fail (); |
1173 | - return; |
1174 | - } |
1175 | - |
1176 | - dbus_proxy.call_sync ("StartServiceByName", new Variant ("(su)", "com.canonical.indicator.keyboard", 0), DBusCallFlags.NONE, TIMEOUT_MS); |
1177 | - } catch (Error error) { |
1178 | - Test.message ("error: %s", error.message); |
1179 | - Test.fail (); |
1180 | - return; |
1181 | - } |
1182 | - |
1183 | - try { |
1184 | - string sources; |
1185 | - Process.spawn_command_line_sync ("gsettings get org.gnome.desktop.input-sources sources", out sources); |
1186 | - assert (strcmp (sources, "[('xkb', 'us')]\n") == 0); |
1187 | - } catch (SpawnError error) { |
1188 | - Test.message ("error: %s", error.message); |
1189 | - Test.fail (); |
1190 | - return; |
1191 | - } |
1192 | -} |
1193 | - |
1194 | -static void test_update_visible (void *data) { |
1195 | - var fixture = (Fixture *) data; |
1196 | - |
1197 | - if (fixture.object_name == 0) { |
1198 | - Test.message ("error: Test fixture not initialized."); |
1199 | - Test.fail (); |
1200 | - return; |
1201 | - } |
1202 | - |
1203 | - bool visible; |
1204 | - |
1205 | - try { |
1206 | - visible = true; |
1207 | - Process.spawn_command_line_sync (@"gsettings set com.canonical.indicator.keyboard visible $visible"); |
1208 | - } catch (SpawnError error) { |
1209 | - Test.message ("error: %s", error.message); |
1210 | - Test.fail (); |
1211 | - return; |
1212 | - } |
1213 | - |
1214 | - var action_group = DBusActionGroup.get ((!) fixture.connection, |
1215 | - "com.canonical.indicator.keyboard", |
1216 | - "/com/canonical/indicator/keyboard"); |
1217 | - var loop = new MainLoop (null, false); |
1218 | - var signal_name = action_group.action_added["indicator"].connect ((action) => { |
1219 | - loop.quit (); |
1220 | - }); |
1221 | - |
1222 | - action_group.list_actions (); |
1223 | - |
1224 | - var source = Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return false; }); |
1225 | - loop.run (); |
1226 | - Source.remove (source); |
1227 | - action_group.disconnect (signal_name); |
1228 | - |
1229 | - var state = action_group.get_action_state ("indicator"); |
1230 | - assert (((!) state).lookup ("visible", "b", out visible)); |
1231 | - assert (visible); |
1232 | - |
1233 | - loop = new MainLoop (null, false); |
1234 | - signal_name = action_group.action_state_changed["indicator"].connect ((action, state) => { |
1235 | - loop.quit (); |
1236 | - }); |
1237 | - |
1238 | - try { |
1239 | - visible = false; |
1240 | - Process.spawn_command_line_sync (@"gsettings set com.canonical.indicator.keyboard visible $visible"); |
1241 | - } catch (SpawnError error) { |
1242 | - Test.message ("error: %s", error.message); |
1243 | - Test.fail (); |
1244 | - return; |
1245 | - } |
1246 | - |
1247 | - source = Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return false; }); |
1248 | - loop.run (); |
1249 | - Source.remove (source); |
1250 | - action_group.disconnect (signal_name); |
1251 | - |
1252 | - state = action_group.get_action_state ("indicator"); |
1253 | - assert (((!) state).lookup ("visible", "b", out visible)); |
1254 | - assert (!visible); |
1255 | - |
1256 | - loop = new MainLoop (null, false); |
1257 | - signal_name = action_group.action_state_changed["indicator"].connect ((action, state) => { |
1258 | - loop.quit (); |
1259 | - }); |
1260 | - |
1261 | - try { |
1262 | - visible = true; |
1263 | - Process.spawn_command_line_sync (@"gsettings set com.canonical.indicator.keyboard visible $visible"); |
1264 | - } catch (SpawnError error) { |
1265 | - Test.message ("error: %s", error.message); |
1266 | - Test.fail (); |
1267 | - return; |
1268 | - } |
1269 | - |
1270 | - source = Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return false; }); |
1271 | - loop.run (); |
1272 | - Source.remove (source); |
1273 | - action_group.disconnect (signal_name); |
1274 | - |
1275 | - state = action_group.get_action_state ("indicator"); |
1276 | - assert (((!) state).lookup ("visible", "b", out visible)); |
1277 | - assert (visible); |
1278 | -} |
1279 | - |
1280 | -static void test_update_input_source (void *data) { |
1281 | - var fixture = (Fixture *) data; |
1282 | - |
1283 | - if (fixture.object_name == 0) { |
1284 | - Test.message ("error: Test fixture not initialized."); |
1285 | - Test.fail (); |
1286 | - return; |
1287 | - } |
1288 | - |
1289 | - try { |
1290 | - var current = 0; |
1291 | - var sources = "[('xkb', 'us'), ('xkb', 'ca+eng'), ('xkb', 'epo'), ('ibus', 'pinyin')]"; |
1292 | - Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources current $current"); |
1293 | - Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources sources \"$sources\""); |
1294 | - } catch (SpawnError error) { |
1295 | - Test.message ("error: %s", error.message); |
1296 | - Test.fail (); |
1297 | - return; |
1298 | - } |
1299 | - |
1300 | - var action_group = DBusActionGroup.get ((!) fixture.connection, |
1301 | - "com.canonical.indicator.keyboard", |
1302 | - "/com/canonical/indicator/keyboard"); |
1303 | - var loop = new MainLoop (null, false); |
1304 | - var signal_name = action_group.action_state_changed["current"].connect ((action, state) => { |
1305 | - loop.quit (); |
1306 | - }); |
1307 | - |
1308 | - action_group.list_actions (); |
1309 | - |
1310 | - try { |
1311 | - var current = 1; |
1312 | - Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources current $current"); |
1313 | - } catch (SpawnError error) { |
1314 | - Test.message ("error: %s", error.message); |
1315 | - Test.fail (); |
1316 | - return; |
1317 | - } |
1318 | - |
1319 | - var source = Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return false; }); |
1320 | - loop.run (); |
1321 | - Source.remove (source); |
1322 | - action_group.disconnect (signal_name); |
1323 | - |
1324 | - var state = action_group.get_action_state ("current"); |
1325 | - var current = ((!) state).get_uint32 (); |
1326 | - assert (current == 1); |
1327 | - |
1328 | - try { |
1329 | - string output; |
1330 | - Process.spawn_command_line_sync ("gsettings get org.gnome.desktop.input-sources current", out output); |
1331 | - assert (strcmp (output, "uint32 1\n") == 0); |
1332 | - } catch (SpawnError error) { |
1333 | - Test.message ("error: %s", error.message); |
1334 | - Test.fail (); |
1335 | - return; |
1336 | - } |
1337 | - |
1338 | - loop = new MainLoop (null, false); |
1339 | - signal_name = action_group.action_state_changed["current"].connect ((action, state) => { |
1340 | - loop.quit (); |
1341 | - }); |
1342 | - |
1343 | - try { |
1344 | - current = 0; |
1345 | - Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources current $current"); |
1346 | - } catch (SpawnError error) { |
1347 | - Test.message ("error: %s", error.message); |
1348 | - Test.fail (); |
1349 | - return; |
1350 | - } |
1351 | - |
1352 | - source = Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return false; }); |
1353 | - loop.run (); |
1354 | - Source.remove (source); |
1355 | - action_group.disconnect (signal_name); |
1356 | - |
1357 | - state = action_group.get_action_state ("current"); |
1358 | - current = ((!) state).get_uint32 (); |
1359 | - assert (current == 0); |
1360 | - |
1361 | - try { |
1362 | - string output; |
1363 | - Process.spawn_command_line_sync ("gsettings get org.gnome.desktop.input-sources current", out output); |
1364 | - assert (strcmp (output, "uint32 0\n") == 0); |
1365 | - } catch (SpawnError error) { |
1366 | - Test.message ("error: %s", error.message); |
1367 | - Test.fail (); |
1368 | - return; |
1369 | - } |
1370 | -} |
1371 | - |
1372 | -static void test_update_input_sources (void *data) { |
1373 | - var fixture = (Fixture *) data; |
1374 | - |
1375 | - if (fixture.object_name == 0) { |
1376 | - Test.message ("error: Test fixture not initialized."); |
1377 | - Test.fail (); |
1378 | - return; |
1379 | - } |
1380 | - |
1381 | - try { |
1382 | - var current = 0; |
1383 | - var sources = "[('xkb', 'us')]"; |
1384 | - Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources current $current"); |
1385 | - Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources sources \"$sources\""); |
1386 | - } catch (SpawnError error) { |
1387 | - Test.message ("error: %s", error.message); |
1388 | - Test.fail (); |
1389 | - return; |
1390 | - } |
1391 | - |
1392 | - var menu_model = DBusMenuModel.get ((!) fixture.connection, |
1393 | - "com.canonical.indicator.keyboard", |
1394 | - "/com/canonical/indicator/keyboard/desktop"); |
1395 | - var loop = new MainLoop (null, false); |
1396 | - var signal_name = menu_model.items_changed.connect ((position, removed, added) => { |
1397 | - loop.quit (); |
1398 | - }); |
1399 | - |
1400 | - menu_model.get_n_items (); |
1401 | - |
1402 | - var source = Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return false; }); |
1403 | - loop.run (); |
1404 | - Source.remove (source); |
1405 | - menu_model.disconnect (signal_name); |
1406 | - |
1407 | - var menu = menu_model.get_item_link (0, Menu.LINK_SUBMENU); |
1408 | - loop = new MainLoop (null, false); |
1409 | - signal_name = menu.items_changed.connect ((position, removed, added) => { |
1410 | - loop.quit (); |
1411 | - }); |
1412 | - |
1413 | - menu.get_n_items (); |
1414 | - |
1415 | - source = Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return false; }); |
1416 | - loop.run (); |
1417 | - Source.remove (source); |
1418 | - menu.disconnect (signal_name); |
1419 | - |
1420 | - var section = menu.get_item_link (0, Menu.LINK_SECTION); |
1421 | - loop = new MainLoop (null, false); |
1422 | - signal_name = section.items_changed.connect ((position, removed, added) => { |
1423 | - loop.quit (); |
1424 | - }); |
1425 | - |
1426 | - section.get_n_items (); |
1427 | - |
1428 | - source = Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return false; }); |
1429 | - loop.run (); |
1430 | - Source.remove (source); |
1431 | - section.disconnect (signal_name); |
1432 | - |
1433 | - string label; |
1434 | - |
1435 | - assert (section.get_n_items () == 1); |
1436 | - section.get_item_attribute (0, Menu.ATTRIBUTE_LABEL, "s", out label); |
1437 | - assert (strcmp (label, "English (US)") == 0); |
1438 | - |
1439 | - loop = new MainLoop (null, false); |
1440 | - signal_name = section.items_changed.connect ((position, removed, added) => { |
1441 | - if (section.get_n_items () == 4) { |
1442 | - loop.quit (); |
1443 | - } |
1444 | - }); |
1445 | - |
1446 | - try { |
1447 | - var sources = "[('xkb', 'us'), ('xkb', 'ca+eng'), ('xkb', 'epo'), ('ibus', 'pinyin')]"; |
1448 | - Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources sources \"$sources\""); |
1449 | - } catch (SpawnError error) { |
1450 | - Test.message ("error: %s", error.message); |
1451 | - Test.fail (); |
1452 | - return; |
1453 | - } |
1454 | - |
1455 | - source = Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return false; }); |
1456 | - loop.run (); |
1457 | - Source.remove (source); |
1458 | - section.disconnect (signal_name); |
1459 | - |
1460 | - assert (section.get_n_items () == 4); |
1461 | - section.get_item_attribute (0, Menu.ATTRIBUTE_LABEL, "s", out label); |
1462 | - assert (strcmp (label, "English (US)") == 0); |
1463 | - section.get_item_attribute (1, Menu.ATTRIBUTE_LABEL, "s", out label); |
1464 | - assert (strcmp (label, "English (Canada)") == 0); |
1465 | - section.get_item_attribute (2, Menu.ATTRIBUTE_LABEL, "s", out label); |
1466 | - assert (strcmp (label, "Esperanto") == 0); |
1467 | - section.get_item_attribute (3, Menu.ATTRIBUTE_LABEL, "s", out label); |
1468 | - assert (strcmp (label, "Pinyin") == 0); |
1469 | -} |
1470 | - |
1471 | -public int main (string[] args) { |
1472 | - Environment.set_variable ("DCONF_PROFILE", DCONF_PROFILE, true); |
1473 | - Environment.set_variable ("LC_ALL", "C", true); |
1474 | - |
1475 | - Test.init (ref args, null); |
1476 | - |
1477 | - var suite = new TestSuite ("indicator-keyboard"); |
1478 | - |
1479 | - suite.add (new TestCase ("activate-input-source", begin_test, test_activate_input_source, end_test, sizeof (Fixture))); |
1480 | - suite.add (new TestCase ("activate-character-map", begin_test, test_activate_character_map, end_test, sizeof (Fixture))); |
1481 | - suite.add (new TestCase ("activate-keyboard-layout-chart", begin_test, test_activate_keyboard_layout_chart, end_test, sizeof (Fixture))); |
1482 | - suite.add (new TestCase ("activate-text-entry-settings", begin_test, test_activate_text_entry_settings, end_test, sizeof (Fixture))); |
1483 | - suite.add (new TestCase ("migration", begin_test, test_migration, end_test, sizeof (Fixture))); |
1484 | - suite.add (new TestCase ("no-migration", begin_test, test_no_migration, end_test, sizeof (Fixture))); |
1485 | - suite.add (new TestCase ("update-visible", begin_test, test_update_visible, end_test, sizeof (Fixture))); |
1486 | - suite.add (new TestCase ("update-input-source", begin_test, test_update_input_source, end_test, sizeof (Fixture))); |
1487 | - suite.add (new TestCase ("update-input-sources", begin_test, test_update_input_sources, end_test, sizeof (Fixture))); |
1488 | - |
1489 | - TestSuite.get_root ().add_suite (suite); |
1490 | - |
1491 | - return Test.run (); |
1492 | -} |
1493 | |
1494 | === removed directory '.pc/relax-test-missing-ibus.patch' |
1495 | === removed directory '.pc/relax-test-missing-ibus.patch/tests' |
1496 | === removed file '.pc/relax-test-missing-ibus.patch/tests/main.vala' |
1497 | --- .pc/relax-test-missing-ibus.patch/tests/main.vala 2013-07-17 20:06:48 +0000 |
1498 | +++ .pc/relax-test-missing-ibus.patch/tests/main.vala 1970-01-01 00:00:00 +0000 |
1499 | @@ -1,675 +0,0 @@ |
1500 | -const int TIMEOUT_S = 1; |
1501 | -const int TIMEOUT_MS = 1000; |
1502 | - |
1503 | -[DBus (name = "com.canonical.indicator.keyboard.test")] |
1504 | -public class Service : Object { |
1505 | - |
1506 | - [DBus (visible = false)] |
1507 | - private string? _command; |
1508 | - |
1509 | - [DBus (visible = false)] |
1510 | - public string? command { |
1511 | - get { return _command; } |
1512 | - } |
1513 | - |
1514 | - public void execute (string command) { |
1515 | - this._command = command; |
1516 | - |
1517 | - var pspec = this.get_class ().find_property ("command"); |
1518 | - |
1519 | - if (pspec != null) { |
1520 | - this.notify["command"] ((!) pspec); |
1521 | - } |
1522 | - } |
1523 | -} |
1524 | - |
1525 | -struct Fixture { |
1526 | - TestDBus? bus; |
1527 | - uint service_name; |
1528 | - DBusConnection? connection; |
1529 | - Service? service; |
1530 | - uint object_name; |
1531 | -} |
1532 | - |
1533 | -static void start_service (Fixture *fixture) { |
1534 | - if (fixture.connection != null) { |
1535 | - try { |
1536 | - fixture.service = new Service (); |
1537 | - fixture.object_name = ((!) fixture.connection).register_object ("/com/canonical/indicator/keyboard/test", fixture.service); |
1538 | - } catch (IOError error) { |
1539 | - fixture.connection = null; |
1540 | - fixture.service = null; |
1541 | - fixture.object_name = 0; |
1542 | - |
1543 | - Test.message ("error: %s", error.message); |
1544 | - Test.fail (); |
1545 | - } |
1546 | - } |
1547 | -} |
1548 | - |
1549 | -static void begin_test (void *data) { |
1550 | - var fixture = (Fixture *) data; |
1551 | - |
1552 | - fixture.bus = new TestDBus (TestDBusFlags.NONE); |
1553 | - ((!) fixture.bus).add_service_dir (SERVICE_DIR); |
1554 | - ((!) fixture.bus).up (); |
1555 | - |
1556 | - var loop = new MainLoop (null, false); |
1557 | - |
1558 | - fixture.service_name = Bus.own_name (BusType.SESSION, |
1559 | - "com.canonical.indicator.keyboard.test", |
1560 | - BusNameOwnerFlags.ALLOW_REPLACEMENT | BusNameOwnerFlags.REPLACE, |
1561 | - (connection, name) => { |
1562 | - if (loop.is_running ()) { |
1563 | - fixture.connection = connection; |
1564 | - |
1565 | - start_service (fixture); |
1566 | - |
1567 | - loop.quit (); |
1568 | - } |
1569 | - }, |
1570 | - null, |
1571 | - (connection, name) => { |
1572 | - if (loop.is_running ()) { |
1573 | - fixture.connection = null; |
1574 | - fixture.service = null; |
1575 | - fixture.object_name = 0; |
1576 | - |
1577 | - loop.quit (); |
1578 | - } |
1579 | - }); |
1580 | - |
1581 | - loop.run (); |
1582 | - |
1583 | - if (fixture.connection == null) { |
1584 | - Test.message ("error: Unable to connect to com.canonical.indicator.keyboard.test."); |
1585 | - Test.fail (); |
1586 | - } |
1587 | -} |
1588 | - |
1589 | -static void end_test (void *data) { |
1590 | - var fixture = (Fixture *) data; |
1591 | - |
1592 | - if (fixture.object_name != 0) { |
1593 | - ((!) fixture.connection).unregister_object (fixture.object_name); |
1594 | - fixture.object_name = 0; |
1595 | - } |
1596 | - |
1597 | - if (fixture.service_name != 0) { |
1598 | - Bus.unown_name (fixture.service_name); |
1599 | - fixture.service_name = 0; |
1600 | - } |
1601 | - |
1602 | - fixture.service = null; |
1603 | - fixture.connection = null; |
1604 | - |
1605 | - if (fixture.bus != null) { |
1606 | - ((!) fixture.bus).down (); |
1607 | - fixture.bus = null; |
1608 | - } |
1609 | -} |
1610 | - |
1611 | -static void test_activate_input_source (void *data) { |
1612 | - var fixture = (Fixture *) data; |
1613 | - |
1614 | - if (fixture.object_name == 0) { |
1615 | - Test.message ("error: Test fixture not initialized."); |
1616 | - Test.fail (); |
1617 | - return; |
1618 | - } |
1619 | - |
1620 | - try { |
1621 | - var current = 0; |
1622 | - var sources = "[('xkb', 'us'), ('xkb', 'ca+eng'), ('xkb', 'epo'), ('ibus', 'pinyin')]"; |
1623 | - Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources current $current"); |
1624 | - Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources sources \"$sources\""); |
1625 | - } catch (SpawnError error) { |
1626 | - Test.message ("error: %s", error.message); |
1627 | - Test.fail (); |
1628 | - return; |
1629 | - } |
1630 | - |
1631 | - var action_group = DBusActionGroup.get ((!) fixture.connection, |
1632 | - "com.canonical.indicator.keyboard", |
1633 | - "/com/canonical/indicator/keyboard"); |
1634 | - var loop = new MainLoop (null, false); |
1635 | - var signal_name = action_group.action_state_changed["current"].connect ((action, state) => { |
1636 | - loop.quit (); |
1637 | - }); |
1638 | - |
1639 | - action_group.list_actions (); |
1640 | - action_group.activate_action ("current", new Variant.uint32 (2)); |
1641 | - |
1642 | - var source = Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return false; }); |
1643 | - loop.run (); |
1644 | - Source.remove (source); |
1645 | - action_group.disconnect (signal_name); |
1646 | - |
1647 | - var state = action_group.get_action_state ("current"); |
1648 | - var current = state.get_uint32 (); |
1649 | - assert (current == 2); |
1650 | - |
1651 | - try { |
1652 | - string output; |
1653 | - Process.spawn_command_line_sync ("gsettings get org.gnome.desktop.input-sources current", out output); |
1654 | - assert (strcmp (output, "uint32 2\n") == 0); |
1655 | - } catch (SpawnError error) { |
1656 | - Test.message ("error: %s", error.message); |
1657 | - Test.fail (); |
1658 | - return; |
1659 | - } |
1660 | -} |
1661 | - |
1662 | -static void test_activate_character_map (void *data) { |
1663 | - var fixture = (Fixture *) data; |
1664 | - |
1665 | - if (fixture.object_name == 0) { |
1666 | - Test.message ("error: Test fixture not initialized."); |
1667 | - Test.fail (); |
1668 | - return; |
1669 | - } |
1670 | - |
1671 | - var action_group = DBusActionGroup.get ((!) fixture.connection, |
1672 | - "com.canonical.indicator.keyboard", |
1673 | - "/com/canonical/indicator/keyboard"); |
1674 | - var loop = new MainLoop (null, false); |
1675 | - var signal_name = ((!) fixture.service).notify["command"].connect ((pspec) => { |
1676 | - loop.quit (); |
1677 | - }); |
1678 | - |
1679 | - action_group.activate_action ("map", null); |
1680 | - |
1681 | - var source = Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return false; }); |
1682 | - loop.run (); |
1683 | - Source.remove (source); |
1684 | - ((!) fixture.service).disconnect (signal_name); |
1685 | - |
1686 | - assert (strcmp ((!) ((!) fixture.service).command, "'gucharmap '") == 0); |
1687 | -} |
1688 | - |
1689 | -static void test_activate_keyboard_layout_chart (void *data) { |
1690 | - var fixture = (Fixture *) data; |
1691 | - |
1692 | - if (fixture.object_name == 0) { |
1693 | - Test.message ("error: Test fixture not initialized."); |
1694 | - Test.fail (); |
1695 | - return; |
1696 | - } |
1697 | - |
1698 | - try { |
1699 | - var current = 1; |
1700 | - var sources = "[('xkb', 'us'), ('xkb', 'ca+eng'), ('xkb', 'epo'), ('ibus', 'pinyin')]"; |
1701 | - Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources current $current"); |
1702 | - Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources sources \"$sources\""); |
1703 | - } catch (SpawnError error) { |
1704 | - Test.message ("error: %s", error.message); |
1705 | - Test.fail (); |
1706 | - return; |
1707 | - } |
1708 | - |
1709 | - var action_group = DBusActionGroup.get ((!) fixture.connection, |
1710 | - "com.canonical.indicator.keyboard", |
1711 | - "/com/canonical/indicator/keyboard"); |
1712 | - var loop = new MainLoop (null, false); |
1713 | - var signal_name = ((!) fixture.service).notify["command"].connect ((pspec) => { |
1714 | - loop.quit (); |
1715 | - }); |
1716 | - |
1717 | - action_group.activate_action ("chart", null); |
1718 | - |
1719 | - var source = Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return false; }); |
1720 | - loop.run (); |
1721 | - Source.remove (source); |
1722 | - ((!) fixture.service).disconnect (signal_name); |
1723 | - |
1724 | - assert (strcmp ((!) ((!) fixture.service).command, "'gkbd-keyboard-display -l ca\teng'") == 0); |
1725 | -} |
1726 | - |
1727 | -static void test_activate_text_entry_settings (void *data) { |
1728 | - var fixture = (Fixture *) data; |
1729 | - |
1730 | - if (fixture.object_name == 0) { |
1731 | - Test.message ("error: Test fixture not initialized."); |
1732 | - Test.fail (); |
1733 | - return; |
1734 | - } |
1735 | - |
1736 | - var action_group = DBusActionGroup.get ((!) fixture.connection, |
1737 | - "com.canonical.indicator.keyboard", |
1738 | - "/com/canonical/indicator/keyboard"); |
1739 | - var loop = new MainLoop (null, false); |
1740 | - var signal_name = ((!) fixture.service).notify["command"].connect ((pspec) => { |
1741 | - loop.quit (); |
1742 | - }); |
1743 | - |
1744 | - action_group.activate_action ("settings", null); |
1745 | - |
1746 | - var source = Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return false; }); |
1747 | - loop.run (); |
1748 | - Source.remove (source); |
1749 | - ((!) fixture.service).disconnect (signal_name); |
1750 | - |
1751 | - assert (strcmp ((!) ((!) fixture.service).command, "'gnome-control-center region layouts'") == 0); |
1752 | -} |
1753 | - |
1754 | -static void test_migration (void *data) { |
1755 | - var fixture = (Fixture *) data; |
1756 | - |
1757 | - if (fixture.object_name == 0) { |
1758 | - Test.message ("error: Test fixture not initialized."); |
1759 | - Test.fail (); |
1760 | - return; |
1761 | - } |
1762 | - |
1763 | - try { |
1764 | - var migrated = false; |
1765 | - var sources = "[('xkb', 'us')]"; |
1766 | - var layouts = "['us', 'ca\teng', 'epo']"; |
1767 | - Process.spawn_command_line_sync (@"gsettings set com.canonical.indicator.keyboard migrated $migrated"); |
1768 | - Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources sources \"$sources\""); |
1769 | - Process.spawn_command_line_sync (@"gsettings set org.gnome.libgnomekbd.keyboard layouts \"$layouts\""); |
1770 | - } catch (SpawnError error) { |
1771 | - Test.message ("error: %s", error.message); |
1772 | - Test.fail (); |
1773 | - return; |
1774 | - } |
1775 | - |
1776 | - try { |
1777 | - var cancellable = new Cancellable (); |
1778 | - |
1779 | - var source = Timeout.add_seconds (TIMEOUT_S, () => { cancellable.cancel (); return false; }); |
1780 | - |
1781 | - var dbus_proxy = new DBusProxy.sync ((!) fixture.connection, |
1782 | - DBusProxyFlags.NONE, |
1783 | - null, |
1784 | - "org.freedesktop.DBus", |
1785 | - "/", |
1786 | - "org.freedesktop.DBus", |
1787 | - cancellable); |
1788 | - |
1789 | - Source.remove (source); |
1790 | - |
1791 | - if (cancellable.is_cancelled ()) { |
1792 | - Test.message ("error: Unable to connect to org.freedesktop.DBus."); |
1793 | - Test.fail (); |
1794 | - return; |
1795 | - } |
1796 | - |
1797 | - dbus_proxy.call_sync ("StartServiceByName", new Variant ("(su)", "com.canonical.indicator.keyboard", 0), DBusCallFlags.NONE, TIMEOUT_MS); |
1798 | - } catch (Error error) { |
1799 | - Test.message ("error: %s", error.message); |
1800 | - Test.fail (); |
1801 | - return; |
1802 | - } |
1803 | - |
1804 | - try { |
1805 | - string sources; |
1806 | - Process.spawn_command_line_sync ("gsettings get org.gnome.desktop.input-sources sources", out sources); |
1807 | - assert (strcmp (sources, "[('xkb', 'us'), ('xkb', 'ca+eng'), ('xkb', 'epo')]\n") == 0); |
1808 | - } catch (SpawnError error) { |
1809 | - Test.message ("error: %s", error.message); |
1810 | - Test.fail (); |
1811 | - return; |
1812 | - } |
1813 | -} |
1814 | - |
1815 | -static void test_no_migration (void *data) { |
1816 | - var fixture = (Fixture *) data; |
1817 | - |
1818 | - if (fixture.object_name == 0) { |
1819 | - Test.message ("error: Test fixture not initialized."); |
1820 | - Test.fail (); |
1821 | - return; |
1822 | - } |
1823 | - |
1824 | - try { |
1825 | - var migrated = true; |
1826 | - var sources = "[('xkb', 'us')]"; |
1827 | - var layouts = "['us', 'ca\teng', 'epo']"; |
1828 | - Process.spawn_command_line_sync (@"gsettings set com.canonical.indicator.keyboard migrated $migrated"); |
1829 | - Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources sources \"$sources\""); |
1830 | - Process.spawn_command_line_sync (@"gsettings set org.gnome.libgnomekbd.keyboard layouts \"$layouts\""); |
1831 | - } catch (SpawnError error) { |
1832 | - Test.message ("error: %s", error.message); |
1833 | - Test.fail (); |
1834 | - return; |
1835 | - } |
1836 | - |
1837 | - try { |
1838 | - var cancellable = new Cancellable (); |
1839 | - |
1840 | - var source = Timeout.add_seconds (TIMEOUT_S, () => { cancellable.cancel (); return false; }); |
1841 | - |
1842 | - var dbus_proxy = new DBusProxy.sync ((!) fixture.connection, |
1843 | - DBusProxyFlags.NONE, |
1844 | - null, |
1845 | - "org.freedesktop.DBus", |
1846 | - "/", |
1847 | - "org.freedesktop.DBus", |
1848 | - cancellable); |
1849 | - |
1850 | - Source.remove (source); |
1851 | - |
1852 | - if (cancellable.is_cancelled ()) { |
1853 | - Test.message ("error: Unable to connect to org.freedesktop.DBus."); |
1854 | - Test.fail (); |
1855 | - return; |
1856 | - } |
1857 | - |
1858 | - dbus_proxy.call_sync ("StartServiceByName", new Variant ("(su)", "com.canonical.indicator.keyboard", 0), DBusCallFlags.NONE, TIMEOUT_MS); |
1859 | - } catch (Error error) { |
1860 | - Test.message ("error: %s", error.message); |
1861 | - Test.fail (); |
1862 | - return; |
1863 | - } |
1864 | - |
1865 | - try { |
1866 | - string sources; |
1867 | - Process.spawn_command_line_sync ("gsettings get org.gnome.desktop.input-sources sources", out sources); |
1868 | - assert (strcmp (sources, "[('xkb', 'us')]\n") == 0); |
1869 | - } catch (SpawnError error) { |
1870 | - Test.message ("error: %s", error.message); |
1871 | - Test.fail (); |
1872 | - return; |
1873 | - } |
1874 | -} |
1875 | - |
1876 | -static void test_update_visible (void *data) { |
1877 | - var fixture = (Fixture *) data; |
1878 | - |
1879 | - if (fixture.object_name == 0) { |
1880 | - Test.message ("error: Test fixture not initialized."); |
1881 | - Test.fail (); |
1882 | - return; |
1883 | - } |
1884 | - |
1885 | - bool visible; |
1886 | - |
1887 | - try { |
1888 | - visible = true; |
1889 | - Process.spawn_command_line_sync (@"gsettings set com.canonical.indicator.keyboard visible $visible"); |
1890 | - } catch (SpawnError error) { |
1891 | - Test.message ("error: %s", error.message); |
1892 | - Test.fail (); |
1893 | - return; |
1894 | - } |
1895 | - |
1896 | - var action_group = DBusActionGroup.get ((!) fixture.connection, |
1897 | - "com.canonical.indicator.keyboard", |
1898 | - "/com/canonical/indicator/keyboard"); |
1899 | - var loop = new MainLoop (null, false); |
1900 | - var signal_name = action_group.action_added["indicator"].connect ((action) => { |
1901 | - loop.quit (); |
1902 | - }); |
1903 | - |
1904 | - action_group.list_actions (); |
1905 | - |
1906 | - var source = Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return false; }); |
1907 | - loop.run (); |
1908 | - Source.remove (source); |
1909 | - action_group.disconnect (signal_name); |
1910 | - |
1911 | - var state = action_group.get_action_state ("indicator"); |
1912 | - assert (state.lookup ("visible", "b", out visible)); |
1913 | - assert (visible); |
1914 | - |
1915 | - loop = new MainLoop (null, false); |
1916 | - signal_name = action_group.action_state_changed["indicator"].connect ((action, state) => { |
1917 | - loop.quit (); |
1918 | - }); |
1919 | - |
1920 | - try { |
1921 | - visible = false; |
1922 | - Process.spawn_command_line_sync (@"gsettings set com.canonical.indicator.keyboard visible $visible"); |
1923 | - } catch (SpawnError error) { |
1924 | - Test.message ("error: %s", error.message); |
1925 | - Test.fail (); |
1926 | - return; |
1927 | - } |
1928 | - |
1929 | - source = Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return false; }); |
1930 | - loop.run (); |
1931 | - Source.remove (source); |
1932 | - action_group.disconnect (signal_name); |
1933 | - |
1934 | - state = action_group.get_action_state ("indicator"); |
1935 | - assert (state.lookup ("visible", "b", out visible)); |
1936 | - assert (!visible); |
1937 | - |
1938 | - loop = new MainLoop (null, false); |
1939 | - signal_name = action_group.action_state_changed["indicator"].connect ((action, state) => { |
1940 | - loop.quit (); |
1941 | - }); |
1942 | - |
1943 | - try { |
1944 | - visible = true; |
1945 | - Process.spawn_command_line_sync (@"gsettings set com.canonical.indicator.keyboard visible $visible"); |
1946 | - } catch (SpawnError error) { |
1947 | - Test.message ("error: %s", error.message); |
1948 | - Test.fail (); |
1949 | - return; |
1950 | - } |
1951 | - |
1952 | - source = Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return false; }); |
1953 | - loop.run (); |
1954 | - Source.remove (source); |
1955 | - action_group.disconnect (signal_name); |
1956 | - |
1957 | - state = action_group.get_action_state ("indicator"); |
1958 | - assert (state.lookup ("visible", "b", out visible)); |
1959 | - assert (visible); |
1960 | -} |
1961 | - |
1962 | -static void test_update_input_source (void *data) { |
1963 | - var fixture = (Fixture *) data; |
1964 | - |
1965 | - if (fixture.object_name == 0) { |
1966 | - Test.message ("error: Test fixture not initialized."); |
1967 | - Test.fail (); |
1968 | - return; |
1969 | - } |
1970 | - |
1971 | - try { |
1972 | - var current = 0; |
1973 | - var sources = "[('xkb', 'us'), ('xkb', 'ca+eng'), ('xkb', 'epo'), ('ibus', 'pinyin')]"; |
1974 | - Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources current $current"); |
1975 | - Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources sources \"$sources\""); |
1976 | - } catch (SpawnError error) { |
1977 | - Test.message ("error: %s", error.message); |
1978 | - Test.fail (); |
1979 | - return; |
1980 | - } |
1981 | - |
1982 | - var action_group = DBusActionGroup.get ((!) fixture.connection, |
1983 | - "com.canonical.indicator.keyboard", |
1984 | - "/com/canonical/indicator/keyboard"); |
1985 | - var loop = new MainLoop (null, false); |
1986 | - var signal_name = action_group.action_state_changed["current"].connect ((action, state) => { |
1987 | - loop.quit (); |
1988 | - }); |
1989 | - |
1990 | - action_group.list_actions (); |
1991 | - |
1992 | - try { |
1993 | - var current = 1; |
1994 | - Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources current $current"); |
1995 | - } catch (SpawnError error) { |
1996 | - Test.message ("error: %s", error.message); |
1997 | - Test.fail (); |
1998 | - return; |
1999 | - } |
2000 | - |
2001 | - var source = Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return false; }); |
2002 | - loop.run (); |
2003 | - Source.remove (source); |
2004 | - action_group.disconnect (signal_name); |
2005 | - |
2006 | - var state = action_group.get_action_state ("current"); |
2007 | - var current = state.get_uint32 (); |
2008 | - assert (current == 1); |
2009 | - |
2010 | - try { |
2011 | - string output; |
2012 | - Process.spawn_command_line_sync ("gsettings get org.gnome.desktop.input-sources current", out output); |
2013 | - assert (strcmp (output, "uint32 1\n") == 0); |
2014 | - } catch (SpawnError error) { |
2015 | - Test.message ("error: %s", error.message); |
2016 | - Test.fail (); |
2017 | - return; |
2018 | - } |
2019 | - |
2020 | - loop = new MainLoop (null, false); |
2021 | - signal_name = action_group.action_state_changed["current"].connect ((action, state) => { |
2022 | - loop.quit (); |
2023 | - }); |
2024 | - |
2025 | - try { |
2026 | - current = 0; |
2027 | - Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources current $current"); |
2028 | - } catch (SpawnError error) { |
2029 | - Test.message ("error: %s", error.message); |
2030 | - Test.fail (); |
2031 | - return; |
2032 | - } |
2033 | - |
2034 | - source = Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return false; }); |
2035 | - loop.run (); |
2036 | - Source.remove (source); |
2037 | - action_group.disconnect (signal_name); |
2038 | - |
2039 | - state = action_group.get_action_state ("current"); |
2040 | - current = state.get_uint32 (); |
2041 | - assert (current == 0); |
2042 | - |
2043 | - try { |
2044 | - string output; |
2045 | - Process.spawn_command_line_sync ("gsettings get org.gnome.desktop.input-sources current", out output); |
2046 | - assert (strcmp (output, "uint32 0\n") == 0); |
2047 | - } catch (SpawnError error) { |
2048 | - Test.message ("error: %s", error.message); |
2049 | - Test.fail (); |
2050 | - return; |
2051 | - } |
2052 | -} |
2053 | - |
2054 | -static void test_update_input_sources (void *data) { |
2055 | - var fixture = (Fixture *) data; |
2056 | - |
2057 | - if (fixture.object_name == 0) { |
2058 | - Test.message ("error: Test fixture not initialized."); |
2059 | - Test.fail (); |
2060 | - return; |
2061 | - } |
2062 | - |
2063 | - try { |
2064 | - var current = 0; |
2065 | - var sources = "[('xkb', 'us')]"; |
2066 | - Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources current $current"); |
2067 | - Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources sources \"$sources\""); |
2068 | - } catch (SpawnError error) { |
2069 | - Test.message ("error: %s", error.message); |
2070 | - Test.fail (); |
2071 | - return; |
2072 | - } |
2073 | - |
2074 | - var menu_model = DBusMenuModel.get ((!) fixture.connection, |
2075 | - "com.canonical.indicator.keyboard", |
2076 | - "/com/canonical/indicator/keyboard/desktop"); |
2077 | - var loop = new MainLoop (null, false); |
2078 | - var signal_name = menu_model.items_changed.connect ((position, removed, added) => { |
2079 | - loop.quit (); |
2080 | - }); |
2081 | - |
2082 | - menu_model.get_n_items (); |
2083 | - |
2084 | - var source = Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return false; }); |
2085 | - loop.run (); |
2086 | - Source.remove (source); |
2087 | - menu_model.disconnect (signal_name); |
2088 | - |
2089 | - var menu = menu_model.get_item_link (0, Menu.LINK_SUBMENU); |
2090 | - loop = new MainLoop (null, false); |
2091 | - signal_name = menu.items_changed.connect ((position, removed, added) => { |
2092 | - loop.quit (); |
2093 | - }); |
2094 | - |
2095 | - menu.get_n_items (); |
2096 | - |
2097 | - source = Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return false; }); |
2098 | - loop.run (); |
2099 | - Source.remove (source); |
2100 | - menu.disconnect (signal_name); |
2101 | - |
2102 | - var section = menu.get_item_link (0, Menu.LINK_SECTION); |
2103 | - loop = new MainLoop (null, false); |
2104 | - signal_name = section.items_changed.connect ((position, removed, added) => { |
2105 | - loop.quit (); |
2106 | - }); |
2107 | - |
2108 | - section.get_n_items (); |
2109 | - |
2110 | - source = Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return false; }); |
2111 | - loop.run (); |
2112 | - Source.remove (source); |
2113 | - section.disconnect (signal_name); |
2114 | - |
2115 | - string label; |
2116 | - |
2117 | - assert (section.get_n_items () == 1); |
2118 | - section.get_item_attribute (0, Menu.ATTRIBUTE_LABEL, "s", out label); |
2119 | - assert (strcmp (label, "English (US)") == 0); |
2120 | - |
2121 | - loop = new MainLoop (null, false); |
2122 | - signal_name = section.items_changed.connect ((position, removed, added) => { |
2123 | - if (section.get_n_items () == 4) { |
2124 | - loop.quit (); |
2125 | - } |
2126 | - }); |
2127 | - |
2128 | - try { |
2129 | - var sources = "[('xkb', 'us'), ('xkb', 'ca+eng'), ('xkb', 'epo'), ('ibus', 'pinyin')]"; |
2130 | - Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources sources \"$sources\""); |
2131 | - } catch (SpawnError error) { |
2132 | - Test.message ("error: %s", error.message); |
2133 | - Test.fail (); |
2134 | - return; |
2135 | - } |
2136 | - |
2137 | - source = Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return false; }); |
2138 | - loop.run (); |
2139 | - Source.remove (source); |
2140 | - section.disconnect (signal_name); |
2141 | - |
2142 | - assert (section.get_n_items () == 4); |
2143 | - section.get_item_attribute (0, Menu.ATTRIBUTE_LABEL, "s", out label); |
2144 | - assert (strcmp (label, "English (US)") == 0); |
2145 | - section.get_item_attribute (1, Menu.ATTRIBUTE_LABEL, "s", out label); |
2146 | - assert (strcmp (label, "English (Canada)") == 0); |
2147 | - section.get_item_attribute (2, Menu.ATTRIBUTE_LABEL, "s", out label); |
2148 | - assert (strcmp (label, "Esperanto") == 0); |
2149 | - section.get_item_attribute (3, Menu.ATTRIBUTE_LABEL, "s", out label); |
2150 | - assert (strcmp (label, "Pinyin") == 0); |
2151 | -} |
2152 | - |
2153 | -public int main (string[] args) { |
2154 | - Environment.set_variable ("DCONF_PROFILE", DCONF_PROFILE, true); |
2155 | - Environment.set_variable ("LC_ALL", "C", true); |
2156 | - |
2157 | - Test.init (ref args, null); |
2158 | - |
2159 | - var suite = new TestSuite ("indicator-keyboard"); |
2160 | - |
2161 | - suite.add (new TestCase ("activate-input-source", begin_test, test_activate_input_source, end_test, sizeof (Fixture))); |
2162 | - suite.add (new TestCase ("activate-character-map", begin_test, test_activate_character_map, end_test, sizeof (Fixture))); |
2163 | - suite.add (new TestCase ("activate-keyboard-layout-chart", begin_test, test_activate_keyboard_layout_chart, end_test, sizeof (Fixture))); |
2164 | - suite.add (new TestCase ("activate-text-entry-settings", begin_test, test_activate_text_entry_settings, end_test, sizeof (Fixture))); |
2165 | - suite.add (new TestCase ("migration", begin_test, test_migration, end_test, sizeof (Fixture))); |
2166 | - suite.add (new TestCase ("no-migration", begin_test, test_no_migration, end_test, sizeof (Fixture))); |
2167 | - suite.add (new TestCase ("update-visible", begin_test, test_update_visible, end_test, sizeof (Fixture))); |
2168 | - suite.add (new TestCase ("update-input-source", begin_test, test_update_input_source, end_test, sizeof (Fixture))); |
2169 | - suite.add (new TestCase ("update-input-sources", begin_test, test_update_input_sources, end_test, sizeof (Fixture))); |
2170 | - |
2171 | - TestSuite.get_root ().add_suite (suite); |
2172 | - |
2173 | - return Test.run (); |
2174 | -} |
2175 | |
2176 | === removed directory 'debian/patches' |
2177 | === removed file 'debian/patches/default-icon-colour.patch' |
2178 | --- debian/patches/default-icon-colour.patch 2013-07-17 18:47:22 +0000 |
2179 | +++ debian/patches/default-icon-colour.patch 1970-01-01 00:00:00 +0000 |
2180 | @@ -1,10 +0,0 @@ |
2181 | ---- a/lib/main.vala |
2182 | -+++ b/lib/main.vala |
2183 | -@@ -207,6 +207,7 @@ |
2184 | - |
2185 | - Pango.FontDescription description; |
2186 | - var colour = ((!) style).get_color (Gtk.StateFlags.NORMAL); |
2187 | -+ colour = { 0.5, 0.5, 0.5, 1.0 }; |
2188 | - ((!) style).get (Gtk.StateFlags.NORMAL, Gtk.STYLE_PROPERTY_FONT, out description); |
2189 | - |
2190 | - var surface = new Cairo.ImageSurface (Cairo.Format.ARGB32, W, H); |
2191 | |
2192 | === removed file 'debian/patches/disable-experimental-non-null.patch' |
2193 | --- debian/patches/disable-experimental-non-null.patch 2013-07-17 19:17:32 +0000 |
2194 | +++ debian/patches/disable-experimental-non-null.patch 1970-01-01 00:00:00 +0000 |
2195 | @@ -1,68 +0,0 @@ |
2196 | ---- a/tests/Makefile.am |
2197 | -+++ b/tests/Makefile.am |
2198 | -@@ -4,8 +4,7 @@ |
2199 | - |
2200 | - AM_CFLAGS = -w |
2201 | - AM_LDFLAGS = -lm |
2202 | --AM_VALAFLAGS = --enable-experimental-non-null \ |
2203 | -- --metadatadir $(top_srcdir)/deps \ |
2204 | -+AM_VALAFLAGS = --metadatadir $(top_srcdir)/deps \ |
2205 | - --vapidir $(top_srcdir)/deps |
2206 | - |
2207 | - indicator_keyboard_tests_SOURCES = main.vala \ |
2208 | ---- a/tests/main.vala |
2209 | -+++ b/tests/main.vala |
2210 | -@@ -146,7 +146,7 @@ |
2211 | - action_group.disconnect (signal_name); |
2212 | - |
2213 | - var state = action_group.get_action_state ("current"); |
2214 | -- var current = ((!) state).get_uint32 (); |
2215 | -+ var current = state.get_uint32 (); |
2216 | - assert (current == 2); |
2217 | - |
2218 | - try { |
2219 | -@@ -410,7 +410,7 @@ |
2220 | - action_group.disconnect (signal_name); |
2221 | - |
2222 | - var state = action_group.get_action_state ("indicator"); |
2223 | -- assert (((!) state).lookup ("visible", "b", out visible)); |
2224 | -+ assert (state.lookup ("visible", "b", out visible)); |
2225 | - assert (visible); |
2226 | - |
2227 | - loop = new MainLoop (null, false); |
2228 | -@@ -433,7 +433,7 @@ |
2229 | - action_group.disconnect (signal_name); |
2230 | - |
2231 | - state = action_group.get_action_state ("indicator"); |
2232 | -- assert (((!) state).lookup ("visible", "b", out visible)); |
2233 | -+ assert (state.lookup ("visible", "b", out visible)); |
2234 | - assert (!visible); |
2235 | - |
2236 | - loop = new MainLoop (null, false); |
2237 | -@@ -456,7 +456,7 @@ |
2238 | - action_group.disconnect (signal_name); |
2239 | - |
2240 | - state = action_group.get_action_state ("indicator"); |
2241 | -- assert (((!) state).lookup ("visible", "b", out visible)); |
2242 | -+ assert (state.lookup ("visible", "b", out visible)); |
2243 | - assert (visible); |
2244 | - } |
2245 | - |
2246 | -@@ -505,7 +505,7 @@ |
2247 | - action_group.disconnect (signal_name); |
2248 | - |
2249 | - var state = action_group.get_action_state ("current"); |
2250 | -- var current = ((!) state).get_uint32 (); |
2251 | -+ var current = state.get_uint32 (); |
2252 | - assert (current == 1); |
2253 | - |
2254 | - try { |
2255 | -@@ -538,7 +538,7 @@ |
2256 | - action_group.disconnect (signal_name); |
2257 | - |
2258 | - state = action_group.get_action_state ("current"); |
2259 | -- current = ((!) state).get_uint32 (); |
2260 | -+ current = state.get_uint32 (); |
2261 | - assert (current == 0); |
2262 | - |
2263 | - try { |
2264 | |
2265 | === removed file 'debian/patches/relax-test-missing-ibus.patch' |
2266 | --- debian/patches/relax-test-missing-ibus.patch 2013-07-17 20:06:48 +0000 |
2267 | +++ debian/patches/relax-test-missing-ibus.patch 1970-01-01 00:00:00 +0000 |
2268 | @@ -1,11 +0,0 @@ |
2269 | ---- a/tests/main.vala |
2270 | -+++ b/tests/main.vala |
2271 | -@@ -648,7 +648,7 @@ |
2272 | - section.get_item_attribute (2, Menu.ATTRIBUTE_LABEL, "s", out label); |
2273 | - assert (strcmp (label, "Esperanto") == 0); |
2274 | - section.get_item_attribute (3, Menu.ATTRIBUTE_LABEL, "s", out label); |
2275 | -- assert (strcmp (label, "Pinyin") == 0); |
2276 | -+ assert (label.ascii_casecmp ("Pinyin") == 0); |
2277 | - } |
2278 | - |
2279 | - public int main (string[] args) { |
2280 | |
2281 | === removed file 'debian/patches/series' |
2282 | --- debian/patches/series 2013-07-17 20:06:48 +0000 |
2283 | +++ debian/patches/series 1970-01-01 00:00:00 +0000 |
2284 | @@ -1,3 +0,0 @@ |
2285 | -default-icon-colour.patch |
2286 | -disable-experimental-non-null.patch |
2287 | -relax-test-missing-ibus.patch |
Did this with the intention of keeping workarounds to certain problems isolated in their respective patches, but guess it was more trouble than it was worth...