[gtk+/wip/attachment-rectangle: 1/10] gdk: add gdk_window_set_attachment_rectangle ()
- From: William Hua <williamhua src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/attachment-rectangle: 1/10] gdk: add gdk_window_set_attachment_rectangle ()
- Date: Sat, 25 Jul 2015 03:50:51 +0000 (UTC)
commit 76b38364c564243d45f905fffcc1b5c7d3f0f9f5
Author: William Hua <william hua canonical com>
Date: Thu Jul 16 10:21:19 2015 -0400
gdk: add gdk_window_set_attachment_rectangle ()
An attachment rectangle is a rectangle that a window needs
to be aligned with.
The window manager might want this information to do more
active positioning of a window. For example, menus and
tooltips might have to be re-positioned if they spill over
the edges of the screen.
gdk/gdkwindow.c | 30 ++++++++++++++++++++++++++++++
gdk/gdkwindow.h | 30 ++++++++++++++++++++++++++++++
gdk/gdkwindowimpl.h | 3 +++
3 files changed, 63 insertions(+), 0 deletions(-)
---
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
index af3d17a..b119fa3 100644
--- a/gdk/gdkwindow.c
+++ b/gdk/gdkwindow.c
@@ -11335,3 +11335,33 @@ gdk_window_show_window_menu (GdkWindow *window,
else
return FALSE;
}
+
+/**
+ * gdk_window_set_attachment_rectangle:
+ * @window: a #GdkWindow
+ * @edge: the preferred edge to attach to
+ * @rect: (allow-none): a #GdkRectangle or %NULL
+ *
+ * An attachment rectangle is a rectangle that a window needs to be
+ * aligned with.
+ *
+ * The window manager might want this information to do more active
+ * positioning of a window. For example, menus and tooltips might
+ * have to be re-positioned if they spill over the edges of the
+ * screen.
+ */
+void
+gdk_window_set_attachment_rectangle (GdkWindow *window,
+ GdkAttachmentEdge edge,
+ const GdkRectangle *rect)
+{
+ GdkWindowImplClass *impl_class;
+
+ g_return_if_fail (GDK_IS_WINDOW (window));
+ g_return_if_fail (!GDK_WINDOW_DESTROYED (window));
+
+ impl_class = GDK_WINDOW_IMPL_GET_CLASS (window->impl);
+
+ if (impl_class->set_attachment_rectangle)
+ impl_class->set_attachment_rectangle (window, edge, rect);
+}
diff --git a/gdk/gdkwindow.h b/gdk/gdkwindow.h
index 98c59b8..dd41783 100644
--- a/gdk/gdkwindow.h
+++ b/gdk/gdkwindow.h
@@ -320,6 +320,31 @@ typedef enum
} GdkWindowEdge;
/**
+ * GdkAttachmentEdge:
+ * @GDK_ATTACHMENT_EDGE_NONE: no edge.
+ * @GDK_ATTACHMENT_EDGE_TOP: the top edge.
+ * @GDK_ATTACHMENT_EDGE_BOTTOM: the bottom edge.
+ * @GDK_ATTACHMENT_EDGE_LEFT: the left edge.
+ * @GDK_ATTACHMENT_EDGE_RIGHT: the right edge.
+ * @GDK_ATTACHMENT_EDGE_HORIZONTAL: the top or bottom edge.
+ * @GDK_ATTACHMENT_EDGE_VERTICAL: the left or right edge.
+ * @GDK_ATTACHMENT_EDGE_ANY: any edge.
+ *
+ * Determines an edge of an attachment rectangle.
+ */
+typedef enum
+{
+ GDK_ATTACHMENT_EDGE_NONE = 0,
+ GDK_ATTACHMENT_EDGE_TOP = 1 << 0,
+ GDK_ATTACHMENT_EDGE_BOTTOM = 1 << 1,
+ GDK_ATTACHMENT_EDGE_LEFT = 1 << 2,
+ GDK_ATTACHMENT_EDGE_RIGHT = 1 << 3,
+ GDK_ATTACHMENT_EDGE_HORIZONTAL = GDK_ATTACHMENT_EDGE_TOP | GDK_ATTACHMENT_EDGE_BOTTOM,
+ GDK_ATTACHMENT_EDGE_VERTICAL = GDK_ATTACHMENT_EDGE_LEFT | GDK_ATTACHMENT_EDGE_RIGHT,
+ GDK_ATTACHMENT_EDGE_ANY = GDK_ATTACHMENT_EDGE_HORIZONTAL | GDK_ATTACHMENT_EDGE_VERTICAL
+} GdkAttachmentEdge;
+
+/**
* GdkFullscreenMode:
* @GDK_FULLSCREEN_ON_CURRENT_MONITOR: Fullscreen on current monitor only.
* @GDK_FULLSCREEN_ON_ALL_MONITORS: Span across all monitors when fullscreen.
@@ -1121,6 +1146,11 @@ GDK_AVAILABLE_IN_3_16
GdkGLContext * gdk_window_create_gl_context (GdkWindow *window,
GError **error);
+GDK_AVAILABLE_IN_3_18
+void gdk_window_set_attachment_rectangle (GdkWindow *window,
+ GdkAttachmentEdge edge,
+ const GdkRectangle *rect);
+
G_END_DECLS
#endif /* __GDK_WINDOW_H__ */
diff --git a/gdk/gdkwindowimpl.h b/gdk/gdkwindowimpl.h
index 73a819a..5205e7c 100644
--- a/gdk/gdkwindowimpl.h
+++ b/gdk/gdkwindowimpl.h
@@ -300,6 +300,9 @@ struct _GdkWindowImplClass
GError **error);
void (*invalidate_for_new_frame)(GdkWindow *window,
cairo_region_t *update_area);
+ void (*set_attachment_rectangle) (GdkWindow *window,
+ GdkAttachmentEdge edge,
+ const GdkRectangle *rect);
};
/* Interface Functions */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]