use std::time::{Duration, Instant};
#[derive(Debug)]
pub struct ClickUpdateSummary {
pub double_click: bool,
}
#[derive(Debug)]
pub struct ClickInfo {
pub instant: Instant,
pub y: u16,
}
impl ClickInfo {
pub fn update(last_click: &mut Option<ClickInfo>, y: u16) -> ClickUpdateSummary {
let this_click = ClickInfo {
instant: Instant::now(),
y,
};
let summary = if let Some(s_last_click) = last_click {
let double_click = s_last_click.instant.elapsed() <= Duration::from_millis(200)
&& this_click.y == s_last_click.y;
ClickUpdateSummary { double_click }
} else {
ClickUpdateSummary {
double_click: false,
}
};
*last_click = Some(this_click);
summary
}
}
#[cfg(feature = "clip")]
pub fn copy_to_clipboard(text: String) {
use clipboard::{ClipboardContext, ClipboardProvider};
let mut ctx: ClipboardContext = ClipboardContext::new().unwrap();
ctx.set_contents(text).unwrap();
}
#[cfg(not(feature = "clip"))]
pub fn copy_to_clipboard(_text: String) {}