summaryrefslogtreecommitdiffstats
path: root/native/src/mouse/click.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2023-03-04 05:37:11 +0100
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2023-03-04 05:37:11 +0100
commit3a0d34c0240f4421737a6a08761f99d6f8140d02 (patch)
treec9a4a6b8e9c1db1b8fcd05bc98e3f131d5ef4bd5 /native/src/mouse/click.rs
parentc54409d1711e1f615c7ea4b02c082954e340632a (diff)
downloadiced-3a0d34c0240f4421737a6a08761f99d6f8140d02.tar.gz
iced-3a0d34c0240f4421737a6a08761f99d6f8140d02.tar.bz2
iced-3a0d34c0240f4421737a6a08761f99d6f8140d02.zip
Create `iced_widget` subcrate and re-organize the whole codebase
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)
- }
-}