1// Copyright © SixtyFPS GmbH <info@slint.dev>
2// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2.0 OR LicenseRef-Slint-Software-3.0
3
4
5component MyPopup inherits PopupWindow {
6 callback clicked;
7 in property <bool> do-close: false;
8 width: 20px;
9 height: 20px;
10 TouchArea {
11 clicked => {
12 clicked();
13 if do-close {
14 root.close();
15 }
16 }
17 }
18}
19
20component MyPopup2 inherits MyPopup {
21 close-policy: no-auto-close;
22}
23
24export component TestCase {
25 width: 300px;
26 height: 300px;
27
28 property<int>p1_clicked;
29 property<int>p2_clicked;
30 property<int>p3_clicked;
31
32 p1 := MyPopup {
33 x: 10px;
34 y: 10px;
35 clicked => {p1_clicked+=1;}
36 }
37
38 p2 := MyPopup2 {
39 x: 30px;
40 y: 10px;
41 clicked => {p2_clicked+=1;}
42 }
43
44 p3 := MyPopup2 {
45 x: 60px;
46 y: 10px;
47 do-close: true;
48 clicked => {p3_clicked+=1;}
49 }
50
51 public function show_popup(p: int) {
52 if p == 1 {
53 p1.show();
54 } else if p == 2 {
55 p2.show();
56 } else if p == 3 {
57 p3.show();
58 }
59 }
60 public function hide_2() {
61 p2.close();
62 }
63
64 out property <string> value: @tr("p1={} p2={} p3={}", p1_clicked, p2_clicked, p3_clicked);
65
66}
67
68/*
69
70```rust
71let instance = TestCase::new().unwrap();
72slint_testing::send_mouse_click(&instance, 15., 15.);
73slint_testing::send_mouse_click(&instance, 35., 15.);
74slint_testing::send_mouse_click(&instance, 65., 15.);
75assert_eq!(instance.get_value(), "p1=0 p2=0 p3=0");
76
77instance.invoke_show_popup(1);
78slint_testing::send_mouse_click(&instance, 15., 15.);
79
80slint_testing::send_mouse_click(&instance, 15., 15.);
81slint_testing::send_mouse_click(&instance, 35., 15.);
82slint_testing::send_mouse_click(&instance, 65., 15.);
83assert_eq!(instance.get_value(), "p1=1 p2=0 p3=0");
84
85
86instance.invoke_show_popup(2);
87slint_testing::send_mouse_click(&instance, 35., 15.);
88slint_testing::send_mouse_click(&instance, 35., 15.);
89slint_testing::send_mouse_click(&instance, 15., 15.);
90slint_testing::send_mouse_click(&instance, 35., 15.);
91slint_testing::send_mouse_click(&instance, 65., 15.);
92assert_eq!(instance.get_value(), "p1=1 p2=3 p3=0");
93
94instance.invoke_hide_2();
95slint_testing::send_mouse_click(&instance, 35., 15.);
96slint_testing::send_mouse_click(&instance, 35., 15.);
97assert_eq!(instance.get_value(), "p1=1 p2=3 p3=0");
98
99instance.invoke_show_popup(3);
100slint_testing::send_mouse_click(&instance, 65., 15.);
101slint_testing::send_mouse_click(&instance, 65., 15.);
102slint_testing::send_mouse_click(&instance, 15., 15.);
103slint_testing::send_mouse_click(&instance, 35., 15.);
104slint_testing::send_mouse_click(&instance, 65., 15.);
105assert_eq!(instance.get_value(), "p1=1 p2=3 p3=1");
106```
107
108
109*/
110