pub enum OutsideTap {
Ignore,
Notify {
consume: bool,
},
}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)
}What a registered surface wants to hear about a press that landed on nothing floated — the light-dismiss policy, a per-surface boolean everywhere this pattern exists.
Variants§
Ignore
Say nothing. A surface that dismisses some other way (a menu closed by its own item, a toolbar that follows a selection) wants this.
Notify
Deliver
OverlayEventKind::OutsideDown
to the owner on a primary press outside every registered rect.
Fields
consume: boolWhether the press is consumed by the notification.
true is the modal light-dismiss shape: the press closes the surface
and the main tree never sees it, so the tap that dismisses a menu
does not also activate the button under it. false is the
pass-through shape: the owner is told, and the press continues into
the main tree as usual.
Trait Implementations§
Source§impl Clone for OutsideTap
impl Clone for OutsideTap
Source§fn clone(&self) -> OutsideTap
fn clone(&self) -> OutsideTap
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 OutsideTap
Source§impl Debug for OutsideTap
impl Debug for OutsideTap
impl Eq for OutsideTap
Source§impl Hash for OutsideTap
impl Hash for OutsideTap
Source§impl PartialEq for OutsideTap
impl PartialEq for OutsideTap
impl StructuralPartialEq for OutsideTap
Auto Trait Implementations§
impl Freeze for OutsideTap
impl RefUnwindSafe for OutsideTap
impl Send for OutsideTap
impl Sync for OutsideTap
impl Unpin for OutsideTap
impl UnsafeUnpin for OutsideTap
impl UnwindSafe for OutsideTap
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.