summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/src/mouse/click.rs13
-rw-r--r--widget/src/text_editor.rs1
-rw-r--r--widget/src/text_input.rs7
3 files changed, 17 insertions, 4 deletions
diff --git a/core/src/mouse/click.rs b/core/src/mouse/click.rs
index 6f3844be..07a4db5a 100644
--- a/core/src/mouse/click.rs
+++ b/core/src/mouse/click.rs
@@ -1,4 +1,5 @@
//! Track mouse clicks.
+use crate::mouse::Button;
use crate::time::Instant;
use crate::Point;
@@ -6,6 +7,7 @@ use crate::Point;
#[derive(Debug, Clone, Copy)]
pub struct Click {
kind: Kind,
+ button: Button,
position: Point,
time: Instant,
}
@@ -36,11 +38,17 @@ impl Kind {
impl Click {
/// Creates a new [`Click`] with the given position and previous last
/// [`Click`].
- pub fn new(position: Point, previous: Option<Click>) -> Click {
+ pub fn new(
+ position: Point,
+ button: Button,
+ previous: Option<Click>,
+ ) -> Click {
let time = Instant::now();
let kind = if let Some(previous) = previous {
- if previous.is_consecutive(position, time) {
+ if previous.is_consecutive(position, time)
+ && button == previous.button
+ {
previous.kind.next()
} else {
Kind::Single
@@ -51,6 +59,7 @@ impl Click {
Click {
kind,
+ button,
position,
time,
}
diff --git a/widget/src/text_editor.rs b/widget/src/text_editor.rs
index d1aa4640..e0102656 100644
--- a/widget/src/text_editor.rs
+++ b/widget/src/text_editor.rs
@@ -1056,6 +1056,7 @@ impl<Message> Update<Message> {
let click = mouse::Click::new(
cursor_position,
+ mouse::Button::Left,
state.last_click,
);
diff --git a/widget/src/text_input.rs b/widget/src/text_input.rs
index 0a8e6690..d5ede524 100644
--- a/widget/src/text_input.rs
+++ b/widget/src/text_input.rs
@@ -656,8 +656,11 @@ where
cursor_position.x - text_bounds.x - alignment_offset
};
- let click =
- mouse::Click::new(cursor_position, state.last_click);
+ let click = mouse::Click::new(
+ cursor_position,
+ mouse::Button::Left,
+ state.last_click,
+ );
match click.kind() {
click::Kind::Single => {