rat_widget::popup

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 does widget can calculate the placement of a popup widget using the placement, offset and the outer boundary.

It provides the widget area as widget_area. It’s up to the user to render the actual content for the popup.

§Event handling

The widget will detect any suspicious mouse activity outside its bounds and returns PopupOutcome::Hide if it finds such.

The widget doesn’t change its active/visible state by itself, it’s up to the caller to do this.

See See the examples some variants.

Fields§

§style: Style§constraint: Cell<PopupConstraint>§offset: (i16, i16)§boundary_area: Option<Rect>§block: Option<Block<'a>>§h_scroll: Option<Scroll<'a>>§v_scroll: Option<Scroll<'a>>§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 of the popup widget. See placement for the options.

Source

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

Placement of the popup widget. See placement for the options.

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 resulting widget.

This will be used to ensure that the widget is fully visible, after calculation its position using the other parameters.

If not set it will use Buffer::area for this.

Source

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

Set styles

Source

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

Base style for the popup.

Source

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

Block

Source

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

Block

Source

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

Horizontal scroll

Source

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

Horizontal scroll

Source

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

Vertical scroll

Source

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

Vertical scroll

Source

pub fn get_block_size(&self) -> Size

Get the padding the block imposes as Size.

Source

pub fn get_block_padding(&self) -> Padding

Get the padding the block imposes as Padding.

Source

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

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 copy 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, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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.