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
impl PlatformInputHandler
Sourcepub fn new(cx: AsyncWindowContext, handler: Box<dyn InputHandler>) -> Self
pub fn new(cx: AsyncWindowContext, handler: Box<dyn InputHandler>) -> Self
Wraps handler so the platform can call it through the window context cx.
Sourcepub fn focus_id(&self) -> Option<FocusId>
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.
Sourcepub fn selected_text_range(
&mut self,
ignore_disabled_input: bool,
) -> Option<UTF16Selection>
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.
Sourcepub fn marked_text_range(&mut self) -> Option<Range<usize>>
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.
Sourcepub fn text_for_range(
&mut self,
range_utf16: Range<usize>,
adjusted: &mut Option<Range<usize>>,
) -> Option<String>
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.
Sourcepub fn replace_text_in_range(
&mut self,
replacement_range: Option<Range<usize>>,
text: &str,
)
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.
Sourcepub fn replace_and_mark_text_in_range(
&mut self,
range_utf16: Option<Range<usize>>,
new_text: &str,
new_selected_range: Option<Range<usize>>,
)
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.
Sourcepub fn unmark_text(&mut self)
pub fn unmark_text(&mut self)
Ends the composition and keeps the marked text.
Sourcepub fn paste(&mut self, item: ClipboardItem)
pub fn paste(&mut self, item: ClipboardItem)
Pastes item at the selection through InputHandler::paste.
Sourcepub fn bounds_for_range(
&mut self,
range_utf16: Range<usize>,
) -> Option<Bounds<Pixels>>
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.
Sourcepub fn selection_bounds_for_range(
&mut self,
range_utf16: Range<usize>,
) -> Vec<Bounds<Pixels>>
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.
Sourcepub fn apple_press_and_hold_enabled(&mut self) -> bool
pub fn apple_press_and_hold_enabled(&mut self) -> bool
Returns whether macOS press-and-hold should stay enabled for this handler.
Sourcepub fn dispatch_input(&mut self, input: &str, window: &mut Window, cx: &mut App)
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.
Sourcepub 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>>
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.
Sourcepub fn selected_bounds(
&mut self,
window: &mut Window,
cx: &mut App,
) -> Option<Bounds<Pixels>>
pub fn selected_bounds( &mut self, window: &mut Window, cx: &mut App, ) -> Option<Bounds<Pixels>>
Returns the IME candidate position for the current selection.
Sourcepub fn ime_candidate_bounds(&mut self) -> Option<Bounds<Pixels>>
pub fn ime_candidate_bounds(&mut self) -> Option<Bounds<Pixels>>
Returns the IME candidate position for the current selection, through the window context.
Sourcepub fn character_index_for_point(
&mut self,
point: Point<Pixels>,
) -> Option<usize>
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.
Sourcepub fn set_selected_text_range(&mut self, range_utf16: Range<usize>)
pub fn set_selected_text_range(&mut self, range_utf16: Range<usize>)
Sourcepub fn element_bounds(&mut self) -> Option<Bounds<Pixels>>
pub fn element_bounds(&mut self) -> Option<Bounds<Pixels>>
Sourcepub fn text_length_utf16(&mut self) -> Option<usize>
pub fn text_length_utf16(&mut self) -> Option<usize>
Sourcepub fn accepts_text_input(&mut self, window: &mut Window, cx: &mut App) -> bool
pub fn accepts_text_input(&mut self, window: &mut Window, cx: &mut App) -> bool
Returns whether the handler accepts text input right now.
Sourcepub fn query_accepts_text_input(&mut self) -> bool
pub fn query_accepts_text_input(&mut self) -> bool
Returns whether the handler accepts text input. Returns true if the window is gone.
Sourcepub fn query_accepts_focused_text_input(&mut self) -> bool
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.
Sourcepub fn query_prefers_ime_for_printable_keys(&mut self) -> bool
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.
Sourcepub fn text_input_configuration(
&mut self,
window: &mut Window,
cx: &mut App,
) -> TextInputConfiguration
pub fn text_input_configuration( &mut self, window: &mut Window, cx: &mut App, ) -> TextInputConfiguration
Returns the text input configuration the handler requests.
Sourcepub fn text_input_editable_range(&mut self) -> Option<Range<usize>>
pub fn text_input_editable_range(&mut self) -> Option<Range<usize>>
Auto Trait Implementations§
impl !RefUnwindSafe for PlatformInputHandler
impl !Send for PlatformInputHandler
impl !Sync for PlatformInputHandler
impl !UnwindSafe for PlatformInputHandler
impl Freeze for PlatformInputHandler
impl Unpin for PlatformInputHandler
impl UnsafeUnpin for PlatformInputHandler
Blanket Implementations§
Source§impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
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) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
replaced by palette::chromatic_adaptation::AdaptIntoUnclamped
Source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
replaced by palette::chromatic_adaptation::AdaptIntoUnclamped
Source§impl<T, C> AdaptIntoUnclamped<T> for Cwhere
T: AdaptFromUnclamped<C>,
impl<T, C> AdaptIntoUnclamped<T> for Cwhere
T: AdaptFromUnclamped<C>,
Source§type Scalar = <T as AdaptFromUnclamped<C>>::Scalar
type Scalar = <T as AdaptFromUnclamped<C>>::Scalar
Source§fn adapt_into_unclamped_with<M>(self) -> Twhere
M: LmsToXyz<<C as AdaptIntoUnclamped<T>>::Scalar> + XyzToLms<<C as AdaptIntoUnclamped<T>>::Scalar>,
fn adapt_into_unclamped_with<M>(self) -> Twhere
M: LmsToXyz<<C as AdaptIntoUnclamped<T>>::Scalar> + XyzToLms<<C as AdaptIntoUnclamped<T>>::Scalar>,
Source§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
Source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
Source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
Source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
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<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
Source§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>,
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
Source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> T
Source§impl<T, C> ComponentsInto<C> for T
impl<T, C> ComponentsInto<C> for T
Source§fn components_into(self) -> C
fn components_into(self) -> C
Source§impl<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
Source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
angle.Source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
Source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
other into Self, while performing the appropriate scaling,
rounding and clamping.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, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
Source§fn into_angle(self) -> U
fn into_angle(self) -> U
T.Source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
Source§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>,
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
Source§fn into_color(self) -> U
fn into_color(self) -> U
Source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
Source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
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 moreSource§impl<T> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
Source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
self into T, while performing the appropriate scaling,
rounding and clamping.Source§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
Source§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
try_into_colors fails to cast.Source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
Source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
Source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds error is returned which contains
the unclamped color. Read more