pub struct SelectionState {
pub active: bool,
pub anchor: Option<SelectionPos>,
pub cursor: Option<SelectionPos>,
pub frozen_lines: Option<Vec<Line<'static>>>,
pub frozen_width: usize,
pub last_copied_text: Option<String>,
}markdown-preview only.Expand description
Selection state for markdown widget.
Tracks whether selection mode is active and the selection bounds.
Fields§
§active: boolWhether selection mode is active.
anchor: Option<SelectionPos>Selection anchor (start point).
cursor: Option<SelectionPos>Current cursor/end position.
frozen_lines: Option<Vec<Line<'static>>>Cached rendered lines for stable selection.
frozen_width: usizeWidth when lines were frozen.
last_copied_text: Option<String>Last copied text (for showing toast notification).
Implementations§
Source§impl SelectionState
Constructor for SelectionState.
impl SelectionState
Constructor for SelectionState.
Sourcepub fn new() -> SelectionState
pub fn new() -> SelectionState
Create a new inactive selection state.
Source§impl SelectionState
impl SelectionState
Source§impl SelectionState
Exit selection mode.
impl SelectionState
Exit selection mode.
Source§impl SelectionState
Extract selected text from rendered lines.
impl SelectionState
Extract selected text from rendered lines.
Sourcepub fn get_selected_text(&self) -> Option<String>
pub fn get_selected_text(&self) -> Option<String>
Get the selected text from the frozen lines.
§Returns
The selected text as a string, or None if no selection.
Source§impl SelectionState
Get the current selection bounds.
impl SelectionState
Get the current selection bounds.
Sourcepub fn get_selection(&self) -> Option<(SelectionPos, SelectionPos)>
pub fn get_selection(&self) -> Option<(SelectionPos, SelectionPos)>
Get the normalized selection bounds (start, end) where start <= end.
§Returns
Some((start, end)) if there’s an active selection, None otherwise.
Sourcepub fn has_selection(&self) -> bool
pub fn has_selection(&self) -> bool
Check if there’s an active selection (anchor and cursor set).
Source§impl SelectionState
Check if a position is within the selection.
impl SelectionState
Check if a position is within the selection.
Source§impl SelectionState
Update cursor position during selection.
impl SelectionState
Update cursor position during selection.
Sourcepub fn update_cursor(&mut self, x: i32, y: i32)
pub fn update_cursor(&mut self, x: i32, y: i32)
Sourcepub fn set_anchor(&mut self)
pub fn set_anchor(&mut self)
Set anchor at current cursor position (for keyboard selection toggle).
Sourcepub fn clear_anchor(&mut self)
pub fn clear_anchor(&mut self)
Clear anchor (deselect).
Sourcepub fn toggle_anchor(&mut self)
pub fn toggle_anchor(&mut self)
Toggle anchor at current position.
Trait Implementations§
Source§impl Clone for SelectionState
impl Clone for SelectionState
Source§fn clone(&self) -> SelectionState
fn clone(&self) -> SelectionState
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SelectionState
impl Debug for SelectionState
Source§impl Default for SelectionState
impl Default for SelectionState
Source§fn default() -> SelectionState
fn default() -> SelectionState
Auto Trait Implementations§
impl Freeze for SelectionState
impl RefUnwindSafe for SelectionState
impl Send for SelectionState
impl Sync for SelectionState
impl Unpin for SelectionState
impl UnsafeUnpin for SelectionState
impl UnwindSafe for SelectionState
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more