summaryrefslogtreecommitdiff
path: root/redo/area_darwin.go
diff options
context:
space:
mode:
authorPietro Gagliardi <[email protected]>2014-08-22 22:32:31 -0400
committerPietro Gagliardi <[email protected]>2014-08-22 22:32:31 -0400
commit89ea8f5cbb502d0652595993a062ea1a947b50d6 (patch)
tree38f01eac1fe1698fc13232cb56285a4215b641f5 /redo/area_darwin.go
parentc7268f8feed749a385d171409ac99430d88d348a (diff)
Started the Mac OS X implementation of Area.OpenTextFieldAt().
Diffstat (limited to 'redo/area_darwin.go')
-rw-r--r--redo/area_darwin.go36
1 files changed, 34 insertions, 2 deletions
diff --git a/redo/area_darwin.go b/redo/area_darwin.go
index ad82777..4bd5902 100644
--- a/redo/area_darwin.go
+++ b/redo/area_darwin.go
@@ -3,6 +3,7 @@
package ui
import (
+ "fmt"
"image"
"unsafe"
)
@@ -14,17 +15,21 @@ import "C"
type area struct {
*areabase
- _id C.id
- scroller *scroller
+ _id C.id
+ scroller *scroller
+ textfield C.id
+ textfielddone *event
}
func newArea(ab *areabase) Area {
a := &area{
areabase: ab,
+ textfielddone: newEvent(),
}
a._id = C.newArea(unsafe.Pointer(a))
a.scroller = newScroller(a._id, false) // no border on Area
a.SetSize(a.width, a.height)
+ a.textfield = C.newAreaTextField(a._id, unsafe.Pointer(a))
return a
}
@@ -53,6 +58,33 @@ func (a *area) RepaintAll() {
C.areaRepaintAll(a._id)
}
+func (a *area) OpenTextFieldAt(x, y int) {
+ if x < 0 || x >= a.width || y < 0 || y >= a.height {
+ panic(fmt.Errorf("point (%d,%d) outside Area in Area.OpenTextFieldAt()", x, y))
+ }
+ C.areaTextFieldOpen(a.textfield, C.intptr_t(x), C.intptr_t(y))
+}
+
+func (a *area) TextFieldText() string {
+ return C.GoString(C.textFieldText(a.textfield))
+}
+
+func (a *area) SetTextFieldText(text string) {
+ ctext := C.CString(text)
+ defer C.free(unsafe.Pointer(ctext))
+ C.textFieldSetText(a.textfield, ctext)
+}
+
+func (a *area) OnTextFieldDismissed(f func()) {
+ a.textfielddone.set(f)
+}
+
+//export areaTextFieldDismissed
+func areaTextFieldDismissed(data unsafe.Pointer) {
+ a := (*area)(unsafe.Pointer(data))
+ a.textfielddone.fire()
+}
+
//export areaView_drawRect
func areaView_drawRect(self C.id, rect C.struct_xrect, data unsafe.Pointer) {
a := (*area)(data)