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

View File

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