// 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));
}

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;
}

void uiDarwinSetControlFont(NSControl *c, NSControlSize size)
{
	[c setFont:[NSFont systemFontOfSize:[NSFont systemFontSizeForControlSize:size]]];
}