ui/cocoa/GridLayout.m

changeset 810
7b5ba65b246f
parent 800
814d374fb689
child 811
1391ba7e533f
--- a/ui/cocoa/GridLayout.m	Mon Oct 06 19:29:41 2025 +0200
+++ b/ui/cocoa/GridLayout.m	Tue Oct 07 14:59:11 2025 +0200
@@ -58,6 +58,9 @@
 }
  */
 
+- (BOOL)isFlipped {
+    return YES;
+}
 
 - (void) layout {
     int ncols = _cols+1;
@@ -66,7 +69,8 @@
     GridDef *cols = calloc(ncols, sizeof(GridDef));
     GridDef *rows = calloc(nrows, sizeof(GridDef));
     
-    NSRect viewFrame = self.frame;
+    //NSRect viewFrame = self.frame;
+    NSRect viewFrame = self.bounds;
     
     int colspacing = _columnspacing;
     int rowspacing = _rowspacing;
@@ -249,7 +253,6 @@
         GridDef *col = &cols[elm->x];
         GridDef *row = &rows[elm->y];
         
-        NSEdgeInsets alignment = elm->view.alignmentRectInsets;
         NSRect frame;
         if(elm->hfill) {
             if(elm->colspan > 1) {
@@ -266,12 +269,12 @@
                 if(real_span > 0) {
                     cwidth += (real_span-1) * colspacing;
                 }
-                frame.size.width = cwidth + alignment.left + alignment.right;
+                frame.size.width = cwidth;
             } else {
-                frame.size.width = col->size + alignment.left + alignment.right;
+                frame.size.width = col->size;
             }
         } else {
-            frame.size.width = elm->preferred_width + alignment.left + alignment.right;
+            frame.size.width = elm->preferred_width;
         }
         frame.size.width -= elm->margin.left + elm->margin.right;
         if(elm->vfill) {
@@ -295,11 +298,11 @@
         } else {
             frame.size.height = elm->preferred_height;
         }
-        frame.size.height -= elm->margin.top + elm->margin.bottom;
-        frame.origin.x = col->pos + elm->margin.left - (alignment.left+alignment.right)/2;
-        //frame.origin.y = viewFrame.size.height - row->pos - frame.size.height + ((alignment.top+alignment.right)/2);
-        frame.origin.y = viewFrame.size.height - row->pos - elm->margin.top - frame.size.height;
-        elm->view.frame = frame;
+        
+        frame.origin.x = col->pos + elm->margin.left;
+        frame.origin.y = row->pos + elm->margin.top;
+        NSRect viewFrame = [elm->view frameForAlignmentRect:frame];
+        elm->view.frame = viewFrame;
     }
     
     free(cols);

mercurial