PopupCore

Struct PopupCore 

Source
pub struct PopupCore<'a> {
    pub style: Style,
    pub constraint: Cell<PopupConstraint>,
    pub offset: (i16, i16),
    pub boundary_area: Option<Rect>,
    pub block: Option<Block<'a>>,
    pub h_scroll: Option<Scroll<'a>>,
    pub v_scroll: Option<Scroll<'a>>,
    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§

§style: Style
👎Deprecated since 1.2.0: job for the main widget
§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.

§block: Option<Block<'a>>
👎Deprecated since 1.2.0: job for the main widget
§h_scroll: Option<Scroll<'a>>
👎Deprecated since 1.2.0: job for the main widget
§v_scroll: Option<Scroll<'a>>
👎Deprecated since 1.2.0: job for the main widget
§non_exhaustive: NonExhaustive

Implementations§

Source§

impl<'a> PopupCore<'a>

Source

pub fn new() -> PopupCore<'a>

New.

Source

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

Placement constraints for the popup widget.

Source

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

Placement constraints for the popup widget.

Source

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

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<'a>

Sets only the x offset. See offset

Source

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

Sets only the y offset. See offset

Source

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

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<'a>

Set styles

Source

pub fn style(self, style: Style) -> PopupCore<'a>

👎Deprecated since 1.2.0: job for the main widget

Base style for the popup.

Source

pub fn block(self, block: Block<'a>) -> PopupCore<'a>

👎Deprecated since 1.2.0: job for the main widget

Block

Source

pub fn block_opt(self, block: Option<Block<'a>>) -> PopupCore<'a>

👎Deprecated since 1.2.0: job for the main widget

Block

Source

pub fn h_scroll(self, h_scroll: Scroll<'a>) -> PopupCore<'a>

👎Deprecated since 1.2.0: job for the main widget

Horizontal scroll

Source

pub fn h_scroll_opt(self, h_scroll: Option<Scroll<'a>>) -> PopupCore<'a>

👎Deprecated since 1.2.0: job for the main widget

Horizontal scroll

Source

pub fn v_scroll(self, v_scroll: Scroll<'a>) -> PopupCore<'a>

👎Deprecated since 1.2.0: job for the main widget

Vertical scroll

Source

pub fn v_scroll_opt(self, v_scroll: Option<Scroll<'a>>) -> PopupCore<'a>

👎Deprecated since 1.2.0: job for the main widget

Vertical scroll

Source

pub fn get_block_size(&self) -> Size

👎Deprecated since 1.2.0: job for the main widget

Get the padding the block imposes as Size.

Source

pub fn get_block_padding(&self) -> Padding

👎Deprecated since 1.2.0: job for the main widget

Get the padding the block imposes as Padding.

Source

pub fn inner(&self, area: Rect) -> Rect

👎Deprecated since 1.2.0: job for the main widget

Calculate the inner area.

Source

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

Run the layout to calculate the popup area before rendering.

Trait Implementations§

Source§

impl<'a> Clone for PopupCore<'a>

Source§

fn clone(&self) -> PopupCore<'a>

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<'a> Debug for PopupCore<'a>

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<'a> StatefulWidget for &'a PopupCore<'a>

Source§

type State = PopupCoreState

State associated with the stateful widget. Read more
Source§

fn render( self, area: Rect, buf: &mut Buffer, state: &mut <&'a PopupCore<'a> 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§

§

impl<'a> !Freeze for PopupCore<'a>

§

impl<'a> !RefUnwindSafe for PopupCore<'a>

§

impl<'a> Send for PopupCore<'a>

§

impl<'a> !Sync for PopupCore<'a>

§

impl<'a> Unpin for PopupCore<'a>

§

impl<'a> UnwindSafe for PopupCore<'a>

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.