pub enum Orientation {
VerLeftAbove,
VerCenterAbove,
VerRightAbove,
VerLeftBelow,
VerCenterBelow,
VerRightBelow,
HorTopLeft,
HorCenterLeft,
HorBottomLeft,
HorTopRight,
HorCenterRight,
HorBottomRight,
}Expand description
Where to place a spawned Widget.
The Orientation has 3 components of positioning, which follow
priorities in order to relocate the Widget in case there isn’t
enough space. Respectively, they are the following:
- An axis to align the
Widget. - How to align said
Widgeton said axis. - Which side of the parent should be prioritized.
For example, Orientation::HorTopLeft means: Spawn this
Widget horizontally, trying to align its top edge with the top
edge of the parent, prioritizing the left side. Visually speaking,
it will try to spawn a Widget like this:
╭─────────┬────────╮
│ │ Parent │
│ Spawned ├────────╯
│ │
╰─────────╯Notice that their tops are aligned, the edges connect on the horizontal axis, and it is on the left side. However, if there is not enough space, (e.g. the parent is very close to the bottom left edge of the screen) it might try to spawn it like this:
╭─────────╮ ╭─────────╮
│ ├────────╮ │ │
│ Spawned │ Parent │, or even like ╭────────┤ Spawned │
│ ├────────╯ │ Parent │ │
╰─────────╯ ╰────────┴─────────╯This prioritization gives more flexibility to the spawning of
Widgets, which usually follows patterns of where to spawn and
how to place things, mostly to prevent obscuring information. The
most notable example of this are completion lists. For obvious
reasons, those should only be placed above or below (Ver),
alignment should try to be on the left edge (VerLeft), and
ideally below the cursor (Orientation::VerLeftBelow).
Likewise, these completion lists are sometimes accompanied by
description panels, which should ideally follow a
HorCenterRight or HorBottomRight orientation.
Variants§
VerLeftAbove
Place the Widget vertically, prioritizing the left edge
above.
VerCenterAbove
Place the Widget vertically, prioritizing centering above.
VerRightAbove
Place the Widget vertically, prioritizing the right edge
above.
VerLeftBelow
Place the Widget vertically, prioritizing the left edge
below.
VerCenterBelow
Place the Widget vertically, prioritizing centering below.
VerRightBelow
Place the Widget vertically, prioritizing the right edge
below.
HorTopLeft
Place the Widget horizontally, prioritizing the top edge
on the left.
HorCenterLeft
Place the Widget horizontally, prioritizing centering
on the left.
HorBottomLeft
Place the Widget horizontally, prioritizing the right edge
on the left.
HorTopRight
Place the Widget horizontally, prioritizing the top edge
on the right.
HorCenterRight
Place the Widget horizontally, prioritizing centering
on the right.
HorBottomRight
Place the Widget horizontally, prioritizing the bottom
edge on the right.
Implementations§
Source§impl Orientation
impl Orientation
Trait Implementations§
Source§impl Clone for Orientation
impl Clone for Orientation
Source§fn clone(&self) -> Orientation
fn clone(&self) -> Orientation
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more