[gtk/wip/chergert/quartz4u: 98/120] macos: track monitor changes and update surface positions
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip/chergert/quartz4u: 98/120] macos: track monitor changes and update surface positions
- Date: Tue, 16 Jun 2020 19:39:10 +0000 (UTC)
commit 273494376a6e3a4248975f1ab03b254e6a0b8278
Author: Christian Hergert <chergert redhat com>
Date: Thu May 21 11:02:25 2020 -0700
macos: track monitor changes and update surface positions
This fixes moving windows between monitors when they change
as well as ensuring we have the right x,y coordinate for monitor
discovery and edge snapping.
gdk/macos/gdkmacosdisplay.c | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
---
diff --git a/gdk/macos/gdkmacosdisplay.c b/gdk/macos/gdkmacosdisplay.c
index 73802dc1ce..65c2fa1967 100644
--- a/gdk/macos/gdkmacosdisplay.c
+++ b/gdk/macos/gdkmacosdisplay.c
@@ -191,6 +191,22 @@ gdk_macos_display_monitors_changed_cb (CFNotificationCenterRef center,
g_assert (GDK_IS_MACOS_DISPLAY (self));
_gdk_macos_display_reload_monitors (self);
+
+ /* Now we need to update all our surface positions since they
+ * probably just changed origins. We ignore the popup surfaces
+ * since we can rely on the toplevel surfaces to handle that.
+ */
+ for (const GList *iter = _gdk_macos_display_get_surfaces (self);
+ iter != NULL;
+ iter = iter->next)
+ {
+ GdkMacosSurface *surface = iter->data;
+
+ g_assert (GDK_IS_MACOS_SURFACE (surface));
+
+ if (GDK_IS_TOPLEVEL (surface))
+ _gdk_macos_surface_update_position (surface);
+ }
}
static void
@@ -670,7 +686,7 @@ _gdk_macos_display_open (const gchar *display_name)
gdk_macos_display_load_display_link (self);
_gdk_macos_display_reload_monitors (self);
- CFNotificationCenterAddObserver (CFNotificationCenterGetDistributedCenter (),
+ CFNotificationCenterAddObserver (CFNotificationCenterGetLocalCenter (),
self,
gdk_macos_display_monitors_changed_cb,
CFSTR ("NSApplicationDidChangeScreenParametersNotification"),
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]