Class PopupLayout
- All Implemented Interfaces:
Proxy
GdkPopupLayout
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.
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.
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
Popup.getPositionX()
, Popup.getPositionY()
,
Popup.getRectAnchor()
and Popup.getSurfaceAnchor()
after the popup has been presented. This can be used to adjust the rendering.
For example, GtkPopover 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.
-
Constructor Summary
ConstructorDescriptionPopupLayout
(MemorySegment address) Create a PopupLayout proxy instance for the provided memory address.PopupLayout
(Rectangle anchorRect, Gravity rectAnchor, Gravity surfaceAnchor) Create a popup layout description. -
Method Summary
Modifier and TypeMethodDescriptioncopy()
Makes a copy of this PopupLayout.boolean
equal
(PopupLayout other) Check whether this PopupLayout andother
has identical layout properties.Get theGdkAnchorHints
.Get the anchor rectangle.void
Retrieves the offset for the anchor rectangle.Returns the anchor position on the anchor rectangle.void
Obtains the shadow widths of this layout.Returns the anchor position on the popup surface.static Type
getType()
Get the GType of the PopupLayout classref()
Increases the reference count ofvalue
.void
setAnchorHints
(Set<AnchorHints> anchorHints) Set new anchor hints.void
setAnchorHints
(AnchorHints... anchorHints) Set new anchor hints.void
setAnchorRect
(Rectangle anchorRect) Set the anchor rectangle.void
setOffset
(int dx, int dy) Offset the position of the anchor rectangle with the given delta.void
setRectAnchor
(Gravity anchor) Set the anchor on the anchor rectangle.void
setShadowWidth
(int left, int right, int top, int bottom) Sets the shadow width of the popup.void
setSurfaceAnchor
(Gravity anchor) Set the anchor on the popup surface.void
unref()
Decreases the reference count ofvalue
.Methods inherited from class io.github.jwharm.javagi.base.ProxyInstance
equals, handle, hashCode
-
Constructor Details
-
PopupLayout
Create a PopupLayout proxy instance for the provided memory address.- Parameters:
address
- the memory address of the native object
-
PopupLayout
Create a popup layout description.Used together with
Popup.present(int, int, org.gnome.gdk.PopupLayout)
to describe how a popup surface should be placed and behave on-screen.anchorRect
is relative to the top-left corner of the surface's parent.rectAnchor
andsurfaceAnchor
determine anchor points onanchorRect
and surface to pin together.The position of
anchorRect
's anchor point can optionally be offset usingsetOffset(int, int)
, which is equivalent to offsetting the position of surface.- Parameters:
anchorRect
- the anchorGdkRectangle
to alignsurface
withrectAnchor
- the point onanchorRect
to align withsurface
's anchor pointsurfaceAnchor
- the point onsurface
to align withrect
's anchor point
-
-
Method Details
-
getType
-
copy
-
equal
Check whether this PopupLayout andother
has identical layout properties.- Parameters:
other
- anotherGdkPopupLayout
- Returns:
true
if this PopupLayout andother
have identical layout properties, otherwisefalse
.
-
getAnchorHints
-
getAnchorRect
-
getOffset
-
getRectAnchor
Returns the anchor position on the anchor rectangle.- Returns:
- the anchor on the anchor rectangle.
-
getShadowWidth
public void getShadowWidth(Out<Integer> left, Out<Integer> right, Out<Integer> top, Out<Integer> bottom) Obtains the shadow widths of this layout.- Parameters:
left
- return location for the left shadow widthright
- return location for the right shadow widthtop
- return location for the top shadow widthbottom
- return location for the bottom shadow width
-
getSurfaceAnchor
Returns the anchor position on the popup surface.- Returns:
- the anchor on the popup surface.
-
ref
-
setAnchorHints
Set new anchor hints.The set
anchorHints
determines howsurface
will be moved if the anchor points cause it to move off-screen. For example,AnchorHints.FLIP_X
will replaceGravity.NORTH_WEST
withGravity.NORTH_EAST
and vice versa ifsurface
extends beyond the left or right edges of the monitor.- Parameters:
anchorHints
- the newGdkAnchorHints
-
setAnchorHints
Set new anchor hints.The set
anchorHints
determines howsurface
will be moved if the anchor points cause it to move off-screen. For example,AnchorHints.FLIP_X
will replaceGravity.NORTH_WEST
withGravity.NORTH_EAST
and vice versa ifsurface
extends beyond the left or right edges of the monitor.- Parameters:
anchorHints
- the newGdkAnchorHints
-
setAnchorRect
Set the anchor rectangle.- Parameters:
anchorRect
- the new anchor rectangle
-
setOffset
public void setOffset(int dx, int dy) Offset the position of the anchor rectangle with the given delta.- Parameters:
dx
- x delta to offset the anchor rectangle withdy
- y delta to offset the anchor rectangle with
-
setRectAnchor
Set the anchor on the anchor rectangle.- Parameters:
anchor
- the new rect anchor
-
setShadowWidth
public void setShadowWidth(int left, int right, int top, int bottom) 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.
- Parameters:
left
- width of the left part of the shadowright
- width of the right part of the shadowtop
- height of the top part of the shadowbottom
- height of the bottom part of the shadow
-
setSurfaceAnchor
Set the anchor on the popup surface.- Parameters:
anchor
- the new popup surface anchor
-
unref
public void unref()Decreases the reference count ofvalue
.
-