From ed50132d5e38046ba9e10bd3cebf719480b5467d Mon Sep 17 00:00:00 2001 From: ardocrat Date: Thu, 29 May 2025 01:31:12 +0300 Subject: [PATCH] keyboard: long press clear --- src/gui/views/input/keyboard.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/gui/views/input/keyboard.rs b/src/gui/views/input/keyboard.rs index a6d9f8a5..735abf60 100644 --- a/src/gui/views/input/keyboard.rs +++ b/src/gui/views/input/keyboard.rs @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -use egui::{Align, Align2, Button, Color32, CursorIcon, Layout, Margin, Rect, Response, RichText, Shadow, Vec2, Widget}; +use egui::{Align, Align2, Button, Color32, CursorIcon, Layout, Margin, Rect, Response, RichText, Sense, Shadow, Vec2, Widget}; use lazy_static::lazy_static; use parking_lot::RwLock; use std::sync::atomic::Ordering; @@ -438,8 +438,14 @@ impl KeyboardContent { if let Some(bg) = bg { button = button.fill(bg); } + // Setup long press/touch. + let long_press = s == BACKSPACE; + if long_press { + button = button.sense(Sense::click_and_drag()); + } + // Draw button. let resp = button.ui(ui).on_hover_cursor(CursorIcon::PointingHand); - if resp.clicked() { + if resp.clicked() || resp.long_touched() || resp.dragged() { cb(label, self); } }).response