pub struct FocusLabel {
pub rect: Rect,
/* private fields */
}Expand description
A single-line caption that carries a keyboard mnemonic and hands focus to the field beside it when that mnemonic is pressed.
Mark the mnemonic with &, exactly like a MenuBar
label: FocusLabel::new(rect, "Last &name:") renders Last name: with the
n underlined and listens for Alt+N. When that combination is
pressed anywhere in the surrounding container, focus jumps to the next
focusable widget added to the same parent — the classic “buddy label”
convention. Place the label immediately before the field it describes:
use saudade::*;
let form = Container::new(220, 60)
// Alt+N focuses the field that follows…
.add(FocusLabel::new(Rect::new(8, 8, 80, 20), "Last &name:"))
.add(TextInput::new(Rect::new(92, 6, 120, 22)));A FocusLabel is not itself focusable and never takes focus; it only
redirects it. Without a & marker it behaves like a plain, static
Label (minus word wrapping).
Fields§
§rect: RectImplementations§
Source§impl FocusLabel
impl FocusLabel
Sourcepub fn new(rect: Rect, text: impl AsRef<str>) -> Self
pub fn new(rect: Rect, text: impl AsRef<str>) -> Self
Create a label from a rect and a &-marked caption. The character after
the first unescaped & is shown underlined and bound as the mnemonic;
&& prints a literal ampersand.
pub fn with_color(self, color: Color) -> Self
pub fn with_size(self, size: f32) -> Self
Sourcepub fn with_background(self, color: Color) -> Self
pub fn with_background(self, color: Color) -> Self
Paint a solid fill across the label’s rectangle before the text — handy
to keep it legible over a window background pattern. See
Label::with_background.
Trait Implementations§
Source§impl Widget for FocusLabel
impl Widget for FocusLabel
Source§fn accepts_accelerators(&self) -> bool
fn accepts_accelerators(&self) -> bool
Listen for accelerators only when there’s a mnemonic to match — so a marker-less caption doesn’t draw keyboard traffic it will never use.
Source§fn layout(&mut self, bounds: Rect)
fn layout(&mut self, bounds: Rect)
Source§fn paint(&mut self, painter: &mut Painter<'_>, theme: &Theme)
fn paint(&mut self, painter: &mut Painter<'_>, theme: &Theme)
Source§fn event(&mut self, event: &Event, ctx: &mut EventCtx)
fn event(&mut self, event: &Event, ctx: &mut EventCtx)
Source§fn paint_overlay(&mut self, _painter: &mut Painter<'_>, _theme: &Theme)
fn paint_overlay(&mut self, _painter: &mut Painter<'_>, _theme: &Theme)
paint is finished. Default: no-op.Source§fn on_cancel(&mut self, _ctx: &mut EventCtx)
fn on_cancel(&mut self, _ctx: &mut EventCtx)
Modal calls it on its content just before
tearing it down; the runtime calls it on the root widget when the main
window is closed, so a dialog used directly as the window root gets the
same hook. It does not fire when the content asked to be dismissed
itself (e.g. an OK / Cancel button calling
EventCtx::request_dismiss), since that path already chose what to
commit or revert. A dialog that previews edits live overrides this to
roll them back. Default: no-op.Source§fn captures_pointer(&self) -> bool
fn captures_pointer(&self) -> bool
Button override this so
pointer events keep flowing to them while a press is in progress, even
if the cursor leaves the widget’s bounds.Source§fn focusable(&self) -> bool
fn focusable(&self) -> bool
true if this widget accepts keyboard focus. The parent container
remembers the last focusable widget the user clicked, and routes
keyboard events only there.Source§fn set_focused(&mut self, _focused: bool)
fn set_focused(&mut self, _focused: bool)
Source§fn popup_request(&self) -> Option<PopupRequest>
fn popup_request(&self) -> Option<PopupRequest>
Some makes the runtime open (or move) a borderless top-level
window at the indicated logical-coord rect so the popup can extend
past the main window’s edges. Container widgets propagate this from
their children. Default: no popup. Read moreSource§fn collect_popups(&self, out: &mut Vec<PopupRequest>)
fn collect_popups(&self, out: &mut Vec<PopupRequest>)
Source§fn focus_first(&mut self) -> bool
fn focus_first(&mut self) -> bool
true if a focusable target was located and now holds focus. Read moreSource§fn wants_ticks(&self) -> bool
fn wants_ticks(&self) -> bool
true if this widget needs periodic Event::Tick
events to drive an animation. The runtime polls this after every
dispatch and, while any widget in the tree wants ticks, fires
Tick at roughly 60 Hz. Container widgets propagate from
children. Default: no animation.Auto Trait Implementations§
impl Freeze for FocusLabel
impl RefUnwindSafe for FocusLabel
impl Send for FocusLabel
impl Sync for FocusLabel
impl Unpin for FocusLabel
impl UnsafeUnpin for FocusLabel
impl UnwindSafe for FocusLabel
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
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.