Bug Summary

File:testsuite/ctk/gestures.c
Warning:line 157, column 26
Using a fixed address is not portable because that address will probably not be valid in all environments or platforms

Annotated Source Code

Press '?' to see keyboard shortcuts

clang -cc1 -cc1 -triple x86_64-pc-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name gestures.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/rootdir/testsuite/ctk -resource-dir /usr/lib/llvm-16/lib/clang/16 -D HAVE_CONFIG_H -I . -I ../.. -D CTK_LOCALEDIR="/usr/share/locale" -I ../.. -I ../../cdk -I ../../cdk -I ../../ctk -I ../../ctk -D G_ENABLE_DEBUG -D G_ENABLE_CONSISTENCY_CHECKS -D GLIB_MIN_REQUIRED_VERSION=GLIB_VERSION_2_66 -D GLIB_MAX_ALLOWED_VERSION=GLIB_VERSION_2_66 -I /usr/include/pango-1.0 -I /usr/include/glib-2.0 -I /usr/lib/x86_64-linux-gnu/glib-2.0/include -I /usr/include/sysprof-6 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/libpng16 -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/fribidi -I /usr/include/cairo -I /usr/include/pixman-1 -I /usr/include/atk-1.0 -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/x86_64-linux-gnu -I /usr/include/webp -I /usr/include/at-spi2-atk/2.0 -I /usr/include/at-spi-2.0 -I /usr/include/dbus-1.0 -I /usr/lib/x86_64-linux-gnu/dbus-1.0/include -I /usr/include/gio-unix-2.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/libpng16 -I /usr/include/glib-2.0 -I /usr/lib/x86_64-linux-gnu/glib-2.0/include -I /usr/include/sysprof-6 -I /usr/include/pango-1.0 -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/fribidi -I /usr/include/cairo -I /usr/include/pixman-1 -D HAVE_UNIX_PRINT_WIDGETS -internal-isystem /usr/lib/llvm-16/lib/clang/16/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdebug-compilation-dir=/rootdir/testsuite/ctk -ferror-limit 19 -fgnuc-version=4.2.1 -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.core.SizeofPtr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2024-09-19-171836-43636-1 -x c gestures.c
1#include <ctk/ctk.h>
2
3typedef struct {
4 CtkWidget *widget;
5 gint x;
6 gint y;
7 guint state;
8 guint pressed : 1;
9} PointState;
10
11static PointState mouse_state;
12static PointState touch_state[10]; /* touchpoint 0 gets pointer emulation,
13 * use it first in tests for consistency.
14 */
15
16#define EVENT_SEQUENCE(point)(CdkEventSequence*) ((point) - touch_state + 1) (CdkEventSequence*) ((point) - touch_state + 1)
17
18static void
19point_press (PointState *point,
20 CtkWidget *widget,
21 guint button)
22{
23 CdkDisplay *display;
24 CdkDevice *device;
25 CdkSeat *seat;
26 CdkEvent *ev;
27
28 display = ctk_widget_get_display (widget);
29 seat = cdk_display_get_default_seat (display);
30 device = cdk_seat_get_pointer (seat);
31
32 if (point == &mouse_state)
33 {
34 ev = cdk_event_new (CDK_BUTTON_PRESS);
35 ev->any.window = g_object_ref (ctk_widget_get_window (widget))((__typeof__ (ctk_widget_get_window (widget))) (g_object_ref)
(ctk_widget_get_window (widget)))
;
36 ev->button.time = CDK_CURRENT_TIME0L;
37 ev->button.x = point->x;
38 ev->button.y = point->y;
39 ev->button.button = button;
40 ev->button.state = point->state;
41
42 point->state |= CDK_BUTTON1_MASK << (button - 1);
43 }
44 else
45 {
46 ev = cdk_event_new (CDK_TOUCH_BEGIN);
47 ev->any.window = g_object_ref (ctk_widget_get_window (widget))((__typeof__ (ctk_widget_get_window (widget))) (g_object_ref)
(ctk_widget_get_window (widget)))
;
48 ev->touch.time = CDK_CURRENT_TIME0L;
49 ev->touch.x = point->x;
50 ev->touch.y = point->y;
51 ev->touch.sequence = EVENT_SEQUENCE (point)(CdkEventSequence*) ((point) - touch_state + 1);
52
53 if (point == &touch_state[0])
54 ev->touch.emulating_pointer = TRUE(!(0));
55 }
56
57 cdk_event_set_device (ev, device);
58
59 ctk_main_do_event (ev);
60
61 cdk_event_free (ev);
62
63 point->widget = widget;
64}
65
66static void
67point_update (PointState *point,
68 CtkWidget *widget,
69 gdouble x,
70 gdouble y)
71{
72 CdkDisplay *display;
73 CdkDevice *device;
74 CdkSeat *seat;
75 CdkEvent *ev;
76
77 display = ctk_widget_get_display (widget);
78 seat = cdk_display_get_default_seat (display);
79 device = cdk_seat_get_pointer (seat);
80
81 point->x = x;
82 point->y = y;
83
84 if (point == &mouse_state)
85 {
86 ev = cdk_event_new (CDK_MOTION_NOTIFY);
87 ev->any.window = g_object_ref (ctk_widget_get_window (widget))((__typeof__ (ctk_widget_get_window (widget))) (g_object_ref)
(ctk_widget_get_window (widget)))
;
88 ev->button.time = CDK_CURRENT_TIME0L;
89 ev->motion.x = x;
90 ev->motion.y = y;
91 ev->motion.state = point->state;
92 }
93 else
94 {
95 if (!point->widget || widget != point->widget)
96 return;
97
98 ev = cdk_event_new (CDK_TOUCH_UPDATE);
99 ev->any.window = g_object_ref (ctk_widget_get_window (widget))((__typeof__ (ctk_widget_get_window (widget))) (g_object_ref)
(ctk_widget_get_window (widget)))
;
100 ev->touch.time = CDK_CURRENT_TIME0L;
101 ev->touch.x = x;
102 ev->touch.y = y;
103 ev->touch.sequence = EVENT_SEQUENCE (point)(CdkEventSequence*) ((point) - touch_state + 1);
104 ev->touch.state = 0;
105
106 if (point == &touch_state[0])
107 ev->touch.emulating_pointer = TRUE(!(0));
108 }
109
110 cdk_event_set_device (ev, device);
111
112 ctk_main_do_event (ev);
113
114 cdk_event_free (ev);
115}
116
117static void
118point_release (PointState *point,
119 guint button)
120{
121 CdkDisplay *display;
122 CdkDevice *device;
123 CdkSeat *seat;
124 CdkEvent *ev;
125
126 if (point->widget == NULL((void*)0))
8
Assuming field 'widget' is not equal to NULL
9
Taking false branch
127 return;
128
129 display = ctk_widget_get_display (point->widget);
130 seat = cdk_display_get_default_seat (display);
131 device = cdk_seat_get_pointer (seat);
132
133 if (!point->widget)
10
Assuming field 'widget' is non-null
11
Taking false branch
134 return;
135
136 if (point == &mouse_state)
12
Taking false branch
137 {
138 if ((point->state & (CDK_BUTTON1_MASK << (button - 1))) == 0)
139 return;
140
141 ev = cdk_event_new (CDK_BUTTON_RELEASE);
142 ev->any.window = g_object_ref (ctk_widget_get_window (point->widget))((__typeof__ (ctk_widget_get_window (point->widget))) (g_object_ref
) (ctk_widget_get_window (point->widget)))
;
143 ev->button.time = CDK_CURRENT_TIME0L;
144 ev->button.x = point->x;
145 ev->button.y = point->y;
146 ev->button.state = point->state;
147
148 point->state &= ~(CDK_BUTTON1_MASK << (button - 1));
149 }
150 else
151 {
152 ev = cdk_event_new (CDK_TOUCH_END);
153 ev->any.window = g_object_ref (ctk_widget_get_window (point->widget))((__typeof__ (ctk_widget_get_window (point->widget))) (g_object_ref
) (ctk_widget_get_window (point->widget)))
;
154 ev->touch.time = CDK_CURRENT_TIME0L;
155 ev->touch.x = point->x;
156 ev->touch.y = point->y;
157 ev->touch.sequence = EVENT_SEQUENCE (point)(CdkEventSequence*) ((point) - touch_state + 1);
13
Using a fixed address is not portable because that address will probably not be valid in all environments or platforms
158 ev->touch.state = point->state;
159
160 if (point == &touch_state[0])
161 ev->touch.emulating_pointer = TRUE(!(0));
162 }
163
164 cdk_event_set_device (ev, device);
165
166 ctk_main_do_event (ev);
167
168 cdk_event_free (ev);
169}
170
171static const gchar *
172phase_nick (CtkPropagationPhase phase)
173{
174 GTypeClass *class;
175 GEnumValue *value;
176
177 class = g_type_class_ref (CTK_TYPE_PROPAGATION_PHASE(ctk_propagation_phase_get_type ()));
178 value = g_enum_get_value ((GEnumClass*)class, phase);
179 g_type_class_unref (class);
180
181 return value->value_nick;
182}
183
184static const gchar *
185state_nick (CtkEventSequenceState state)
186{
187 GTypeClass *class;
188 GEnumValue *value;
189
190 class = g_type_class_ref (CTK_TYPE_EVENT_SEQUENCE_STATE(ctk_event_sequence_state_get_type ()));
191 value = g_enum_get_value ((GEnumClass*)class, state);
192 g_type_class_unref (class);
193
194 return value->value_nick;
195}
196
197typedef struct {
198 GString *str;
199 gboolean exit;
200} LegacyData;
201
202static gboolean
203legacy_cb (CtkWidget *w, CdkEventButton *button, gpointer data)
204{
205 LegacyData *ld = data;
206
207 if (ld->str->len > 0)
208 g_string_append (ld->str, ", ")(__builtin_constant_p (", ") ? __extension__ ({ const char * const
__val = (", "); g_string_append_len_inline (ld->str, __val
, (__val != ((void*)0)) ? (gssize) strlen (((__val) + !(__val
))) : (gssize) -1); }) : g_string_append_len_inline (ld->str
, ", ", (gssize) -1))
;
209 g_string_append_printf (ld->str, "legacy %s", ctk_widget_get_name (w));
210
211 return ld->exit;
212}
213
214typedef struct {
215 GString *str;
216 CtkEventSequenceState state;
217} GestureData;
218
219static void
220press_cb (CtkGesture *g, gint n_press, gdouble x, gdouble y, gpointer data)
221{
222 CtkEventController *c = CTK_EVENT_CONTROLLER (g)((((CtkEventController*) (void *) g_type_check_instance_cast (
(GTypeInstance*) ((g)), ((ctk_event_controller_get_type ())))
)))
;
223 CdkEventSequence *sequence;
224 CtkPropagationPhase phase;
225 GestureData *gd = data;
226 const gchar *name;
227
228 name = g_object_get_data (G_OBJECT (g)((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((g)), (((GType) ((20) << (2))))))))
, "name");
229 phase = ctk_event_controller_get_propagation_phase (c);
230
231 if (gd->str->len > 0)
232 g_string_append (gd->str, ", ")(__builtin_constant_p (", ") ? __extension__ ({ const char * const
__val = (", "); g_string_append_len_inline (gd->str, __val
, (__val != ((void*)0)) ? (gssize) strlen (((__val) + !(__val
))) : (gssize) -1); }) : g_string_append_len_inline (gd->str
, ", ", (gssize) -1))
;
233 g_string_append_printf (gd->str, "%s %s", phase_nick (phase), name);
234
235 sequence = ctk_gesture_get_last_updated_sequence (g);
236
237 if (sequence)
238 g_string_append_printf (gd->str, " (%x)", GPOINTER_TO_UINT (sequence)((guint) (gulong) (sequence)));
239
240 if (gd->state != CTK_EVENT_SEQUENCE_NONE)
241 ctk_gesture_set_state (g, gd->state);
242}
243
244static void
245cancel_cb (CtkGesture *g, CdkEventSequence *sequence, gpointer data)
246{
247 GestureData *gd = data;
248 const gchar *name;
249
250 name = g_object_get_data (G_OBJECT (g)((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((g)), (((GType) ((20) << (2))))))))
, "name");
251
252 if (gd->str->len > 0)
253 g_string_append (gd->str, ", ")(__builtin_constant_p (", ") ? __extension__ ({ const char * const
__val = (", "); g_string_append_len_inline (gd->str, __val
, (__val != ((void*)0)) ? (gssize) strlen (((__val) + !(__val
))) : (gssize) -1); }) : g_string_append_len_inline (gd->str
, ", ", (gssize) -1))
;
254 g_string_append_printf (gd->str, "%s cancelled", name);
255}
256
257static void
258begin_cb (CtkGesture *g, CdkEventSequence *sequence, gpointer data)
259{
260 GestureData *gd = data;
261 const gchar *name;
262
263 name = g_object_get_data (G_OBJECT (g)((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((g)), (((GType) ((20) << (2))))))))
, "name");
264
265 if (gd->str->len > 0)
266 g_string_append (gd->str, ", ")(__builtin_constant_p (", ") ? __extension__ ({ const char * const
__val = (", "); g_string_append_len_inline (gd->str, __val
, (__val != ((void*)0)) ? (gssize) strlen (((__val) + !(__val
))) : (gssize) -1); }) : g_string_append_len_inline (gd->str
, ", ", (gssize) -1))
;
267 g_string_append_printf (gd->str, "%s began", name);
268
269 if (gd->state != CTK_EVENT_SEQUENCE_NONE)
270 ctk_gesture_set_state (g, gd->state);
271}
272
273static void
274end_cb (CtkGesture *g, CdkEventSequence *sequence, gpointer data)
275{
276 GestureData *gd = data;
277 const gchar *name;
278
279 name = g_object_get_data (G_OBJECT (g)((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((g)), (((GType) ((20) << (2))))))))
, "name");
280
281 if (gd->str->len > 0)
282 g_string_append (gd->str, ", ")(__builtin_constant_p (", ") ? __extension__ ({ const char * const
__val = (", "); g_string_append_len_inline (gd->str, __val
, (__val != ((void*)0)) ? (gssize) strlen (((__val) + !(__val
))) : (gssize) -1); }) : g_string_append_len_inline (gd->str
, ", ", (gssize) -1))
;
283 g_string_append_printf (gd->str, "%s ended", name);
284}
285
286static void
287update_cb (CtkGesture *g, CdkEventSequence *sequence, gpointer data)
288{
289 GestureData *gd = data;
290 const gchar *name;
291
292 name = g_object_get_data (G_OBJECT (g)((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((g)), (((GType) ((20) << (2))))))))
, "name");
293
294 if (gd->str->len > 0)
295 g_string_append (gd->str, ", ")(__builtin_constant_p (", ") ? __extension__ ({ const char * const
__val = (", "); g_string_append_len_inline (gd->str, __val
, (__val != ((void*)0)) ? (gssize) strlen (((__val) + !(__val
))) : (gssize) -1); }) : g_string_append_len_inline (gd->str
, ", ", (gssize) -1))
;
296 g_string_append_printf (gd->str, "%s updated", name);
297}
298
299static void
300state_changed_cb (CtkGesture *g, CdkEventSequence *sequence, CtkEventSequenceState state, gpointer data)
301{
302 GestureData *gd = data;
303 const gchar *name;
304
305 name = g_object_get_data (G_OBJECT (g)((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((g)), (((GType) ((20) << (2))))))))
, "name");
306
307 if (gd->str->len > 0)
308 g_string_append (gd->str, ", ")(__builtin_constant_p (", ") ? __extension__ ({ const char * const
__val = (", "); g_string_append_len_inline (gd->str, __val
, (__val != ((void*)0)) ? (gssize) strlen (((__val) + !(__val
))) : (gssize) -1); }) : g_string_append_len_inline (gd->str
, ", ", (gssize) -1))
;
309 g_string_append_printf (gd->str, "%s state %s", name, state_nick (state));
310
311 if (sequence != NULL((void*)0))
312 g_string_append_printf (gd->str, " (%x)", GPOINTER_TO_UINT (sequence)((guint) (gulong) (sequence)));
313}
314
315
316static CtkGesture *
317add_gesture (CtkWidget *w, const gchar *name, CtkPropagationPhase phase, GString *str, CtkEventSequenceState state)
318{
319 CtkGesture *g;
320 GestureData *data;
321
322 data = g_new (GestureData, 1)((GestureData *) g_malloc_n ((1), sizeof (GestureData)));
323 data->str = str;
324 data->state = state;
325
326 g = ctk_gesture_multi_press_new (w);
327 ctk_gesture_single_set_touch_only (CTK_GESTURE_SINGLE (g)((((CtkGestureSingle*) (void *) g_type_check_instance_cast ((
GTypeInstance*) ((g)), ((ctk_gesture_single_get_type ()))))))
, FALSE(0));
328 ctk_gesture_single_set_button (CTK_GESTURE_SINGLE (g)((((CtkGestureSingle*) (void *) g_type_check_instance_cast ((
GTypeInstance*) ((g)), ((ctk_gesture_single_get_type ()))))))
, 1);
329 ctk_event_controller_set_propagation_phase (CTK_EVENT_CONTROLLER (g)((((CtkEventController*) (void *) g_type_check_instance_cast (
(GTypeInstance*) ((g)), ((ctk_event_controller_get_type ())))
)))
, phase);
330
331 g_object_set_data (G_OBJECT (g)((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((g)), (((GType) ((20) << (2))))))))
, "name", (gpointer)name);
332
333 g_signal_connect (g, "pressed", G_CALLBACK (press_cb), data)g_signal_connect_data ((g), ("pressed"), (((GCallback) (press_cb
))), (data), ((void*)0), (GConnectFlags) 0)
;
334 g_signal_connect (g, "cancel", G_CALLBACK (cancel_cb), data)g_signal_connect_data ((g), ("cancel"), (((GCallback) (cancel_cb
))), (data), ((void*)0), (GConnectFlags) 0)
;
335 g_signal_connect (g, "update", G_CALLBACK (update_cb), data)g_signal_connect_data ((g), ("update"), (((GCallback) (update_cb
))), (data), ((void*)0), (GConnectFlags) 0)
;
336 g_signal_connect (g, "sequence-state-changed", G_CALLBACK (state_changed_cb), data)g_signal_connect_data ((g), ("sequence-state-changed"), (((GCallback
) (state_changed_cb))), (data), ((void*)0), (GConnectFlags) 0
)
;
337
338 return g;
339}
340
341static CtkGesture *
342add_mt_gesture (CtkWidget *w, const gchar *name, CtkPropagationPhase phase, GString *str, CtkEventSequenceState state)
343{
344 CtkGesture *g;
345 GestureData *data;
346
347 data = g_new (GestureData, 1)((GestureData *) g_malloc_n ((1), sizeof (GestureData)));
348 data->str = str;
349 data->state = state;
350
351 g = ctk_gesture_rotate_new (w);
352 ctk_event_controller_set_propagation_phase (CTK_EVENT_CONTROLLER (g)((((CtkEventController*) (void *) g_type_check_instance_cast (
(GTypeInstance*) ((g)), ((ctk_event_controller_get_type ())))
)))
, phase);
353
354 g_object_set_data (G_OBJECT (g)((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((g)), (((GType) ((20) << (2))))))))
, "name", (gpointer)name);
355
356 g_signal_connect (g, "begin", G_CALLBACK (begin_cb), data)g_signal_connect_data ((g), ("begin"), (((GCallback) (begin_cb
))), (data), ((void*)0), (GConnectFlags) 0)
;
357 g_signal_connect (g, "update", G_CALLBACK (update_cb), data)g_signal_connect_data ((g), ("update"), (((GCallback) (update_cb
))), (data), ((void*)0), (GConnectFlags) 0)
;
358 g_signal_connect (g, "end", G_CALLBACK (end_cb), data)g_signal_connect_data ((g), ("end"), (((GCallback) (end_cb)))
, (data), ((void*)0), (GConnectFlags) 0)
;
359 g_signal_connect (g, "sequence-state-changed", G_CALLBACK (state_changed_cb), data)g_signal_connect_data ((g), ("sequence-state-changed"), (((GCallback
) (state_changed_cb))), (data), ((void*)0), (GConnectFlags) 0
)
;
360
361 return g;
362}
363
364static void
365add_legacy (CtkWidget *w, GString *str, gboolean exit)
366{
367 LegacyData *data;
368
369 data = g_new (LegacyData, 1)((LegacyData *) g_malloc_n ((1), sizeof (LegacyData)));
370 data->str = str;
371 data->exit = exit;
372 g_signal_connect (w, "button-press-event", G_CALLBACK (legacy_cb), data)g_signal_connect_data ((w), ("button-press-event"), (((GCallback
) (legacy_cb))), (data), ((void*)0), (GConnectFlags) 0)
;
373}
374
375static void
376test_phases (void)
377{
378 CtkWidget *A, *B, *C;
379 GString *str;
380
381 A = ctk_window_new (CTK_WINDOW_TOPLEVEL);
382 ctk_widget_set_name (A, "A");
383 B = ctk_box_new (CTK_ORIENTATION_HORIZONTAL, 0);
384 ctk_widget_set_name (B, "B");
385 C = ctk_event_box_new ();
386 ctk_widget_set_hexpand (C, TRUE(!(0)));
387 ctk_widget_set_vexpand (C, TRUE(!(0)));
388 ctk_widget_set_name (C, "C");
389
390 ctk_container_add (CTK_CONTAINER (A)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((A)), ((ctk_container_get_type ()))))))
, B);
391 ctk_container_add (CTK_CONTAINER (B)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((B)), ((ctk_container_get_type ()))))))
, C);
392
393 ctk_widget_show_all (A);
394
395 str = g_string_new ("");
396
397 add_gesture (A, "a1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
398 add_gesture (B, "b1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
399 add_gesture (C, "c1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
400 add_gesture (A, "a2", CTK_PHASE_TARGET, str, CTK_EVENT_SEQUENCE_NONE);
401 add_gesture (B, "b2", CTK_PHASE_TARGET, str, CTK_EVENT_SEQUENCE_NONE);
402 add_gesture (C, "c2", CTK_PHASE_TARGET, str, CTK_EVENT_SEQUENCE_NONE);
403 add_gesture (A, "a3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
404 add_gesture (B, "b3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
405 add_gesture (C, "c3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
406
407 point_update (&mouse_state, C, 10, 10);
408 point_press (&mouse_state, C, 1);
409
410 g_assert_cmpstr (str->str, ==,do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "bubble c3, " "bubble b3, "
"bubble a3"); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 417, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"bubble c3, \" \"bubble b3, \" \"bubble a3\""
, __s1, "==", __s2); } while (0)
411 "capture a1, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "bubble c3, " "bubble b3, "
"bubble a3"); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 417, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"bubble c3, \" \"bubble b3, \" \"bubble a3\""
, __s1, "==", __s2); } while (0)
412 "capture b1, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "bubble c3, " "bubble b3, "
"bubble a3"); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 417, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"bubble c3, \" \"bubble b3, \" \"bubble a3\""
, __s1, "==", __s2); } while (0)
413 "capture c1, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "bubble c3, " "bubble b3, "
"bubble a3"); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 417, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"bubble c3, \" \"bubble b3, \" \"bubble a3\""
, __s1, "==", __s2); } while (0)
414 "target c2, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "bubble c3, " "bubble b3, "
"bubble a3"); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 417, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"bubble c3, \" \"bubble b3, \" \"bubble a3\""
, __s1, "==", __s2); } while (0)
415 "bubble c3, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "bubble c3, " "bubble b3, "
"bubble a3"); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 417, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"bubble c3, \" \"bubble b3, \" \"bubble a3\""
, __s1, "==", __s2); } while (0)
416 "bubble b3, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "bubble c3, " "bubble b3, "
"bubble a3"); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 417, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"bubble c3, \" \"bubble b3, \" \"bubble a3\""
, __s1, "==", __s2); } while (0)
417 "bubble a3")do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "bubble c3, " "bubble b3, "
"bubble a3"); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 417, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"bubble c3, \" \"bubble b3, \" \"bubble a3\""
, __s1, "==", __s2); } while (0)
;
418
419 g_string_free (str, TRUE)(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (
(str), ((!(0)))) : g_string_free_and_steal (str)) : (g_string_free
) ((str), ((!(0)))))
;
420
421 ctk_widget_destroy (A);
422}
423
424static void
425test_mixed (void)
426{
427 CtkWidget *A, *B, *C;
428 GString *str;
429
430 A = ctk_window_new (CTK_WINDOW_TOPLEVEL);
431 ctk_widget_set_name (A, "A");
432 B = ctk_box_new (CTK_ORIENTATION_HORIZONTAL, 0);
433 ctk_widget_set_name (B, "B");
434 C = ctk_event_box_new ();
435 ctk_widget_set_hexpand (C, TRUE(!(0)));
436 ctk_widget_set_vexpand (C, TRUE(!(0)));
437 ctk_widget_set_name (C, "C");
438
439 ctk_container_add (CTK_CONTAINER (A)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((A)), ((ctk_container_get_type ()))))))
, B);
440 ctk_container_add (CTK_CONTAINER (B)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((B)), ((ctk_container_get_type ()))))))
, C);
441
442 ctk_widget_show_all (A);
443
444 str = g_string_new ("");
445
446 add_gesture (A, "a1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
447 add_gesture (B, "b1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
448 add_gesture (C, "c1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
449 add_gesture (A, "a2", CTK_PHASE_TARGET, str, CTK_EVENT_SEQUENCE_NONE);
450 add_gesture (B, "b2", CTK_PHASE_TARGET, str, CTK_EVENT_SEQUENCE_NONE);
451 add_gesture (C, "c2", CTK_PHASE_TARGET, str, CTK_EVENT_SEQUENCE_NONE);
452 add_gesture (A, "a3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
453 add_gesture (B, "b3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
454 add_gesture (C, "c3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
455
456 add_legacy (A, str, CDK_EVENT_PROPAGATE((0)));
457 add_legacy (B, str, CDK_EVENT_PROPAGATE((0)));
458 add_legacy (C, str, CDK_EVENT_PROPAGATE((0)));
459
460 point_update (&mouse_state, C, 10, 10);
461 point_press (&mouse_state, C, 1);
462
463 g_assert_cmpstr (str->str, ==,do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "legacy C, " "bubble c3, "
"legacy B, " "bubble b3, " "legacy A, " "bubble a3"); if (g_strcmp0
(__s1, __s2) == 0) ; else g_assertion_message_cmpstr (((gchar
*) 0), "gestures.c", 473, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"legacy C, \" \"bubble c3, \" \"legacy B, \" \"bubble b3, \" \"legacy A, \" \"bubble a3\""
, __s1, "==", __s2); } while (0)
464 "capture a1, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "legacy C, " "bubble c3, "
"legacy B, " "bubble b3, " "legacy A, " "bubble a3"); if (g_strcmp0
(__s1, __s2) == 0) ; else g_assertion_message_cmpstr (((gchar
*) 0), "gestures.c", 473, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"legacy C, \" \"bubble c3, \" \"legacy B, \" \"bubble b3, \" \"legacy A, \" \"bubble a3\""
, __s1, "==", __s2); } while (0)
465 "capture b1, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "legacy C, " "bubble c3, "
"legacy B, " "bubble b3, " "legacy A, " "bubble a3"); if (g_strcmp0
(__s1, __s2) == 0) ; else g_assertion_message_cmpstr (((gchar
*) 0), "gestures.c", 473, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"legacy C, \" \"bubble c3, \" \"legacy B, \" \"bubble b3, \" \"legacy A, \" \"bubble a3\""
, __s1, "==", __s2); } while (0)
466 "capture c1, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "legacy C, " "bubble c3, "
"legacy B, " "bubble b3, " "legacy A, " "bubble a3"); if (g_strcmp0
(__s1, __s2) == 0) ; else g_assertion_message_cmpstr (((gchar
*) 0), "gestures.c", 473, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"legacy C, \" \"bubble c3, \" \"legacy B, \" \"bubble b3, \" \"legacy A, \" \"bubble a3\""
, __s1, "==", __s2); } while (0)
467 "target c2, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "legacy C, " "bubble c3, "
"legacy B, " "bubble b3, " "legacy A, " "bubble a3"); if (g_strcmp0
(__s1, __s2) == 0) ; else g_assertion_message_cmpstr (((gchar
*) 0), "gestures.c", 473, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"legacy C, \" \"bubble c3, \" \"legacy B, \" \"bubble b3, \" \"legacy A, \" \"bubble a3\""
, __s1, "==", __s2); } while (0)
468 "legacy C, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "legacy C, " "bubble c3, "
"legacy B, " "bubble b3, " "legacy A, " "bubble a3"); if (g_strcmp0
(__s1, __s2) == 0) ; else g_assertion_message_cmpstr (((gchar
*) 0), "gestures.c", 473, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"legacy C, \" \"bubble c3, \" \"legacy B, \" \"bubble b3, \" \"legacy A, \" \"bubble a3\""
, __s1, "==", __s2); } while (0)
469 "bubble c3, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "legacy C, " "bubble c3, "
"legacy B, " "bubble b3, " "legacy A, " "bubble a3"); if (g_strcmp0
(__s1, __s2) == 0) ; else g_assertion_message_cmpstr (((gchar
*) 0), "gestures.c", 473, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"legacy C, \" \"bubble c3, \" \"legacy B, \" \"bubble b3, \" \"legacy A, \" \"bubble a3\""
, __s1, "==", __s2); } while (0)
470 "legacy B, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "legacy C, " "bubble c3, "
"legacy B, " "bubble b3, " "legacy A, " "bubble a3"); if (g_strcmp0
(__s1, __s2) == 0) ; else g_assertion_message_cmpstr (((gchar
*) 0), "gestures.c", 473, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"legacy C, \" \"bubble c3, \" \"legacy B, \" \"bubble b3, \" \"legacy A, \" \"bubble a3\""
, __s1, "==", __s2); } while (0)
471 "bubble b3, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "legacy C, " "bubble c3, "
"legacy B, " "bubble b3, " "legacy A, " "bubble a3"); if (g_strcmp0
(__s1, __s2) == 0) ; else g_assertion_message_cmpstr (((gchar
*) 0), "gestures.c", 473, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"legacy C, \" \"bubble c3, \" \"legacy B, \" \"bubble b3, \" \"legacy A, \" \"bubble a3\""
, __s1, "==", __s2); } while (0)
472 "legacy A, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "legacy C, " "bubble c3, "
"legacy B, " "bubble b3, " "legacy A, " "bubble a3"); if (g_strcmp0
(__s1, __s2) == 0) ; else g_assertion_message_cmpstr (((gchar
*) 0), "gestures.c", 473, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"legacy C, \" \"bubble c3, \" \"legacy B, \" \"bubble b3, \" \"legacy A, \" \"bubble a3\""
, __s1, "==", __s2); } while (0)
473 "bubble a3")do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "legacy C, " "bubble c3, "
"legacy B, " "bubble b3, " "legacy A, " "bubble a3"); if (g_strcmp0
(__s1, __s2) == 0) ; else g_assertion_message_cmpstr (((gchar
*) 0), "gestures.c", 473, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"legacy C, \" \"bubble c3, \" \"legacy B, \" \"bubble b3, \" \"legacy A, \" \"bubble a3\""
, __s1, "==", __s2); } while (0)
;
474
475 g_string_free (str, TRUE)(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (
(str), ((!(0)))) : g_string_free_and_steal (str)) : (g_string_free
) ((str), ((!(0)))))
;
476
477 ctk_widget_destroy (A);
478}
479
480static void
481test_early_exit (void)
482{
483 CtkWidget *A, *B, *C;
484 GString *str;
485
486 A = ctk_window_new (CTK_WINDOW_TOPLEVEL);
487 ctk_widget_set_name (A, "A");
488 B = ctk_box_new (CTK_ORIENTATION_HORIZONTAL, 0);
489 ctk_widget_set_name (B, "B");
490 C = ctk_event_box_new ();
491 ctk_widget_set_hexpand (C, TRUE(!(0)));
492 ctk_widget_set_vexpand (C, TRUE(!(0)));
493 ctk_widget_set_name (C, "C");
494
495 ctk_container_add (CTK_CONTAINER (A)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((A)), ((ctk_container_get_type ()))))))
, B);
496 ctk_container_add (CTK_CONTAINER (B)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((B)), ((ctk_container_get_type ()))))))
, C);
497
498 ctk_widget_show_all (A);
499
500 str = g_string_new ("");
501
502 add_gesture (A, "a1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
503 add_gesture (B, "b1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
504 add_gesture (C, "c1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
505 add_gesture (C, "c2", CTK_PHASE_TARGET, str, CTK_EVENT_SEQUENCE_NONE);
506 add_gesture (A, "a3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
507 add_gesture (B, "b3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
508 add_gesture (C, "c3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
509
510 add_legacy (A, str, CDK_EVENT_PROPAGATE((0)));
511 add_legacy (B, str, CDK_EVENT_STOP((!(0))));
512 add_legacy (C, str, CDK_EVENT_PROPAGATE((0)));
513
514 point_update (&mouse_state, C, 10, 10);
515 point_press (&mouse_state, C, 1);
516
517 g_assert_cmpstr (str->str, ==,do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "legacy C, " "bubble c3, "
"legacy B"); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 524, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"legacy C, \" \"bubble c3, \" \"legacy B\""
, __s1, "==", __s2); } while (0)
518 "capture a1, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "legacy C, " "bubble c3, "
"legacy B"); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 524, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"legacy C, \" \"bubble c3, \" \"legacy B\""
, __s1, "==", __s2); } while (0)
519 "capture b1, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "legacy C, " "bubble c3, "
"legacy B"); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 524, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"legacy C, \" \"bubble c3, \" \"legacy B\""
, __s1, "==", __s2); } while (0)
520 "capture c1, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "legacy C, " "bubble c3, "
"legacy B"); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 524, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"legacy C, \" \"bubble c3, \" \"legacy B\""
, __s1, "==", __s2); } while (0)
521 "target c2, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "legacy C, " "bubble c3, "
"legacy B"); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 524, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"legacy C, \" \"bubble c3, \" \"legacy B\""
, __s1, "==", __s2); } while (0)
522 "legacy C, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "legacy C, " "bubble c3, "
"legacy B"); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 524, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"legacy C, \" \"bubble c3, \" \"legacy B\""
, __s1, "==", __s2); } while (0)
523 "bubble c3, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "legacy C, " "bubble c3, "
"legacy B"); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 524, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"legacy C, \" \"bubble c3, \" \"legacy B\""
, __s1, "==", __s2); } while (0)
524 "legacy B")do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "legacy C, " "bubble c3, "
"legacy B"); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 524, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"legacy C, \" \"bubble c3, \" \"legacy B\""
, __s1, "==", __s2); } while (0)
;
525
526 g_string_free (str, TRUE)(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (
(str), ((!(0)))) : g_string_free_and_steal (str)) : (g_string_free
) ((str), ((!(0)))))
;
527
528 ctk_widget_destroy (A);
529}
530
531static void
532test_claim_capture (void)
533{
534 CtkWidget *A, *B, *C;
535 GString *str;
536
537 A = ctk_window_new (CTK_WINDOW_TOPLEVEL);
538 ctk_widget_set_name (A, "A");
539 B = ctk_box_new (CTK_ORIENTATION_HORIZONTAL, 0);
540 ctk_widget_set_name (B, "B");
541 C = ctk_event_box_new ();
542 ctk_widget_set_hexpand (C, TRUE(!(0)));
543 ctk_widget_set_vexpand (C, TRUE(!(0)));
544 ctk_widget_set_name (C, "C");
545
546 ctk_container_add (CTK_CONTAINER (A)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((A)), ((ctk_container_get_type ()))))))
, B);
547 ctk_container_add (CTK_CONTAINER (B)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((B)), ((ctk_container_get_type ()))))))
, C);
548
549 ctk_widget_show_all (A);
550
551 str = g_string_new ("");
552
553 add_gesture (A, "a1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
554 add_gesture (B, "b1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
555 add_gesture (C, "c1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_CLAIMED);
556 add_gesture (C, "c2", CTK_PHASE_TARGET, str, CTK_EVENT_SEQUENCE_NONE);
557 add_gesture (A, "a3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
558 add_gesture (B, "b3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
559 add_gesture (C, "c3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
560
561 point_update (&mouse_state, C, 10, 10);
562 point_press (&mouse_state, C, 1);
563
564 g_assert_cmpstr (str->str, ==,do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "c1 state claimed"); if (g_strcmp0
(__s1, __s2) == 0) ; else g_assertion_message_cmpstr (((gchar
*) 0), "gestures.c", 568, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"c1 state claimed\""
, __s1, "==", __s2); } while (0)
565 "capture a1, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "c1 state claimed"); if (g_strcmp0
(__s1, __s2) == 0) ; else g_assertion_message_cmpstr (((gchar
*) 0), "gestures.c", 568, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"c1 state claimed\""
, __s1, "==", __s2); } while (0)
566 "capture b1, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "c1 state claimed"); if (g_strcmp0
(__s1, __s2) == 0) ; else g_assertion_message_cmpstr (((gchar
*) 0), "gestures.c", 568, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"c1 state claimed\""
, __s1, "==", __s2); } while (0)
567 "capture c1, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "c1 state claimed"); if (g_strcmp0
(__s1, __s2) == 0) ; else g_assertion_message_cmpstr (((gchar
*) 0), "gestures.c", 568, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"c1 state claimed\""
, __s1, "==", __s2); } while (0)
568 "c1 state claimed")do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "c1 state claimed"); if (g_strcmp0
(__s1, __s2) == 0) ; else g_assertion_message_cmpstr (((gchar
*) 0), "gestures.c", 568, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"c1 state claimed\""
, __s1, "==", __s2); } while (0)
;
569
570 g_string_free (str, TRUE)(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (
(str), ((!(0)))) : g_string_free_and_steal (str)) : (g_string_free
) ((str), ((!(0)))))
;
571
572 ctk_widget_destroy (A);
573}
574
575static void
576test_claim_target (void)
577{
578 CtkWidget *A, *B, *C;
579 GString *str;
580
581 A = ctk_window_new (CTK_WINDOW_TOPLEVEL);
582 ctk_widget_set_name (A, "A");
583 B = ctk_box_new (CTK_ORIENTATION_HORIZONTAL, 0);
584 ctk_widget_set_name (B, "B");
585 C = ctk_event_box_new ();
586 ctk_widget_set_hexpand (C, TRUE(!(0)));
587 ctk_widget_set_vexpand (C, TRUE(!(0)));
588 ctk_widget_set_name (C, "C");
589
590 ctk_container_add (CTK_CONTAINER (A)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((A)), ((ctk_container_get_type ()))))))
, B);
591 ctk_container_add (CTK_CONTAINER (B)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((B)), ((ctk_container_get_type ()))))))
, C);
592
593 ctk_widget_show_all (A);
594
595 str = g_string_new ("");
596
597 add_gesture (A, "a1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
598 add_gesture (B, "b1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
599 add_gesture (C, "c1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
600 add_gesture (C, "c2", CTK_PHASE_TARGET, str, CTK_EVENT_SEQUENCE_CLAIMED);
601 add_gesture (A, "a3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
602 add_gesture (B, "b3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
603 add_gesture (C, "c3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
604
605 point_update (&mouse_state, C, 10, 10);
606 point_press (&mouse_state, C, 1);
607
608 g_assert_cmpstr (str->str, ==,do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "c2 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 613, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
609 "capture a1, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "c2 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 613, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
610 "capture b1, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "c2 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 613, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
611 "capture c1, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "c2 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 613, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
612 "target c2, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "c2 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 613, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
613 "c2 state claimed")do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "c2 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 613, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
;
614
615 g_string_free (str, TRUE)(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (
(str), ((!(0)))) : g_string_free_and_steal (str)) : (g_string_free
) ((str), ((!(0)))))
;
616
617 ctk_widget_destroy (A);
618}
619
620static void
621test_claim_bubble (void)
622{
623 CtkWidget *A, *B, *C;
624 GString *str;
625
626 A = ctk_window_new (CTK_WINDOW_TOPLEVEL);
627 ctk_widget_set_name (A, "A");
628 B = ctk_box_new (CTK_ORIENTATION_HORIZONTAL, 0);
629 ctk_widget_set_name (B, "B");
630 C = ctk_event_box_new ();
631 ctk_widget_set_hexpand (C, TRUE(!(0)));
632 ctk_widget_set_vexpand (C, TRUE(!(0)));
633 ctk_widget_set_name (C, "C");
634
635 ctk_container_add (CTK_CONTAINER (A)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((A)), ((ctk_container_get_type ()))))))
, B);
636 ctk_container_add (CTK_CONTAINER (B)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((B)), ((ctk_container_get_type ()))))))
, C);
637
638 ctk_widget_show_all (A);
639
640 str = g_string_new ("");
641
642 add_gesture (A, "a1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
643 add_gesture (B, "b1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
644 add_gesture (C, "c1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
645 add_gesture (C, "c2", CTK_PHASE_TARGET, str, CTK_EVENT_SEQUENCE_NONE);
646 add_gesture (A, "a3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
647 add_gesture (B, "b3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_CLAIMED);
648 add_gesture (C, "c3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
649
650 point_update (&mouse_state, C, 10, 10);
651 point_press (&mouse_state, C, 1);
652
653 g_assert_cmpstr (str->str, ==,do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "bubble c3, " "bubble b3, "
"c3 cancelled, " "c2 cancelled, " "c1 cancelled, " "b3 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 664, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"bubble c3, \" \"bubble b3, \" \"c3 cancelled, \" \"c2 cancelled, \" \"c1 cancelled, \" \"b3 state claimed\""
, __s1, "==", __s2); } while (0)
654 "capture a1, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "bubble c3, " "bubble b3, "
"c3 cancelled, " "c2 cancelled, " "c1 cancelled, " "b3 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 664, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"bubble c3, \" \"bubble b3, \" \"c3 cancelled, \" \"c2 cancelled, \" \"c1 cancelled, \" \"b3 state claimed\""
, __s1, "==", __s2); } while (0)
655 "capture b1, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "bubble c3, " "bubble b3, "
"c3 cancelled, " "c2 cancelled, " "c1 cancelled, " "b3 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 664, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"bubble c3, \" \"bubble b3, \" \"c3 cancelled, \" \"c2 cancelled, \" \"c1 cancelled, \" \"b3 state claimed\""
, __s1, "==", __s2); } while (0)
656 "capture c1, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "bubble c3, " "bubble b3, "
"c3 cancelled, " "c2 cancelled, " "c1 cancelled, " "b3 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 664, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"bubble c3, \" \"bubble b3, \" \"c3 cancelled, \" \"c2 cancelled, \" \"c1 cancelled, \" \"b3 state claimed\""
, __s1, "==", __s2); } while (0)
657 "target c2, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "bubble c3, " "bubble b3, "
"c3 cancelled, " "c2 cancelled, " "c1 cancelled, " "b3 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 664, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"bubble c3, \" \"bubble b3, \" \"c3 cancelled, \" \"c2 cancelled, \" \"c1 cancelled, \" \"b3 state claimed\""
, __s1, "==", __s2); } while (0)
658 "bubble c3, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "bubble c3, " "bubble b3, "
"c3 cancelled, " "c2 cancelled, " "c1 cancelled, " "b3 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 664, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"bubble c3, \" \"bubble b3, \" \"c3 cancelled, \" \"c2 cancelled, \" \"c1 cancelled, \" \"b3 state claimed\""
, __s1, "==", __s2); } while (0)
659 "bubble b3, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "bubble c3, " "bubble b3, "
"c3 cancelled, " "c2 cancelled, " "c1 cancelled, " "b3 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 664, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"bubble c3, \" \"bubble b3, \" \"c3 cancelled, \" \"c2 cancelled, \" \"c1 cancelled, \" \"b3 state claimed\""
, __s1, "==", __s2); } while (0)
660 "c3 cancelled, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "bubble c3, " "bubble b3, "
"c3 cancelled, " "c2 cancelled, " "c1 cancelled, " "b3 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 664, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"bubble c3, \" \"bubble b3, \" \"c3 cancelled, \" \"c2 cancelled, \" \"c1 cancelled, \" \"b3 state claimed\""
, __s1, "==", __s2); } while (0)
661 "c2 cancelled, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "bubble c3, " "bubble b3, "
"c3 cancelled, " "c2 cancelled, " "c1 cancelled, " "b3 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 664, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"bubble c3, \" \"bubble b3, \" \"c3 cancelled, \" \"c2 cancelled, \" \"c1 cancelled, \" \"b3 state claimed\""
, __s1, "==", __s2); } while (0)
662 "c1 cancelled, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "bubble c3, " "bubble b3, "
"c3 cancelled, " "c2 cancelled, " "c1 cancelled, " "b3 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 664, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"bubble c3, \" \"bubble b3, \" \"c3 cancelled, \" \"c2 cancelled, \" \"c1 cancelled, \" \"b3 state claimed\""
, __s1, "==", __s2); } while (0)
663 "b3 state claimed"do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "bubble c3, " "bubble b3, "
"c3 cancelled, " "c2 cancelled, " "c1 cancelled, " "b3 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 664, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"bubble c3, \" \"bubble b3, \" \"c3 cancelled, \" \"c2 cancelled, \" \"c1 cancelled, \" \"b3 state claimed\""
, __s1, "==", __s2); } while (0)
664 )do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "bubble c3, " "bubble b3, "
"c3 cancelled, " "c2 cancelled, " "c1 cancelled, " "b3 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 664, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"bubble c3, \" \"bubble b3, \" \"c3 cancelled, \" \"c2 cancelled, \" \"c1 cancelled, \" \"b3 state claimed\""
, __s1, "==", __s2); } while (0)
;
665
666 g_string_free (str, TRUE)(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (
(str), ((!(0)))) : g_string_free_and_steal (str)) : (g_string_free
) ((str), ((!(0)))))
;
667
668 ctk_widget_destroy (A);
669}
670
671static void
672test_early_claim_capture (void)
673{
674 CtkWidget *A, *B, *C;
675 CtkGesture *g;
676 GString *str;
677
678 A = ctk_window_new (CTK_WINDOW_TOPLEVEL);
679 ctk_widget_set_name (A, "A");
680 B = ctk_box_new (CTK_ORIENTATION_HORIZONTAL, 0);
681 ctk_widget_set_name (B, "B");
682 C = ctk_event_box_new ();
683 ctk_widget_set_hexpand (C, TRUE(!(0)));
684 ctk_widget_set_vexpand (C, TRUE(!(0)));
685 ctk_widget_set_name (C, "C");
686
687 ctk_container_add (CTK_CONTAINER (A)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((A)), ((ctk_container_get_type ()))))))
, B);
688 ctk_container_add (CTK_CONTAINER (B)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((B)), ((ctk_container_get_type ()))))))
, C);
689
690 ctk_widget_show_all (A);
691
692 str = g_string_new ("");
693
694 add_gesture (A, "a1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
695 g = add_gesture (B, "b1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_CLAIMED);
696 add_gesture (C, "c1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_CLAIMED);
697 add_gesture (C, "c2", CTK_PHASE_TARGET, str, CTK_EVENT_SEQUENCE_NONE);
698 add_gesture (A, "a3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
699 add_gesture (B, "b3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
700 add_gesture (C, "c3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
701
702 point_update (&mouse_state, C, 10, 10);
703 point_press (&mouse_state, C, 1);
704
705 g_assert_cmpstr (str->str, ==,do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "b1 state claimed"); if (g_strcmp0 (__s1, __s2
) == 0) ; else g_assertion_message_cmpstr (((gchar*) 0), "gestures.c"
, 708, ((const char*) (__func__)), "str->str" " " "==" " "
"\"capture a1, \" \"capture b1, \" \"b1 state claimed\"", __s1
, "==", __s2); } while (0)
706 "capture a1, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "b1 state claimed"); if (g_strcmp0 (__s1, __s2
) == 0) ; else g_assertion_message_cmpstr (((gchar*) 0), "gestures.c"
, 708, ((const char*) (__func__)), "str->str" " " "==" " "
"\"capture a1, \" \"capture b1, \" \"b1 state claimed\"", __s1
, "==", __s2); } while (0)
707 "capture b1, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "b1 state claimed"); if (g_strcmp0 (__s1, __s2
) == 0) ; else g_assertion_message_cmpstr (((gchar*) 0), "gestures.c"
, 708, ((const char*) (__func__)), "str->str" " " "==" " "
"\"capture a1, \" \"capture b1, \" \"b1 state claimed\"", __s1
, "==", __s2); } while (0)
708 "b1 state claimed")do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "b1 state claimed"); if (g_strcmp0 (__s1, __s2
) == 0) ; else g_assertion_message_cmpstr (((gchar*) 0), "gestures.c"
, 708, ((const char*) (__func__)), "str->str" " " "==" " "
"\"capture a1, \" \"capture b1, \" \"b1 state claimed\"", __s1
, "==", __s2); } while (0)
;
709
710 /* Reset the string */
711 g_string_erase (str, 0, str->len);
712
713 ctk_gesture_set_state (g, CTK_EVENT_SEQUENCE_DENIED);
714
715 g_assert_cmpstr (str->str, ==,do { const char *__s1 = (str->str), *__s2 = ("capture c1, "
"c1 state claimed, " "b1 state denied"); if (g_strcmp0 (__s1
, __s2) == 0) ; else g_assertion_message_cmpstr (((gchar*) 0)
, "gestures.c", 718, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture c1, \" \"c1 state claimed, \" \"b1 state denied\""
, __s1, "==", __s2); } while (0)
716 "capture c1, "do { const char *__s1 = (str->str), *__s2 = ("capture c1, "
"c1 state claimed, " "b1 state denied"); if (g_strcmp0 (__s1
, __s2) == 0) ; else g_assertion_message_cmpstr (((gchar*) 0)
, "gestures.c", 718, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture c1, \" \"c1 state claimed, \" \"b1 state denied\""
, __s1, "==", __s2); } while (0)
717 "c1 state claimed, "do { const char *__s1 = (str->str), *__s2 = ("capture c1, "
"c1 state claimed, " "b1 state denied"); if (g_strcmp0 (__s1
, __s2) == 0) ; else g_assertion_message_cmpstr (((gchar*) 0)
, "gestures.c", 718, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture c1, \" \"c1 state claimed, \" \"b1 state denied\""
, __s1, "==", __s2); } while (0)
718 "b1 state denied")do { const char *__s1 = (str->str), *__s2 = ("capture c1, "
"c1 state claimed, " "b1 state denied"); if (g_strcmp0 (__s1
, __s2) == 0) ; else g_assertion_message_cmpstr (((gchar*) 0)
, "gestures.c", 718, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture c1, \" \"c1 state claimed, \" \"b1 state denied\""
, __s1, "==", __s2); } while (0)
;
719
720 point_release (&mouse_state, 1);
721
722 g_string_free (str, TRUE)(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (
(str), ((!(0)))) : g_string_free_and_steal (str)) : (g_string_free
) ((str), ((!(0)))))
;
723 ctk_widget_destroy (A);
724}
725
726static void
727test_late_claim_capture (void)
728{
729 CtkWidget *A, *B, *C;
730 CtkGesture *g;
731 GString *str;
732
733 A = ctk_window_new (CTK_WINDOW_TOPLEVEL);
734 ctk_widget_set_name (A, "A");
735 B = ctk_box_new (CTK_ORIENTATION_HORIZONTAL, 0);
736 ctk_widget_set_name (B, "B");
737 C = ctk_event_box_new ();
738 ctk_widget_set_hexpand (C, TRUE(!(0)));
739 ctk_widget_set_vexpand (C, TRUE(!(0)));
740 ctk_widget_set_name (C, "C");
741
742 ctk_container_add (CTK_CONTAINER (A)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((A)), ((ctk_container_get_type ()))))))
, B);
743 ctk_container_add (CTK_CONTAINER (B)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((B)), ((ctk_container_get_type ()))))))
, C);
744
745 ctk_widget_show_all (A);
746
747 str = g_string_new ("");
748
749 add_gesture (A, "a1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
750 g = add_gesture (B, "b1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
751 add_gesture (C, "c1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
752 add_gesture (C, "c2", CTK_PHASE_TARGET, str, CTK_EVENT_SEQUENCE_CLAIMED);
753 add_gesture (A, "a3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
754 add_gesture (B, "b3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
755 add_gesture (C, "c3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
756
757 point_update (&mouse_state, C, 10, 10);
758 point_press (&mouse_state, C, 1);
759
760 g_assert_cmpstr (str->str, ==,do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "c2 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 765, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
761 "capture a1, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "c2 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 765, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
762 "capture b1, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "c2 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 765, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
763 "capture c1, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "c2 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 765, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
764 "target c2, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "c2 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 765, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
765 "c2 state claimed")do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "c2 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 765, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
;
766
767 /* Reset the string */
768 g_string_erase (str, 0, str->len);
769
770 ctk_gesture_set_state (g, CTK_EVENT_SEQUENCE_CLAIMED);
771
772 g_assert_cmpstr (str->str, ==,do { const char *__s1 = (str->str), *__s2 = ("c2 cancelled, "
"c1 cancelled, " "b1 state claimed"); if (g_strcmp0 (__s1, __s2
) == 0) ; else g_assertion_message_cmpstr (((gchar*) 0), "gestures.c"
, 775, ((const char*) (__func__)), "str->str" " " "==" " "
"\"c2 cancelled, \" \"c1 cancelled, \" \"b1 state claimed\""
, __s1, "==", __s2); } while (0)
773 "c2 cancelled, "do { const char *__s1 = (str->str), *__s2 = ("c2 cancelled, "
"c1 cancelled, " "b1 state claimed"); if (g_strcmp0 (__s1, __s2
) == 0) ; else g_assertion_message_cmpstr (((gchar*) 0), "gestures.c"
, 775, ((const char*) (__func__)), "str->str" " " "==" " "
"\"c2 cancelled, \" \"c1 cancelled, \" \"b1 state claimed\""
, __s1, "==", __s2); } while (0)
774 "c1 cancelled, "do { const char *__s1 = (str->str), *__s2 = ("c2 cancelled, "
"c1 cancelled, " "b1 state claimed"); if (g_strcmp0 (__s1, __s2
) == 0) ; else g_assertion_message_cmpstr (((gchar*) 0), "gestures.c"
, 775, ((const char*) (__func__)), "str->str" " " "==" " "
"\"c2 cancelled, \" \"c1 cancelled, \" \"b1 state claimed\""
, __s1, "==", __s2); } while (0)
775 "b1 state claimed")do { const char *__s1 = (str->str), *__s2 = ("c2 cancelled, "
"c1 cancelled, " "b1 state claimed"); if (g_strcmp0 (__s1, __s2
) == 0) ; else g_assertion_message_cmpstr (((gchar*) 0), "gestures.c"
, 775, ((const char*) (__func__)), "str->str" " " "==" " "
"\"c2 cancelled, \" \"c1 cancelled, \" \"b1 state claimed\""
, __s1, "==", __s2); } while (0)
;
776
777 point_release (&mouse_state, 1);
778
779 g_string_free (str, TRUE)(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (
(str), ((!(0)))) : g_string_free_and_steal (str)) : (g_string_free
) ((str), ((!(0)))))
;
780 ctk_widget_destroy (A);
781}
782
783static void
784test_group (void)
785{
786 CtkWidget *A, *B, *C;
787 GString *str;
788 CtkGesture *g1, *g2;
789
790 A = ctk_window_new (CTK_WINDOW_TOPLEVEL);
791 ctk_widget_set_name (A, "A");
792 B = ctk_box_new (CTK_ORIENTATION_HORIZONTAL, 0);
793 ctk_widget_set_name (B, "B");
794 C = ctk_event_box_new ();
795 ctk_widget_set_hexpand (C, TRUE(!(0)));
796 ctk_widget_set_vexpand (C, TRUE(!(0)));
797 ctk_widget_set_name (C, "C");
798
799 ctk_container_add (CTK_CONTAINER (A)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((A)), ((ctk_container_get_type ()))))))
, B);
800 ctk_container_add (CTK_CONTAINER (B)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((B)), ((ctk_container_get_type ()))))))
, C);
801
802 ctk_widget_show_all (A);
803
804 str = g_string_new ("");
805
806 add_gesture (A, "a1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
807 add_gesture (B, "b1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
808 add_gesture (C, "c1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
809 g1 = add_gesture (C, "c2", CTK_PHASE_TARGET, str, CTK_EVENT_SEQUENCE_NONE);
810 g2 = add_gesture (C, "c3", CTK_PHASE_TARGET, str, CTK_EVENT_SEQUENCE_CLAIMED);
811 ctk_gesture_group (g1, g2);
812 add_gesture (A, "a3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
813 add_gesture (B, "b3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
814 add_gesture (C, "c4", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
815
816 point_update (&mouse_state, C, 10, 10);
817 point_press (&mouse_state, C, 1);
818
819 g_assert_cmpstr (str->str, ==,do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c3, " "c3 state claimed, "
"c2 state claimed, " "target c2"); if (g_strcmp0 (__s1, __s2
) == 0) ; else g_assertion_message_cmpstr (((gchar*) 0), "gestures.c"
, 826, ((const char*) (__func__)), "str->str" " " "==" " "
"\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c3, \" \"c3 state claimed, \" \"c2 state claimed, \" \"target c2\""
, __s1, "==", __s2); } while (0)
820 "capture a1, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c3, " "c3 state claimed, "
"c2 state claimed, " "target c2"); if (g_strcmp0 (__s1, __s2
) == 0) ; else g_assertion_message_cmpstr (((gchar*) 0), "gestures.c"
, 826, ((const char*) (__func__)), "str->str" " " "==" " "
"\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c3, \" \"c3 state claimed, \" \"c2 state claimed, \" \"target c2\""
, __s1, "==", __s2); } while (0)
821 "capture b1, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c3, " "c3 state claimed, "
"c2 state claimed, " "target c2"); if (g_strcmp0 (__s1, __s2
) == 0) ; else g_assertion_message_cmpstr (((gchar*) 0), "gestures.c"
, 826, ((const char*) (__func__)), "str->str" " " "==" " "
"\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c3, \" \"c3 state claimed, \" \"c2 state claimed, \" \"target c2\""
, __s1, "==", __s2); } while (0)
822 "capture c1, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c3, " "c3 state claimed, "
"c2 state claimed, " "target c2"); if (g_strcmp0 (__s1, __s2
) == 0) ; else g_assertion_message_cmpstr (((gchar*) 0), "gestures.c"
, 826, ((const char*) (__func__)), "str->str" " " "==" " "
"\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c3, \" \"c3 state claimed, \" \"c2 state claimed, \" \"target c2\""
, __s1, "==", __s2); } while (0)
823 "target c3, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c3, " "c3 state claimed, "
"c2 state claimed, " "target c2"); if (g_strcmp0 (__s1, __s2
) == 0) ; else g_assertion_message_cmpstr (((gchar*) 0), "gestures.c"
, 826, ((const char*) (__func__)), "str->str" " " "==" " "
"\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c3, \" \"c3 state claimed, \" \"c2 state claimed, \" \"target c2\""
, __s1, "==", __s2); } while (0)
824 "c3 state claimed, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c3, " "c3 state claimed, "
"c2 state claimed, " "target c2"); if (g_strcmp0 (__s1, __s2
) == 0) ; else g_assertion_message_cmpstr (((gchar*) 0), "gestures.c"
, 826, ((const char*) (__func__)), "str->str" " " "==" " "
"\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c3, \" \"c3 state claimed, \" \"c2 state claimed, \" \"target c2\""
, __s1, "==", __s2); } while (0)
825 "c2 state claimed, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c3, " "c3 state claimed, "
"c2 state claimed, " "target c2"); if (g_strcmp0 (__s1, __s2
) == 0) ; else g_assertion_message_cmpstr (((gchar*) 0), "gestures.c"
, 826, ((const char*) (__func__)), "str->str" " " "==" " "
"\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c3, \" \"c3 state claimed, \" \"c2 state claimed, \" \"target c2\""
, __s1, "==", __s2); } while (0)
826 "target c2")do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c3, " "c3 state claimed, "
"c2 state claimed, " "target c2"); if (g_strcmp0 (__s1, __s2
) == 0) ; else g_assertion_message_cmpstr (((gchar*) 0), "gestures.c"
, 826, ((const char*) (__func__)), "str->str" " " "==" " "
"\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c3, \" \"c3 state claimed, \" \"c2 state claimed, \" \"target c2\""
, __s1, "==", __s2); } while (0)
;
827
828 g_string_free (str, TRUE)(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (
(str), ((!(0)))) : g_string_free_and_steal (str)) : (g_string_free
) ((str), ((!(0)))))
;
829
830 ctk_widget_destroy (A);
831}
832
833static void
834test_gestures_outside_grab (void)
835{
836 CtkWidget *A, *B, *C, *D;
837 GString *str;
838
839 A = ctk_window_new (CTK_WINDOW_TOPLEVEL);
840 ctk_widget_set_name (A, "A");
841 B = ctk_box_new (CTK_ORIENTATION_HORIZONTAL, 0);
842 ctk_widget_set_name (B, "B");
843 C = ctk_event_box_new ();
844 ctk_widget_set_hexpand (C, TRUE(!(0)));
845 ctk_widget_set_vexpand (C, TRUE(!(0)));
846 ctk_widget_set_name (C, "C");
847
848 ctk_container_add (CTK_CONTAINER (A)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((A)), ((ctk_container_get_type ()))))))
, B);
849 ctk_container_add (CTK_CONTAINER (B)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((B)), ((ctk_container_get_type ()))))))
, C);
850
851 ctk_widget_show_all (A);
852
853 D = ctk_window_new (CTK_WINDOW_TOPLEVEL);
854 ctk_widget_show (D);
855
856 str = g_string_new ("");
857
858 add_gesture (A, "a1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
859 add_gesture (B, "b1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
860 add_gesture (C, "c1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
861 add_gesture (C, "c2", CTK_PHASE_TARGET, str, CTK_EVENT_SEQUENCE_CLAIMED);
862 add_gesture (B, "b2", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
863 add_gesture (A, "a2", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
864
865 point_update (&mouse_state, C, 10, 10);
866 point_press (&mouse_state, C, 1);
867
868 g_assert_cmpstr (str->str, ==,do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "c2 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 873, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
869 "capture a1, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "c2 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 873, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
870 "capture b1, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "c2 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 873, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
871 "capture c1, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "c2 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 873, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
872 "target c2, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "c2 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 873, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
873 "c2 state claimed")do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "c2 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 873, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
;
874
875 /* Set a grab on another window */
876 g_string_erase (str, 0, str->len);
877 ctk_grab_add (D);
878
879 g_assert_cmpstr (str->str, ==,do { const char *__s1 = (str->str), *__s2 = ("c1 cancelled, "
"c2 cancelled, " "b1 cancelled, " "a1 cancelled"); if (g_strcmp0
(__s1, __s2) == 0) ; else g_assertion_message_cmpstr (((gchar
*) 0), "gestures.c", 883, ((const char*) (__func__)), "str->str"
" " "==" " " "\"c1 cancelled, \" \"c2 cancelled, \" \"b1 cancelled, \" \"a1 cancelled\""
, __s1, "==", __s2); } while (0)
880 "c1 cancelled, "do { const char *__s1 = (str->str), *__s2 = ("c1 cancelled, "
"c2 cancelled, " "b1 cancelled, " "a1 cancelled"); if (g_strcmp0
(__s1, __s2) == 0) ; else g_assertion_message_cmpstr (((gchar
*) 0), "gestures.c", 883, ((const char*) (__func__)), "str->str"
" " "==" " " "\"c1 cancelled, \" \"c2 cancelled, \" \"b1 cancelled, \" \"a1 cancelled\""
, __s1, "==", __s2); } while (0)
881 "c2 cancelled, "do { const char *__s1 = (str->str), *__s2 = ("c1 cancelled, "
"c2 cancelled, " "b1 cancelled, " "a1 cancelled"); if (g_strcmp0
(__s1, __s2) == 0) ; else g_assertion_message_cmpstr (((gchar
*) 0), "gestures.c", 883, ((const char*) (__func__)), "str->str"
" " "==" " " "\"c1 cancelled, \" \"c2 cancelled, \" \"b1 cancelled, \" \"a1 cancelled\""
, __s1, "==", __s2); } while (0)
882 "b1 cancelled, "do { const char *__s1 = (str->str), *__s2 = ("c1 cancelled, "
"c2 cancelled, " "b1 cancelled, " "a1 cancelled"); if (g_strcmp0
(__s1, __s2) == 0) ; else g_assertion_message_cmpstr (((gchar
*) 0), "gestures.c", 883, ((const char*) (__func__)), "str->str"
" " "==" " " "\"c1 cancelled, \" \"c2 cancelled, \" \"b1 cancelled, \" \"a1 cancelled\""
, __s1, "==", __s2); } while (0)
883 "a1 cancelled")do { const char *__s1 = (str->str), *__s2 = ("c1 cancelled, "
"c2 cancelled, " "b1 cancelled, " "a1 cancelled"); if (g_strcmp0
(__s1, __s2) == 0) ; else g_assertion_message_cmpstr (((gchar
*) 0), "gestures.c", 883, ((const char*) (__func__)), "str->str"
" " "==" " " "\"c1 cancelled, \" \"c2 cancelled, \" \"b1 cancelled, \" \"a1 cancelled\""
, __s1, "==", __s2); } while (0)
;
884
885 g_string_free (str, TRUE)(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (
(str), ((!(0)))) : g_string_free_and_steal (str)) : (g_string_free
) ((str), ((!(0)))))
;
886
887 ctk_widget_destroy (A);
888 ctk_widget_destroy (D);
889}
890
891static void
892test_gestures_inside_grab (void)
893{
894 CtkWidget *A, *B, *C;
895 GString *str;
896
897 A = ctk_window_new (CTK_WINDOW_TOPLEVEL);
898 ctk_widget_set_name (A, "A");
899 B = ctk_box_new (CTK_ORIENTATION_HORIZONTAL, 0);
900 ctk_widget_set_name (B, "B");
901 C = ctk_event_box_new ();
902 ctk_widget_set_hexpand (C, TRUE(!(0)));
903 ctk_widget_set_vexpand (C, TRUE(!(0)));
904 ctk_widget_set_name (C, "C");
905
906 ctk_container_add (CTK_CONTAINER (A)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((A)), ((ctk_container_get_type ()))))))
, B);
907 ctk_container_add (CTK_CONTAINER (B)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((B)), ((ctk_container_get_type ()))))))
, C);
908
909 ctk_widget_show_all (A);
910
911 str = g_string_new ("");
912
913 add_gesture (A, "a1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
914 add_gesture (B, "b1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
915 add_gesture (C, "c1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
916 add_gesture (C, "c2", CTK_PHASE_TARGET, str, CTK_EVENT_SEQUENCE_CLAIMED);
917 add_gesture (B, "b2", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
918 add_gesture (A, "a2", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
919
920 point_update (&mouse_state, C, 10, 10);
921 point_press (&mouse_state, C, 1);
922
923 g_assert_cmpstr (str->str, ==,do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "c2 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 928, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
924 "capture a1, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "c2 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 928, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
925 "capture b1, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "c2 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 928, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
926 "capture c1, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "c2 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 928, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
927 "target c2, "do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "c2 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 928, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
928 "c2 state claimed")do { const char *__s1 = (str->str), *__s2 = ("capture a1, "
"capture b1, " "capture c1, " "target c2, " "c2 state claimed"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 928, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
;
929
930 /* Set a grab on B */
931 g_string_erase (str, 0, str->len);
932 ctk_grab_add (B);
933 g_assert_cmpstr (str->str, ==,do { const char *__s1 = (str->str), *__s2 = ("a1 cancelled"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 934, ((const char*) (__func__))
, "str->str" " " "==" " " "\"a1 cancelled\"", __s1, "==", __s2
); } while (0)
934 "a1 cancelled")do { const char *__s1 = (str->str), *__s2 = ("a1 cancelled"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 934, ((const char*) (__func__))
, "str->str" " " "==" " " "\"a1 cancelled\"", __s1, "==", __s2
); } while (0)
;
935
936 /* Update with the grab under effect */
937 g_string_erase (str, 0, str->len);
938 point_update (&mouse_state, C, 20, 20);
939 g_assert_cmpstr (str->str, ==,do { const char *__s1 = (str->str), *__s2 = ("b1 updated, "
"c1 updated, " "c2 updated"); if (g_strcmp0 (__s1, __s2) == 0
) ; else g_assertion_message_cmpstr (((gchar*) 0), "gestures.c"
, 942, ((const char*) (__func__)), "str->str" " " "==" " "
"\"b1 updated, \" \"c1 updated, \" \"c2 updated\"", __s1, "=="
, __s2); } while (0)
940 "b1 updated, "do { const char *__s1 = (str->str), *__s2 = ("b1 updated, "
"c1 updated, " "c2 updated"); if (g_strcmp0 (__s1, __s2) == 0
) ; else g_assertion_message_cmpstr (((gchar*) 0), "gestures.c"
, 942, ((const char*) (__func__)), "str->str" " " "==" " "
"\"b1 updated, \" \"c1 updated, \" \"c2 updated\"", __s1, "=="
, __s2); } while (0)
941 "c1 updated, "do { const char *__s1 = (str->str), *__s2 = ("b1 updated, "
"c1 updated, " "c2 updated"); if (g_strcmp0 (__s1, __s2) == 0
) ; else g_assertion_message_cmpstr (((gchar*) 0), "gestures.c"
, 942, ((const char*) (__func__)), "str->str" " " "==" " "
"\"b1 updated, \" \"c1 updated, \" \"c2 updated\"", __s1, "=="
, __s2); } while (0)
942 "c2 updated")do { const char *__s1 = (str->str), *__s2 = ("b1 updated, "
"c1 updated, " "c2 updated"); if (g_strcmp0 (__s1, __s2) == 0
) ; else g_assertion_message_cmpstr (((gchar*) 0), "gestures.c"
, 942, ((const char*) (__func__)), "str->str" " " "==" " "
"\"b1 updated, \" \"c1 updated, \" \"c2 updated\"", __s1, "=="
, __s2); } while (0)
;
943
944 g_string_free (str, TRUE)(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (
(str), ((!(0)))) : g_string_free_and_steal (str)) : (g_string_free
) ((str), ((!(0)))))
;
945
946 ctk_widget_destroy (A);
947}
948
949static void
950test_multitouch_on_single (void)
951{
952 CtkWidget *A, *B, *C;
953 GString *str;
954
955 A = ctk_window_new (CTK_WINDOW_TOPLEVEL);
956 ctk_widget_set_name (A, "A");
957 B = ctk_box_new (CTK_ORIENTATION_HORIZONTAL, 0);
958 ctk_widget_set_name (B, "B");
959 C = ctk_event_box_new ();
960 ctk_widget_set_hexpand (C, TRUE(!(0)));
961 ctk_widget_set_vexpand (C, TRUE(!(0)));
962 ctk_widget_set_name (C, "C");
963
964 ctk_container_add (CTK_CONTAINER (A)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((A)), ((ctk_container_get_type ()))))))
, B);
965 ctk_container_add (CTK_CONTAINER (B)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((B)), ((ctk_container_get_type ()))))))
, C);
966
967 ctk_widget_show_all (A);
968
969 str = g_string_new ("");
970
971 add_gesture (A, "a1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
972 add_gesture (B, "b1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_CLAIMED);
973
974 /* First touch down */
975 point_update (&touch_state[0], C, 10, 10);
976 point_press (&touch_state[0], C, 1);
977
978 g_assert_cmpstr (str->str, ==,do { const char *__s1 = (str->str), *__s2 = ("capture a1 (1), "
"capture b1 (1), " "b1 state claimed (1)"); if (g_strcmp0 (__s1
, __s2) == 0) ; else g_assertion_message_cmpstr (((gchar*) 0)
, "gestures.c", 981, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture a1 (1), \" \"capture b1 (1), \" \"b1 state claimed (1)\""
, __s1, "==", __s2); } while (0)
979 "capture a1 (1), "do { const char *__s1 = (str->str), *__s2 = ("capture a1 (1), "
"capture b1 (1), " "b1 state claimed (1)"); if (g_strcmp0 (__s1
, __s2) == 0) ; else g_assertion_message_cmpstr (((gchar*) 0)
, "gestures.c", 981, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture a1 (1), \" \"capture b1 (1), \" \"b1 state claimed (1)\""
, __s1, "==", __s2); } while (0)
980 "capture b1 (1), "do { const char *__s1 = (str->str), *__s2 = ("capture a1 (1), "
"capture b1 (1), " "b1 state claimed (1)"); if (g_strcmp0 (__s1
, __s2) == 0) ; else g_assertion_message_cmpstr (((gchar*) 0)
, "gestures.c", 981, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture a1 (1), \" \"capture b1 (1), \" \"b1 state claimed (1)\""
, __s1, "==", __s2); } while (0)
981 "b1 state claimed (1)")do { const char *__s1 = (str->str), *__s2 = ("capture a1 (1), "
"capture b1 (1), " "b1 state claimed (1)"); if (g_strcmp0 (__s1
, __s2) == 0) ; else g_assertion_message_cmpstr (((gchar*) 0)
, "gestures.c", 981, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture a1 (1), \" \"capture b1 (1), \" \"b1 state claimed (1)\""
, __s1, "==", __s2); } while (0)
;
982
983 /* Second touch down */
984 g_string_erase (str, 0, str->len);
985 point_update (&touch_state[1], C, 20, 20);
986 point_press (&touch_state[1], C, 1);
987
988 g_assert_cmpstr (str->str, ==,do { const char *__s1 = (str->str), *__s2 = ("a1 state denied (2), "
"b1 state denied (2)"); if (g_strcmp0 (__s1, __s2) == 0) ; else
g_assertion_message_cmpstr (((gchar*) 0), "gestures.c", 990,
((const char*) (__func__)), "str->str" " " "==" " " "\"a1 state denied (2), \" \"b1 state denied (2)\""
, __s1, "==", __s2); } while (0)
989 "a1 state denied (2), "do { const char *__s1 = (str->str), *__s2 = ("a1 state denied (2), "
"b1 state denied (2)"); if (g_strcmp0 (__s1, __s2) == 0) ; else
g_assertion_message_cmpstr (((gchar*) 0), "gestures.c", 990,
((const char*) (__func__)), "str->str" " " "==" " " "\"a1 state denied (2), \" \"b1 state denied (2)\""
, __s1, "==", __s2); } while (0)
990 "b1 state denied (2)")do { const char *__s1 = (str->str), *__s2 = ("a1 state denied (2), "
"b1 state denied (2)"); if (g_strcmp0 (__s1, __s2) == 0) ; else
g_assertion_message_cmpstr (((gchar*) 0), "gestures.c", 990,
((const char*) (__func__)), "str->str" " " "==" " " "\"a1 state denied (2), \" \"b1 state denied (2)\""
, __s1, "==", __s2); } while (0)
;
991
992 g_string_free (str, TRUE)(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (
(str), ((!(0)))) : g_string_free_and_steal (str)) : (g_string_free
) ((str), ((!(0)))))
;
993
994 ctk_widget_destroy (A);
995}
996
997static void
998test_multitouch_activation (void)
999{
1000 CtkWidget *A, *B, *C;
1001 GString *str;
1002
1003 A = ctk_window_new (CTK_WINDOW_TOPLEVEL);
1004 ctk_widget_set_name (A, "A");
1005 B = ctk_box_new (CTK_ORIENTATION_HORIZONTAL, 0);
1006 ctk_widget_set_name (B, "B");
1007 C = ctk_event_box_new ();
1008 ctk_widget_set_hexpand (C, TRUE(!(0)));
1009 ctk_widget_set_vexpand (C, TRUE(!(0)));
1010 ctk_widget_set_name (C, "C");
1011
1012 ctk_container_add (CTK_CONTAINER (A)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((A)), ((ctk_container_get_type ()))))))
, B);
1013 ctk_container_add (CTK_CONTAINER (B)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((B)), ((ctk_container_get_type ()))))))
, C);
1014
1015 ctk_widget_show_all (A);
1016
1017 str = g_string_new ("");
1018
1019 add_mt_gesture (C, "c1", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_CLAIMED);
1020
1021 /* First touch down */
1022 point_update (&touch_state[0], C, 10, 10);
1023 point_press (&touch_state[0], C, 1);
1024
1025 g_assert_cmpstr (str->str, ==, "")do { const char *__s1 = (str->str), *__s2 = (""); if (g_strcmp0
(__s1, __s2) == 0) ; else g_assertion_message_cmpstr (((gchar
*) 0), "gestures.c", 1025, ((const char*) (__func__)), "str->str"
" " "==" " " "\"\"", __s1, "==", __s2); } while (0)
;
1
Assuming the condition is true
2
Taking true branch
3
Loop condition is false. Exiting loop
1026
1027 /* Second touch down */
1028 point_update (&touch_state[1], C, 20, 20);
1029 point_press (&touch_state[1], C, 1);
1030
1031 g_assert_cmpstr (str->str, ==,do { const char *__s1 = (str->str), *__s2 = ("c1 began, " "c1 state claimed (2), "
"c1 state claimed"); if (g_strcmp0 (__s1, __s2) == 0) ; else
g_assertion_message_cmpstr (((gchar*) 0), "gestures.c", 1034
, ((const char*) (__func__)), "str->str" " " "==" " " "\"c1 began, \" \"c1 state claimed (2), \" \"c1 state claimed\""
, __s1, "==", __s2); } while (0)
4
Assuming the condition is true
5
Taking true branch
6
Loop condition is false. Exiting loop
1032 "c1 began, "do { const char *__s1 = (str->str), *__s2 = ("c1 began, " "c1 state claimed (2), "
"c1 state claimed"); if (g_strcmp0 (__s1, __s2) == 0) ; else
g_assertion_message_cmpstr (((gchar*) 0), "gestures.c", 1034
, ((const char*) (__func__)), "str->str" " " "==" " " "\"c1 began, \" \"c1 state claimed (2), \" \"c1 state claimed\""
, __s1, "==", __s2); } while (0)
1033 "c1 state claimed (2), "do { const char *__s1 = (str->str), *__s2 = ("c1 began, " "c1 state claimed (2), "
"c1 state claimed"); if (g_strcmp0 (__s1, __s2) == 0) ; else
g_assertion_message_cmpstr (((gchar*) 0), "gestures.c", 1034
, ((const char*) (__func__)), "str->str" " " "==" " " "\"c1 began, \" \"c1 state claimed (2), \" \"c1 state claimed\""
, __s1, "==", __s2); } while (0)
1034 "c1 state claimed")do { const char *__s1 = (str->str), *__s2 = ("c1 began, " "c1 state claimed (2), "
"c1 state claimed"); if (g_strcmp0 (__s1, __s2) == 0) ; else
g_assertion_message_cmpstr (((gchar*) 0), "gestures.c", 1034
, ((const char*) (__func__)), "str->str" " " "==" " " "\"c1 began, \" \"c1 state claimed (2), \" \"c1 state claimed\""
, __s1, "==", __s2); } while (0)
;
1035
1036 /* First touch up */
1037 g_string_erase (str, 0, str->len);
1038 point_release (&touch_state[0], 1);
7
Calling 'point_release'
1039
1040 g_assert_cmpstr (str->str, ==,do { const char *__s1 = (str->str), *__s2 = ("c1 ended"); if
(g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 1041, ((const char*) (__func__)
), "str->str" " " "==" " " "\"c1 ended\"", __s1, "==", __s2
); } while (0)
1041 "c1 ended")do { const char *__s1 = (str->str), *__s2 = ("c1 ended"); if
(g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 1041, ((const char*) (__func__)
), "str->str" " " "==" " " "\"c1 ended\"", __s1, "==", __s2
); } while (0)
;
1042
1043 /* A third touch down triggering again action */
1044 g_string_erase (str, 0, str->len);
1045 point_update (&touch_state[2], C, 20, 20);
1046 point_press (&touch_state[2], C, 1);
1047
1048 g_assert_cmpstr (str->str, ==,do { const char *__s1 = (str->str), *__s2 = ("c1 began, " "c1 state claimed (3)"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 1050, ((const char*) (__func__)
), "str->str" " " "==" " " "\"c1 began, \" \"c1 state claimed (3)\""
, __s1, "==", __s2); } while (0)
1049 "c1 began, "do { const char *__s1 = (str->str), *__s2 = ("c1 began, " "c1 state claimed (3)"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 1050, ((const char*) (__func__)
), "str->str" " " "==" " " "\"c1 began, \" \"c1 state claimed (3)\""
, __s1, "==", __s2); } while (0)
1050 "c1 state claimed (3)")do { const char *__s1 = (str->str), *__s2 = ("c1 began, " "c1 state claimed (3)"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 1050, ((const char*) (__func__)
), "str->str" " " "==" " " "\"c1 began, \" \"c1 state claimed (3)\""
, __s1, "==", __s2); } while (0)
;
1051
1052 /* One touch up, gesture is finished again */
1053 g_string_erase (str, 0, str->len);
1054 point_release (&touch_state[2], 1);
1055
1056 g_assert_cmpstr (str->str, ==,do { const char *__s1 = (str->str), *__s2 = ("c1 ended"); if
(g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 1057, ((const char*) (__func__)
), "str->str" " " "==" " " "\"c1 ended\"", __s1, "==", __s2
); } while (0)
1057 "c1 ended")do { const char *__s1 = (str->str), *__s2 = ("c1 ended"); if
(g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 1057, ((const char*) (__func__)
), "str->str" " " "==" " " "\"c1 ended\"", __s1, "==", __s2
); } while (0)
;
1058
1059 /* Another touch up, gesture remains inactive */
1060 g_string_erase (str, 0, str->len);
1061 point_release (&touch_state[1], 1);
1062
1063 g_assert_cmpstr (str->str, ==, "")do { const char *__s1 = (str->str), *__s2 = (""); if (g_strcmp0
(__s1, __s2) == 0) ; else g_assertion_message_cmpstr (((gchar
*) 0), "gestures.c", 1063, ((const char*) (__func__)), "str->str"
" " "==" " " "\"\"", __s1, "==", __s2); } while (0)
;
1064
1065 g_string_free (str, TRUE)(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (
(str), ((!(0)))) : g_string_free_and_steal (str)) : (g_string_free
) ((str), ((!(0)))))
;
1066
1067 ctk_widget_destroy (A);
1068}
1069
1070static void
1071test_multitouch_interaction (void)
1072{
1073 CtkWidget *A, *B, *C;
1074 CtkGesture *g;
1075 GString *str;
1076
1077 A = ctk_window_new (CTK_WINDOW_TOPLEVEL);
1078 ctk_widget_set_name (A, "A");
1079 B = ctk_box_new (CTK_ORIENTATION_HORIZONTAL, 0);
1080 ctk_widget_set_name (B, "B");
1081 C = ctk_event_box_new ();
1082 ctk_widget_set_hexpand (C, TRUE(!(0)));
1083 ctk_widget_set_vexpand (C, TRUE(!(0)));
1084 ctk_widget_set_name (C, "C");
1085
1086 ctk_container_add (CTK_CONTAINER (A)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((A)), ((ctk_container_get_type ()))))))
, B);
1087 ctk_container_add (CTK_CONTAINER (B)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((B)), ((ctk_container_get_type ()))))))
, C);
1088
1089 ctk_widget_show_all (A);
1090
1091 str = g_string_new ("");
1092
1093 g = add_gesture (A, "a1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_CLAIMED);
1094 add_mt_gesture (C, "c1", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_CLAIMED);
1095
1096 /* First touch down, a1 claims the sequence */
1097 point_update (&touch_state[0], C, 10, 10);
1098 point_press (&touch_state[0], C, 1);
1099
1100 g_assert_cmpstr (str->str, ==,do { const char *__s1 = (str->str), *__s2 = ("capture a1 (1), "
"a1 state claimed (1)"); if (g_strcmp0 (__s1, __s2) == 0) ; else
g_assertion_message_cmpstr (((gchar*) 0), "gestures.c", 1102
, ((const char*) (__func__)), "str->str" " " "==" " " "\"capture a1 (1), \" \"a1 state claimed (1)\""
, __s1, "==", __s2); } while (0)
1101 "capture a1 (1), "do { const char *__s1 = (str->str), *__s2 = ("capture a1 (1), "
"a1 state claimed (1)"); if (g_strcmp0 (__s1, __s2) == 0) ; else
g_assertion_message_cmpstr (((gchar*) 0), "gestures.c", 1102
, ((const char*) (__func__)), "str->str" " " "==" " " "\"capture a1 (1), \" \"a1 state claimed (1)\""
, __s1, "==", __s2); } while (0)
1102 "a1 state claimed (1)")do { const char *__s1 = (str->str), *__s2 = ("capture a1 (1), "
"a1 state claimed (1)"); if (g_strcmp0 (__s1, __s2) == 0) ; else
g_assertion_message_cmpstr (((gchar*) 0), "gestures.c", 1102
, ((const char*) (__func__)), "str->str" " " "==" " " "\"capture a1 (1), \" \"a1 state claimed (1)\""
, __s1, "==", __s2); } while (0)
;
1103
1104 /* Second touch down, a1 denies and c1 takes over */
1105 g_string_erase (str, 0, str->len);
1106 point_update (&touch_state[1], C, 20, 20);
1107 point_press (&touch_state[1], C, 1);
1108
1109 /* Denying sequences in touch-excess situation is a responsibility of the caller */
1110 ctk_gesture_set_state (g, CTK_EVENT_SEQUENCE_DENIED);
1111
1112 g_assert_cmpstr (str->str, ==,do { const char *__s1 = (str->str), *__s2 = ("a1 state denied (2), "
"c1 began, " "c1 state claimed, " "c1 state claimed (2), " "a1 state denied (1)"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 1117, ((const char*) (__func__)
), "str->str" " " "==" " " "\"a1 state denied (2), \" \"c1 began, \" \"c1 state claimed, \" \"c1 state claimed (2), \" \"a1 state denied (1)\""
, __s1, "==", __s2); } while (0)
1113 "a1 state denied (2), "do { const char *__s1 = (str->str), *__s2 = ("a1 state denied (2), "
"c1 began, " "c1 state claimed, " "c1 state claimed (2), " "a1 state denied (1)"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 1117, ((const char*) (__func__)
), "str->str" " " "==" " " "\"a1 state denied (2), \" \"c1 began, \" \"c1 state claimed, \" \"c1 state claimed (2), \" \"a1 state denied (1)\""
, __s1, "==", __s2); } while (0)
1114 "c1 began, "do { const char *__s1 = (str->str), *__s2 = ("a1 state denied (2), "
"c1 began, " "c1 state claimed, " "c1 state claimed (2), " "a1 state denied (1)"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 1117, ((const char*) (__func__)
), "str->str" " " "==" " " "\"a1 state denied (2), \" \"c1 began, \" \"c1 state claimed, \" \"c1 state claimed (2), \" \"a1 state denied (1)\""
, __s1, "==", __s2); } while (0)
1115 "c1 state claimed, "do { const char *__s1 = (str->str), *__s2 = ("a1 state denied (2), "
"c1 began, " "c1 state claimed, " "c1 state claimed (2), " "a1 state denied (1)"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 1117, ((const char*) (__func__)
), "str->str" " " "==" " " "\"a1 state denied (2), \" \"c1 began, \" \"c1 state claimed, \" \"c1 state claimed (2), \" \"a1 state denied (1)\""
, __s1, "==", __s2); } while (0)
1116 "c1 state claimed (2), "do { const char *__s1 = (str->str), *__s2 = ("a1 state denied (2), "
"c1 began, " "c1 state claimed, " "c1 state claimed (2), " "a1 state denied (1)"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 1117, ((const char*) (__func__)
), "str->str" " " "==" " " "\"a1 state denied (2), \" \"c1 began, \" \"c1 state claimed, \" \"c1 state claimed (2), \" \"a1 state denied (1)\""
, __s1, "==", __s2); } while (0)
1117 "a1 state denied (1)")do { const char *__s1 = (str->str), *__s2 = ("a1 state denied (2), "
"c1 began, " "c1 state claimed, " "c1 state claimed (2), " "a1 state denied (1)"
); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 1117, ((const char*) (__func__)
), "str->str" " " "==" " " "\"a1 state denied (2), \" \"c1 began, \" \"c1 state claimed, \" \"c1 state claimed (2), \" \"a1 state denied (1)\""
, __s1, "==", __s2); } while (0)
;
1118
1119 /* Move first point, only c1 should update */
1120 g_string_erase (str, 0, str->len);
1121 point_update (&touch_state[0], C, 30, 30);
1122
1123 g_assert_cmpstr (str->str, ==,do { const char *__s1 = (str->str), *__s2 = ("c1 updated")
; if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 1124, ((const char*) (__func__)
), "str->str" " " "==" " " "\"c1 updated\"", __s1, "==", __s2
); } while (0)
1124 "c1 updated")do { const char *__s1 = (str->str), *__s2 = ("c1 updated")
; if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 1124, ((const char*) (__func__)
), "str->str" " " "==" " " "\"c1 updated\"", __s1, "==", __s2
); } while (0)
;
1125
1126 /* First touch up */
1127 g_string_erase (str, 0, str->len);
1128 point_release (&touch_state[0], 1);
1129
1130 g_assert_cmpstr (str->str, ==,do { const char *__s1 = (str->str), *__s2 = ("c1 ended"); if
(g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 1131, ((const char*) (__func__)
), "str->str" " " "==" " " "\"c1 ended\"", __s1, "==", __s2
); } while (0)
1131 "c1 ended")do { const char *__s1 = (str->str), *__s2 = ("c1 ended"); if
(g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 1131, ((const char*) (__func__)
), "str->str" " " "==" " " "\"c1 ended\"", __s1, "==", __s2
); } while (0)
;
1132
1133 /* A third touch down triggering again action on c1 */
1134 g_string_erase (str, 0, str->len);
1135 point_update (&touch_state[2], C, 20, 20);
1136 point_press (&touch_state[2], C, 1);
1137
1138 g_assert_cmpstr (str->str, ==,do { const char *__s1 = (str->str), *__s2 = ("a1 state denied (3), "
"c1 began, " "c1 state claimed (3)"); if (g_strcmp0 (__s1, __s2
) == 0) ; else g_assertion_message_cmpstr (((gchar*) 0), "gestures.c"
, 1141, ((const char*) (__func__)), "str->str" " " "==" " "
"\"a1 state denied (3), \" \"c1 began, \" \"c1 state claimed (3)\""
, __s1, "==", __s2); } while (0)
1139 "a1 state denied (3), "do { const char *__s1 = (str->str), *__s2 = ("a1 state denied (3), "
"c1 began, " "c1 state claimed (3)"); if (g_strcmp0 (__s1, __s2
) == 0) ; else g_assertion_message_cmpstr (((gchar*) 0), "gestures.c"
, 1141, ((const char*) (__func__)), "str->str" " " "==" " "
"\"a1 state denied (3), \" \"c1 began, \" \"c1 state claimed (3)\""
, __s1, "==", __s2); } while (0)
1140 "c1 began, "do { const char *__s1 = (str->str), *__s2 = ("a1 state denied (3), "
"c1 began, " "c1 state claimed (3)"); if (g_strcmp0 (__s1, __s2
) == 0) ; else g_assertion_message_cmpstr (((gchar*) 0), "gestures.c"
, 1141, ((const char*) (__func__)), "str->str" " " "==" " "
"\"a1 state denied (3), \" \"c1 began, \" \"c1 state claimed (3)\""
, __s1, "==", __s2); } while (0)
1141 "c1 state claimed (3)")do { const char *__s1 = (str->str), *__s2 = ("a1 state denied (3), "
"c1 began, " "c1 state claimed (3)"); if (g_strcmp0 (__s1, __s2
) == 0) ; else g_assertion_message_cmpstr (((gchar*) 0), "gestures.c"
, 1141, ((const char*) (__func__)), "str->str" " " "==" " "
"\"a1 state denied (3), \" \"c1 began, \" \"c1 state claimed (3)\""
, __s1, "==", __s2); } while (0)
;
1142
1143 /* One touch up, gesture is finished again */
1144 g_string_erase (str, 0, str->len);
1145 point_release (&touch_state[2], 1);
1146
1147 g_assert_cmpstr (str->str, ==,do { const char *__s1 = (str->str), *__s2 = ("c1 ended"); if
(g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 1148, ((const char*) (__func__)
), "str->str" " " "==" " " "\"c1 ended\"", __s1, "==", __s2
); } while (0)
1148 "c1 ended")do { const char *__s1 = (str->str), *__s2 = ("c1 ended"); if
(g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr
(((gchar*) 0), "gestures.c", 1148, ((const char*) (__func__)
), "str->str" " " "==" " " "\"c1 ended\"", __s1, "==", __s2
); } while (0)
;
1149
1150 /* Another touch up, gesture remains inactive */
1151 g_string_erase (str, 0, str->len);
1152 point_release (&touch_state[1], 1);
1153
1154 g_assert_cmpstr (str->str, ==, "")do { const char *__s1 = (str->str), *__s2 = (""); if (g_strcmp0
(__s1, __s2) == 0) ; else g_assertion_message_cmpstr (((gchar
*) 0), "gestures.c", 1154, ((const char*) (__func__)), "str->str"
" " "==" " " "\"\"", __s1, "==", __s2); } while (0)
;
1155
1156 g_string_free (str, TRUE)(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (
(str), ((!(0)))) : g_string_free_and_steal (str)) : (g_string_free
) ((str), ((!(0)))))
;
1157
1158 ctk_widget_destroy (A);
1159}
1160
1161int
1162main (int argc, char *argv[])
1163{
1164 ctk_test_init (&argc, &argv);
1165
1166 g_test_add_func ("/gestures/propagation/phases", test_phases);
1167 g_test_add_func ("/gestures/propagation/mixed", test_mixed);
1168 g_test_add_func ("/gestures/propagation/early-exit", test_early_exit);
1169 g_test_add_func ("/gestures/claim/capture", test_claim_capture);
1170 g_test_add_func ("/gestures/claim/target", test_claim_target);
1171 g_test_add_func ("/gestures/claim/bubble", test_claim_bubble);
1172 g_test_add_func ("/gestures/claim/early-capture", test_early_claim_capture);
1173 g_test_add_func ("/gestures/claim/late-capture", test_late_claim_capture);
1174 g_test_add_func ("/gestures/group", test_group);
1175 g_test_add_func ("/gestures/grabs/gestures-outside-grab", test_gestures_outside_grab);
1176 g_test_add_func ("/gestures/grabs/gestures-inside-grab", test_gestures_inside_grab);
1177 g_test_add_func ("/gestures/multitouch/gesture-single", test_multitouch_on_single);
1178 g_test_add_func ("/gestures/multitouch/multitouch-activation", test_multitouch_activation);
1179 g_test_add_func ("/gestures/multitouch/interaction", test_multitouch_interaction);
1180
1181 return g_test_run ();
1182}