libui/redo/reredo/darwin/control.m

78 lines
1.6 KiB
Objective-C

// 16 august 2015
#import "uipriv_darwin.h"
static uintmax_t type_uiDarwinControl = 0;
uintmax_t uiDarwinControlType(void)
{
if (type_uiDarwinControl == 0)
type_uiDarwinControl = uiRegisterType("uiDarwinControl", uiControlType(), sizeof (uiDarwinControl));
return type_uiDarwinControl;
}
void uiDarwinControlTriggerRelayout(uiDarwinControl *c)
{
uiControl *p;
p = toplevelOwning(uiControl(c));
if (p == NULL) // not in a window
return;
c = uiDarwinControl(p);
(*(c->Relayout))(uiDarwinControl(c));
}
void osCommitShow(uiControl *c)
{
NSView *view;
view = (NSView *) uiControlHandle(c);
// TODO
if ([view isKindOfClass:[NSWindow class]]) {
[view makeKeyAndOrderFront:view];
return;
}
[view setHidden:NO];
}
void osCommitHide(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];
// TODO omit this for uiWindow properly
if ([view respondsToSelector:@selector(setTranslatesAutoresizingMaskIntoConstraints:)])
[view setTranslatesAutoresizingMaskIntoConstraints:NO];
}
void uiDarwinSetControlFont(NSControl *c, NSControlSize size)
{
[c setFont:[NSFont systemFontOfSize:[NSFont systemFontSizeForControlSize:size]]];
}