1use crate::selection::Selection;
2use crate::url_detection;
3use std::time::Instant;
4
5pub struct MouseState {
7 pub selection: Option<Selection>, pub is_selecting: bool, pub position: (f64, f64), pub button_pressed: bool, pub last_click_time: Option<Instant>, pub click_count: u32, pub click_position: Option<(usize, usize)>, pub detected_urls: Vec<url_detection::DetectedUrl>, pub hovered_url: Option<String>, pub dragging_divider: Option<usize>, pub divider_hover: bool, pub hovered_divider_index: Option<usize>, }
23
24impl Default for MouseState {
25 fn default() -> Self {
26 Self::new()
27 }
28}
29
30impl MouseState {
31 pub fn new() -> Self {
32 Self {
33 selection: None,
34 is_selecting: false,
35 position: (0.0, 0.0),
36 button_pressed: false,
37 last_click_time: None,
38 click_count: 0,
39 click_position: None,
40 detected_urls: Vec::new(),
41 hovered_url: None,
42 dragging_divider: None,
43 divider_hover: false,
44 hovered_divider_index: None,
45 }
46 }
47}