pub enum OverlayInput {
Interactive,
Transparent,
}Expand description
The overlay portal’s own vocabulary, flat-re-exported from frust-core:
which z-band a floated surface sits in, whether the pointer reaches it, and
what a press landing outside it delivers.
overlay_portal floats a surface above the whole app, anchored to its
child’s bounds and painted after the entire main tree — so it escapes both
the child’s paint order and every ancestor’s clip, and follows the child
across scroll and relayout with nothing subscribed. The surface is mounted
while OverlayPortalView::overlay is Some; a widget that hosts a
surface of its own instead reaches for authoring::OverlaySlot.
Lifted flat for EditCommand’s reason: an app or design system naming a
band, an input class or a light-dismiss policy is configuring a portal, not
authoring a widget.
use frust::{
OverlayBand, OverlayInput, OverlayPlacement, OverlaySide, View, any, overlay_portal, text,
};
struct App {
hovering: bool,
}
// A tooltip: above its trigger, in the topmost band, and transparent to the
// pointer so hovering the trigger is never interrupted by its own tip.
fn trigger(state: &mut App) -> impl View<App> + use<> {
overlay_portal(text("Save"))
.overlay(state.hovering.then(|| any(text("Save the document"))))
.placement(OverlayPlacement::on(OverlaySide::Top))
.band(OverlayBand::Tooltip)
.input(OverlayInput::Transparent)
}Whether a registered surface takes pointer input at all.
OverlayInput::Transparent is the rule egui’s Order::Tooltip encodes: a
surface that is painted above the app but never hit-tested, so the pointer
passes straight through it to whatever the main tree has underneath. A
transparent entry is skipped by the root’s pre-pass entirely — it receives no
InputEvent::Overlay, including no
OverlayEventKind::OutsideDown.
Variants§
Interactive
The surface hit-tests: a pointer inside its rect is routed to its owner and never reaches the main tree.
Transparent
The surface is painted but never hit-tested — pointer input passes through as though it were not there.
Trait Implementations§
Source§impl Clone for OverlayInput
impl Clone for OverlayInput
Source§fn clone(&self) -> OverlayInput
fn clone(&self) -> OverlayInput
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for OverlayInput
Source§impl Debug for OverlayInput
impl Debug for OverlayInput
impl Eq for OverlayInput
Source§impl Hash for OverlayInput
impl Hash for OverlayInput
Source§impl PartialEq for OverlayInput
impl PartialEq for OverlayInput
impl StructuralPartialEq for OverlayInput
Auto Trait Implementations§
impl Freeze for OverlayInput
impl RefUnwindSafe for OverlayInput
impl Send for OverlayInput
impl Sync for OverlayInput
impl Unpin for OverlayInput
impl UnsafeUnpin for OverlayInput
impl UnwindSafe for OverlayInput
Blanket Implementations§
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
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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.