[gtk/wip/chergert/quartz4u] macos: improve geometry hints setting



commit 52573fbb015ceed8f2c961a0d6ef79f2c807fffc
Author: Christian Hergert <chergert redhat com>
Date:   Mon May 18 15:20:00 2020 -0700

    macos: improve geometry hints setting

 gdk/macos/gdkmacossurface.c | 34 ++++++++++++++++++++++++++++++++--
 1 file changed, 32 insertions(+), 2 deletions(-)
---
diff --git a/gdk/macos/gdkmacossurface.c b/gdk/macos/gdkmacossurface.c
index 019fa14de1..0b2083db9f 100644
--- a/gdk/macos/gdkmacossurface.c
+++ b/gdk/macos/gdkmacossurface.c
@@ -557,18 +557,48 @@ _gdk_macos_surface_set_geometry_hints (GdkMacosSurface   *self,
   g_return_if_fail (geometry != NULL);
   g_return_if_fail (self->window != NULL);
 
+  if (geom_mask & GDK_HINT_POS) { /* TODO */ }
+  if (geom_mask & GDK_HINT_USER_POS) { /* TODO */ }
+  if (geom_mask & GDK_HINT_USER_SIZE) { /* TODO */ }
+
   if (geom_mask & GDK_HINT_MAX_SIZE)
     max_size = NSMakeSize (geometry->max_width, geometry->max_height);
   else
     max_size = NSMakeSize (FLT_MAX, FLT_MAX);
+  [self->window setContentMaxSize:max_size];
 
   if (geom_mask & GDK_HINT_MIN_SIZE)
     min_size = NSMakeSize (geometry->min_width, geometry->min_height);
   else
     min_size = NSMakeSize (0, 0);
+  [self->window setContentMinSize:min_size];
+
+  if (geom_mask & GDK_HINT_BASE_SIZE) { /* TODO */ }
+
+  if (geom_mask & GDK_HINT_RESIZE_INC)
+    {
+      NSSize size;
+
+      size.width = geometry->width_inc;
+      size.height = geometry->height_inc;
+
+      [self->window setContentResizeIncrements:size];
+    }
+
+  if (geom_mask & GDK_HINT_ASPECT)
+    {
+      NSSize size;
+
+      if (geometry->min_aspect != geometry->max_aspect)
+        g_warning ("Only equal minimum and maximum aspect ratios are supported on Mac OS. Using minimum 
aspect ratio...");
+
+      size.width = geometry->min_aspect;
+      size.height = 1.0;
+
+      [self->window setContentAspectRatio:size];
+    }
 
-  [self->window setMaxSize:max_size];
-  [self->window setMinSize:min_size];
+  if (geom_mask & GDK_HINT_WIN_GRAVITY) { /* TODO */ }
 }
 
 void


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