| 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 |