Struct gdk4::PopupLayout

source ·
#[repr(transparent)]
pub struct PopupLayout { /* private fields */ }
Expand description

The PopupLayout struct contains information that is necessary position a Popup relative to its parent.

The positioning requires a negotiation with the windowing system, since it depends on external constraints, such as the position of the parent surface, and the screen dimensions.

The basic ingredients are a rectangle on the parent surface, and the anchor on both that rectangle and the popup. The anchors specify a side or corner to place next to each other.

Popup anchors

For cases where placing the anchors next to each other would make the popup extend offscreen, the layout includes some hints for how to resolve this problem. The hints may suggest to flip the anchor position to the other side, or to ‘slide’ the popup along a side, or to resize it.

Flipping popups

Sliding popups

These hints may be combined.

Ultimatively, it is up to the windowing system to determine the position and size of the popup. You can learn about the result by calling PopupExt::position_x(), PopupExt::position_y(), PopupExt::rect_anchor() and PopupExt::surface_anchor() after the popup has been presented. This can be used to adjust the rendering. For example, Gtk::Popover changes its arrow position accordingly. But you have to be careful avoid changing the size of the popover, or it has to be presented again.

Implementations§

Return the inner pointer to the underlying C value.

Create a popup layout description.

Used together with PopupExt::present() to describe how a popup surface should be placed and behave on-screen.

@anchor_rect is relative to the top-left corner of the surface’s parent. @rect_anchor and @surface_anchor determine anchor points on @anchor_rect and surface to pin together.

The position of @anchor_rect’s anchor point can optionally be offset using set_offset(), which is equivalent to offsetting the position of surface.

anchor_rect

the anchor Rectangle to align @surface with

rect_anchor

the point on @anchor_rect to align with @surface’s anchor point

surface_anchor

the point on @surface to align with @rect’s anchor point

Returns

newly created instance of PopupLayout

Get the anchor rectangle.

Returns

The anchor rectangle

Returns the anchor position on the anchor rectangle.

Returns

the anchor on the anchor rectangle.

Available on crate feature v4_2 only.

Obtains the shadow widths of this layout.

Returns
left

return location for the left shadow width

return location for the right shadow width

top

return location for the top shadow width

bottom

return location for the bottom shadow width

Returns the anchor position on the popup surface.

Returns

the anchor on the popup surface.

Set new anchor hints.

The set @anchor_hints determines how @surface will be moved if the anchor points cause it to move off-screen. For example, AnchorHints::FLIP_X will replace Gravity::NorthWest with Gravity::NorthEast and vice versa if @surface extends beyond the left or right edges of the monitor.

anchor_hints

the new AnchorHints

Set the anchor rectangle.

anchor_rect

the new anchor rectangle

Offset the position of the anchor rectangle with the given delta.

dx

x delta to offset the anchor rectangle with

dy

y delta to offset the anchor rectangle with

Set the anchor on the anchor rectangle.

anchor

the new rect anchor

Available on crate feature v4_2 only.

Sets the shadow width of the popup.

The shadow width corresponds to the part of the computed surface size that would consist of the shadow margin surrounding the window, would there be any.

left

width of the left part of the shadow

right

width of the right part of the shadow

top

height of the top part of the shadow

bottom

height of the bottom part of the shadow

Set the anchor on the popup surface.

anchor

the new popup surface anchor

Retrieves the offset for the anchor rectangle.

Returns
dx

return location for the delta X coordinate

dy

return location for the delta Y coordinate

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Feeds this value into the given Hasher. Read more
Feeds a slice of this type into the given Hasher. Read more
This method returns an Ordering between self and other. Read more
Compares and returns the maximum of two values. Read more
Compares and returns the minimum of two values. Read more
Restrict a value to a certain interval. Read more
This method tests for self and other values to be equal, and is used by ==.
This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
This method returns an ordering between self and other values if one exists. Read more
This method tests less than (for self and other) and is used by the < operator. Read more
This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
This method tests greater than (for self and other) and is used by the > operator. Read more
This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Returns the type identifier of Self.

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Ensures that the type has been registered with the type system.
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.