[gtk/wip/chergert/quartz4u] macos: implement get_workarea for GdkMacosMonitor
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip/chergert/quartz4u] macos: implement get_workarea for GdkMacosMonitor
- Date: Tue, 5 May 2020 18:40:20 +0000 (UTC)
commit 3cbe2e1cfab201311c410c417f8c2bfdcf08e881
Author: Christian Hergert <chergert redhat com>
Date: Tue May 5 11:06:44 2020 -0700
macos: implement get_workarea for GdkMacosMonitor
gdk/macos/gdkmacosmonitor.c | 48 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 48 insertions(+)
---
diff --git a/gdk/macos/gdkmacosmonitor.c b/gdk/macos/gdkmacosmonitor.c
index 8362e96913..755f16d831 100644
--- a/gdk/macos/gdkmacosmonitor.c
+++ b/gdk/macos/gdkmacosmonitor.c
@@ -21,7 +21,9 @@
#include <gdk/gdk.h>
+#include "gdkmacosdisplay-private.h"
#include "gdkmacosmonitor-private.h"
+#include "gdkmacosutils-private.h"
struct _GdkMacosMonitor
{
@@ -36,9 +38,55 @@ struct _GdkMacosMonitorClass
G_DEFINE_TYPE (GdkMacosMonitor, gdk_macos_monitor, GDK_TYPE_MONITOR)
+static void
+gdk_macos_monitor_get_workarea (GdkMonitor *monitor,
+ GdkRectangle *geometry)
+{
+ GDK_BEGIN_MACOS_ALLOC_POOL;
+
+ GdkMacosMonitor *self = (GdkMacosMonitor *)monitor;
+
+ g_assert (GDK_IS_MACOS_MONITOR (self));
+ g_assert (geometry != NULL);
+
+ *geometry = monitor->geometry;
+
+ for (id obj in [NSScreen screens])
+ {
+ CGDirectDisplayID screen_id;
+
+ screen_id = [[[obj deviceDescription] objectForKey:@"NSScreenNumber"] unsignedIntValue];
+
+ if (screen_id == self->screen_id)
+ {
+ NSScreen *screen = (NSScreen *)obj;
+ NSRect visibleFrame = [screen visibleFrame];
+ int x;
+ int y;
+
+ _gdk_macos_display_from_display_coords (GDK_MACOS_DISPLAY (monitor->display),
+ visibleFrame.origin.x,
+ visibleFrame.origin.y,
+ &x, &y);
+
+ geometry->x = x;
+ geometry->y = y;
+ geometry->width = visibleFrame.size.width;
+ geometry->height = visibleFrame.size.height;
+
+ break;
+ }
+ }
+
+ GDK_END_MACOS_ALLOC_POOL;
+}
+
static void
gdk_macos_monitor_class_init (GdkMacosMonitorClass *klass)
{
+ GdkMonitorClass *monitor_class = GDK_MONITOR_CLASS (klass);
+
+ monitor_class->get_workarea = gdk_macos_monitor_get_workarea;
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]