diff options
| author | Pietro Gagliardi <[email protected]> | 2014-03-02 17:44:13 -0500 |
|---|---|---|
| committer | Pietro Gagliardi <[email protected]> | 2014-03-02 17:44:13 -0500 |
| commit | 234b724403bb93171a0eac72a8c24db3879c5900 (patch) | |
| tree | c92f53c3757719cb58f671b049c06501428658c4 /sysdata_darwin.go | |
| parent | 01e587174144ed4b6b5383346fdf2697f86f9423 (diff) | |
Added the other Combobox modification functions to the Mac OS X backend. Before continuing, I'll get messageboxes working...
Diffstat (limited to 'sysdata_darwin.go')
| -rw-r--r-- | sysdata_darwin.go | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/sysdata_darwin.go b/sysdata_darwin.go index 311827e..88d9ddb 100644 --- a/sysdata_darwin.go +++ b/sysdata_darwin.go @@ -25,6 +25,9 @@ type classData struct { textsel C.SEL alttextsel C.SEL append func(id C.id, what string, alternate bool) + insertBefore func(id C.id, what string, before int, alternate bool) + // TODO others + delete func(id C.id, index int) } var ( @@ -169,6 +172,17 @@ var classTypes = [nctypes]*classData{ C.objc_msgSend_id(id, _addItemWithTitle, str) } }, + insertBefore: func(id C.id, what string, before int, alternate bool) { + str := toNSString(what) + if alternate { + C.objc_msgSend_id_int(id, _insertItemWithObjectValueAtIndex, str, C.intptr_t(before)) + } else { + C.objc_msgSend_id_int(id, _insertItemWithTitleAtIndex, str, C.intptr_t(before)) + } + }, + delete: func(id C.id, index int) { + C.objc_msgSend_int(id, _removeItemAtIndex, C.intptr_t(index)) + }, }, c_lineedit: &classData{ }, @@ -315,7 +329,14 @@ if classTypes[s.ctype].append == nil { return nil } } func (s *sysData) insertBefore(what string, before int) error { - // TODO +if classTypes[s.ctype].insertBefore == nil { return nil } + ret := make(chan struct{}) + defer close(ret) + uitask <- func() { + classTypes[s.ctype].insertBefore(s.id, what, before, s.alternate) + ret <- struct{}{} + } + <-ret return nil } @@ -350,7 +371,14 @@ func (s *sysData) setWindowSize(width int, height int) error { } func (s *sysData) delete(index int) error { - // TODO +if classTypes[s.ctype].delete == nil { return nil } + ret := make(chan struct{}) + defer close(ret) + uitask <- func() { + classTypes[s.ctype].delete(s.id, index) + ret <- struct{}{} + } + <-ret return nil } |
