Top | ![]() |
![]() |
![]() |
![]() |
Popups are positioned relative to their parent surface. The GdkPopupLayout struct contains information that is necessary to do so.
GdkPopupLayout * gdk_popup_layout_new (const GdkRectangle *anchor_rect
,GdkGravity rect_anchor
,GdkGravity surface_anchor
);
Create a popup layout description. Used together with gdk_popup_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
gdk_popup_layout_set_offset()
, which is equivalent to offsetting the
position of surface.
[constructor]
anchor_rect |
the anchor GdkRectangle to align |
[not nullable] |
rect_anchor |
the point on |
|
surface_anchor |
the point on |
GdkPopupLayout *
gdk_popup_layout_ref (GdkPopupLayout *layout
);
Increases the reference count of value
.
void
gdk_popup_layout_unref (GdkPopupLayout *layout
);
Decreases the reference count of value
.
GdkPopupLayout *
gdk_popup_layout_copy (GdkPopupLayout *layout
);
Create a new GdkPopupLayout and copy the contents of layout
into it.
gboolean gdk_popup_layout_equal (GdkPopupLayout *layout
,GdkPopupLayout *other
);
Check whether layout
and other
has identical layout properties.
void gdk_popup_layout_set_anchor_rect (GdkPopupLayout *layout
,const GdkRectangle *anchor_rect
);
Set the anchor rectangle.
const GdkRectangle *
gdk_popup_layout_get_anchor_rect (GdkPopupLayout *layout
);
Get the anchor rectangle.
void gdk_popup_layout_set_rect_anchor (GdkPopupLayout *layout
,GdkGravity anchor
);
Set the anchor on the anchor rectangle.
GdkGravity
gdk_popup_layout_get_rect_anchor (GdkPopupLayout *layout
);
Returns the anchor position on the anchor rectangle.
void gdk_popup_layout_set_surface_anchor (GdkPopupLayout *layout
,GdkGravity anchor
);
Set the anchor on the popup surface.
GdkGravity
gdk_popup_layout_get_surface_anchor (GdkPopupLayout *layout
);
Returns the anchor position on the popup surface.
void gdk_popup_layout_set_anchor_hints (GdkPopupLayout *layout
,GdkAnchorHints anchor_hints
);
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, GDK_ANCHOR_FLIP_X
will
replace GDK_GRAVITY_NORTH_WEST
with GDK_GRAVITY_NORTH_EAST
and vice versa
if surface
extends beyond the left or right edges of the monitor.
GdkAnchorHints
gdk_popup_layout_get_anchor_hints (GdkPopupLayout *layout
);
Get the GdkAnchorHints.
void gdk_popup_layout_set_offset (GdkPopupLayout *layout
,int dx
,int dy
);
Offset the position of the anchor rectangle with the given delta.
void gdk_popup_layout_get_offset (GdkPopupLayout *layout
,int *dx
,int *dy
);
Get the delta the anchor rectangle is offset with
typedef struct _GdkPopupLayout GdkPopupLayout;
Struct containing information for gdk_popup_present()
Positioning hints for aligning a surface relative to a rectangle.
These hints determine how the surface should be positioned in the case that the surface would fall off-screen if placed in its ideal position.
For example, GDK_ANCHOR_FLIP_X
will replace GDK_GRAVITY_NORTH_WEST
with
GDK_GRAVITY_NORTH_EAST
and vice versa if the surface extends beyond the left
or right edges of the monitor.
If GDK_ANCHOR_SLIDE_X
is set, the surface can be shifted horizontally to fit
on-screen. If GDK_ANCHOR_RESIZE_X
is set, the surface can be shrunken
horizontally to fit.
In general, when multiple flags are set, flipping should take precedence over sliding, which should take precedence over resizing.
allow flipping anchors horizontally |
||
allow flipping anchors vertically |
||
allow sliding surface horizontally |
||
allow sliding surface vertically |
||
allow resizing surface horizontally |
||
allow resizing surface vertically |
||
allow flipping anchors on both axes |
||
allow sliding surface on both axes |
||
allow resizing surface on both axes |