use crate::widgets::markdown_widget::foundation::types::SelectionPos;
use crate::widgets::markdown_widget::state::selection_state::SelectionState;
impl SelectionState {
pub fn get_selection(&self) -> Option<(SelectionPos, SelectionPos)> {
if !self.active {
return None;
}
let anchor = self.anchor?;
let cursor = self.cursor?;
Some(normalize_selection(anchor, cursor))
}
pub fn has_selection(&self) -> bool {
self.active && self.anchor.is_some() && self.cursor.is_some()
}
}
fn normalize_selection(a: SelectionPos, b: SelectionPos) -> (SelectionPos, SelectionPos) {
if a.y < b.y || (a.y == b.y && a.x <= b.x) {
(a, b)
} else {
(b, a)
}
}