[gtk/gtk-3-24: 1/2] macOS: Fix GdkScreen::monitors-changed



commit abaf682870dcd1956dafbb6e5428c573e4dc7b9a
Author: James Westman <flyingpimonster flyingpimonster net>
Date:   Sun Jul 14 17:28:34 2019 -0500

    macOS: Fix GdkScreen::monitors-changed
    
    This signal was not being emitted on macOS, a bug introduced in 941f3c38.
    `emit_monitors_changed` was never set to TRUE, so the signal was never
    emitted. `emit_monitors_changed` has now been removed, because its
    functionality was moved to GdkDisplay.
    
    In addition, kCGDisplayDesktopShapeChangedFlag was removed from the list of
    flags that indicate a new/reconfigured monitor, because monitor removals also
    include this flag, which caused removed monitors to not be removed from
    GdkDisplay.
    
    Fixes #2004.

 gdk/quartz/gdkdisplay-quartz.c | 4 ++--
 gdk/quartz/gdkscreen-quartz.c  | 7 +------
 2 files changed, 3 insertions(+), 8 deletions(-)
---
diff --git a/gdk/quartz/gdkdisplay-quartz.c b/gdk/quartz/gdkdisplay-quartz.c
index 800f6edae1..0cce0d0250 100644
--- a/gdk/quartz/gdkdisplay-quartz.c
+++ b/gdk/quartz/gdkdisplay-quartz.c
@@ -365,8 +365,8 @@ display_reconfiguration_callback (CGDirectDisplayID            cg_display,
       return;
 
   if (flags & (kCGDisplayMovedFlag | kCGDisplayAddFlag | kCGDisplayEnabledFlag |
-               kCGDisplaySetMainFlag | kCGDisplayDesktopShapeChangedFlag |
-               kCGDisplayMirrorFlag | kCGDisplayUnMirrorFlag))
+               kCGDisplaySetMainFlag | kCGDisplayMirrorFlag |
+               kCGDisplayUnMirrorFlag))
     {
       GdkQuartzMonitor *monitor = NULL;
       guint index;
diff --git a/gdk/quartz/gdkscreen-quartz.c b/gdk/quartz/gdkscreen-quartz.c
index ed2a30491a..848ad6a31f 100644
--- a/gdk/quartz/gdkscreen-quartz.c
+++ b/gdk/quartz/gdkscreen-quartz.c
@@ -90,7 +90,6 @@ gdk_quartz_screen_init (GdkQuartzScreen *quartz_screen)
   /* The first monitors-changed should have fired already. */
   _gdk_screen_set_resolution (screen, dpi);
   gdk_quartz_screen_calculate_layout (quartz_screen, NULL);
-  quartz_screen->emit_monitors_changed = FALSE;
 }
 
 static void
@@ -185,11 +184,7 @@ gdk_quartz_screen_reconfigure (GdkQuartzDisplay *display, GdkQuartzScreen *scree
 
   _gdk_quartz_screen_update_window_sizes (GDK_SCREEN (screen));
 
-  if (screen->emit_monitors_changed)
-    {
-      g_signal_emit_by_name (screen, "monitors-changed");
-      screen->emit_monitors_changed = FALSE;
-    }
+  g_signal_emit_by_name (screen, "monitors-changed");
 
   if (width != gdk_screen_get_width (GDK_SCREEN (screen))
       || height != gdk_screen_get_height (GDK_SCREEN (screen)))


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]