Changeset 39ad849 in pugl


Ignore:
Timestamp:
Oct 3, 2017, 7:20:52 AM (7 weeks ago)
Author:
David Robillard <d@…>
Branches:
master
Children:
c4dcd96
Parents:
7061664
git-author:
David Robillard <d@…> (10/03/17 07:10:42)
git-committer:
David Robillard <d@…> (10/03/17 07:20:52)
Message:

Fix size constraints on OSX

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pugl/pugl_osx.m

    r7061664 r39ad849  
    6565                    defer:(BOOL)flag
    6666{
    67     if (![super initWithContentRect:contentRect
    68                           styleMask:(NSClosableWindowMask |
    69                                      NSTitledWindowMask |
    70                                      NSResizableWindowMask)
    71                             backing:NSBackingStoreBuffered defer:NO]) {
    72         return nil;
    73     }
    74 
    75     [self setAcceptsMouseMovedEvents:YES];
    76     return (PuglWindow*)self;
     67    NSWindow* result = [super initWithContentRect:contentRect
     68                        styleMask:aStyle
     69                          backing:bufferingType
     70                        defer:NO];
     71
     72    [result setAcceptsMouseMovedEvents:YES];
     73    return (PuglWindow*)result;
    7774}
    7875
     
    564561}
    565562
     563static NSLayoutConstraint*
     564puglConstraint(id item, NSLayoutAttribute attribute, float constant)
     565{
     566    return [NSLayoutConstraint
     567               constraintWithItem: item
     568                        attribute: attribute
     569                        relatedBy: NSLayoutRelationGreaterThanOrEqual
     570                           toItem: nil
     571                        attribute: NSLayoutAttributeNotAnAttribute
     572                       multiplier: 1.0
     573                         constant: constant];
     574}
     575
    566576int
    567577puglCreateWindow(PuglView* view, const char* title)
     
    574584    impl->glview           = [PuglOpenGLView new];
    575585    impl->glview->puglview = view;
     586
     587    [impl->glview setFrameSize:NSMakeSize(view->width, view->height)];
     588    [impl->glview addConstraint:
     589             puglConstraint(impl->glview, NSLayoutAttributeWidth, view->min_width)];
     590    [impl->glview addConstraint:
     591             puglConstraint(impl->glview, NSLayoutAttributeHeight, view->min_height)];
     592    if (!view->resizable) {
     593        [impl->glview setAutoresizingMask:NSViewNotSizable];
     594    }
    576595
    577596    if (view->transient_parent) {
     
    584603                                           length:strlen(title)
    585604                                         encoding:NSUTF8StringEncoding];
    586 
    587         id window = [[PuglWindow new] retain];
     605        NSRect frame = NSMakeRect(0, 0, view->min_width, view->min_height);
     606        unsigned style = NSClosableWindowMask | NSTitledWindowMask;
     607        if (view->resizable) {
     608            style |= NSResizableWindowMask;
     609        }
     610
     611        id window = [[[PuglWindow alloc]
     612            initWithContentRect:frame
     613                      styleMask:style
     614                        backing:NSBackingStoreBuffered
     615                          defer:NO
     616                      ] retain];
    588617        [window setPuglview:view];
    589618        [window setTitle:titleString];
     
    598627        [window makeFirstResponder:impl->glview];
    599628        [window makeKeyAndOrderFront:window];
    600 #if 0
    601         if (resizable) {
    602             [impl->glview setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable];
    603         }
    604 #endif
    605629    }
    606630
Note: See TracChangeset for help on using the changeset viewer.