From 5ebe418805a25c7bcd64735761211250cb0f3a81 Mon Sep 17 00:00:00 2001 From: vicrodh <103399283+vicrodh@users.noreply.github.com> Date: Sat, 18 Jul 2026 19:50:27 -0600 Subject: [PATCH] fix(kiosk): dismiss on-screen keyboard on accept and tap-outside The OSK opened on kiosk search/inputs but never closed: focus stayed on the search field. Clear focus in the field's `accepted` handler and add a full-bleed background TouchArea that clears focus on any tap outside the input, so the on-screen keyboard dismisses. cc --- crates/qbz-ui/ui/shell/KioskShell.slint | 12 ++++++++++++ 1 file changed, 12 insertions(+) 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;