diff --git a/crates/egui/src/input_state.rs b/crates/egui/src/input_state.rs index b2284d45c2e..a9c1b314383 100644 --- a/crates/egui/src/input_state.rs +++ b/crates/egui/src/input_state.rs @@ -485,6 +485,11 @@ impl InputState { /// True if there currently are any fingers touching egui. pub fn any_touches(&self) -> bool { + self.touch_states.values().any(|t| t.any_touches()) + } + + /// True if we have ever received a touch event. + pub fn has_touch_screen(&self) -> bool { !self.touch_states.is_empty() } diff --git a/crates/egui/src/input_state/touch_state.rs b/crates/egui/src/input_state/touch_state.rs index 2a77a4d371b..43053f821e5 100644 --- a/crates/egui/src/input_state/touch_state.rs +++ b/crates/egui/src/input_state/touch_state.rs @@ -177,6 +177,11 @@ impl TouchState { } } + /// Are there currently any fingers touching the surface? + pub fn any_touches(&self) -> bool { + !self.active_touches.is_empty() + } + pub fn info(&self) -> Option { self.gesture_state.as_ref().map(|state| { // state.previous can be `None` when the number of simultaneous touches has just diff --git a/crates/egui/src/widgets/label.rs b/crates/egui/src/widgets/label.rs index f5bb7ac425a..10cefc5fb6a 100644 --- a/crates/egui/src/widgets/label.rs +++ b/crates/egui/src/widgets/label.rs @@ -128,7 +128,7 @@ impl Label { // dragging select text, or scroll the enclosing [`ScrollArea`] (if any)? // Since currently copying selected text in not supported on `eframe` web, // we prioritize touch-scrolling: - let allow_drag_to_select = ui.input(|i| !i.any_touches()); + let allow_drag_to_select = ui.input(|i| !i.has_touch_screen()); let mut select_sense = if allow_drag_to_select { Sense::click_and_drag() diff --git a/crates/egui/src/widgets/text_edit/builder.rs b/crates/egui/src/widgets/text_edit/builder.rs index e5745389082..799774096ff 100644 --- a/crates/egui/src/widgets/text_edit/builder.rs +++ b/crates/egui/src/widgets/text_edit/builder.rs @@ -527,7 +527,7 @@ impl<'t> TextEdit<'t> { // Since currently copying selected text in not supported on `eframe` web, // we prioritize touch-scrolling: let allow_drag_to_select = - ui.input(|i| !i.any_touches()) || ui.memory(|mem| mem.has_focus(id)); + ui.input(|i| !i.has_touch_screen()) || ui.memory(|mem| mem.has_focus(id)); let sense = if interactive { if allow_drag_to_select {