[gtk/wip/chergert/quartz4u] setup backpointer from NSWindow



commit 90882d41a4eea69d61adaab6aeecfff57ffb84f0
Author: Christian Hergert <chergert redhat com>
Date:   Wed Apr 29 15:42:11 2020 -0700

    setup backpointer from NSWindow

 gdk/macos/GdkMacosWindow.c  | 13 ++++++++-----
 gdk/macos/GdkMacosWindow.h  |  1 +
 gdk/macos/gdkmacossurface.c | 10 ++++++++++
 3 files changed, 19 insertions(+), 5 deletions(-)
---
diff --git a/gdk/macos/GdkMacosWindow.c b/gdk/macos/GdkMacosWindow.c
index 2d370e221b..5eb47ab81c 100644
--- a/gdk/macos/GdkMacosWindow.c
+++ b/gdk/macos/GdkMacosWindow.c
@@ -293,12 +293,10 @@
                          styleMask:styleMask
                            backing:backingType
                              defer:flag
-                             screen:screen];
+                       screen:screen];
 
   [self setAcceptsMouseMovedEvents:YES];
-#if 0
   [self setDelegate:self];
-#endif
   [self setReleasedWhenClosed:YES];
 
   return self;
@@ -337,14 +335,14 @@
     case GDK_SURFACE_TYPE_HINT_POPUP_MENU:
     case GDK_SURFACE_TYPE_HINT_COMBO:
       return YES;
-      
+
     case GDK_SURFACE_TYPE_HINT_SPLASHSCREEN:
     case GDK_SURFACE_TYPE_HINT_TOOLTIP:
     case GDK_SURFACE_TYPE_HINT_NOTIFICATION:
     case GDK_SURFACE_TYPE_HINT_DND:
       return NO;
     }
-  
+
   return YES;
 #endif
 
@@ -642,4 +640,9 @@
   [self setFrame:lastUnfullscreenFrame display:YES];
 }
 
+-(void)setGdkSurface:(GdkMacosSurface *)surface
+{
+  self->gdkSurface = surface;
+}
+
 @end
diff --git a/gdk/macos/GdkMacosWindow.h b/gdk/macos/GdkMacosWindow.h
index ab448be2db..8cc15116f1 100644
--- a/gdk/macos/GdkMacosWindow.h
+++ b/gdk/macos/GdkMacosWindow.h
@@ -53,6 +53,7 @@
 -(void)hide;
 -(BOOL)isInManualResizeOrMove;
 -(BOOL)isInMove;
+-(void)setGdkSurface:(GdkMacosSurface *)surface;
 -(void)setStyleMask:(NSWindowStyleMask)styleMask;
 -(void)showAndMakeKey:(BOOL)makeKey;
 -(BOOL)trackManualMove;
diff --git a/gdk/macos/gdkmacossurface.c b/gdk/macos/gdkmacossurface.c
index 26b05a34ea..7b469b3810 100644
--- a/gdk/macos/gdkmacossurface.c
+++ b/gdk/macos/gdkmacossurface.c
@@ -125,6 +125,7 @@ gdk_macos_surface_set_property (GObject      *object,
     {
     case PROP_NATIVE:
       priv->window = g_value_get_pointer (value);
+      [priv->window setGdkSurface:self];
       break;
 
     default:
@@ -239,10 +240,19 @@ _gdk_macos_surface_set_title (GdkMacosSurface *self,
 {
   GdkMacosSurfacePrivate *priv = gdk_macos_surface_get_instance_private (self);
 
+  g_return_if_fail (GDK_IS_MACOS_SURFACE (self));
+
+  if (title == NULL)
+    title = "";
+
   if (g_strcmp0 (priv->title, title) != 0)
     {
       g_free (priv->title);
       priv->title = g_strdup (title);
+
+      GDK_BEGIN_MACOS_ALLOC_POOL;
+      [priv->window setTitle:[NSString stringWithUTF8String:title]];
+      GDK_END_MACOS_ALLOC_POOL;
     }
 }
 


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