diff --git a/redo/area_darwin.m b/redo/area_darwin.m index 033509b..020ece8 100644 --- a/redo/area_darwin.m +++ b/redo/area_darwin.m @@ -225,9 +225,9 @@ void areaTextFieldOpen(id area, id textfield, intptr_t x, intptr_t y) goAreaView *a = (goAreaView *) area; NSTextField *tf = toNSTextField(textfield); + // see TextField.preferredSize() in textfield_darwin.go [tf sizeToFit]; - // TODO - [tf setFrameSize:NSMakeSize(150, [tf frame].size.height)]; + [tf setFrameSize:NSMakeSize(textfieldWidth, [tf frame].size.height)]; [tf setFrameOrigin:NSMakePoint((CGFloat) x, (CGFloat) y)]; [tf setHidden:NO]; [[tf window] makeFirstResponder:tf]; diff --git a/redo/objc_darwin.h b/redo/objc_darwin.h index 57f7acf..d42b806 100644 --- a/redo/objc_darwin.h +++ b/redo/objc_darwin.h @@ -58,6 +58,7 @@ extern id windowContentView(id); extern void windowRedraw(id); /* basicctrls_darwin.m */ +#define textfieldWidth (96) /* according to Interface Builder */ extern id newButton(void); extern void buttonSetDelegate(id, void *); extern const char *buttonText(id); diff --git a/redo/textfield_darwin.go b/redo/textfield_darwin.go index cbe5f8b..89711d4 100644 --- a/redo/textfield_darwin.go +++ b/redo/textfield_darwin.go @@ -81,7 +81,9 @@ func (t *textfield) allocate(x int, y int, width int, height int, d *sizing) []* } func (t *textfield) preferredSize(d *sizing) (width, height int) { - return basepreferredSize(t, d) + _, height = basepreferredSize(t, d) + // the returned width is based on the contents; use this instead + return C.textfieldWidth, height } func (t *textfield) commitResize(a *allocation, d *sizing) {