use crate::selection::Selection;
use crate::url_detection;
use std::time::Instant;
pub struct MouseState {
pub(crate) selection: Option<Selection>, pub(crate) is_selecting: bool,
pub(crate) position: (f64, f64), pub(crate) button_pressed: bool, pub(crate) last_click_time: Option<Instant>, pub(crate) click_count: u32, pub(crate) click_position: Option<(usize, usize)>, pub(crate) click_pixel_position: Option<(f64, f64)>, pub(crate) tracking_press_position: Option<(f64, f64)>,
pub(crate) detected_urls: Vec<url_detection::DetectedUrl>, pub(crate) url_detect_scroll_offset: usize, pub(crate) hovered_url: Option<String>, pub(crate) hovered_url_bounds: Option<(usize, usize, usize)>,
pub(crate) dragging_divider: Option<usize>, pub(crate) divider_hover: bool, pub(crate) hovered_divider_index: Option<usize>, }
impl Default for MouseState {
fn default() -> Self {
Self::new()
}
}
impl MouseState {
pub(crate) fn new() -> Self {
Self {
selection: None,
is_selecting: false,
position: (0.0, 0.0),
button_pressed: false,
last_click_time: None,
click_count: 0,
click_position: None,
click_pixel_position: None,
tracking_press_position: None,
detected_urls: Vec::new(),
url_detect_scroll_offset: 0,
hovered_url: None,
hovered_url_bounds: None,
dragging_divider: None,
divider_hover: false,
hovered_divider_index: None,
}
}
pub fn test_new() -> Self {
Self::new()
}
pub fn test_set_button_pressed(&mut self, v: bool) {
self.button_pressed = v;
}
pub fn test_button_pressed(&self) -> bool {
self.button_pressed
}
pub fn test_set_is_selecting(&mut self, v: bool) {
self.is_selecting = v;
}
pub fn test_is_selecting(&self) -> bool {
self.is_selecting
}
pub fn test_set_selection(&mut self, sel: Option<Selection>) {
self.selection = sel;
}
pub fn test_selection(&self) -> Option<&Selection> {
self.selection.as_ref()
}
pub fn test_set_click_pixel_position(&mut self, pos: Option<(f64, f64)>) {
self.click_pixel_position = pos;
}
pub fn test_set_click_position(&mut self, pos: Option<(usize, usize)>) {
self.click_position = pos;
}
pub fn test_set_click_count(&mut self, count: u32) {
self.click_count = count;
}
pub fn test_set_dragging_divider(&mut self, idx: Option<usize>) {
self.dragging_divider = idx;
}
pub fn test_dragging_divider(&self) -> Option<usize> {
self.dragging_divider
}
}