diff --git a/darwin/control.m b/darwin/control.m index fc75de50..36d40945 100644 --- a/darwin/control.m +++ b/darwin/control.m @@ -1,68 +1,9 @@ // 16 august 2015 #import "uipriv_darwin.h" -// TODO refine this -void uiDarwinControlTriggerRelayout(uiDarwinControl *c) +void uiDarwinControlSetSuperview(uiControl *c, NSView *superview) { - NSView *view; - uiWindow *p; - - view = (NSView *) uiControlHandle(uiControl(c)); - // this can be a NSWindow - if (![view isKindOfClass:[NSWindow class]]) { - p = windowFromNSWindow([view window]); - if (p == NULL) // not in a window - return; - } else - p = uiWindow(c); - c = uiDarwinControl(p); - (*(c->Relayout))(uiDarwinControl(c)); -} - -static void defaultCommitShow(uiControl *c) -{ - NSView *view; - - view = (NSView *) uiControlHandle(c); - [view setHidden:NO]; -} - -static void defaultCommitHide(uiControl *c) -{ - NSView *view; - - view = (NSView *) uiControlHandle(c); - [view setHidden:YES]; -} - -void osCommitEnable(uiControl *c) -{ - NSControl *view; - - view = (NSControl *) uiControlHandle(c); - if ([view respondsToSelector:@selector(setEnabled:)]) - [view setEnabled:YES]; -} - -void osCommitDisable(uiControl *c) -{ - NSControl *view; - - view = (NSControl *) uiControlHandle(c); - if ([view respondsToSelector:@selector(setEnabled:)]) - [view setEnabled:NO]; -} - -void uiDarwinFinishControl(uiControl *c) -{ - NSView *view; - - view = (NSView *) uiControlHandle(c); - [view retain]; - if (!isToplevel(c)) - [view setTranslatesAutoresizingMaskIntoConstraints:NO]; - c->CommitShow = defaultCommitShow; - c->CommitHide = defaultCommitHide; + (*(c->SetSuperview))(c, superview); } void uiDarwinSetControlFont(NSControl *c, NSControlSize size) diff --git a/ui_darwin.h b/ui_darwin.h index 2b125cff..d8ffa0d5 100644 --- a/ui_darwin.h +++ b/ui_darwin.h @@ -93,6 +93,7 @@ _UI_EXTERN void uiDarwinControlSetSuperview(uiDarwinControl *, NSView *); #define uiDarwinControlDefaultSetSuperview(type, handlefield) \ static void type ## SetSuperview(uiDarwinControl *c, NSView *superview) \ { \ + [type(c)->handlefield setTranslatesAutoresizingMaskIntoConstraints:NO]; \ if (superview == nil) \ [type(c)->handlefield removeFromSuperview]; \ else \