// Copyright © SixtyFPS GmbH // SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2.0 OR LicenseRef-Slint-Software-3.0 import { ScrollView } from "std-widgets.slint"; export component TestCase inherits Window { width: 100px; height: 100px; box := ScrollView { viewport-width: 500px; viewport-height: 500px; } callback scrolled <=> box.scrolled; in-out property viewport-x <=> box.viewport-x; in-out property viewport-y <=> box.viewport-y; } /* ```rust use slint::{LogicalPosition, platform::WindowEvent}; use std::cell::RefCell; use std::rc::Rc; let instance = TestCase::new().unwrap(); let scrolled_emitted = Rc::new(RefCell::new(false)); instance.on_scrolled({ let scrolled_emitted = scrolled_emitted.clone(); move || { *scrolled_emitted.borrow_mut() = true; }}); assert_eq!(*scrolled_emitted.borrow(), false); let position = LogicalPosition::new(15.0, 95.0); // Scroll horizontally by pressing on the handle let button = slint::platform::PointerEventButton::Left; instance.window().dispatch_event(WindowEvent::PointerPressed { position, button }); // then drag it let position = LogicalPosition::new(50.0, 95.0); instance.window().dispatch_event(WindowEvent::PointerMoved { position }); instance.window().dispatch_event(WindowEvent::PointerReleased { position, button }); assert_eq!(*scrolled_emitted.borrow(), true); assert!(instance.get_viewport_x() != 0.0); assert_eq!(instance.get_viewport_y(), 0.0); *scrolled_emitted.borrow_mut() = false; // Scroll vertically by pressing on the handle let position = LogicalPosition::new(95.0, 15.0); let button = slint::platform::PointerEventButton::Left; instance.window().dispatch_event(WindowEvent::PointerPressed { position, button }); // ...then drag it let position = LogicalPosition::new(95.0, 50.0); instance.window().dispatch_event(WindowEvent::PointerMoved { position }); instance.window().dispatch_event(WindowEvent::PointerReleased { position, button }); assert_eq!(*scrolled_emitted.borrow(), true); assert!(instance.get_viewport_x() != 0.0); assert!(instance.get_viewport_y() != 0.0); *scrolled_emitted.borrow_mut() = false; ``` */