pub struct GestureState(/* private fields */);Expand description
Retain one handle per logical control. Clones share input/motion state. Mouse release outside the hitbox, lost button, Escape, blur and deactivation clear ownership. Pinch and supported native touch gestures are opt-in; raw multi-touch availability depends on the backend/platform.
Implementations§
Source§impl GestureState
impl GestureState
Sourcepub fn with_drag(self, drag: Drag) -> Self
pub fn with_drag(self, drag: Drag) -> Self
Adds bounded native pointer/arrow-key dragging. Configure once in the view.
Sourcepub fn constraints(self, container: MotionAnchor) -> Self
pub fn constraints(self, container: MotionAnchor) -> Self
Measures drag bounds against a retained native container anchor. Resize changes retarget from the current presentation rather than resetting it.
Sourcepub fn on_drag(
self,
callback: impl Fn(DragEvent, &mut Window, &mut App) + 'static,
) -> Self
pub fn on_drag( self, callback: impl Fn(DragEvent, &mut Window, &mut App) + 'static, ) -> Self
Reports structured pointer start/move/end/cancel events outside state borrows.
Also enables a host-controlled pan surface without with_drag.
Sourcepub fn on_pinch(
self,
callback: impl Fn(PinchGesture, &mut Window, &mut App) + 'static,
) -> Self
pub fn on_pinch( self, callback: impl Fn(PinchGesture, &mut Window, &mut App) + 'static, ) -> Self
Reports native pinch gestures without assuming ordinary elements can scale.
Sourcepub fn start_drag(
&self,
pointer: [f64; 2],
window: &mut Window,
cx: &mut App,
) -> bool
pub fn start_drag( &self, pointer: [f64; 2], window: &mut Window, cx: &mut App, ) -> bool
Starts from a separate handle or scrubber. Available after the target’s first layout; focus, cancellation and outside release remain target-owned.
Sourcepub fn view_root(self, root: MotionAnchor) -> Self
pub fn view_root(self, root: MotionAnchor) -> Self
Uses another measured viewport for in-view checks, intersected with normal ancestor clipping. Missing measurements preserve the previous visibility.
Sourcepub fn view_margins(self, margins: [f64; 4]) -> Self
pub fn view_margins(self, margins: [f64; 4]) -> Self
Insets top/right/bottom/left visibility edges; negative values expand them.
Sourcepub fn in_view(self, amount: f64, once: bool) -> Self
pub fn in_view(self, amount: f64, once: bool) -> Self
Enables automatically measured clipped viewport visibility. Configure once.
Sourcepub fn interaction(&self) -> Interaction
pub fn interaction(&self) -> Interaction
Current resolved interaction flags, supplied automatically by the element.
Sourcepub fn focus_handle(&self) -> Option<FocusHandle>
pub fn focus_handle(&self) -> Option<FocusHandle>
The stable focus handle, available after the first layout.
Sourcepub fn cancel(&self, cx: &mut App)
pub fn cancel(&self, cx: &mut App)
Cancels pointer/key state and bounded dragging, notifying the owning view.
Sourcepub fn bind<E: IntoElement + StatefulInteractiveElement + Styled + 'static>(
&self,
id: impl Into<ElementId>,
child: E,
motion: Motion,
targets: GestureTargets,
) -> GestureElement<E>
pub fn bind<E: IntoElement + StatefulInteractiveElement + Styled + 'static>( &self, id: impl Into<ElementId>, child: E, motion: Motion, targets: GestureTargets, ) -> GestureElement<E>
Wraps a styled native control and automatically binds hover/press/focus,
viewport and optional drag. Supply role, label and click behavior on the
child. The adapter supplies a stable tab-stop focus handle. Configure
layout styles before binding; x/y are owned by this adapter, not a second
LayoutGroup on the same control. Native activation remains CE’s behavior.
use gpui::{div, prelude::*, Role};
use gpui_ce_motion::{GestureState, GestureTargets, Motion, Target};
let state = GestureState::default(); // persistent view field
let control = state.bind("motion-button", div().id("button").role(Role::Button).child("Press"),
Motion::new(Target::default()), GestureTargets::default().while_press(Target::default().opacity(0.5)));Trait Implementations§
Source§impl Clone for GestureState
impl Clone for GestureState
Auto Trait Implementations§
impl !RefUnwindSafe for GestureState
impl !Send for GestureState
impl !Sync for GestureState
impl !UnwindSafe for GestureState
impl Freeze for GestureState
impl Unpin for GestureState
impl UnsafeUnpin for GestureState
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian().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