diff options
Diffstat (limited to 'redo/table_darwin.go')
| -rw-r--r-- | redo/table_darwin.go | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/redo/table_darwin.go b/redo/table_darwin.go index bccaf1b..904600d 100644 --- a/redo/table_darwin.go +++ b/redo/table_darwin.go @@ -18,6 +18,7 @@ type table struct { scroller *scroller images []C.id + selected *event } func finishNewTable(b *tablebase, ty reflect.Type) Table { @@ -26,7 +27,9 @@ func finishNewTable(b *tablebase, ty reflect.Type) Table { _id: id, scroller: newScroller(id, true), // border on Table tablebase: b, + selected: newEvent(), } + // also sets the delegate C.tableMakeDataSource(t._id, unsafe.Pointer(t)) for i := 0; i < ty.NumField(); i++ { cname := C.CString(ty.Field(i).Name) @@ -74,6 +77,10 @@ func (t *table) Select(index int) { C.tableSelect(t._id, C.intptr_t(index)) } +func (t *table) OnSelected(f func()) { + t.selected.set(f) +} + //export goTableDataSource_getValue func goTableDataSource_getValue(data unsafe.Pointer, row C.intptr_t, col C.intptr_t, outtype *C.int) unsafe.Pointer { t := (*table)(data) @@ -119,6 +126,12 @@ func goTableDataSource_toggled(data unsafe.Pointer, row C.intptr_t, col C.intptr datum.SetBool(fromBOOL(checked)) } +//export tableSelectionChanged +func tableSelectionChanged(data unsafe.Pointer) { + t := (*table)(data) + t.selected.fire() +} + func (t *table) id() C.id { return t._id } |
