Bug Summary

File:testsuite/ctk/gestures.c
Warning:line 103, 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 -fdebug-compilation-dir=/rootdir/testsuite/ctk -fcoverage-compilation-dir=/rootdir/testsuite/ctk -resource-dir /usr/lib/llvm-19/lib/clang/19 -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-19/lib/clang/19/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 -ferror-limit 19 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -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.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-12-18-231748-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)
2
Assuming field 'widget' is non-null
3
Assuming 'widget' is equal to field 'widget'
4
Taking false branch
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);
5
Using a fixed address is not portable because that address will probably not be valid in all environments or platforms
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))
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)
134 return;
135
136 if (point == &mouse_state)
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);
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,
204 CdkEventButton *button G_GNUC_UNUSED__attribute__ ((__unused__)),
205 gpointer data)
206{
207 LegacyData *ld = data;
208
209 if (ld->str->len > 0)
210 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))
;
211 g_string_append_printf (ld->str, "legacy %s", ctk_widget_get_name (w));
212
213 return ld->exit;
214}
215
216typedef struct {
217 GString *str;
218 CtkEventSequenceState state;
219} GestureData;
220
221static void
222press_cb (CtkGesture *g,
223 gint n_press G_GNUC_UNUSED__attribute__ ((__unused__)),
224 gdouble x G_GNUC_UNUSED__attribute__ ((__unused__)),
225 gdouble y G_GNUC_UNUSED__attribute__ ((__unused__)),
226 gpointer data)
227{
228 CtkEventController *c = CTK_EVENT_CONTROLLER (g)((((CtkEventController*) (void *) g_type_check_instance_cast (
(GTypeInstance*) ((g)), ((ctk_event_controller_get_type ())))
)))
;
229 CdkEventSequence *sequence;
230 CtkPropagationPhase phase;
231 GestureData *gd = data;
232 const gchar *name;
233
234 name = g_object_get_data (G_OBJECT (g)((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((g)), (((GType) ((20) << (2))))))))
, "name");
235 phase = ctk_event_controller_get_propagation_phase (c);
236
237 if (gd->str->len > 0)
238 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))
;
239 g_string_append_printf (gd->str, "%s %s", phase_nick (phase), name);
240
241 sequence = ctk_gesture_get_last_updated_sequence (g);
242
243 if (sequence)
244 g_string_append_printf (gd->str, " (%x)", GPOINTER_TO_UINT (sequence)((guint) (gulong) (sequence)));
245
246 if (gd->state != CTK_EVENT_SEQUENCE_NONE)
247 ctk_gesture_set_state (g, gd->state);
248}
249
250static void
251cancel_cb (CtkGesture *g,
252 CdkEventSequence *sequence G_GNUC_UNUSED__attribute__ ((__unused__)),
253 gpointer data)
254{
255 GestureData *gd = data;
256 const gchar *name;
257
258 name = g_object_get_data (G_OBJECT (g)((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((g)), (((GType) ((20) << (2))))))))
, "name");
259
260 if (gd->str->len > 0)
261 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))
;
262 g_string_append_printf (gd->str, "%s cancelled", name);
263}
264
265static void
266begin_cb (CtkGesture *g,
267 CdkEventSequence *sequence G_GNUC_UNUSED__attribute__ ((__unused__)),
268 gpointer data)
269{
270 GestureData *gd = data;
271 const gchar *name;
272
273 name = g_object_get_data (G_OBJECT (g)((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((g)), (((GType) ((20) << (2))))))))
, "name");
274
275 if (gd->str->len > 0)
276 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))
;
277 g_string_append_printf (gd->str, "%s began", name);
278
279 if (gd->state != CTK_EVENT_SEQUENCE_NONE)
280 ctk_gesture_set_state (g, gd->state);
281}
282
283static void
284end_cb (CtkGesture *g,
285 CdkEventSequence *sequence G_GNUC_UNUSED__attribute__ ((__unused__)),
286 gpointer data)
287{
288 GestureData *gd = data;
289 const gchar *name;
290
291 name = g_object_get_data (G_OBJECT (g)((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((g)), (((GType) ((20) << (2))))))))
, "name");
292
293 if (gd->str->len > 0)
294 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))
;
295 g_string_append_printf (gd->str, "%s ended", name);
296}
297
298static void
299update_cb (CtkGesture *g,
300 CdkEventSequence *sequence G_GNUC_UNUSED__attribute__ ((__unused__)),
301 gpointer data)
302{
303 GestureData *gd = data;
304 const gchar *name;
305
306 name = g_object_get_data (G_OBJECT (g)((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((g)), (((GType) ((20) << (2))))))))
, "name");
307
308 if (gd->str->len > 0)
309 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))
;
310 g_string_append_printf (gd->str, "%s updated", name);
311}
312
313static void
314state_changed_cb (CtkGesture *g, CdkEventSequence *sequence, CtkEventSequenceState state, gpointer data)
315{
316 GestureData *gd = data;
317 const gchar *name;
318
319 name = g_object_get_data (G_OBJECT (g)((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((g)), (((GType) ((20) << (2))))))))
, "name");
320
321 if (gd->str->len > 0)
322 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))
;
323 g_string_append_printf (gd->str, "%s state %s", name, state_nick (state));
324
325 if (sequence != NULL((void*)0))
326 g_string_append_printf (gd->str, " (%x)", GPOINTER_TO_UINT (sequence)((guint) (gulong) (sequence)));
327}
328
329
330static CtkGesture *
331add_gesture (CtkWidget *w, const gchar *name, CtkPropagationPhase phase, GString *str, CtkEventSequenceState state)
332{
333 CtkGesture *g;
334 GestureData *data;
335
336 data = g_new (GestureData, 1)((GestureData *) g_malloc_n ((1), sizeof (GestureData)));
337 data->str = str;
338 data->state = state;
339
340 g = ctk_gesture_multi_press_new (w);
341 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));
342 ctk_gesture_single_set_button (CTK_GESTURE_SINGLE (g)((((CtkGestureSingle*) (void *) g_type_check_instance_cast ((
GTypeInstance*) ((g)), ((ctk_gesture_single_get_type ()))))))
, 1);
343 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);
344
345 g_object_set_data (G_OBJECT (g)((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((g)), (((GType) ((20) << (2))))))))
, "name", (gpointer)name);
346
347 g_signal_connect (g, "pressed", G_CALLBACK (press_cb), data)g_signal_connect_data ((g), ("pressed"), (((GCallback) (press_cb
))), (data), ((void*)0), (GConnectFlags) 0)
;
348 g_signal_connect (g, "cancel", G_CALLBACK (cancel_cb), data)g_signal_connect_data ((g), ("cancel"), (((GCallback) (cancel_cb
))), (data), ((void*)0), (GConnectFlags) 0)
;
349 g_signal_connect (g, "update", G_CALLBACK (update_cb), data)g_signal_connect_data ((g), ("update"), (((GCallback) (update_cb
))), (data), ((void*)0), (GConnectFlags) 0)
;
350 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
)
;
351
352 return g;
353}
354
355static CtkGesture *
356add_mt_gesture (CtkWidget *w, const gchar *name, CtkPropagationPhase phase, GString *str, CtkEventSequenceState state)
357{
358 CtkGesture *g;
359 GestureData *data;
360
361 data = g_new (GestureData, 1)((GestureData *) g_malloc_n ((1), sizeof (GestureData)));
362 data->str = str;
363 data->state = state;
364
365 g = ctk_gesture_rotate_new (w);
366 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);
367
368 g_object_set_data (G_OBJECT (g)((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((g)), (((GType) ((20) << (2))))))))
, "name", (gpointer)name);
369
370 g_signal_connect (g, "begin", G_CALLBACK (begin_cb), data)g_signal_connect_data ((g), ("begin"), (((GCallback) (begin_cb
))), (data), ((void*)0), (GConnectFlags) 0)
;
371 g_signal_connect (g, "update", G_CALLBACK (update_cb), data)g_signal_connect_data ((g), ("update"), (((GCallback) (update_cb
))), (data), ((void*)0), (GConnectFlags) 0)
;
372 g_signal_connect (g, "end", G_CALLBACK (end_cb), data)g_signal_connect_data ((g), ("end"), (((GCallback) (end_cb)))
, (data), ((void*)0), (GConnectFlags) 0)
;
373 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
)
;
374
375 return g;
376}
377
378static void
379add_legacy (CtkWidget *w, GString *str, gboolean exit)
380{
381 LegacyData *data;
382
383 data = g_new (LegacyData, 1)((LegacyData *) g_malloc_n ((1), sizeof (LegacyData)));
384 data->str = str;
385 data->exit = exit;
386 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)
;
387}
388
389static void
390test_phases (void)
391{
392 CtkWidget *A, *B, *C;
393 GString *str;
394
395 A = ctk_window_new (CTK_WINDOW_TOPLEVEL);
396 ctk_widget_set_name (A, "A");
397 B = ctk_box_new (CTK_ORIENTATION_HORIZONTAL, 0);
398 ctk_widget_set_name (B, "B");
399 C = ctk_event_box_new ();
400 ctk_widget_set_hexpand (C, TRUE(!(0)));
401 ctk_widget_set_vexpand (C, TRUE(!(0)));
402 ctk_widget_set_name (C, "C");
403
404 ctk_container_add (CTK_CONTAINER (A)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((A)), ((ctk_container_get_type ()))))))
, B);
405 ctk_container_add (CTK_CONTAINER (B)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((B)), ((ctk_container_get_type ()))))))
, C);
406
407 ctk_widget_show_all (A);
408
409 str = g_string_new ("");
410
411 add_gesture (A, "a1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
412 add_gesture (B, "b1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
413 add_gesture (C, "c1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
414 add_gesture (A, "a2", CTK_PHASE_TARGET, str, CTK_EVENT_SEQUENCE_NONE);
415 add_gesture (B, "b2", CTK_PHASE_TARGET, str, CTK_EVENT_SEQUENCE_NONE);
416 add_gesture (C, "c2", CTK_PHASE_TARGET, str, CTK_EVENT_SEQUENCE_NONE);
417 add_gesture (A, "a3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
418 add_gesture (B, "b3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
419 add_gesture (C, "c3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
420
421 point_update (&mouse_state, C, 10, 10);
422 point_press (&mouse_state, C, 1);
423
424 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", 431, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"bubble c3, \" \"bubble b3, \" \"bubble a3\""
, __s1, "==", __s2); } while (0)
425 "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", 431, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"bubble c3, \" \"bubble b3, \" \"bubble a3\""
, __s1, "==", __s2); } while (0)
426 "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", 431, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"bubble c3, \" \"bubble b3, \" \"bubble a3\""
, __s1, "==", __s2); } while (0)
427 "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", 431, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"bubble c3, \" \"bubble b3, \" \"bubble a3\""
, __s1, "==", __s2); } while (0)
428 "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", 431, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"bubble c3, \" \"bubble b3, \" \"bubble a3\""
, __s1, "==", __s2); } while (0)
429 "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", 431, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"bubble c3, \" \"bubble b3, \" \"bubble a3\""
, __s1, "==", __s2); } while (0)
430 "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", 431, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"bubble c3, \" \"bubble b3, \" \"bubble a3\""
, __s1, "==", __s2); } while (0)
431 "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", 431, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"bubble c3, \" \"bubble b3, \" \"bubble a3\""
, __s1, "==", __s2); } while (0)
;
432
433 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)))))
;
434
435 ctk_widget_destroy (A);
436}
437
438static void
439test_mixed (void)
440{
441 CtkWidget *A, *B, *C;
442 GString *str;
443
444 A = ctk_window_new (CTK_WINDOW_TOPLEVEL);
445 ctk_widget_set_name (A, "A");
446 B = ctk_box_new (CTK_ORIENTATION_HORIZONTAL, 0);
447 ctk_widget_set_name (B, "B");
448 C = ctk_event_box_new ();
449 ctk_widget_set_hexpand (C, TRUE(!(0)));
450 ctk_widget_set_vexpand (C, TRUE(!(0)));
451 ctk_widget_set_name (C, "C");
452
453 ctk_container_add (CTK_CONTAINER (A)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((A)), ((ctk_container_get_type ()))))))
, B);
454 ctk_container_add (CTK_CONTAINER (B)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((B)), ((ctk_container_get_type ()))))))
, C);
455
456 ctk_widget_show_all (A);
457
458 str = g_string_new ("");
459
460 add_gesture (A, "a1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
461 add_gesture (B, "b1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
462 add_gesture (C, "c1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
463 add_gesture (A, "a2", CTK_PHASE_TARGET, str, CTK_EVENT_SEQUENCE_NONE);
464 add_gesture (B, "b2", CTK_PHASE_TARGET, str, CTK_EVENT_SEQUENCE_NONE);
465 add_gesture (C, "c2", CTK_PHASE_TARGET, str, CTK_EVENT_SEQUENCE_NONE);
466 add_gesture (A, "a3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
467 add_gesture (B, "b3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
468 add_gesture (C, "c3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
469
470 add_legacy (A, str, CDK_EVENT_PROPAGATE((0)));
471 add_legacy (B, str, CDK_EVENT_PROPAGATE((0)));
472 add_legacy (C, str, CDK_EVENT_PROPAGATE((0)));
473
474 point_update (&mouse_state, C, 10, 10);
475 point_press (&mouse_state, C, 1);
476
477 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", 487, ((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)
478 "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", 487, ((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)
479 "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", 487, ((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)
480 "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", 487, ((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)
481 "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", 487, ((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)
482 "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", 487, ((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)
483 "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", 487, ((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)
484 "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", 487, ((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)
485 "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", 487, ((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)
486 "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", 487, ((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)
487 "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", 487, ((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)
;
488
489 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)))))
;
490
491 ctk_widget_destroy (A);
492}
493
494static void
495test_early_exit (void)
496{
497 CtkWidget *A, *B, *C;
498 GString *str;
499
500 A = ctk_window_new (CTK_WINDOW_TOPLEVEL);
501 ctk_widget_set_name (A, "A");
502 B = ctk_box_new (CTK_ORIENTATION_HORIZONTAL, 0);
503 ctk_widget_set_name (B, "B");
504 C = ctk_event_box_new ();
505 ctk_widget_set_hexpand (C, TRUE(!(0)));
506 ctk_widget_set_vexpand (C, TRUE(!(0)));
507 ctk_widget_set_name (C, "C");
508
509 ctk_container_add (CTK_CONTAINER (A)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((A)), ((ctk_container_get_type ()))))))
, B);
510 ctk_container_add (CTK_CONTAINER (B)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((B)), ((ctk_container_get_type ()))))))
, C);
511
512 ctk_widget_show_all (A);
513
514 str = g_string_new ("");
515
516 add_gesture (A, "a1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
517 add_gesture (B, "b1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
518 add_gesture (C, "c1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
519 add_gesture (C, "c2", CTK_PHASE_TARGET, str, CTK_EVENT_SEQUENCE_NONE);
520 add_gesture (A, "a3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
521 add_gesture (B, "b3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
522 add_gesture (C, "c3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
523
524 add_legacy (A, str, CDK_EVENT_PROPAGATE((0)));
525 add_legacy (B, str, CDK_EVENT_STOP((!(0))));
526 add_legacy (C, str, CDK_EVENT_PROPAGATE((0)));
527
528 point_update (&mouse_state, C, 10, 10);
529 point_press (&mouse_state, C, 1);
530
531 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", 538, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"legacy C, \" \"bubble c3, \" \"legacy B\""
, __s1, "==", __s2); } while (0)
532 "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", 538, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"legacy C, \" \"bubble c3, \" \"legacy B\""
, __s1, "==", __s2); } while (0)
533 "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", 538, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"legacy C, \" \"bubble c3, \" \"legacy B\""
, __s1, "==", __s2); } while (0)
534 "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", 538, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"legacy C, \" \"bubble c3, \" \"legacy B\""
, __s1, "==", __s2); } while (0)
535 "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", 538, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"legacy C, \" \"bubble c3, \" \"legacy B\""
, __s1, "==", __s2); } while (0)
536 "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", 538, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"legacy C, \" \"bubble c3, \" \"legacy B\""
, __s1, "==", __s2); } while (0)
537 "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", 538, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"legacy C, \" \"bubble c3, \" \"legacy B\""
, __s1, "==", __s2); } while (0)
538 "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", 538, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"legacy C, \" \"bubble c3, \" \"legacy B\""
, __s1, "==", __s2); } while (0)
;
539
540 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)))))
;
541
542 ctk_widget_destroy (A);
543}
544
545static void
546test_claim_capture (void)
547{
548 CtkWidget *A, *B, *C;
549 GString *str;
550
551 A = ctk_window_new (CTK_WINDOW_TOPLEVEL);
552 ctk_widget_set_name (A, "A");
553 B = ctk_box_new (CTK_ORIENTATION_HORIZONTAL, 0);
554 ctk_widget_set_name (B, "B");
555 C = ctk_event_box_new ();
556 ctk_widget_set_hexpand (C, TRUE(!(0)));
557 ctk_widget_set_vexpand (C, TRUE(!(0)));
558 ctk_widget_set_name (C, "C");
559
560 ctk_container_add (CTK_CONTAINER (A)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((A)), ((ctk_container_get_type ()))))))
, B);
561 ctk_container_add (CTK_CONTAINER (B)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((B)), ((ctk_container_get_type ()))))))
, C);
562
563 ctk_widget_show_all (A);
564
565 str = g_string_new ("");
566
567 add_gesture (A, "a1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
568 add_gesture (B, "b1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
569 add_gesture (C, "c1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_CLAIMED);
570 add_gesture (C, "c2", CTK_PHASE_TARGET, str, CTK_EVENT_SEQUENCE_NONE);
571 add_gesture (A, "a3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
572 add_gesture (B, "b3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
573 add_gesture (C, "c3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
574
575 point_update (&mouse_state, C, 10, 10);
576 point_press (&mouse_state, C, 1);
577
578 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", 582, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"c1 state claimed\""
, __s1, "==", __s2); } while (0)
579 "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", 582, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"c1 state claimed\""
, __s1, "==", __s2); } while (0)
580 "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", 582, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"c1 state claimed\""
, __s1, "==", __s2); } while (0)
581 "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", 582, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"c1 state claimed\""
, __s1, "==", __s2); } while (0)
582 "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", 582, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"c1 state claimed\""
, __s1, "==", __s2); } while (0)
;
583
584 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)))))
;
585
586 ctk_widget_destroy (A);
587}
588
589static void
590test_claim_target (void)
591{
592 CtkWidget *A, *B, *C;
593 GString *str;
594
595 A = ctk_window_new (CTK_WINDOW_TOPLEVEL);
596 ctk_widget_set_name (A, "A");
597 B = ctk_box_new (CTK_ORIENTATION_HORIZONTAL, 0);
598 ctk_widget_set_name (B, "B");
599 C = ctk_event_box_new ();
600 ctk_widget_set_hexpand (C, TRUE(!(0)));
601 ctk_widget_set_vexpand (C, TRUE(!(0)));
602 ctk_widget_set_name (C, "C");
603
604 ctk_container_add (CTK_CONTAINER (A)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((A)), ((ctk_container_get_type ()))))))
, B);
605 ctk_container_add (CTK_CONTAINER (B)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((B)), ((ctk_container_get_type ()))))))
, C);
606
607 ctk_widget_show_all (A);
608
609 str = g_string_new ("");
610
611 add_gesture (A, "a1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
612 add_gesture (B, "b1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
613 add_gesture (C, "c1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
614 add_gesture (C, "c2", CTK_PHASE_TARGET, str, CTK_EVENT_SEQUENCE_CLAIMED);
615 add_gesture (A, "a3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
616 add_gesture (B, "b3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
617 add_gesture (C, "c3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
618
619 point_update (&mouse_state, C, 10, 10);
620 point_press (&mouse_state, C, 1);
621
622 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", 627, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
623 "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", 627, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
624 "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", 627, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
625 "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", 627, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
626 "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", 627, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
627 "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", 627, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
;
628
629 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)))))
;
630
631 ctk_widget_destroy (A);
632}
633
634static void
635test_claim_bubble (void)
636{
637 CtkWidget *A, *B, *C;
638 GString *str;
639
640 A = ctk_window_new (CTK_WINDOW_TOPLEVEL);
641 ctk_widget_set_name (A, "A");
642 B = ctk_box_new (CTK_ORIENTATION_HORIZONTAL, 0);
643 ctk_widget_set_name (B, "B");
644 C = ctk_event_box_new ();
645 ctk_widget_set_hexpand (C, TRUE(!(0)));
646 ctk_widget_set_vexpand (C, TRUE(!(0)));
647 ctk_widget_set_name (C, "C");
648
649 ctk_container_add (CTK_CONTAINER (A)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((A)), ((ctk_container_get_type ()))))))
, B);
650 ctk_container_add (CTK_CONTAINER (B)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((B)), ((ctk_container_get_type ()))))))
, C);
651
652 ctk_widget_show_all (A);
653
654 str = g_string_new ("");
655
656 add_gesture (A, "a1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
657 add_gesture (B, "b1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
658 add_gesture (C, "c1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
659 add_gesture (C, "c2", CTK_PHASE_TARGET, str, CTK_EVENT_SEQUENCE_NONE);
660 add_gesture (A, "a3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
661 add_gesture (B, "b3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_CLAIMED);
662 add_gesture (C, "c3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
663
664 point_update (&mouse_state, C, 10, 10);
665 point_press (&mouse_state, C, 1);
666
667 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", 678, ((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)
668 "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", 678, ((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)
669 "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", 678, ((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)
670 "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", 678, ((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)
671 "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", 678, ((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)
672 "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", 678, ((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)
673 "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", 678, ((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)
674 "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", 678, ((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)
675 "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", 678, ((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)
676 "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", 678, ((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)
677 "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", 678, ((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)
678 )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", 678, ((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)
;
679
680 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)))))
;
681
682 ctk_widget_destroy (A);
683}
684
685static void
686test_early_claim_capture (void)
687{
688 CtkWidget *A, *B, *C;
689 CtkGesture *g;
690 GString *str;
691
692 A = ctk_window_new (CTK_WINDOW_TOPLEVEL);
693 ctk_widget_set_name (A, "A");
694 B = ctk_box_new (CTK_ORIENTATION_HORIZONTAL, 0);
695 ctk_widget_set_name (B, "B");
696 C = ctk_event_box_new ();
697 ctk_widget_set_hexpand (C, TRUE(!(0)));
698 ctk_widget_set_vexpand (C, TRUE(!(0)));
699 ctk_widget_set_name (C, "C");
700
701 ctk_container_add (CTK_CONTAINER (A)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((A)), ((ctk_container_get_type ()))))))
, B);
702 ctk_container_add (CTK_CONTAINER (B)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((B)), ((ctk_container_get_type ()))))))
, C);
703
704 ctk_widget_show_all (A);
705
706 str = g_string_new ("");
707
708 add_gesture (A, "a1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
709 g = add_gesture (B, "b1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_CLAIMED);
710 add_gesture (C, "c1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_CLAIMED);
711 add_gesture (C, "c2", CTK_PHASE_TARGET, str, CTK_EVENT_SEQUENCE_NONE);
712 add_gesture (A, "a3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
713 add_gesture (B, "b3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
714 add_gesture (C, "c3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
715
716 point_update (&mouse_state, C, 10, 10);
717 point_press (&mouse_state, C, 1);
718
719 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"
, 722, ((const char*) (__func__)), "str->str" " " "==" " "
"\"capture a1, \" \"capture b1, \" \"b1 state claimed\"", __s1
, "==", __s2); } while (0)
720 "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"
, 722, ((const char*) (__func__)), "str->str" " " "==" " "
"\"capture a1, \" \"capture b1, \" \"b1 state claimed\"", __s1
, "==", __s2); } while (0)
721 "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"
, 722, ((const char*) (__func__)), "str->str" " " "==" " "
"\"capture a1, \" \"capture b1, \" \"b1 state claimed\"", __s1
, "==", __s2); } while (0)
722 "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"
, 722, ((const char*) (__func__)), "str->str" " " "==" " "
"\"capture a1, \" \"capture b1, \" \"b1 state claimed\"", __s1
, "==", __s2); } while (0)
;
723
724 /* Reset the string */
725 g_string_erase (str, 0, str->len);
726
727 ctk_gesture_set_state (g, CTK_EVENT_SEQUENCE_DENIED);
728
729 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", 732, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture c1, \" \"c1 state claimed, \" \"b1 state denied\""
, __s1, "==", __s2); } while (0)
730 "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", 732, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture c1, \" \"c1 state claimed, \" \"b1 state denied\""
, __s1, "==", __s2); } while (0)
731 "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", 732, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture c1, \" \"c1 state claimed, \" \"b1 state denied\""
, __s1, "==", __s2); } while (0)
732 "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", 732, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture c1, \" \"c1 state claimed, \" \"b1 state denied\""
, __s1, "==", __s2); } while (0)
;
733
734 point_release (&mouse_state, 1);
735
736 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)))))
;
737 ctk_widget_destroy (A);
738}
739
740static void
741test_late_claim_capture (void)
742{
743 CtkWidget *A, *B, *C;
744 CtkGesture *g;
745 GString *str;
746
747 A = ctk_window_new (CTK_WINDOW_TOPLEVEL);
748 ctk_widget_set_name (A, "A");
749 B = ctk_box_new (CTK_ORIENTATION_HORIZONTAL, 0);
750 ctk_widget_set_name (B, "B");
751 C = ctk_event_box_new ();
752 ctk_widget_set_hexpand (C, TRUE(!(0)));
753 ctk_widget_set_vexpand (C, TRUE(!(0)));
754 ctk_widget_set_name (C, "C");
755
756 ctk_container_add (CTK_CONTAINER (A)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((A)), ((ctk_container_get_type ()))))))
, B);
757 ctk_container_add (CTK_CONTAINER (B)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((B)), ((ctk_container_get_type ()))))))
, C);
758
759 ctk_widget_show_all (A);
760
761 str = g_string_new ("");
762
763 add_gesture (A, "a1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
764 g = add_gesture (B, "b1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
765 add_gesture (C, "c1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
766 add_gesture (C, "c2", CTK_PHASE_TARGET, str, CTK_EVENT_SEQUENCE_CLAIMED);
767 add_gesture (A, "a3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
768 add_gesture (B, "b3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
769 add_gesture (C, "c3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
770
771 point_update (&mouse_state, C, 10, 10);
772 point_press (&mouse_state, C, 1);
773
774 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", 779, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
775 "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", 779, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
776 "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", 779, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
777 "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", 779, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
778 "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", 779, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
779 "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", 779, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
;
780
781 /* Reset the string */
782 g_string_erase (str, 0, str->len);
783
784 ctk_gesture_set_state (g, CTK_EVENT_SEQUENCE_CLAIMED);
785
786 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"
, 789, ((const char*) (__func__)), "str->str" " " "==" " "
"\"c2 cancelled, \" \"c1 cancelled, \" \"b1 state claimed\""
, __s1, "==", __s2); } while (0)
787 "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"
, 789, ((const char*) (__func__)), "str->str" " " "==" " "
"\"c2 cancelled, \" \"c1 cancelled, \" \"b1 state claimed\""
, __s1, "==", __s2); } while (0)
788 "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"
, 789, ((const char*) (__func__)), "str->str" " " "==" " "
"\"c2 cancelled, \" \"c1 cancelled, \" \"b1 state claimed\""
, __s1, "==", __s2); } while (0)
789 "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"
, 789, ((const char*) (__func__)), "str->str" " " "==" " "
"\"c2 cancelled, \" \"c1 cancelled, \" \"b1 state claimed\""
, __s1, "==", __s2); } while (0)
;
790
791 point_release (&mouse_state, 1);
792
793 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)))))
;
794 ctk_widget_destroy (A);
795}
796
797static void
798test_group (void)
799{
800 CtkWidget *A, *B, *C;
801 GString *str;
802 CtkGesture *g1, *g2;
803
804 A = ctk_window_new (CTK_WINDOW_TOPLEVEL);
805 ctk_widget_set_name (A, "A");
806 B = ctk_box_new (CTK_ORIENTATION_HORIZONTAL, 0);
807 ctk_widget_set_name (B, "B");
808 C = ctk_event_box_new ();
809 ctk_widget_set_hexpand (C, TRUE(!(0)));
810 ctk_widget_set_vexpand (C, TRUE(!(0)));
811 ctk_widget_set_name (C, "C");
812
813 ctk_container_add (CTK_CONTAINER (A)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((A)), ((ctk_container_get_type ()))))))
, B);
814 ctk_container_add (CTK_CONTAINER (B)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((B)), ((ctk_container_get_type ()))))))
, C);
815
816 ctk_widget_show_all (A);
817
818 str = g_string_new ("");
819
820 add_gesture (A, "a1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
821 add_gesture (B, "b1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
822 add_gesture (C, "c1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
823 g1 = add_gesture (C, "c2", CTK_PHASE_TARGET, str, CTK_EVENT_SEQUENCE_NONE);
824 g2 = add_gesture (C, "c3", CTK_PHASE_TARGET, str, CTK_EVENT_SEQUENCE_CLAIMED);
825 ctk_gesture_group (g1, g2);
826 add_gesture (A, "a3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
827 add_gesture (B, "b3", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
828 add_gesture (C, "c4", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
829
830 point_update (&mouse_state, C, 10, 10);
831 point_press (&mouse_state, C, 1);
832
833 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"
, 840, ((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)
834 "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"
, 840, ((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)
835 "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"
, 840, ((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)
836 "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"
, 840, ((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)
837 "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"
, 840, ((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)
838 "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"
, 840, ((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)
839 "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"
, 840, ((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)
840 "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"
, 840, ((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)
;
841
842 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)))))
;
843
844 ctk_widget_destroy (A);
845}
846
847static void
848test_gestures_outside_grab (void)
849{
850 CtkWidget *A, *B, *C, *D;
851 GString *str;
852
853 A = ctk_window_new (CTK_WINDOW_TOPLEVEL);
854 ctk_widget_set_name (A, "A");
855 B = ctk_box_new (CTK_ORIENTATION_HORIZONTAL, 0);
856 ctk_widget_set_name (B, "B");
857 C = ctk_event_box_new ();
858 ctk_widget_set_hexpand (C, TRUE(!(0)));
859 ctk_widget_set_vexpand (C, TRUE(!(0)));
860 ctk_widget_set_name (C, "C");
861
862 ctk_container_add (CTK_CONTAINER (A)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((A)), ((ctk_container_get_type ()))))))
, B);
863 ctk_container_add (CTK_CONTAINER (B)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((B)), ((ctk_container_get_type ()))))))
, C);
864
865 ctk_widget_show_all (A);
866
867 D = ctk_window_new (CTK_WINDOW_TOPLEVEL);
868 ctk_widget_show (D);
869
870 str = g_string_new ("");
871
872 add_gesture (A, "a1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
873 add_gesture (B, "b1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
874 add_gesture (C, "c1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
875 add_gesture (C, "c2", CTK_PHASE_TARGET, str, CTK_EVENT_SEQUENCE_CLAIMED);
876 add_gesture (B, "b2", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
877 add_gesture (A, "a2", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
878
879 point_update (&mouse_state, C, 10, 10);
880 point_press (&mouse_state, C, 1);
881
882 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", 887, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
883 "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", 887, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
884 "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", 887, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
885 "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", 887, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
886 "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", 887, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
887 "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", 887, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
;
888
889 /* Set a grab on another window */
890 g_string_erase (str, 0, str->len);
891 ctk_grab_add (D);
892
893 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", 897, ((const char*) (__func__)), "str->str"
" " "==" " " "\"c1 cancelled, \" \"c2 cancelled, \" \"b1 cancelled, \" \"a1 cancelled\""
, __s1, "==", __s2); } while (0)
894 "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", 897, ((const char*) (__func__)), "str->str"
" " "==" " " "\"c1 cancelled, \" \"c2 cancelled, \" \"b1 cancelled, \" \"a1 cancelled\""
, __s1, "==", __s2); } while (0)
895 "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", 897, ((const char*) (__func__)), "str->str"
" " "==" " " "\"c1 cancelled, \" \"c2 cancelled, \" \"b1 cancelled, \" \"a1 cancelled\""
, __s1, "==", __s2); } while (0)
896 "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", 897, ((const char*) (__func__)), "str->str"
" " "==" " " "\"c1 cancelled, \" \"c2 cancelled, \" \"b1 cancelled, \" \"a1 cancelled\""
, __s1, "==", __s2); } while (0)
897 "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", 897, ((const char*) (__func__)), "str->str"
" " "==" " " "\"c1 cancelled, \" \"c2 cancelled, \" \"b1 cancelled, \" \"a1 cancelled\""
, __s1, "==", __s2); } while (0)
;
898
899 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)))))
;
900
901 ctk_widget_destroy (A);
902 ctk_widget_destroy (D);
903}
904
905static void
906test_gestures_inside_grab (void)
907{
908 CtkWidget *A, *B, *C;
909 GString *str;
910
911 A = ctk_window_new (CTK_WINDOW_TOPLEVEL);
912 ctk_widget_set_name (A, "A");
913 B = ctk_box_new (CTK_ORIENTATION_HORIZONTAL, 0);
914 ctk_widget_set_name (B, "B");
915 C = ctk_event_box_new ();
916 ctk_widget_set_hexpand (C, TRUE(!(0)));
917 ctk_widget_set_vexpand (C, TRUE(!(0)));
918 ctk_widget_set_name (C, "C");
919
920 ctk_container_add (CTK_CONTAINER (A)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((A)), ((ctk_container_get_type ()))))))
, B);
921 ctk_container_add (CTK_CONTAINER (B)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((B)), ((ctk_container_get_type ()))))))
, C);
922
923 ctk_widget_show_all (A);
924
925 str = g_string_new ("");
926
927 add_gesture (A, "a1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
928 add_gesture (B, "b1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
929 add_gesture (C, "c1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
930 add_gesture (C, "c2", CTK_PHASE_TARGET, str, CTK_EVENT_SEQUENCE_CLAIMED);
931 add_gesture (B, "b2", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
932 add_gesture (A, "a2", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_NONE);
933
934 point_update (&mouse_state, C, 10, 10);
935 point_press (&mouse_state, C, 1);
936
937 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", 942, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
938 "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", 942, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
939 "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", 942, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
940 "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", 942, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
941 "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", 942, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
942 "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", 942, ((const char*) (__func__))
, "str->str" " " "==" " " "\"capture a1, \" \"capture b1, \" \"capture c1, \" \"target c2, \" \"c2 state claimed\""
, __s1, "==", __s2); } while (0)
;
943
944 /* Set a grab on B */
945 g_string_erase (str, 0, str->len);
946 ctk_grab_add (B);
947 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", 948, ((const char*) (__func__))
, "str->str" " " "==" " " "\"a1 cancelled\"", __s1, "==", __s2
); } while (0)
948 "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", 948, ((const char*) (__func__))
, "str->str" " " "==" " " "\"a1 cancelled\"", __s1, "==", __s2
); } while (0)
;
949
950 /* Update with the grab under effect */
951 g_string_erase (str, 0, str->len);
952 point_update (&mouse_state, C, 20, 20);
953 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"
, 956, ((const char*) (__func__)), "str->str" " " "==" " "
"\"b1 updated, \" \"c1 updated, \" \"c2 updated\"", __s1, "=="
, __s2); } while (0)
954 "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"
, 956, ((const char*) (__func__)), "str->str" " " "==" " "
"\"b1 updated, \" \"c1 updated, \" \"c2 updated\"", __s1, "=="
, __s2); } while (0)
955 "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"
, 956, ((const char*) (__func__)), "str->str" " " "==" " "
"\"b1 updated, \" \"c1 updated, \" \"c2 updated\"", __s1, "=="
, __s2); } while (0)
956 "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"
, 956, ((const char*) (__func__)), "str->str" " " "==" " "
"\"b1 updated, \" \"c1 updated, \" \"c2 updated\"", __s1, "=="
, __s2); } while (0)
;
957
958 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)))))
;
959
960 ctk_widget_destroy (A);
961}
962
963static void
964test_multitouch_on_single (void)
965{
966 CtkWidget *A, *B, *C;
967 GString *str;
968
969 A = ctk_window_new (CTK_WINDOW_TOPLEVEL);
970 ctk_widget_set_name (A, "A");
971 B = ctk_box_new (CTK_ORIENTATION_HORIZONTAL, 0);
972 ctk_widget_set_name (B, "B");
973 C = ctk_event_box_new ();
974 ctk_widget_set_hexpand (C, TRUE(!(0)));
975 ctk_widget_set_vexpand (C, TRUE(!(0)));
976 ctk_widget_set_name (C, "C");
977
978 ctk_container_add (CTK_CONTAINER (A)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((A)), ((ctk_container_get_type ()))))))
, B);
979 ctk_container_add (CTK_CONTAINER (B)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((B)), ((ctk_container_get_type ()))))))
, C);
980
981 ctk_widget_show_all (A);
982
983 str = g_string_new ("");
984
985 add_gesture (A, "a1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_NONE);
986 add_gesture (B, "b1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_CLAIMED);
987
988 /* First touch down */
989 point_update (&touch_state[0], C, 10, 10);
990 point_press (&touch_state[0], C, 1);
991
992 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", 995, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture a1 (1), \" \"capture b1 (1), \" \"b1 state claimed (1)\""
, __s1, "==", __s2); } while (0)
993 "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", 995, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture a1 (1), \" \"capture b1 (1), \" \"b1 state claimed (1)\""
, __s1, "==", __s2); } while (0)
994 "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", 995, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture a1 (1), \" \"capture b1 (1), \" \"b1 state claimed (1)\""
, __s1, "==", __s2); } while (0)
995 "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", 995, ((const char*) (__func__)), "str->str"
" " "==" " " "\"capture a1 (1), \" \"capture b1 (1), \" \"b1 state claimed (1)\""
, __s1, "==", __s2); } while (0)
;
996
997 /* Second touch down */
998 g_string_erase (str, 0, str->len);
999 point_update (&touch_state[1], C, 20, 20);
1000 point_press (&touch_state[1], C, 1);
1001
1002 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", 1004
, ((const char*) (__func__)), "str->str" " " "==" " " "\"a1 state denied (2), \" \"b1 state denied (2)\""
, __s1, "==", __s2); } while (0)
1003 "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", 1004
, ((const char*) (__func__)), "str->str" " " "==" " " "\"a1 state denied (2), \" \"b1 state denied (2)\""
, __s1, "==", __s2); } while (0)
1004 "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", 1004
, ((const char*) (__func__)), "str->str" " " "==" " " "\"a1 state denied (2), \" \"b1 state denied (2)\""
, __s1, "==", __s2); } while (0)
;
1005
1006 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)))))
;
1007
1008 ctk_widget_destroy (A);
1009}
1010
1011static void
1012test_multitouch_activation (void)
1013{
1014 CtkWidget *A, *B, *C;
1015 GString *str;
1016
1017 A = ctk_window_new (CTK_WINDOW_TOPLEVEL);
1018 ctk_widget_set_name (A, "A");
1019 B = ctk_box_new (CTK_ORIENTATION_HORIZONTAL, 0);
1020 ctk_widget_set_name (B, "B");
1021 C = ctk_event_box_new ();
1022 ctk_widget_set_hexpand (C, TRUE(!(0)));
1023 ctk_widget_set_vexpand (C, TRUE(!(0)));
1024 ctk_widget_set_name (C, "C");
1025
1026 ctk_container_add (CTK_CONTAINER (A)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((A)), ((ctk_container_get_type ()))))))
, B);
1027 ctk_container_add (CTK_CONTAINER (B)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((B)), ((ctk_container_get_type ()))))))
, C);
1028
1029 ctk_widget_show_all (A);
1030
1031 str = g_string_new ("");
1032
1033 add_mt_gesture (C, "c1", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_CLAIMED);
1034
1035 /* First touch down */
1036 point_update (&touch_state[0], C, 10, 10);
1037 point_press (&touch_state[0], C, 1);
1038
1039 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", 1039, ((const char*) (__func__)), "str->str"
" " "==" " " "\"\"", __s1, "==", __s2); } while (0)
;
1040
1041 /* Second touch down */
1042 point_update (&touch_state[1], C, 20, 20);
1043 point_press (&touch_state[1], C, 1);
1044
1045 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", 1048
, ((const char*) (__func__)), "str->str" " " "==" " " "\"c1 began, \" \"c1 state claimed (2), \" \"c1 state claimed\""
, __s1, "==", __s2); } while (0)
1046 "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", 1048
, ((const char*) (__func__)), "str->str" " " "==" " " "\"c1 began, \" \"c1 state claimed (2), \" \"c1 state claimed\""
, __s1, "==", __s2); } while (0)
1047 "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", 1048
, ((const char*) (__func__)), "str->str" " " "==" " " "\"c1 began, \" \"c1 state claimed (2), \" \"c1 state claimed\""
, __s1, "==", __s2); } while (0)
1048 "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", 1048
, ((const char*) (__func__)), "str->str" " " "==" " " "\"c1 began, \" \"c1 state claimed (2), \" \"c1 state claimed\""
, __s1, "==", __s2); } while (0)
;
1049
1050 /* First touch up */
1051 g_string_erase (str, 0, str->len);
1052 point_release (&touch_state[0], 1);
1053
1054 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", 1055, ((const char*) (__func__)
), "str->str" " " "==" " " "\"c1 ended\"", __s1, "==", __s2
); } while (0)
1055 "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", 1055, ((const char*) (__func__)
), "str->str" " " "==" " " "\"c1 ended\"", __s1, "==", __s2
); } while (0)
;
1056
1057 /* A third touch down triggering again action */
1058 g_string_erase (str, 0, str->len);
1059 point_update (&touch_state[2], C, 20, 20);
1060 point_press (&touch_state[2], C, 1);
1061
1062 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", 1064, ((const char*) (__func__)
), "str->str" " " "==" " " "\"c1 began, \" \"c1 state claimed (3)\""
, __s1, "==", __s2); } while (0)
1063 "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", 1064, ((const char*) (__func__)
), "str->str" " " "==" " " "\"c1 began, \" \"c1 state claimed (3)\""
, __s1, "==", __s2); } while (0)
1064 "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", 1064, ((const char*) (__func__)
), "str->str" " " "==" " " "\"c1 began, \" \"c1 state claimed (3)\""
, __s1, "==", __s2); } while (0)
;
1065
1066 /* One touch up, gesture is finished again */
1067 g_string_erase (str, 0, str->len);
1068 point_release (&touch_state[2], 1);
1069
1070 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", 1071, ((const char*) (__func__)
), "str->str" " " "==" " " "\"c1 ended\"", __s1, "==", __s2
); } while (0)
1071 "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", 1071, ((const char*) (__func__)
), "str->str" " " "==" " " "\"c1 ended\"", __s1, "==", __s2
); } while (0)
;
1072
1073 /* Another touch up, gesture remains inactive */
1074 g_string_erase (str, 0, str->len);
1075 point_release (&touch_state[1], 1);
1076
1077 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", 1077, ((const char*) (__func__)), "str->str"
" " "==" " " "\"\"", __s1, "==", __s2); } while (0)
;
1078
1079 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)))))
;
1080
1081 ctk_widget_destroy (A);
1082}
1083
1084static void
1085test_multitouch_interaction (void)
1086{
1087 CtkWidget *A, *B, *C;
1088 CtkGesture *g;
1089 GString *str;
1090
1091 A = ctk_window_new (CTK_WINDOW_TOPLEVEL);
1092 ctk_widget_set_name (A, "A");
1093 B = ctk_box_new (CTK_ORIENTATION_HORIZONTAL, 0);
1094 ctk_widget_set_name (B, "B");
1095 C = ctk_event_box_new ();
1096 ctk_widget_set_hexpand (C, TRUE(!(0)));
1097 ctk_widget_set_vexpand (C, TRUE(!(0)));
1098 ctk_widget_set_name (C, "C");
1099
1100 ctk_container_add (CTK_CONTAINER (A)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((A)), ((ctk_container_get_type ()))))))
, B);
1101 ctk_container_add (CTK_CONTAINER (B)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((B)), ((ctk_container_get_type ()))))))
, C);
1102
1103 ctk_widget_show_all (A);
1104
1105 str = g_string_new ("");
1106
1107 g = add_gesture (A, "a1", CTK_PHASE_CAPTURE, str, CTK_EVENT_SEQUENCE_CLAIMED);
1108 add_mt_gesture (C, "c1", CTK_PHASE_BUBBLE, str, CTK_EVENT_SEQUENCE_CLAIMED);
1109
1110 /* First touch down, a1 claims the sequence */
1111 point_update (&touch_state[0], C, 10, 10);
1
Calling 'point_update'
1112 point_press (&touch_state[0], C, 1);
1113
1114 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", 1116
, ((const char*) (__func__)), "str->str" " " "==" " " "\"capture a1 (1), \" \"a1 state claimed (1)\""
, __s1, "==", __s2); } while (0)
1115 "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", 1116
, ((const char*) (__func__)), "str->str" " " "==" " " "\"capture a1 (1), \" \"a1 state claimed (1)\""
, __s1, "==", __s2); } while (0)
1116 "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", 1116
, ((const char*) (__func__)), "str->str" " " "==" " " "\"capture a1 (1), \" \"a1 state claimed (1)\""
, __s1, "==", __s2); } while (0)
;
1117
1118 /* Second touch down, a1 denies and c1 takes over */
1119 g_string_erase (str, 0, str->len);
1120 point_update (&touch_state[1], C, 20, 20);
1121 point_press (&touch_state[1], C, 1);
1122
1123 /* Denying sequences in touch-excess situation is a responsibility of the caller */
1124 ctk_gesture_set_state (g, CTK_EVENT_SEQUENCE_DENIED);
1125
1126 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", 1131, ((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)
1127 "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", 1131, ((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)
1128 "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", 1131, ((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)
1129 "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", 1131, ((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)
1130 "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", 1131, ((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)
1131 "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", 1131, ((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)
;
1132
1133 /* Move first point, only c1 should update */
1134 g_string_erase (str, 0, str->len);
1135 point_update (&touch_state[0], C, 30, 30);
1136
1137 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", 1138, ((const char*) (__func__)
), "str->str" " " "==" " " "\"c1 updated\"", __s1, "==", __s2
); } while (0)
1138 "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", 1138, ((const char*) (__func__)
), "str->str" " " "==" " " "\"c1 updated\"", __s1, "==", __s2
); } while (0)
;
1139
1140 /* First touch up */
1141 g_string_erase (str, 0, str->len);
1142 point_release (&touch_state[0], 1);
1143
1144 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", 1145, ((const char*) (__func__)
), "str->str" " " "==" " " "\"c1 ended\"", __s1, "==", __s2
); } while (0)
1145 "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", 1145, ((const char*) (__func__)
), "str->str" " " "==" " " "\"c1 ended\"", __s1, "==", __s2
); } while (0)
;
1146
1147 /* A third touch down triggering again action on c1 */
1148 g_string_erase (str, 0, str->len);
1149 point_update (&touch_state[2], C, 20, 20);
1150 point_press (&touch_state[2], C, 1);
1151
1152 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"
, 1155, ((const char*) (__func__)), "str->str" " " "==" " "
"\"a1 state denied (3), \" \"c1 began, \" \"c1 state claimed (3)\""
, __s1, "==", __s2); } while (0)
1153 "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"
, 1155, ((const char*) (__func__)), "str->str" " " "==" " "
"\"a1 state denied (3), \" \"c1 began, \" \"c1 state claimed (3)\""
, __s1, "==", __s2); } while (0)
1154 "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"
, 1155, ((const char*) (__func__)), "str->str" " " "==" " "
"\"a1 state denied (3), \" \"c1 began, \" \"c1 state claimed (3)\""
, __s1, "==", __s2); } while (0)
1155 "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"
, 1155, ((const char*) (__func__)), "str->str" " " "==" " "
"\"a1 state denied (3), \" \"c1 began, \" \"c1 state claimed (3)\""
, __s1, "==", __s2); } while (0)
;
1156
1157 /* One touch up, gesture is finished again */
1158 g_string_erase (str, 0, str->len);
1159 point_release (&touch_state[2], 1);
1160
1161 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", 1162, ((const char*) (__func__)
), "str->str" " " "==" " " "\"c1 ended\"", __s1, "==", __s2
); } while (0)
1162 "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", 1162, ((const char*) (__func__)
), "str->str" " " "==" " " "\"c1 ended\"", __s1, "==", __s2
); } while (0)
;
1163
1164 /* Another touch up, gesture remains inactive */
1165 g_string_erase (str, 0, str->len);
1166 point_release (&touch_state[1], 1);
1167
1168 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", 1168, ((const char*) (__func__)), "str->str"
" " "==" " " "\"\"", __s1, "==", __s2); } while (0)
;
1169
1170 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)))))
;
1171
1172 ctk_widget_destroy (A);
1173}
1174
1175int
1176main (int argc, char *argv[])
1177{
1178 ctk_test_init (&argc, &argv);
1179
1180 g_test_add_func ("/gestures/propagation/phases", test_phases);
1181 g_test_add_func ("/gestures/propagation/mixed", test_mixed);
1182 g_test_add_func ("/gestures/propagation/early-exit", test_early_exit);
1183 g_test_add_func ("/gestures/claim/capture", test_claim_capture);
1184 g_test_add_func ("/gestures/claim/target", test_claim_target);
1185 g_test_add_func ("/gestures/claim/bubble", test_claim_bubble);
1186 g_test_add_func ("/gestures/claim/early-capture", test_early_claim_capture);
1187 g_test_add_func ("/gestures/claim/late-capture", test_late_claim_capture);
1188 g_test_add_func ("/gestures/group", test_group);
1189 g_test_add_func ("/gestures/grabs/gestures-outside-grab", test_gestures_outside_grab);
1190 g_test_add_func ("/gestures/grabs/gestures-inside-grab", test_gestures_inside_grab);
1191 g_test_add_func ("/gestures/multitouch/gesture-single", test_multitouch_on_single);
1192 g_test_add_func ("/gestures/multitouch/multitouch-activation", test_multitouch_activation);
1193 g_test_add_func ("/gestures/multitouch/interaction", test_multitouch_interaction);
1194
1195 return g_test_run ();
1196}