summaryrefslogtreecommitdiff
path: root/redo/textfield_darwin.go
diff options
context:
space:
mode:
authorPietro Gagliardi <[email protected]>2014-08-20 17:08:47 -0400
committerPietro Gagliardi <[email protected]>2014-08-20 17:08:47 -0400
commit8b6b8ec06c18360ab38d41e6ecca9a641fb68af2 (patch)
tree513aeac9de7179e1a2d9baa139ac91cd1085219f /redo/textfield_darwin.go
parent35e788aa7fd2b27750bfcb654e46e35c6bc9fae8 (diff)
Implemented TextField.Invalid() on Mac OS X.
Diffstat (limited to 'redo/textfield_darwin.go')
-rw-r--r--redo/textfield_darwin.go16
1 files changed, 14 insertions, 2 deletions
diff --git a/redo/textfield_darwin.go b/redo/textfield_darwin.go
index 1b6ff82..cbe5f8b 100644
--- a/redo/textfield_darwin.go
+++ b/redo/textfield_darwin.go
@@ -12,6 +12,7 @@ import "C"
type textfield struct {
_id C.id
changed *event
+ invalid C.id
}
func finishNewTextField(id C.id) *textfield {
@@ -24,7 +25,7 @@ func finishNewTextField(id C.id) *textfield {
}
func newTextField() *textfield {
- return finishNewTextField(C.newTextField()
+ return finishNewTextField(C.newTextField())
}
func newPasswordField() *textfield {
@@ -46,7 +47,18 @@ func (t *textfield) OnChanged(f func()) {
}
func (t *textfield) Invalid(reason string) {
- // TODO
+ // TODO disable animations if reason is still valid
+ // TODO don't steal focus
+ if t.invalid != nil {
+ C.textfieldCloseInvalidPopover(t.invalid)
+ t.invalid = nil
+ }
+ if reason == "" {
+ return
+ }
+ creason := C.CString(reason)
+ defer C.free(unsafe.Pointer(creason))
+ t.invalid = C.textfieldOpenInvalidPopover(t._id, creason)
}
//export textfieldChanged