diff --git a/crates/qbz-ui/ui/shell/KioskShell.slint b/crates/qbz-ui/ui/shell/KioskShell.slint index 2388a37ca..d79cd29e1 100644 --- a/crates/qbz-ui/ui/shell/KioskShell.slint +++ b/crates/qbz-ui/ui/shell/KioskShell.slint @@ -176,6 +176,10 @@ export component KioskShell inherits Rectangle { accepted(text) => { SearchActions.submit(text); NavState.view = ContentView.search; + // Release focus so Slint sends text-input DISABLE → the OS + // on-screen keyboard (squeekboard) closes. Otherwise the + // search field keeps focus forever and the OSK never hides. + search-field.clear-focus(); } } } @@ -193,6 +197,14 @@ export component KioskShell inherits Rectangle { Rectangle { vertical-stretch: 1; background: Theme.surface-card; + // Tap anywhere in the content area to dismiss the OS on-screen + // keyboard: release the search field's focus → Slint sends the + // text-input DISABLE → squeekboard closes. Declared FIRST so it sits + // BEHIND the views (which handle their own taps); it only catches + // empty-area taps. + dismiss-osk-ta := TouchArea { + clicked => { search-field.clear-focus(); } + } VerticalLayout { vertical-stretch: 1; padding-left: 8px;