pub enum ClickEvent {
Mouse(MouseClickEvent),
Keyboard(KeyboardClickEvent),
Touch(TouchClickEvent),
}Expand description
A completed click from the mouse, keyboard or touch.
Click listeners receive this type. StatefulInteractiveElement::on_click handles
the primary action, and StatefulInteractiveElement::on_aux_click handles the
other mouse buttons. Use the methods on this type, such as
ClickEvent::is_secondary, to tell the cases apart.
§Examples
use gpui::{ClickEvent, KeyboardButton, KeyboardClickEvent, Modifiers, MouseButton,
MouseClickEvent, MouseDownEvent, MouseUpEvent};
let right_click = ClickEvent::Mouse(MouseClickEvent {
down: MouseDownEvent { button: MouseButton::Right, ..Default::default() },
up: MouseUpEvent { button: MouseButton::Right, ..Default::default() },
});
assert!(right_click.is_right_click());
assert!(right_click.is_secondary());
assert!(!right_click.standard_click());
let enter = ClickEvent::Keyboard(KeyboardClickEvent {
button: KeyboardButton::Enter,
..Default::default()
});
assert!(enter.is_keyboard());
assert_eq!(enter.click_count(), 1);
assert_eq!(enter.modifiers(), Modifiers::default());Variants§
Mouse(MouseClickEvent)
A click from a mouse button, a press and a release on the same element.
Keyboard(KeyboardClickEvent)
A click from Enter or Space on a focused element.
Touch(TouchClickEvent)
A touch tap or long press. GPUI reserves this variant for direct touch click delivery; the recognizer currently reports those gestures through mouse events instead.
Implementations§
Source§impl ClickEvent
impl ClickEvent
Sourcepub fn modifiers(&self) -> Modifiers
pub fn modifiers(&self) -> Modifiers
Returns the modifier keys held during the click.
Keyboard and touch clicks have none, so this returns the default
Modifiers. A mouse click returns the modifiers held when the button was
released.
Sourcepub fn position(&self) -> Point<Pixels>
pub fn position(&self) -> Point<Pixels>
Returns the window position of the click, in logical pixels.
For a mouse click this is where the button was released. For a touch it is where the tap happened. For a keyboard click, which has no pointer, it is the bottom-left corner of the clicked element.
Sourcepub fn mouse_position(&self) -> Option<Point<Pixels>>
pub fn mouse_position(&self) -> Option<Point<Pixels>>
Returns the mouse position of the click, or None if it did not come from
a mouse.
Keyboard and touch clicks return None. Use ClickEvent::position when
you need a position for every kind.
Sourcepub fn is_right_click(&self) -> bool
pub fn is_right_click(&self) -> bool
Returns true if this is a mouse click made with the right button.
Keyboard and touch clicks always return false. Use
ClickEvent::is_secondary to also match long presses.
Sourcepub fn is_middle_click(&self) -> bool
pub fn is_middle_click(&self) -> bool
Returns true if this is a mouse click made with the middle button.
Keyboard and touch clicks always return false.
Sourcepub fn is_secondary(&self) -> bool
pub fn is_secondary(&self) -> bool
Returns true if this click is a secondary activation, the kind that
usually opens a context menu.
That is a right-button mouse click, or a long press when a future direct
touch click is delivered. On macOS, Control-clicks already arrive as right
clicks. Keyboard clicks always return false.
Sourcepub fn standard_click(&self) -> bool
pub fn standard_click(&self) -> bool
Returns true for a primary activation: a left-button click, a keyboard
click, or a direct touch tap that is not a long press.
Right, middle and navigation button clicks return false. Use
ClickEvent::is_secondary to test for the right button and long presses.
Sourcepub fn first_focus(&self) -> bool
pub fn first_focus(&self) -> bool
Returns true if this click activated the window, as reported by the
platform in MouseDownEvent::first_mouse.
Keyboard and touch clicks always return false. A keyboard click needs
the element to be focused already.
Sourcepub fn click_count(&self) -> usize
pub fn click_count(&self) -> usize
Returns how many clicks in a row this click completes. A double click is 2.
A keyboard click always returns 1. A mouse click returns the count from its release. A touch click returns its tap count.
Sourcepub fn is_keyboard(&self) -> bool
pub fn is_keyboard(&self) -> bool
Returns true if this click came from the keyboard.
Trait Implementations§
Source§impl Clone for ClickEvent
impl Clone for ClickEvent
Source§impl Debug for ClickEvent
impl Debug for ClickEvent
Auto Trait Implementations§
impl Freeze for ClickEvent
impl RefUnwindSafe for ClickEvent
impl Send for ClickEvent
impl Sync for ClickEvent
impl Unpin for ClickEvent
impl UnsafeUnpin for ClickEvent
impl UnwindSafe for ClickEvent
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