PopupCore

Struct PopupCore 

Source
pub struct PopupCore {
    pub constraint: Cell<PopupConstraint>,
    pub offset: (i16, i16),
    pub boundary_area: Option<Rect>,
    pub non_exhaustive: NonExhaustive,
}
Expand description

Provides the core for popup widgets.

This widget can calculate the placement of a popup widget using placement, offset and the outer boundary.

It provides the widget area as area.

After rendering the PopupCore the main widget can render it’s content in the calculated PopupCoreState::area.

§Event handling

Will detect any mouse-clicks outside its area and return PopupOutcome::Hide. Actually showing/hiding the popup is the job of the main widget.

See See the examples some variants.

Fields§

§constraint: Cell<PopupConstraint>

Constraints for the popup.

§offset: (i16, i16)

Extra offset after calculating the position with constraint.

§boundary_area: Option<Rect>

Outer boundary for the popup-placement. If not set uses the buffer-area.

§non_exhaustive: NonExhaustive

Implementations§

Source§

impl PopupCore

Source

pub fn new() -> PopupCore

New.

Source

pub fn ref_constraint(&self, constraint: PopupConstraint) -> &PopupCore

Placement constraints for the popup widget.

Source

pub fn constraint(self, constraint: PopupConstraint) -> PopupCore

Placement constraints for the popup widget.

Source

pub fn offset(self, offset: (i16, i16)) -> PopupCore

Adds an extra offset to the widget area.

This can be used to

  • place the widget under the mouse cursor.
  • align the widget not by the outer bounds but by the text content.
Source

pub fn x_offset(self, offset: i16) -> PopupCore

Sets only the x offset. See offset

Source

pub fn y_offset(self, offset: i16) -> PopupCore

Sets only the y offset. See offset

Source

pub fn boundary(self, boundary: Rect) -> PopupCore

Sets outer boundaries for the popup widget.

This will be used to ensure that the popup widget is fully visible. First it tries to move the popup in a way that is fully inside this area. If this is not enought the popup area will be clipped.

If this is not set, Buffer::area will be used instead.

Source

pub fn styles(self, styles: PopupStyle) -> PopupCore

Set styles

Source

pub fn layout(&self, area: Rect, buf: &Buffer) -> Rect

Run the layout to calculate the popup area before rendering.

Trait Implementations§

Source§

impl Clone for PopupCore

Source§

fn clone(&self) -> PopupCore

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for PopupCore

Source§

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

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

impl Default for PopupCore

Source§

fn default() -> PopupCore

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

impl StatefulWidget for &PopupCore

Source§

type State = PopupCoreState

State associated with the stateful widget. Read more
Source§

fn render( self, area: Rect, buf: &mut Buffer, state: &mut <&PopupCore as StatefulWidget>::State, )

Draws the current state of the widget in the given buffer. That is the only method required to implement a custom stateful widget.
Source§

impl StatefulWidget for PopupCore

Source§

type State = PopupCoreState

State associated with the stateful widget. Read more
Source§

fn render( self, area: Rect, buf: &mut Buffer, state: &mut <PopupCore as StatefulWidget>::State, )

Draws the current state of the widget in the given buffer. That is the only method required to implement a custom stateful widget.

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> 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> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

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

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
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> 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.