Struct egui::Response [−][src]
pub struct Response { pub ctx: CtxRef, pub layer_id: LayerId, pub id: Id, pub rect: Rect, pub sense: Sense, // some fields omitted }
The result of adding a widget to a Ui
.
A Response
lets you know whether or not a widget is being hovered, clicked or dragged.
It also lets you easily show a tooltip on hover.
Whenever something gets added to a Ui
, a Response
object is returned.
[ui.add
] returns a Response
, as does [ui.button
], and all similar shortcuts.
Fields
ctx: CtxRef
Used for optionally showing a tooltip and checking for more interactions.
layer_id: LayerId
Which layer the widget is part of.
id: Id
The Id
of the widget/area this response pertains.
rect: Rect
The area of the screen we are talking about.
sense: Sense
The senses (click and/or drag) that the widget was interested in (if any).
Implementations
impl Response
[src]
impl Response
[src]pub fn clicked(&self) -> bool
[src]
pub fn clicked(&self) -> bool
[src]Returns true if this widget was clicked this frame by the primary button.
Note that the widget must be sensing clicks with Sense::click
.
crate::Button
senses clicks; crate::Label
does not (unless you call crate::Label::sense
).
You can use Self::interact
to sense more things after adding a widget.
pub fn clicked_by(&self, button: PointerButton) -> bool
[src]
pub fn clicked_by(&self, button: PointerButton) -> bool
[src]Returns true if this widget was clicked this frame by the given button.
pub fn secondary_clicked(&self) -> bool
[src]
pub fn secondary_clicked(&self) -> bool
[src]Returns true if this widget was clicked this frame by the secondary mouse button (e.g. the right mouse button).
pub fn middle_clicked(&self) -> bool
[src]
pub fn middle_clicked(&self) -> bool
[src]Returns true if this widget was clicked this frame by the middle mouse button.
pub fn double_clicked(&self) -> bool
[src]
pub fn double_clicked(&self) -> bool
[src]Returns true if this widget was double-clicked this frame by the primary button.
pub fn double_clicked_by(&self, button: PointerButton) -> bool
[src]
pub fn double_clicked_by(&self, button: PointerButton) -> bool
[src]Returns true if this widget was double-clicked this frame by the given button.
pub fn clicked_elsewhere(&self) -> bool
[src]
pub fn clicked_elsewhere(&self) -> bool
[src]true
if there was a click outside this widget this frame.
pub fn enabled(&self) -> bool
[src]
pub fn enabled(&self) -> bool
[src]Was the widget enabled? If false, there was no interaction attempted and the widget should be drawn in a gray disabled look.
pub fn hovered(&self) -> bool
[src]
pub fn hovered(&self) -> bool
[src]The pointer is hovering above this widget or the widget was clicked/tapped this frame.
pub fn has_focus(&self) -> bool
[src]
pub fn has_focus(&self) -> bool
[src]This widget has the keyboard focus (i.e. is receiving key presses).
pub fn gained_focus(&self) -> bool
[src]
pub fn gained_focus(&self) -> bool
[src]True if this widget has keyboard focus this frame, but didn’t last frame.
pub fn lost_focus(&self) -> bool
[src]
pub fn lost_focus(&self) -> bool
[src]The widget had keyboard focus and lost it,
either because the user pressed tab or clicked somewhere else,
or (in case of a crate::TextEdit
) because the user pressed enter.
let response = ui.text_edit_singleline(&mut my_text); if response.lost_focus() && ui.input().key_pressed(egui::Key::Enter) { do_request(&my_text); }
pub fn lost_kb_focus(&self) -> bool
[src]
Renamed to lost_focus()
pub fn request_focus(&self)
[src]
pub fn request_focus(&self)
[src]Request that this widget get keyboard focus.
pub fn surrender_focus(&self)
[src]
pub fn surrender_focus(&self)
[src]Surrender keyboard focus for this widget.
pub fn dragged(&self) -> bool
[src]
pub fn dragged(&self) -> bool
[src]The widgets is being dragged.
To find out which button(s), query crate::PointerState::button_down
(ui.input().pointer.button_down(…)
).
Note that the widget must be sensing drags with Sense::drag
.
crate::DragValue
senses drags; crate::Label
does not (unless you call crate::Label::sense
).
You can use Self::interact
to sense more things after adding a widget.
pub fn dragged_by(&self, button: PointerButton) -> bool
[src]
pub fn drag_started(&self) -> bool
[src]
pub fn drag_started(&self) -> bool
[src]Did a drag on this widgets begin this frame?
pub fn drag_released(&self) -> bool
[src]
pub fn drag_released(&self) -> bool
[src]The widget was being dragged, but now it has been released.
pub fn drag_delta(&self) -> Vec2
[src]
pub fn drag_delta(&self) -> Vec2
[src]If dragged, how many points were we dragged and in what direction?
pub fn interact_pointer_pos(&self) -> Option<Pos2>
[src]
pub fn interact_pointer_pos(&self) -> Option<Pos2>
[src]Where the pointer (mouse/touch) were when when this widget was clicked or dragged.
None
if the widget is not being interacted with.
pub fn hover_pos(&self) -> Option<Pos2>
[src]
pub fn hover_pos(&self) -> Option<Pos2>
[src]If it is a good idea to show a tooltip, where is pointer? None if the pointer is outside the response area.
pub fn is_pointer_button_down_on(&self) -> bool
[src]
pub fn is_pointer_button_down_on(&self) -> bool
[src]Is the pointer button currently down on this widget? This is true if the pointer is pressing down or dragging a widget
pub fn changed(&self) -> bool
[src]
pub fn changed(&self) -> bool
[src]What the underlying data changed?
e.g. the slider was dragged, text was entered in a TextEdit
etc.
Always false
for something like a Button
.
Can sometimes be true
even though the data didn’t changed
(e.g. if the user entered a character and erased it the same frame).
pub fn mark_changed(&mut self)
[src]
pub fn mark_changed(&mut self)
[src]Report the data shown by this widget changed.
This must be called by widgets that represent some mutable data, e.g. checkboxes, sliders etc.
pub fn on_hover_ui(self, add_contents: impl FnOnce(&mut Ui)) -> Self
[src]
pub fn on_hover_ui(self, add_contents: impl FnOnce(&mut Ui)) -> Self
[src]Show this UI if the widget was hovered (i.e. a tooltip).
The text will not be visible if the widget is not enabled. If you call this multiple times the tooltips will stack underneath the previous ones.
pub fn on_disabled_hover_ui(self, add_contents: impl FnOnce(&mut Ui)) -> Self
[src]
pub fn on_disabled_hover_ui(self, add_contents: impl FnOnce(&mut Ui)) -> Self
[src]Show this UI when hovering if the widget is disabled.
pub fn on_hover_ui_at_pointer(self, add_contents: impl FnOnce(&mut Ui)) -> Self
[src]
pub fn on_hover_ui_at_pointer(self, add_contents: impl FnOnce(&mut Ui)) -> Self
[src]Like on_hover_ui
, but show the ui next to cursor.
pub fn on_hover_text(self, text: impl ToString) -> Self
[src]
pub fn on_hover_text(self, text: impl ToString) -> Self
[src]Show this text if the widget was hovered (i.e. a tooltip).
The text will not be visible if the widget is not enabled. If you call this multiple times the tooltips will stack underneath the previous ones.
pub fn on_disabled_hover_text(self, text: impl ToString) -> Self
[src]
pub fn on_disabled_hover_text(self, text: impl ToString) -> Self
[src]Show this text when hovering if the widget is disabled.
pub fn tooltip_text(self, text: impl ToString) -> Self
[src]
Deprecated 2020-10-01: use on_hover_text
instead.
pub fn on_hover_cursor(self, cursor: CursorIcon) -> Self
[src]
pub fn on_hover_cursor(self, cursor: CursorIcon) -> Self
[src]When hovered, use this icon for the mouse cursor.
pub fn interact(&self, sense: Sense) -> Self
[src]
pub fn interact(&self, sense: Sense) -> Self
[src]Check for more interactions (e.g. sense clicks on a Response
returned from a label).
Note that this call will not add any hover-effects to the widget, so when possible
it is better to give the widget a Sense
instead, e.g. using [Label::sense]
.
let response = ui.label("hello"); assert!(!response.clicked()); // labels don't sense clicks by default let response = response.interact(egui::Sense::click()); if response.clicked() { /* … */ }
pub fn scroll_to_me(&self, align: Align)
[src]
pub fn scroll_to_me(&self, align: Align)
[src]Move the scroll to this UI with the specified alignment.
egui::ScrollArea::auto_sized().show(ui, |ui| { for i in 0..1000 { let response = ui.button(format!("Button {}", i)); if response.clicked() { response.scroll_to_me(Align::Center); } } });
pub fn widget_info(&self, make_info: impl Fn() -> WidgetInfo)
[src]
pub fn widget_info(&self, make_info: impl Fn() -> WidgetInfo)
[src]For accessibility.
Call after interacting and potential calls to Self::mark_changed
.
Trait Implementations
impl BitOr<Response> for Response
[src]
impl BitOr<Response> for Response
[src]To summarize the response from many widgets you can use this pattern:
use egui::*; fn draw_vec2(ui: &mut Ui, v: &mut Vec2) -> Response { ui.add(DragValue::new(&mut v.x)) | ui.add(DragValue::new(&mut v.y)) }
Now draw_vec2(ui, foo).hovered
is true if either DragValue
were hovered.
impl BitOrAssign<Response> for Response
[src]
impl BitOrAssign<Response> for Response
[src]To summarize the response from many widgets you can use this pattern:
let mut response = ui.add(widget_a); response |= ui.add(widget_b); response |= ui.add(widget_c); if response.hovered() { ui.label("You hovered at least one of the widgets"); }
fn bitor_assign(&mut self, rhs: Self)
[src]
fn bitor_assign(&mut self, rhs: Self)
[src]Performs the |=
operation. Read more
Auto Trait Implementations
impl !RefUnwindSafe for Response
impl Send for Response
impl Sync for Response
impl Unpin for Response
impl !UnwindSafe for Response
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]pub fn borrow_mut(&mut self) -> &mut T
[src]
pub fn borrow_mut(&mut self) -> &mut T
[src]Mutably borrows from an owned value. Read more
impl<T> ToOwned for T where
T: Clone,
[src]
impl<T> ToOwned for T where
T: Clone,
[src]type Owned = T
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn to_owned(&self) -> T
[src]Creates owned data from borrowed data, usually by cloning. Read more
pub fn clone_into(&self, target: &mut T)
[src]
pub fn clone_into(&self, target: &mut T)
[src]🔬 This is a nightly-only experimental API. (toowned_clone_into
)
recently added
Uses borrowed data to replace owned data, usually by cloning. Read more