Skip to main content

WindowOpened

Struct WindowOpened 

Source
pub struct WindowOpened(/* private fields */);
Expand description

Hookable: Triggers when a new window is opened.

§Arguments

One of the main reasons to use this hook is to push new Widgets to a Window. That is, you can push outer Widgets or inner Widgets, just like with Handles.

Here’s how that works: Windows are divided into two main regions, the inner “Buffer region”, and the outer “master region”. This means that, on every Window, you’ll have a collection of Buffers in the middle, with their satellite Widgets, and various Widgets on the outer rims of the Window, not necessarily associated with any single Buffer.

As an example, this is how the default layout of Duat is layed out:

╭┄┄┬┄┄┄┄┄┄┄┄┬┄┄┬┄┄┄┄┄┄┄┄┬───────╮
┊  │        │  │        ┊       │
┊LN│        │LN│        ┊       │
┊  │ Buffer │  │ Buffer ┊       │
┊VR│        │VR│        ┊LogBook│
┊  │        │  │        ┊       │
├┄┄┴┄┄┄┄┄┄┄┄┴┄┄┴┄┄┄┄┄┄┄┄┤       │
│     FooterWidgets     │       │
╰───────────────────────┴───────╯

In this configuration, you can see the delineation between the “Buffer region” (surrounded by dotted lines) and the “master region”, where:

  • For each Buffer, we are adding a LineNumbers (LN) and a VertRule (VR) Widgets. Each of these is related to a specific Buffer, and if that Buffer moves around, they will follow.

  • On the outer edges, we have a FooterWidgets, which includes a StatusLine, PromptLine and Notifications, as well as a LogBook on the side, which is hidden by default. These Widgets are not related to any Buffer, and will not move around or be removed, unless directly.

So the distinction here is that, if you call Window::push_inner, you will be pushing Widgets around the “Buffer region”, but not within it. If you want to push to specific Buffers, you should look at Handle::push_inner_widget and Handle::push_outer_widget.

On the other hand, by calling Window::push_outer, you will be pushing Widgets around the “master region”, so they will go on the edges of the screen.

Trait Implementations§

Source§

impl Hookable for WindowOpened

Source§

type Input<'h> = &'h mut Window

The arguments that are passed to each hook.
Source§

fn get_input<'h>(&'h mut self, _: &mut Pass) -> Self::Input<'h>

How to get the arguments from the Hookable. Read more

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<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.