Split the new editable NSTextField part of uiNewEntry() into its own function so uiSpinbox can use it.

This commit is contained in:
Pietro Gagliardi 2015-08-21 20:14:50 -04:00
parent f698ca4a35
commit 7ddb78773d
2 changed files with 17 additions and 7 deletions

View File

@ -4,6 +4,9 @@
// Text fields for entering text have no intrinsic width; we'll use the default Interface Builder width for them.
#define textfieldWidth 96
@interface libui_intrinsicWidthNSTextField : NSTextField
@end
@implementation libui_intrinsicWidthNSTextField
- (NSSize)intrinsicContentSize
@ -113,6 +116,11 @@ void uiEntrySetReadOnly(uiEntry *e, int readonly)
[e->textfield setEditable:editable];
}
static void defaultOnChanged(uiEntry *e, void *data)
{
// do nothing
}
// 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 isEntry)
{
@ -129,9 +137,14 @@ void finishNewTextField(NSTextField *t, BOOL isEntry)
[[t cell] setScrollable:YES];
}
static void defaultOnChanged(uiEntry *e, void *data)
NSTextField *newEditableTextField(void)
{
// do nothing
NSTextField *tf;
tf = [[libui_intrinsicWidthNSTextField alloc] initWithFrame:NSZeroRect];
[tf setSelectable:YES]; // otherwise the setting is masked by the editable default of YES
finishNewTextField(tf, YES);
return tf;
}
uiEntry *uiNewEntry(void)
@ -140,9 +153,7 @@ uiEntry *uiNewEntry(void)
e = (uiEntry *) uiNewControl(uiEntryType());
e->textfield = [[libui_intrinsicWidthNSTextField alloc] initWithFrame:NSZeroRect];
[e->textfield setSelectable:YES]; // otherwise the setting is masked by the editable default of YES
finishNewTextField(e->textfield, YES);
e->textfield = newEditableTextField();
if (entryDelegate == nil) {
entryDelegate = [entryDelegateClass new];

View File

@ -40,9 +40,8 @@ extern void uninitMenus(void);
extern void disableAutocorrect(NSTextView *);
// entry.m
@interface libui_intrinsicWidthNSTextField : NSTextField
@end
extern void finishNewTextField(NSTextField *, BOOL);
extern NSTextField *newEditableTextField(void);
// window.m
extern uiWindow *windowFromNSWindow(NSWindow *);