Skip to main content

TextSelection

Struct TextSelection 

Source
pub struct TextSelection { /* private fields */ }
Expand description

A TextLayout-owned selection value.

This wraps Parley’s selection type for APIs that depend on TextLayout’s selection-geometry invariants and cache lifecycle.

Methods from Deref<Target = Selection>§

pub fn is_collapsed(&self) -> bool

Returns true if the anchor and focus of the selection are the same.

This means that the selection represents a single position rather than a range.

pub fn anchor(&self) -> Cursor

Returns the anchor of the selection.

In a non-collapsed selection, this indicates where the selection was initiated.

pub fn focus(&self) -> Cursor

Returns the focus of the selection.

In a non-collapsed selection, this indicates the current position.

pub fn collapse(&self) -> Selection

Returns a new collapsed selection at the position of the current focus.

pub fn refresh<B>(&self, layout: &Layout<B>) -> Selection
where B: Brush,

Returns a new selection that is guaranteed to be within the bounds of the given layout.

pub fn text_range(&self) -> Range<usize>

Returns the underlying text range of the selection.

pub fn next_visual<B>(&self, layout: &Layout<B>, extend: bool) -> Selection
where B: Brush,

Returns a new selection with the focus at the next cluster in visual order.

If extend is true then the current anchor will be retained, otherwise the new selection will be collapsed.

pub fn previous_visual<B>(&self, layout: &Layout<B>, extend: bool) -> Selection
where B: Brush,

Returns a new selection with the focus at the previous cluster in visual order.

If extend is true then the current anchor will be retained, otherwise the new selection will be collapsed.

pub fn next_visual_word<B>(&self, layout: &Layout<B>, extend: bool) -> Selection
where B: Brush,

Returns a new selection with the focus moved to the next word in visual order.

If extend is true then the current anchor will be retained, otherwise the new selection will be collapsed.

pub fn previous_visual_word<B>( &self, layout: &Layout<B>, extend: bool, ) -> Selection
where B: Brush,

Returns a new selection with the focus moved to the previous word in visual order.

If extend is true then the current anchor will be retained, otherwise the new selection will be collapsed.

pub fn next_line<B>(&self, layout: &Layout<B>, extend: bool) -> Selection
where B: Brush,

Returns a new selection with the focus moved to the next line. The current horizontal position will be maintained.

If extend is true then the current anchor will be retained, otherwise the new selection will be collapsed.

pub fn previous_line<B>(&self, layout: &Layout<B>, extend: bool) -> Selection
where B: Brush,

Returns a new selection with the focus moved to the previous line. The current horizontal position will be maintained.

If extend is true then the current anchor will be retained, otherwise the new selection will be collapsed.

pub fn move_lines<B>( &self, layout: &Layout<B>, delta: isize, extend: bool, ) -> Selection
where B: Brush,

Returns a new selection with the focus moved the specified number of lines.

The sign of the delta parameter determines the direction to move with negative values moving toward previous lines and positive ones moving toward next lines.

If extend is true then the current anchor will be retained, otherwise the new selection will be collapsed.

pub fn line_start<B>(&self, layout: &Layout<B>, extend: bool) -> Selection
where B: Brush,

Returns a new selection with the focus moved to the start of the current line.

If extend is true then the current anchor will be retained, otherwise the new selection will be collapsed.

pub fn hard_line_start<B>(&self, layout: &Layout<B>, extend: bool) -> Selection
where B: Brush,

Returns a new selection with the focus moved to just after the previous hard line break.

If extend is true then the current anchor will be retained, otherwise the new selection will be collapsed.

pub fn line_end<B>(&self, layout: &Layout<B>, extend: bool) -> Selection
where B: Brush,

Returns a new selection with the focus moved to the end of the current line.

If extend is true then the current anchor will be retained, otherwise the new selection will be collapsed.

pub fn hard_line_end<B>(&self, layout: &Layout<B>, extend: bool) -> Selection
where B: Brush,

Returns a new selection with the focus moved to just before the next hard line break.

If extend is true then the current anchor will be retained, otherwise the new selection will be collapsed.

pub fn extend_to_point<B>( &self, layout: &Layout<B>, x: f32, y: f32, ) -> Selection
where B: Brush,

Returns a new selection with the focus extended to the given point.

If the initial selection was created from a word or line, then the new selection will be extended at the same granularity.

pub fn shift_click_extension<B>( &self, layout: &Layout<B>, x: f32, y: f32, ) -> Selection
where B: Brush,

Returns a new selection with the focus extended to the given point.

pub fn extend(&self, focus: Cursor) -> Selection

Returns a new selection with the current anchor and the focus set to the given value.

pub fn geometry<B>(&self, layout: &Layout<B>) -> Vec<(BoundingBox, usize)>
where B: Brush,

Returns a vector containing the rectangles which represent the visual geometry of this selection for the given layout, and the indices of the lines to which they belong.

This is a convenience method built on geometry_with.

pub fn geometry_with<B>( &self, layout: &Layout<B>, f: impl FnMut(BoundingBox, usize), )
where B: Brush,

Invokes f with the sequence of rectangles which represent the visual geometry of this selection for the given layout, and the indices of the lines to which they belong.

This avoids allocation if the intent is to render the rectangles immediately.

Trait Implementations§

Source§

impl Clone for TextSelection

Source§

fn clone(&self) -> TextSelection

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for TextSelection

Source§

impl Debug for TextSelection

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Deref for TextSelection

Source§

type Target = Selection

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl DerefMut for TextSelection

Source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.
Source§

impl Eq for TextSelection

Source§

impl PartialEq for TextSelection

Source§

fn eq(&self, other: &TextSelection) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for TextSelection

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> AnyEq for T
where T: Any + PartialEq,

§

fn equals(&self, other: &(dyn Any + 'static)) -> bool

§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>

§

impl<T> WasmNotSend for T
where T: Send,

§

impl<T> WasmNotSend for T
where T: Send,

§

impl<T> WasmNotSendSync for T
where T: WasmNotSend + WasmNotSync,

§

impl<T> WasmNotSendSync for T
where T: WasmNotSend + WasmNotSync,

§

impl<T> WasmNotSync for T
where T: Sync,

§

impl<T> WasmNotSync for T
where T: Sync,

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more