summaryrefslogtreecommitdiffstats
path: root/native/src/mouse/click.rs
diff options
context:
space:
mode:
authorLibravatar Bingus <shankern@protonmail.com>2023-07-12 12:23:18 -0700
committerLibravatar Bingus <shankern@protonmail.com>2023-07-12 12:23:18 -0700
commit633f405f3f78bc7f82d2b2061491b0e011137451 (patch)
tree5ebfc1f45d216a5c14a90492563599e6969eab4d /native/src/mouse/click.rs
parent41836dd80d0534608e7aedfbf2319c540a23de1a (diff)
parent21bd51426d900e271206f314e0c915dd41065521 (diff)
downloadiced-633f405f3f78bc7f82d2b2061491b0e011137451.tar.gz
iced-633f405f3f78bc7f82d2b2061491b0e011137451.tar.bz2
iced-633f405f3f78bc7f82d2b2061491b0e011137451.zip
Merge remote-tracking branch 'origin/master' into feat/multi-window-support
# Conflicts: # Cargo.toml # core/src/window/icon.rs # core/src/window/id.rs # core/src/window/position.rs # core/src/window/settings.rs # examples/integration/src/main.rs # examples/integration_opengl/src/main.rs # glutin/src/application.rs # native/src/subscription.rs # native/src/window.rs # runtime/src/window/action.rs # src/lib.rs # src/window.rs # winit/Cargo.toml # winit/src/application.rs # winit/src/icon.rs # winit/src/settings.rs # winit/src/window.rs
Diffstat (limited to 'native/src/mouse/click.rs')
-rw-r--r--native/src/mouse/click.rs76
1 files changed, 0 insertions, 76 deletions
diff --git a/native/src/mouse/click.rs b/native/src/mouse/click.rs
deleted file mode 100644
index 4a7d796c..00000000
--- a/native/src/mouse/click.rs
+++ /dev/null
@@ -1,76 +0,0 @@
-//! Track mouse clicks.
-use crate::time::Instant;
-use crate::Point;
-
-/// A mouse click.
-#[derive(Debug, Clone, Copy)]
-pub struct Click {
- kind: Kind,
- position: Point,
- time: Instant,
-}
-
-/// The kind of mouse click.
-#[derive(Debug, Clone, Copy)]
-pub enum Kind {
- /// A single click
- Single,
-
- /// A double click
- Double,
-
- /// A triple click
- Triple,
-}
-
-impl Kind {
- fn next(&self) -> Kind {
- match self {
- Kind::Single => Kind::Double,
- Kind::Double => Kind::Triple,
- Kind::Triple => Kind::Double,
- }
- }
-}
-
-impl Click {
- /// Creates a new [`Click`] with the given position and previous last
- /// [`Click`].
- pub fn new(position: Point, previous: Option<Click>) -> Click {
- let time = Instant::now();
-
- let kind = if let Some(previous) = previous {
- if previous.is_consecutive(position, time) {
- previous.kind.next()
- } else {
- Kind::Single
- }
- } else {
- Kind::Single
- };
-
- Click {
- kind,
- position,
- time,
- }
- }
-
- /// Returns the [`Kind`] of [`Click`].
- pub fn kind(&self) -> Kind {
- self.kind
- }
-
- fn is_consecutive(&self, new_position: Point, time: Instant) -> bool {
- let duration = if time > self.time {
- Some(time - self.time)
- } else {
- None
- };
-
- self.position == new_position
- && duration
- .map(|duration| duration.as_millis() <= 300)
- .unwrap_or(false)
- }
-}