[mutter] window: Add get_all_monitors
- From: Adel Gadllah <agadllah src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] window: Add get_all_monitors
- Date: Mon, 25 Feb 2013 21:05:53 +0000 (UTC)
commit 2a773e0c85c73b6b38d8f192d0c029d6923de2aa
Author: Adel Gadllah <adel gadllah gmail com>
Date: Sat Feb 23 21:56:17 2013 +0100
window: Add get_all_monitors
Add a method that returns the indices of the monitors a window
is on.
https://bugzilla.gnome.org/show_bug.cgi?id=646861
src/core/window.c | 36 ++++++++++++++++++++++++++++++++++++
src/meta/window.h | 1 +
2 files changed, 37 insertions(+), 0 deletions(-)
---
diff --git a/src/core/window.c b/src/core/window.c
index 210cf22..a9d4ec4 100644
--- a/src/core/window.c
+++ b/src/core/window.c
@@ -3648,6 +3648,42 @@ meta_window_is_fullscreen (MetaWindow *window)
}
/**
+ * meta_window_get_all_monitors:
+ * @window: The #MetaWindow
+ * @length: (out caller-allocates): gint holding the length, may be %NULL to
+ * ignore
+ *
+ * Returns: (array length=length) (element-type gint) (transfer container):
+ * List of the monitor indices the window is on.
+ */
+gint *
+meta_window_get_all_monitors (MetaWindow *window, gsize *length)
+{
+ GArray *monitors;
+ MetaRectangle window_rect;
+ int i;
+
+ monitors = g_array_new (FALSE, FALSE, sizeof (int));
+ meta_window_get_outer_rect (window, &window_rect);
+
+ for (i = 0; i < window->screen->n_monitor_infos; i++)
+ {
+ MetaRectangle *monitor_rect = &window->screen->monitor_infos[i].rect;
+
+ if (meta_rectangle_overlap (&window_rect, monitor_rect))
+ g_array_append_val (monitors, i);
+ }
+
+ if (length)
+ *length = monitors->len;
+
+ i = -1;
+ g_array_append_val (monitors, i);
+
+ return (gint*) g_array_free (monitors, FALSE);
+}
+
+/**
* meta_window_is_screen_sized:
*
* Return value: %TRUE if the window is occupies the
diff --git a/src/meta/window.h b/src/meta/window.h
index 25eae37..0c5fbb0 100644
--- a/src/meta/window.h
+++ b/src/meta/window.h
@@ -146,6 +146,7 @@ gboolean meta_window_is_monitor_sized (MetaWindow *window);
gboolean meta_window_is_on_primary_monitor (MetaWindow *window);
gboolean meta_window_requested_bypass_compositor (MetaWindow *window);
gboolean meta_window_requested_dont_bypass_compositor (MetaWindow *window);
+gint *meta_window_get_all_monitors (MetaWindow *window, gsize *length);
gboolean meta_window_is_mapped (MetaWindow *window);
gboolean meta_window_toplevel_is_mapped (MetaWindow *window);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]