ratatui_toolkit/widgets/markdown_widget/state/selection_state/methods/
get_selection.rs1use crate::widgets::markdown_widget::foundation::types::SelectionPos;
4use crate::widgets::markdown_widget::state::selection_state::SelectionState;
5
6impl SelectionState {
7 pub fn get_selection(&self) -> Option<(SelectionPos, SelectionPos)> {
13 if !self.active {
14 return None;
15 }
16
17 let anchor = self.anchor?;
18 let cursor = self.cursor?;
19
20 Some(normalize_selection(anchor, cursor))
22 }
23
24 pub fn has_selection(&self) -> bool {
26 self.active && self.anchor.is_some() && self.cursor.is_some()
27 }
28}
29
30fn normalize_selection(a: SelectionPos, b: SelectionPos) -> (SelectionPos, SelectionPos) {
32 if a.y < b.y || (a.y == b.y && a.x <= b.x) {
33 (a, b)
34 } else {
35 (b, a)
36 }
37}