// Copyright © SixtyFPS GmbH // SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2.0 OR LicenseRef-Slint-Software-3.0 export component TestCase inherits Window { width: 400px; height: 400px; in-out property result; out property swiping-sgh-with-ta <=> sgh-with-ta.swiping; out property swiping-sgh-wo-ta <=> sgh-wo-ta.swiping; out property swiping-sgh-disabled-ta <=> sgh-disabled-ta.swiping; // With a TouchArea sgh-with-ta := SwipeGestureHandler { width: 200px; height: 200px; x: 0px; y: 0px; Rectangle { background: yellow; } handle-swipe-down: true; handle-swipe-up: true; handle-swipe-left: true; handle-swipe-right: true; TouchArea { clicked => { result += "ta1"; } } } // Without a TouchArea sgh-wo-ta := SwipeGestureHandler { width: 200px; height: 200px; x: 200px; y: 0px; Rectangle { background: green; } handle-swipe-down: true; handle-swipe-up: true; handle-swipe-left: true; handle-swipe-right: true; } // With a disabled one sgh-disabled-ta := SwipeGestureHandler { width: 200px; height: 200px; x: 0px; y: 200px; Rectangle { background: red; } handle-swipe-down: true; handle-swipe-up: true; handle-swipe-left: true; handle-swipe-right: true; ta := TouchArea { enabled: false; clicked => { result += "ta2"; } } } } /* ```rust use slint::{platform::WindowEvent, LogicalPosition, platform::PointerEventButton}; let instance = TestCase::new().unwrap(); assert_eq!(instance.get_result(), ""); assert_eq!(instance.get_swiping_sgh_with_ta(), false); assert_eq!(instance.get_swiping_sgh_wo_ta(), false); assert_eq!(instance.get_swiping_sgh_disabled_ta(), false); // With TouchArea instance.window().dispatch_event(WindowEvent::PointerMoved { position: LogicalPosition::new(100.0, 100.0) }); instance.window().dispatch_event(WindowEvent::PointerPressed { position: LogicalPosition::new(100.0, 100.0), button: PointerEventButton::Left }); slint_testing::mock_elapsed_time(200); assert_eq!(instance.get_swiping_sgh_with_ta(), false); assert_eq!(instance.get_swiping_sgh_wo_ta(), false); assert_eq!(instance.get_swiping_sgh_disabled_ta(), false); instance.window().dispatch_event(WindowEvent::PointerMoved { position: LogicalPosition::new(100.0, 100.0) }); slint_testing::mock_elapsed_time(50); assert_eq!(instance.get_swiping_sgh_with_ta(), false); assert_eq!(instance.get_swiping_sgh_wo_ta(), false); assert_eq!(instance.get_swiping_sgh_disabled_ta(), false); instance.window().dispatch_event(WindowEvent::PointerMoved { position: LogicalPosition::new(50.0, 50.0) }); assert_eq!(instance.get_swiping_sgh_with_ta(), true, "we should be swiping 'with-ta'"); assert_eq!(instance.get_swiping_sgh_wo_ta(), false); assert_eq!(instance.get_swiping_sgh_disabled_ta(), false); slint_testing::mock_elapsed_time(50); instance.window().dispatch_event(WindowEvent::PointerMoved { position: LogicalPosition::new(250.0, 250.0) }); //outside assert_eq!(instance.get_swiping_sgh_with_ta(), true, "we should be swiping 'with-ta'"); assert_eq!(instance.get_swiping_sgh_wo_ta(), false); assert_eq!(instance.get_swiping_sgh_disabled_ta(), false); slint_testing::mock_elapsed_time(50); instance.window().dispatch_event(WindowEvent::PointerMoved { position: LogicalPosition::new(100.0, 100.0) }); assert_eq!(instance.get_swiping_sgh_with_ta(), true); assert_eq!(instance.get_swiping_sgh_wo_ta(), false); assert_eq!(instance.get_swiping_sgh_disabled_ta(), false); instance.window().dispatch_event(WindowEvent::PointerReleased { position: LogicalPosition::new(100.0, 100.0), button: PointerEventButton::Left }); assert_eq!(instance.get_swiping_sgh_with_ta(), false); assert_eq!(instance.get_swiping_sgh_wo_ta(), false); assert_eq!(instance.get_swiping_sgh_disabled_ta(), false); assert_eq!(instance.get_result(), ""); // Without TouchArea instance.window().dispatch_event(WindowEvent::PointerMoved { position: LogicalPosition::new(200.0 + 100.0, 100.0) }); instance.window().dispatch_event(WindowEvent::PointerPressed { position: LogicalPosition::new(200.0 + 100.0, 100.0), button: PointerEventButton::Left }); slint_testing::mock_elapsed_time(200); assert_eq!(instance.get_swiping_sgh_with_ta(), false); assert_eq!(instance.get_swiping_sgh_wo_ta(), false); assert_eq!(instance.get_swiping_sgh_disabled_ta(), false); instance.window().dispatch_event(WindowEvent::PointerMoved { position: LogicalPosition::new(200.0 + 100.0, 100.0) }); slint_testing::mock_elapsed_time(50); assert_eq!(instance.get_swiping_sgh_with_ta(), false); assert_eq!(instance.get_swiping_sgh_wo_ta(), false); assert_eq!(instance.get_swiping_sgh_disabled_ta(), false); instance.window().dispatch_event(WindowEvent::PointerMoved { position: LogicalPosition::new(200.0 + 50.0, 50.0) }); assert_eq!(instance.get_swiping_sgh_with_ta(), false); assert_eq!(instance.get_swiping_sgh_wo_ta(), true, "we should be swiping 'without-ta'"); assert_eq!(instance.get_swiping_sgh_disabled_ta(), false); slint_testing::mock_elapsed_time(50); instance.window().dispatch_event(WindowEvent::PointerMoved { position: LogicalPosition::new(250.0, 250.0) }); //outside assert_eq!(instance.get_swiping_sgh_with_ta(), false); assert_eq!(instance.get_swiping_sgh_wo_ta(), true); assert_eq!(instance.get_swiping_sgh_disabled_ta(), false); slint_testing::mock_elapsed_time(50); instance.window().dispatch_event(WindowEvent::PointerMoved { position: LogicalPosition::new(200.0 + 100.0, 100.0) }); assert_eq!(instance.get_swiping_sgh_with_ta(), false); assert_eq!(instance.get_swiping_sgh_wo_ta(), true); assert_eq!(instance.get_swiping_sgh_disabled_ta(), false); instance.window().dispatch_event(WindowEvent::PointerReleased { position: LogicalPosition::new(200.0 + 100.0, 100.0), button: PointerEventButton::Left }); assert_eq!(instance.get_swiping_sgh_with_ta(), false); assert_eq!(instance.get_swiping_sgh_wo_ta(), false); assert_eq!(instance.get_swiping_sgh_disabled_ta(), false); assert_eq!(instance.get_result(), ""); // With disabled TouchArea instance.window().dispatch_event(WindowEvent::PointerMoved { position: LogicalPosition::new(100.0, 200.0 + 100.0) }); instance.window().dispatch_event(WindowEvent::PointerPressed { position: LogicalPosition::new(100.0, 200.0 + 100.0), button: PointerEventButton::Left }); slint_testing::mock_elapsed_time(200); assert_eq!(instance.get_swiping_sgh_with_ta(), false); assert_eq!(instance.get_swiping_sgh_wo_ta(), false); assert_eq!(instance.get_swiping_sgh_disabled_ta(), false); instance.window().dispatch_event(WindowEvent::PointerMoved { position: LogicalPosition::new(100.0, 200.0 + 100.0) }); slint_testing::mock_elapsed_time(50); assert_eq!(instance.get_swiping_sgh_with_ta(), false); assert_eq!(instance.get_swiping_sgh_wo_ta(), false); assert_eq!(instance.get_swiping_sgh_disabled_ta(), false); instance.window().dispatch_event(WindowEvent::PointerMoved { position: LogicalPosition::new(50.0, 200.0 + 50.0) }); assert_eq!(instance.get_swiping_sgh_with_ta(), false); assert_eq!(instance.get_swiping_sgh_wo_ta(), false); assert_eq!(instance.get_swiping_sgh_disabled_ta(), true, "we should be swiping 'with-disabled-ta'"); slint_testing::mock_elapsed_time(50); instance.window().dispatch_event(WindowEvent::PointerMoved { position: LogicalPosition::new(250.0, 250.0) }); //outside assert_eq!(instance.get_swiping_sgh_with_ta(), false); assert_eq!(instance.get_swiping_sgh_wo_ta(), false); assert_eq!(instance.get_swiping_sgh_disabled_ta(), true); slint_testing::mock_elapsed_time(50); instance.window().dispatch_event(WindowEvent::PointerMoved { position: LogicalPosition::new(100.0, 200.0 + 100.0) }); assert_eq!(instance.get_swiping_sgh_with_ta(), false); assert_eq!(instance.get_swiping_sgh_wo_ta(), false); assert_eq!(instance.get_swiping_sgh_disabled_ta(), true); instance.window().dispatch_event(WindowEvent::PointerReleased { position: LogicalPosition::new(100.0, 200.0 + 100.0), button: PointerEventButton::Left }); assert_eq!(instance.get_swiping_sgh_with_ta(), false); assert_eq!(instance.get_swiping_sgh_wo_ta(), false); assert_eq!(instance.get_swiping_sgh_disabled_ta(), false); assert_eq!(instance.get_result(), ""); // Do the click, now. instance.window().dispatch_event(WindowEvent::PointerMoved { position: LogicalPosition::new(100.0, 100.0) }); instance.window().dispatch_event(WindowEvent::PointerPressed { position: LogicalPosition::new(100.0, 100.0), button: PointerEventButton::Left }); slint_testing::mock_elapsed_time(200); instance.window().dispatch_event(WindowEvent::PointerMoved { position: LogicalPosition::new(101.0, 101.0) }); assert_eq!(instance.get_swiping_sgh_with_ta(), false); assert_eq!(instance.get_swiping_sgh_wo_ta(), false); assert_eq!(instance.get_swiping_sgh_disabled_ta(), false); instance.window().dispatch_event(WindowEvent::PointerReleased { position: LogicalPosition::new(101.0, 101.0), button: PointerEventButton::Left }); assert_eq!(instance.get_swiping_sgh_with_ta(), false); assert_eq!(instance.get_swiping_sgh_wo_ta(), false); assert_eq!(instance.get_swiping_sgh_disabled_ta(), false); assert_eq!(instance.get_result(), "ta1"); instance.set_result("".into()); instance.window().dispatch_event(WindowEvent::PointerMoved { position: LogicalPosition::new(100.0 + 100.0, 100.0) }); instance.window().dispatch_event(WindowEvent::PointerPressed { position: LogicalPosition::new(100.0 + 100.0, 100.0), button: PointerEventButton::Left }); slint_testing::mock_elapsed_time(200); instance.window().dispatch_event(WindowEvent::PointerMoved { position: LogicalPosition::new(100.0 + 101.0, 101.0) }); assert_eq!(instance.get_swiping_sgh_with_ta(), false); assert_eq!(instance.get_swiping_sgh_wo_ta(), false); assert_eq!(instance.get_swiping_sgh_disabled_ta(), false); instance.window().dispatch_event(WindowEvent::PointerReleased { position: LogicalPosition::new(100.0 + 101.0, 101.0), button: PointerEventButton::Left }); assert_eq!(instance.get_swiping_sgh_with_ta(), false); assert_eq!(instance.get_swiping_sgh_wo_ta(), false); assert_eq!(instance.get_swiping_sgh_disabled_ta(), false); assert_eq!(instance.get_result(), ""); instance.window().dispatch_event(WindowEvent::PointerMoved { position: LogicalPosition::new(100.0, 100.0 + 100.0) }); instance.window().dispatch_event(WindowEvent::PointerPressed { position: LogicalPosition::new(100.0, 100.0 + 100.0), button: PointerEventButton::Left }); slint_testing::mock_elapsed_time(200); instance.window().dispatch_event(WindowEvent::PointerMoved { position: LogicalPosition::new(101.0, 100.0 + 101.0) }); assert_eq!(instance.get_swiping_sgh_with_ta(), false); assert_eq!(instance.get_swiping_sgh_wo_ta(), false); assert_eq!(instance.get_swiping_sgh_disabled_ta(), false); instance.window().dispatch_event(WindowEvent::PointerReleased { position: LogicalPosition::new(101.0, 100.0 + 101.0), button: PointerEventButton::Left }); assert_eq!(instance.get_swiping_sgh_with_ta(), false); assert_eq!(instance.get_swiping_sgh_wo_ta(), false); assert_eq!(instance.get_swiping_sgh_disabled_ta(), false); assert_eq!(instance.get_result(), ""); ``` */