Skip to main content

PlatformInputHandler

Struct PlatformInputHandler 

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

Connects the platform’s input method (IME) to the focused InputHandler.

GPUI creates one for the focused element while it’s focused. Each method runs the matching InputHandler method inside an update of the window. If the window has closed, the methods return None or do nothing.

Implementations§

Source§

impl PlatformInputHandler

Source

pub fn new(cx: AsyncWindowContext, handler: Box<dyn InputHandler>) -> Self

Wraps handler so the platform can call it through the window context cx.

Source

pub fn focus_id(&self) -> Option<FocusId>

Identifies the input field registered through Window::handle_input.

This identity survives adapter replacement during repaint. Backends can use it to detect a field change without restarting the keyboard session.

Source

pub fn selected_text_range( &mut self, ignore_disabled_input: bool, ) -> Option<UTF16Selection>

Returns the selection, in UTF-16 units, or None if the handler has no selection.

Source

pub fn marked_text_range(&mut self) -> Option<Range<usize>>

Returns the range of composing (marked) text in UTF-16 units, or None when no text is being composed.

Source

pub fn text_for_range( &mut self, range_utf16: Range<usize>, adjusted: &mut Option<Range<usize>>, ) -> Option<String>

Returns the document text in range_utf16, or None if the handler has none.

adjusted receives the range the handler actually used, which may differ from the request.

Source

pub fn replace_text_in_range( &mut self, replacement_range: Option<Range<usize>>, text: &str, )

Replaces replacement_range, in UTF-16 units, with text. None replaces the selection.

Source

pub fn replace_and_mark_text_in_range( &mut self, range_utf16: Option<Range<usize>>, new_text: &str, new_selected_range: Option<Range<usize>>, )

Replaces range_utf16 with new_text and marks the new text as composing, as an IME does while the user types. new_selected_range sets the selection inside the composing text.

Source

pub fn unmark_text(&mut self)

Ends the composition and keeps the marked text.

Source

pub fn paste(&mut self, item: ClipboardItem)

Pastes item at the selection through InputHandler::paste.

Source

pub fn bounds_for_range( &mut self, range_utf16: Range<usize>, ) -> Option<Bounds<Pixels>>

Returns the screen bounds of range_utf16, in logical pixels. The platform uses these to place the IME candidate window.

Source

pub fn selection_bounds_for_range( &mut self, range_utf16: Range<usize>, ) -> Vec<Bounds<Pixels>>

Returns selection rectangles for a range of UTF-16 code units in document order.

The platform uses these logical-pixel bounds to position selection UI. A backend may return an empty vector when selection geometry is unavailable; IME candidate placement can still use bounds_for_range. If the window has closed, this also returns an empty vector.

Source

pub fn apple_press_and_hold_enabled(&mut self) -> bool

Returns whether macOS press-and-hold should stay enabled for this handler.

Source

pub fn dispatch_input(&mut self, input: &str, window: &mut Window, cx: &mut App)

Replaces the selection with input, using the handler’s InputHandler::replace_text_in_range.

Source

pub fn compute_ime_candidate_bounds( marked_range: Option<Range<usize>>, selection: &UTF16Selection, bounds_for_range: impl FnMut(Range<usize>) -> Option<Bounds<Pixels>>, ) -> Option<Bounds<Pixels>>

Returns where the IME candidate window should appear.

While text is composing, this is the start of the composing text’s visual line, found by walking back from the caret until the line changes. Otherwise it’s the caret position. bounds_for_range returns the bounds of each position it’s asked for.

Source

pub fn selected_bounds( &mut self, window: &mut Window, cx: &mut App, ) -> Option<Bounds<Pixels>>

Returns the IME candidate position for the current selection.

Source

pub fn ime_candidate_bounds(&mut self) -> Option<Bounds<Pixels>>

Returns the IME candidate position for the current selection, through the window context.

Source

pub fn character_index_for_point( &mut self, point: Point<Pixels>, ) -> Option<usize>

Returns the UTF-16 index of the character at point, in window coordinates, or None if there is none.

Source

pub fn set_selected_text_range(&mut self, range_utf16: Range<usize>)

Source

pub fn element_bounds(&mut self) -> Option<Bounds<Pixels>>

Source

pub fn text_length_utf16(&mut self) -> Option<usize>

Source

pub fn accepts_text_input(&mut self, window: &mut Window, cx: &mut App) -> bool

Returns whether the handler accepts text input right now.

Source

pub fn query_accepts_text_input(&mut self) -> bool

Returns whether the handler accepts text input. Returns true if the window is gone.

Source

pub fn query_accepts_focused_text_input(&mut self) -> bool

Checks eligibility against the current focus, including before the next frame is drawn.

Unlike the legacy acceptance query, this fails closed when the window cannot be updated and requires registration through Window::handle_input.

Source

pub fn query_prefers_ime_for_printable_keys(&mut self) -> bool

See InputHandler::prefers_ime_for_printable_keys.

This is not a pure delegation to the handler: while a multi-stroke binding is pending this returns false regardless of the handler’s preference, because the next printable key may complete a binding whose prefix already bypassed the IME.

Source

pub fn text_input_configuration( &mut self, window: &mut Window, cx: &mut App, ) -> TextInputConfiguration

Returns the text input configuration the handler requests.

Source

pub fn text_input_editable_range(&mut self) -> Option<Range<usize>>

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where T: Real + Zero + Arithmetics + Clone, Swp: WhitePoint<T>, Dwp: WhitePoint<T>, D: AdaptFrom<S, Swp, Dwp, T>,

Source§

fn adapt_into_using<M>(self, method: M) -> D
where M: TransformMatrix<T>,

👎Deprecated since 0.7.7:

replaced by palette::chromatic_adaptation::AdaptIntoUnclamped

Convert the source color to the destination color using the specified method.
Source§

fn adapt_into(self) -> D

👎Deprecated since 0.7.7:

replaced by palette::chromatic_adaptation::AdaptIntoUnclamped

Convert the source color to the destination color using the bradford method by default.
Source§

impl<T, C> AdaptIntoUnclamped<T> for C
where T: AdaptFromUnclamped<C>,

Source§

type Scalar = <T as AdaptFromUnclamped<C>>::Scalar

The number type that’s used as the color’s components.
Source§

fn adapt_into_unclamped_with<M>(self) -> T

Adapt a color of type Self into a color of type T, using the custom matrix M. Read more
Source§

fn adapt_into_unclamped(self) -> T
where Bradford: LmsToXyz<Self::Scalar> + XyzToLms<Self::Scalar>,

Adapt a color of type Self into a color of type T, using the Bradford matrix. Read more
Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T, C> ArraysFrom<C> for T
where C: IntoArrays<T>,

Source§

fn arrays_from(colors: C) -> T

Cast a collection of colors into a collection of arrays.
Source§

impl<T, C> ArraysInto<C> for T
where C: FromArrays<T>,

Source§

fn arrays_into(self) -> C

Cast this collection of arrays into a collection of colors.
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<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for U
where T: FromCam16Unclamped<WpParam, U>,

Source§

type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
Source§

fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T, C> ComponentsFrom<C> for T
where C: IntoComponents<T>,

Source§

fn components_from(colors: C) -> T

Cast a collection of colors into a collection of color components.
Source§

impl<T, C> ComponentsInto<C> for T

Source§

fn components_into(self) -> C

Cast this collection of color components into a collection of colors. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromAngle<T> for T

Source§

fn from_angle(angle: T) -> T

Performs a conversion from angle.
Source§

impl<T, U> FromStimulus<U> for T
where U: IntoStimulus<T>,

Source§

fn from_stimulus(other: U) -> T

Converts other into Self, while performing the appropriate scaling, rounding and clamping.
Source§

impl<T> Instrument for T

Source§

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

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

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, U> IntoAngle<U> for T
where U: FromAngle<T>,

Source§

fn into_angle(self) -> U

Performs a conversion into T.
Source§

impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for U
where T: Cam16FromUnclamped<WpParam, U>,

Source§

type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
Source§

fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
Source§

impl<T, U> IntoColor<U> for T
where U: FromColor<T>,

Source§

fn into_color(self) -> U

Convert into T with values clamped to the color defined bounds Read more
Source§

impl<T, U> IntoColorUnclamped<U> for T
where U: FromColorUnclamped<T>,

Source§

fn into_color_unclamped(self) -> U

Convert into T. The resulting color might be invalid in its color space Read more
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
Source§

impl<T> IntoStimulus<T> for T

Source§

fn into_stimulus(self) -> T

Converts self into T, while performing the appropriate scaling, rounding and clamping.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

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

Initializes a with the given initializer. Read more
Source§

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

Dereferences the given pointer. Read more
Source§

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

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

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

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T, C> TryComponentsInto<C> for T
where C: TryFromComponents<T>,

Source§

type Error = <C as TryFromComponents<T>>::Error

The error for when try_into_colors fails to cast.
Source§

fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>

Try to cast this collection of color components into a collection of colors. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.
Source§

impl<T, U> TryIntoColor<U> for T
where U: TryFromColor<T>,

Source§

fn try_into_color(self) -> Result<U, OutOfBounds<U>>

Convert into T, returning ok if the color is inside of its defined range, otherwise an OutOfBounds error is returned which contains the unclamped color. Read more
Source§

impl<C, U> UintsFrom<C> for U
where C: IntoUints<U>,

Source§

fn uints_from(colors: C) -> U

Cast a collection of colors into a collection of unsigned integers.
Source§

impl<C, U> UintsInto<C> for U
where C: FromUints<U>,

Source§

fn uints_into(self) -> C

Cast this collection of unsigned integers into a collection of colors.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

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

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

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