Skip to main content

WindowConfig

Struct WindowConfig 

Source
pub struct WindowConfig {
    pub kind: WindowKind,
    pub size: Size,
    pub activates: bool,
    pub anchor: Rect,
}
Expand description

What a frame says about a window it declares (Ui::window, Core::declare_window). Plain data, no title and no callbacks, so a WindowCommand stays Copy and two declarations of one name compare by value.

Read on the opening edge only. The config that reaches WindowCommand::Open is the one the declaration carried on the frame it started; re-declaring "palette" at a new size does not resize it, because the user owns a window’s geometry once it exists. Resize with Core::set_window_size instead.

use kui_core::{Rect, WindowConfig, WindowKind};

let normal = WindowConfig::sized(640.0, 400.0);
let popup = WindowConfig::popup(Rect::new(0.0, 0.0, 120.0, 24.0), 120.0, 200.0);
assert!(normal.activates && !popup.activates);
assert_eq!(WindowConfig::default().size, WindowConfig::DEFAULT_SIZE);
assert_eq!(WindowKind::from_name("popup"), Some(WindowKind::Popup));

Fields§

§kind: WindowKind§size: Size

Initial inner size, logical px.

§activates: bool

Whether opening it takes OS focus. True for a normal window; WindowConfig::popup turns it off, so the field that opened a dropdown keeps the ring while the list is up.

§anchor: Rect

WindowKind::Popup only: what the popup is placed against, as a rect in the declaring window’s logical viewport coordinates — which is exactly the rect an onLayout node reports, so an app needs no new geometry query to fill it. The driver resolves it to screen coordinates against the owner’s own position and puts the popup below it, flipping above when the display’s bottom edge is nearer than the popup is tall.

Read on the opening edge with the rest of the config and never again: a popup that has to follow a moving anchor stops being declared and is declared again, which is what a dropdown does when its field scrolls away anyway. Ignored by a Normal window.

Implementations§

Source§

impl WindowConfig

Source

pub const DEFAULT_SIZE: Size

The size a declaration that names none gets.

Source

pub fn to_value(&self) -> Value

{kind, width, height, activates, anchor: {x, y, w, h}}.

Source

pub fn sized(w: f32, h: f32) -> WindowConfig

A normal, activating window of w x h logical px.

Source

pub fn popup(anchor: Rect, w: f32, h: f32) -> WindowConfig

A WindowKind::Popup of w x h logical px placed against anchor — the rect, in the declaring window’s viewport coordinates, that an onLayout handler reported for the field or button the menu belongs to.

Non-activating, because a popup that takes OS focus blurs whatever opened it. Set activates back to true afterwards for the rare surface that should take focus.

Source

pub fn of_kind(kind: WindowKind) -> WindowConfig

The defaults for a window of kind: the one decision the kind makes on its own is whether opening it takes OS focus (a normal window does, a popup does not).

Source

pub fn from_value(v: &Value) -> Result<(String, WindowConfig), String>

A declaration from plain data: a bare name (the defaults), or a map with name, kind ("normal" | "popup"), width and height (both and positive, or the default size), activates, and the anchor rect ({x, y, w, h}) a popup is placed against. Returns the name with the config. An unknown kind is an error rather than a normal window, so a typo cannot read as a popup having worked.

Trait Implementations§

Source§

impl Clone for WindowConfig

Source§

fn clone(&self) -> WindowConfig

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for WindowConfig

Source§

impl Debug for WindowConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Default for WindowConfig

Source§

fn default() -> WindowConfig

Returns the “default value” for a type. Read more
Source§

impl PartialEq for WindowConfig

Source§

fn eq(&self, other: &WindowConfig) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for WindowConfig

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert 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>

Convert 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)

Convert &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)

Convert &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> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send> ⓘ

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<S> FromSample<S> for S

Source§

fn from_sample_(s: S) -> S

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<F, T> IntoSample<T> for F
where T: FromSample<F>,

Source§

fn into_sample(self) -> T

Source§

impl<T> NoneValue for T
where T: Default,

Source§

type NoneType = T

Source§

fn null_value() -> T

The none-equivalent value.
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> ToSample<U> for T
where U: FromSample<T>,

Source§

fn to_sample_(self) -> U

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more