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
4SubElement := Rectangle {
5 property text <=> input.text;
6 property <bool> has-focus: input.has-focus;
7 forward_focus: input;
8 input := TextInput {
9 width: 100%;
10 height: 100%;
11 }
12}
13
14TestCase := Rectangle {
15 width: 400phx;
16 height: 400phx;
17
18 callback focus_input1();
19 focus_input1 => { input1.focus(); }
20
21 callback focus_input2();
22 focus_input2 => { input2.focus(); }
23
24 Rectangle {
25 input1 := TextInput {
26 width: parent.width;
27 height: 200phx;
28 }
29 }
30
31 input2 := SubElement {
32 y: 200phx;
33 width: parent.width;
34 height: 200phx;
35 }
36
37 if (false) : SubElement { }
38
39 property<bool> input1_focused: input1.has_focus;
40 property<string> input1_text: input1.text;
41 property<bool> input2_focused: input2.has_focus;
42 property<string> input2_text: input2.text;
43}
44
45/*
46```rust
47let instance = TestCase::new().unwrap();
48assert!(!instance.get_input1_focused());
49assert!(!instance.get_input2_focused());
50
51instance.invoke_focus_input1();
52assert!(instance.get_input1_focused());
53assert!(!instance.get_input2_focused());
54
55instance.invoke_focus_input2();
56assert!(!instance.get_input1_focused());
57assert!(instance.get_input2_focused());
58```
59
60```cpp
61auto handle = TestCase::create();
62const TestCase &instance = *handle;
63assert(!instance.get_input1_focused());
64assert(!instance.get_input2_focused());
65
66instance.invoke_focus_input1();
67assert(instance.get_input1_focused());
68assert(!instance.get_input2_focused());
69
70instance.invoke_focus_input2();
71assert(!instance.get_input1_focused());
72assert(instance.get_input2_focused());
73```
74
75```js
76var instance = new slint.TestCase();
77assert(!instance.input1_focused);
78assert(!instance.input2_focused);
79
80instance.focus_input1();
81assert(instance.input1_focused);
82assert(!instance.input2_focused);
83
84instance.focus_input2();
85assert(!instance.input1_focused);
86assert(instance.input2_focused);
87```
88*/
89