Struct egui::input_state::PointerState
source · pub struct PointerState {Show 17 fields
time: f64,
latest_pos: Option<Pos2>,
interact_pos: Option<Pos2>,
delta: Vec2,
motion: Option<Vec2>,
velocity: Vec2,
direction: Vec2,
pos_history: History<Pos2>,
down: [bool; 5],
press_origin: Option<Pos2>,
press_start_time: Option<f64>,
pub(crate) has_moved_too_much_for_a_click: bool,
pub(crate) started_decidedly_dragging: bool,
last_click_time: f64,
last_last_click_time: f64,
last_move_time: f64,
pub(crate) pointer_events: Vec<PointerEvent>,
}
Expand description
Mouse or touch state.
Fields§
§time: f64
Latest known time
latest_pos: Option<Pos2>
Latest reported pointer position.
When tapping a touch screen, this will be None
.
interact_pos: Option<Pos2>
Latest position of the mouse, but ignoring any Event::PointerGone
if there were interactions this frame.
When tapping a touch screen, this will be the location of the touch.
delta: Vec2
How much the pointer moved compared to last frame, in points.
motion: Option<Vec2>
How much the mouse moved since the last frame, in unspecified units. Represents the actual movement of the mouse, without acceleration or clamped by screen edges. May be unavailable on some integrations.
velocity: Vec2
Current velocity of pointer.
direction: Vec2
Current direction of pointer.
pos_history: History<Pos2>
Recent movement of the pointer. Used for calculating velocity of pointer.
down: [bool; 5]
§press_origin: Option<Pos2>
Where did the current click/drag originate?
None
if no mouse button is down.
press_start_time: Option<f64>
When did the current click/drag originate?
None
if no mouse button is down.
has_moved_too_much_for_a_click: bool
Set to true
if the pointer has moved too much (since being pressed)
for it to be registered as a click.
started_decidedly_dragging: bool
Did Self::is_decidedly_dragging
go from false
to true
this frame?
This could also be the trigger point for a long-touch.
last_click_time: f64
When did the pointer get click last? Used to check for double-clicks.
last_last_click_time: f64
When did the pointer get click two clicks ago? Used to check for triple-clicks.
last_move_time: f64
When was the pointer last moved? Used for things like showing hover ui/tooltip with a delay.
pointer_events: Vec<PointerEvent>
All button events that occurred this frame
Implementations§
source§impl PointerState
impl PointerState
pub(crate) fn begin_frame(self, time: f64, new: &RawInput) -> Self
fn wants_repaint(&self) -> bool
sourcepub fn motion(&self) -> Option<Vec2>
pub fn motion(&self) -> Option<Vec2>
How much the mouse moved since the last frame, in unspecified units. Represents the actual movement of the mouse, without acceleration or clamped by screen edges. May be unavailable on some integrations.
sourcepub fn velocity(&self) -> Vec2
pub fn velocity(&self) -> Vec2
Current velocity of pointer.
This is smoothed over a few frames, but can be ZERO when frame-rate is bad.
sourcepub fn direction(&self) -> Vec2
pub fn direction(&self) -> Vec2
Current direction of the pointer.
This is less sensitive to bad framerate than Self::velocity
.
sourcepub fn press_origin(&self) -> Option<Pos2>
pub fn press_origin(&self) -> Option<Pos2>
Where did the current click/drag originate?
None
if no mouse button is down.
sourcepub fn press_start_time(&self) -> Option<f64>
pub fn press_start_time(&self) -> Option<f64>
When did the current click/drag originate?
None
if no mouse button is down.
sourcepub fn latest_pos(&self) -> Option<Pos2>
pub fn latest_pos(&self) -> Option<Pos2>
Latest reported pointer position.
When tapping a touch screen, this will be None
.
sourcepub fn hover_pos(&self) -> Option<Pos2>
pub fn hover_pos(&self) -> Option<Pos2>
If it is a good idea to show a tooltip, where is pointer?
sourcepub fn interact_pos(&self) -> Option<Pos2>
pub fn interact_pos(&self) -> Option<Pos2>
If you detect a click or drag and wants to know where it happened, use this.
Latest position of the mouse, but ignoring any Event::PointerGone
if there were interactions this frame.
When tapping a touch screen, this will be the location of the touch.
sourcepub fn has_pointer(&self) -> bool
pub fn has_pointer(&self) -> bool
Do we have a pointer?
false
if the mouse is not over the egui area, or if no touches are down on touch screens.
sourcepub fn is_still(&self) -> bool
pub fn is_still(&self) -> bool
Is the pointer currently still?
This is smoothed so a few frames of stillness is required before this returns true
.
sourcepub fn is_moving(&self) -> bool
pub fn is_moving(&self) -> bool
Is the pointer currently moving?
This is smoothed so a few frames of stillness is required before this returns false
.
sourcepub fn time_since_last_movement(&self) -> f32
pub fn time_since_last_movement(&self) -> f32
How long has it been (in seconds) since the pointer was last moved?
sourcepub fn time_since_last_click(&self) -> f32
pub fn time_since_last_click(&self) -> f32
How long has it been (in seconds) since the pointer was clicked?
sourcepub fn any_pressed(&self) -> bool
pub fn any_pressed(&self) -> bool
Was any pointer button pressed (!down -> down
) this frame?
This can sometimes return true
even if any_down() == false
because a press can be shorted than one frame.
sourcepub fn any_released(&self) -> bool
pub fn any_released(&self) -> bool
Was any pointer button released (down -> !down
) this frame?
Was the button given pressed this frame?
Was the button given released this frame?
sourcepub fn primary_pressed(&self) -> bool
pub fn primary_pressed(&self) -> bool
Was the primary button pressed this frame?
sourcepub fn secondary_pressed(&self) -> bool
pub fn secondary_pressed(&self) -> bool
Was the secondary button pressed this frame?
sourcepub fn primary_released(&self) -> bool
pub fn primary_released(&self) -> bool
Was the primary button released this frame?
sourcepub fn secondary_released(&self) -> bool
pub fn secondary_released(&self) -> bool
Was the secondary button released this frame?
Was the given pointer button given clicked this frame?
Returns true on double- and triple- clicks too.
Was the button given double clicked this frame?
Was the button given triple clicked this frame?
sourcepub fn primary_clicked(&self) -> bool
pub fn primary_clicked(&self) -> bool
Was the primary button clicked this frame?
sourcepub fn secondary_clicked(&self) -> bool
pub fn secondary_clicked(&self) -> bool
Was the secondary button clicked this frame?
Is this button currently down?
If the pointer button is down, will it register as a click when released?
See also Self::is_decidedly_dragging
.
sourcepub fn is_decidedly_dragging(&self) -> bool
pub fn is_decidedly_dragging(&self) -> bool
Just because the mouse is down doesn’t mean we are dragging. We could be at the start of a click. But if the mouse is down long enough, or has moved far enough, then we consider it a drag.
This function can return true on the same frame the drag is released, but NOT on the first frame it was started.
See also Self::could_any_button_be_click
.
sourcepub(crate) fn is_long_press(&self) -> bool
pub(crate) fn is_long_press(&self) -> bool
A long press is something we detect on touch screens to trigger a secondary click (context menu).
Returns true
only on one frame.
sourcepub fn primary_down(&self) -> bool
pub fn primary_down(&self) -> bool
Is the primary button currently down?
sourcepub fn secondary_down(&self) -> bool
pub fn secondary_down(&self) -> bool
Is the secondary button currently down?
sourcepub fn middle_down(&self) -> bool
pub fn middle_down(&self) -> bool
Is the middle button currently down?
Trait Implementations§
source§impl Clone for PointerState
impl Clone for PointerState
source§fn clone(&self) -> PointerState
fn clone(&self) -> PointerState
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more