@@ -105,13 +105,6 @@ export component TestCase inherits Window {
105
105
popup2.show ();
106
106
}
107
107
}
108
- Button {
109
- text : "Open two popups" ;
110
- clicked => {
111
- popup1.show ();
112
- popup2.show ();
113
- }
114
- }
115
108
}
116
109
}
117
110
@@ -148,6 +141,7 @@ export component TestCase inherits Window {
148
141
border-color : pink;
149
142
background : orange;
150
143
}
144
+
151
145
VerticalLayout {
152
146
padding : 3px ;
153
147
ComboBox {
@@ -156,6 +150,7 @@ export component TestCase inherits Window {
156
150
result += value;
157
151
}
158
152
}
153
+
159
154
HorizontalLayout {
160
155
Button {
161
156
text : "close this" ;
@@ -164,13 +159,7 @@ export component TestCase inherits Window {
164
159
popup2.close ();
165
160
}
166
161
}
167
- Button {
168
- text : "close popup1" ;
169
- clicked => {
170
- result += "C1" ;
171
- popup1.close ();
172
- }
173
- }
162
+
174
163
Button {
175
164
text : "open popup1" ;
176
165
clicked => {
@@ -180,6 +169,7 @@ export component TestCase inherits Window {
180
169
}
181
170
}
182
171
}
172
+
183
173
close-policy : no-auto-close;
184
174
}
185
175
}
@@ -190,14 +180,24 @@ export component TestCase inherits Window {
190
180
use slint::{platform::WindowEvent, platform::PointerEventButton, LogicalPosition};
191
181
let instance = TestCase::new().unwrap();
192
182
193
- // open both popups
194
- slint_testing::send_mouse_click(&instance, 380 ., 10.);
183
+ // open popup1
184
+ slint_testing::send_mouse_click(&instance, 10 ., 10.);
195
185
196
- // clicking in P1 doesn nothing
186
+ // check P1 is open
197
187
slint_testing::send_mouse_click(&instance, 210., 90.);
188
+ assert_eq!(instance.get_result(), "P1");
189
+ instance.set_result("".into());
190
+
191
+ // click outside
192
+ slint_testing::send_mouse_click(&instance, 20., 310.);
198
193
assert_eq!(instance.get_result(), "");
194
+ slint_testing::send_mouse_click(&instance, 20., 310.);
195
+ assert_eq!(instance.get_result(), "Root");
196
+ instance.set_result("".into());
199
197
200
- // go in the popup1 combobox
198
+ // open popup2
199
+ slint_testing::send_mouse_click(&instance, 210., 10.);
200
+ // go in the popup2 combobox
201
201
slint_testing::send_mouse_click(&instance, 40., 210.);
202
202
slint_testing::send_mouse_click(&instance, 40., 210. + 40.);
203
203
assert_eq!(instance.get_result(), "Aaaa");
@@ -207,39 +207,23 @@ instance.set_result("".into());
207
207
slint_testing::send_mouse_click(&instance, 40., 210. + 40.);
208
208
assert_eq!(instance.get_result(), "C2");
209
209
instance.set_result("".into());
210
- // clicking in P1
211
- slint_testing::send_mouse_click(&instance, 210., 90.);
212
- assert_eq!( instance.get_result(), "P1" );
213
- instance.set_result("".into());
214
- // open P1 combobox
210
+
211
+ // open popup1
212
+ slint_testing::send_mouse_click(& instance, 10., 10. );
213
+
214
+ // open P1 combobox and select first
215
215
slint_testing::send_mouse_click(&instance, 210., 60.);
216
216
slint_testing::send_mouse_click(&instance, 210., 60. + 40.);
217
217
assert_eq!(instance.get_result(), "First");
218
218
instance.set_result("".into());
219
- slint_testing::send_mouse_click(&instance, 210., 90.);
220
- assert_eq!(instance.get_result(), "P1");
221
- instance.set_result("".into());
222
219
223
- // click outside
224
- slint_testing::send_mouse_click(&instance, 20., 310.);
225
- assert_eq!(instance.get_result(), "");
226
- slint_testing::send_mouse_click(&instance, 20., 310.);
227
- assert_eq!(instance.get_result(), "Root");
228
- instance.set_result("".into());
229
-
230
- // open popup2
231
- slint_testing::send_mouse_click(&instance, 200., 10.);
232
- assert_eq!(instance.get_result(), "");
233
- // open popup1 from popup2
234
- slint_testing::send_mouse_click(&instance, 300., 210. + 40.);
235
- assert_eq!(instance.get_result(), "O1");
236
- instance.set_result("".into());
237
-
238
- // open P1 combobox
220
+ // open it again
239
221
slint_testing::send_mouse_click(&instance, 210., 60.);
222
+
240
223
// click outside closes the combobox
241
224
slint_testing::send_mouse_click(&instance, 20., 310.);
242
225
assert_eq!(instance.get_result(), "");
226
+
243
227
// but P1 is still open
244
228
slint_testing::send_mouse_click(&instance, 210., 90.);
245
229
assert_eq!(instance.get_result(), "P1");
@@ -249,76 +233,74 @@ instance.set_result("".into());
249
233
slint_testing::send_mouse_click(&instance, 20., 310.);
250
234
assert_eq!(instance.get_result(), "");
251
235
252
- // but p2 is still open
253
- // Open its combobox
254
- slint_testing::send_mouse_click(&instance, 40., 210.);
255
- // but click outside closes it
256
- slint_testing::send_mouse_click(&instance, 210., 90.);
236
+ // open popup2
237
+ slint_testing::send_mouse_click(&instance, 210., 10.);
257
238
assert_eq!(instance.get_result(), "");
258
239
259
- // "close this" closes p2
260
- slint_testing::send_mouse_click(&instance, 40., 210. + 40.);
261
- assert_eq!(instance.get_result(), "C2");
262
- instance.set_result("".into());
263
-
264
- slint_testing::send_mouse_click(&instance, 20., 310.);
265
- assert_eq!(instance.get_result(), "Root");
266
- instance.set_result("".into());
267
-
268
- // open both popups
269
- slint_testing::send_mouse_click(&instance, 380., 10.);
240
+ // open its combobox
241
+ slint_testing::send_mouse_click(&instance, 40., 210.);
270
242
271
- // close popup1
272
- slint_testing::send_mouse_click(&instance, 150., 210. + 40.);
273
- assert_eq!(instance.get_result(), "C1");
274
- instance.set_result("".into());
243
+ // click outside closes it
244
+ slint_testing::send_mouse_click(&instance, 210., 90.);
245
+ assert_eq!(instance.get_result(), "");
275
246
276
- // popup2 is still open and can be closed
247
+ // but P2 is still open, so open its combobox again
248
+ slint_testing::send_mouse_click(&instance, 40., 210.);
277
249
slint_testing::send_mouse_click(&instance, 40., 210. + 40.);
278
- assert_eq!(instance.get_result(), "C2 ");
250
+ assert_eq!(instance.get_result(), "Aaaa ");
279
251
instance.set_result("".into());
280
252
281
- // open both popups
282
- slint_testing::send_mouse_click(&instance, 380., 10.);
283
-
284
- // close popup2
285
- slint_testing::send_mouse_click(&instance, 40., 210. + 40.);
286
- assert_eq!(instance.get_result(), "C2");
253
+ // open popup1 from popup2
254
+ slint_testing::send_mouse_click(&instance, 300., 210. + 40.);
255
+ assert_eq!(instance.get_result(), "O1");
287
256
instance.set_result("".into());
288
257
289
- // popup1 is still open
258
+ // check P1 is open
290
259
slint_testing::send_mouse_click(&instance, 210., 90.);
291
260
assert_eq!(instance.get_result(), "P1");
292
261
instance.set_result("".into());
293
262
294
- // close popup1
295
- slint_testing::send_mouse_click(&instance, 150., 210. + 40.);
263
+ // by opening P1, P2 should be automatically closed
264
+ slint_testing::send_mouse_click(&instance, 40., 210.);
265
+ assert_eq!(instance.get_result(), "");
266
+ slint_testing::send_mouse_click(&instance, 40., 210.);
267
+ assert_eq!(instance.get_result(), "Root");
268
+ instance.set_result("".into());
296
269
297
- // open both popups
298
- slint_testing::send_mouse_click(&instance, 380 ., 10.);
270
+ // open popup1
271
+ slint_testing::send_mouse_click(&instance, 10 ., 10.);
299
272
300
273
// close popup1 by esc
301
274
slint_testing::send_keyboard_string_sequence(&instance, "\u{001b}");
302
275
303
- // popup2 is still open
304
- slint_testing::send_mouse_click(&instance, 40 ., 210. + 40 .);
305
- assert_eq!(instance.get_result(), "C2 ");
276
+ // check P1 is closed
277
+ slint_testing::send_mouse_click(&instance, 210 ., 90 .);
278
+ assert_eq!(instance.get_result(), "Root ");
306
279
instance.set_result("".into());
307
-
308
280
```
309
281
310
282
```cpp
311
283
auto handle = TestCase::create();
312
284
TestCase &instance = *handle;
313
285
314
- // open both popups
315
- slint_testing::send_mouse_click(&instance, 380 ., 10.);
286
+ // open popup1
287
+ slint_testing::send_mouse_click(&instance, 10 ., 10.);
316
288
317
- // clicking in P1 doesn nothing
289
+ // check P1 is open
318
290
slint_testing::send_mouse_click(&instance, 210., 90.);
291
+ assert_eq(instance.get_result(), "P1");
292
+ instance.set_result("");
293
+
294
+ // click outside
295
+ slint_testing::send_mouse_click(&instance, 20., 310.);
319
296
assert_eq(instance.get_result(), "");
297
+ slint_testing::send_mouse_click(&instance, 20., 310.);
298
+ assert_eq(instance.get_result(), "Root");
299
+ instance.set_result("");
320
300
321
- // go in the popup1 combobox
301
+ // open popup2
302
+ slint_testing::send_mouse_click(&instance, 210., 10.);
303
+ // go in the popup2 combobox
322
304
slint_testing::send_mouse_click(&instance, 40., 210.);
323
305
slint_testing::send_mouse_click(&instance, 40., 210. + 40.);
324
306
assert_eq(instance.get_result(), "Aaaa");
@@ -328,40 +310,23 @@ instance.set_result("");
328
310
slint_testing::send_mouse_click(&instance, 40., 210. + 40.);
329
311
assert_eq(instance.get_result(), "C2");
330
312
instance.set_result("");
331
- // clicking in P1
332
- slint_testing::send_mouse_click(&instance, 210., 90.);
333
- assert_eq( instance.get_result(), "P1" );
334
- instance.set_result("");
335
- // open P1 combobox
313
+
314
+ // open popup1
315
+ slint_testing::send_mouse_click(& instance, 10., 10. );
316
+
317
+ // open P1 combobox and select first
336
318
slint_testing::send_mouse_click(&instance, 210., 60.);
337
319
slint_testing::send_mouse_click(&instance, 210., 60. + 40.);
338
320
assert_eq(instance.get_result(), "First");
339
321
instance.set_result("");
340
- slint_testing::send_mouse_click(&instance, 210., 90.);
341
- assert_eq(instance.get_result(), "P1");
342
- instance.set_result("");
343
-
344
- // click outside
345
- slint_testing::send_mouse_click(&instance, 20., 310.);
346
- assert_eq(instance.get_result(), "");
347
- slint_testing::send_mouse_click(&instance, 20., 310.);
348
- assert_eq(instance.get_result(), "Root");
349
- instance.set_result("");
350
-
351
- // open popup2
352
- slint_testing::send_mouse_click(&instance, 200., 10.);
353
- assert_eq(instance.get_result(), "");
354
- // open popup1 from popup2
355
- slint_testing::send_mouse_click(&instance, 20., 310.);
356
- slint_testing::send_mouse_click(&instance, 300., 210. + 35.);
357
- assert_eq(instance.get_result(), "O1");
358
- instance.set_result("");
359
322
360
- // open P1 combobox
323
+ // open it again
361
324
slint_testing::send_mouse_click(&instance, 210., 60.);
325
+
362
326
// click outside closes the combobox
363
327
slint_testing::send_mouse_click(&instance, 20., 310.);
364
328
assert_eq(instance.get_result(), "");
329
+
365
330
// but P1 is still open
366
331
slint_testing::send_mouse_click(&instance, 210., 90.);
367
332
assert_eq(instance.get_result(), "P1");
@@ -371,46 +336,49 @@ instance.set_result("");
371
336
slint_testing::send_mouse_click(&instance, 20., 310.);
372
337
assert_eq(instance.get_result(), "");
373
338
374
- // but p2 is still open
375
- // Open its combobox
339
+ // open popup2
340
+ slint_testing::send_mouse_click(&instance, 210., 10.);
341
+ assert_eq(instance.get_result(), "");
342
+
343
+ // open its combobox
376
344
slint_testing::send_mouse_click(&instance, 40., 210.);
377
- // but click outside closes it
345
+
346
+ // click outside closes it
378
347
slint_testing::send_mouse_click(&instance, 210., 90.);
379
348
assert_eq(instance.get_result(), "");
380
349
381
- // "close this" closes p2
350
+ // but P2 is still open, so open its combobox again
351
+ slint_testing::send_mouse_click(&instance, 40., 210.);
382
352
slint_testing::send_mouse_click(&instance, 40., 210. + 40.);
383
- assert_eq(instance.get_result(), "C2 ");
353
+ assert_eq(instance.get_result(), "Aaaa ");
384
354
instance.set_result("");
385
355
386
- slint_testing::send_mouse_click(&instance, 20., 310.);
387
- assert_eq(instance.get_result(), "Root");
356
+ // open popup1 from popup2
357
+ slint_testing::send_mouse_click(&instance, 300., 210. + 40.);
358
+ assert_eq(instance.get_result(), "O1");
388
359
instance.set_result("");
389
360
390
- // open both popups
391
- slint_testing::send_mouse_click(&instance, 380., 10.);
392
-
393
- // close popup1
394
- slint_testing::send_mouse_click(&instance, 150., 210. + 40.);
395
- assert_eq(instance.get_result(), "C1");
361
+ // check P1 is open
362
+ slint_testing::send_mouse_click(&instance, 210., 90.);
363
+ assert_eq(instance.get_result(), "P1");
396
364
instance.set_result("");
397
365
398
- // popup2 is still open and can be closed
399
- slint_testing::send_mouse_click(&instance, 40., 210. + 40.);
400
- assert_eq(instance.get_result(), "C2");
366
+ // by opening P1, P2 should be automatically closed
367
+ slint_testing::send_mouse_click(&instance, 40., 210.);
368
+ assert_eq(instance.get_result(), "");
369
+ slint_testing::send_mouse_click(&instance, 40., 210.);
370
+ assert_eq(instance.get_result(), "Root");
401
371
instance.set_result("");
402
372
403
- // open both popups
404
- slint_testing::send_mouse_click(&instance, 380 ., 10.);
373
+ // open popup1
374
+ slint_testing::send_mouse_click(&instance, 10 ., 10.);
405
375
406
- // close popup2
407
- slint_testing::send_mouse_click(&instance, 40., 210. + 40.);
408
- assert_eq(instance.get_result(), "C2");
409
- instance.set_result("");
376
+ // close popup1 by esc
377
+ slint_testing::send_keyboard_string_sequence(&instance, slint::platform::key_codes::Escape);
410
378
411
- // popup1 is still open
379
+ // check P1 is closed
412
380
slint_testing::send_mouse_click(&instance, 210., 90.);
413
- assert_eq(instance.get_result(), "P1 ");
381
+ assert_eq(instance.get_result(), "Root ");
414
382
instance.set_result("");
415
383
```
416
384
0 commit comments