From ccdbdf011a8aa5e158dc94ad204eddeb1f32aa44 Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Thu, 9 Apr 2015 02:35:52 -0400 Subject: [PATCH] Implemented uiEntry on Mac OS X. Now I can get to writing the text and title functions... --- new/entry_darwin.m | 51 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 new/entry_darwin.m diff --git a/new/entry_darwin.m b/new/entry_darwin.m new file mode 100644 index 0000000..b08d53b --- /dev/null +++ b/new/entry_darwin.m @@ -0,0 +1,51 @@ +// 9 april 2015 +#import "uipriv_darwin.h" + +@interface uiNSTextField : NSTextField +@property uiControl *uiC; +@end + +@implementation uiNSTextField + +- (void)viewDidMoveToSuperview +{ + if (uiDarwinControlFreeWhenAppropriate(self.uiC, [self superview])) { + [self setTarget:nil]; + self.uiC = NULL; + } + [super viewDidMoveToSuperview]; +} + +@end + +// TOOD move elsewhere +// these are based on interface builder defaults; my comments in the old code weren't very good so I don't really know what talked about what, sorry :/ +void finishNewTextField(NSTextField *t, BOOL isLabel) +{ + setStandardControlFont((id) t); + + // THE ORDER OF THESE CALLS IS IMPORTANT; CHANGE IT AND THE BORDERS WILL DISAPPEAR + [t setBordered:NO]; + [t setBezelStyle:NSTextFieldSquareBezel]; + [t setBezeled:isLabel]; + + // TODO autocorrect comment + + [[t cell] setLineBreakMode:NSLineBreakByClipping]; + [[t cell] setScrollable:YES]; +} + +uiControl *uiNewEntry(void) +{ + uiControl *c; + uiNSTextField *t; + + c = uiDarwinNewControl([uiNSTextField class], NO, NO); + t = (uiNSTextField *) uiControlHandle(c); + t.uiC = c; + + [t setSelectable:YES]; // otherwise the setting is masked by the editable default of YES + finishNewTextField((NSTextField *) t, YES); + + return t.uiC; +}