summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--combobox.go19
-rw-r--r--listbox.go19
-rw-r--r--sysdata.go4
-rw-r--r--sysdata_darwin.go6
-rw-r--r--sysdata_unix.go6
-rw-r--r--sysdata_windows.go14
6 files changed, 30 insertions, 38 deletions
diff --git a/combobox.go b/combobox.go
index 42e10ac..54403b1 100644
--- a/combobox.go
+++ b/combobox.go
@@ -36,25 +36,23 @@ func NewEditableCombobox(items ...string) *Combobox {
}
// Append adds items to the end of the Combobox's list.
-func (c *Combobox) Append(what ...string) (err error) {
+// Append will panic if something goes wrong on platforms that do not abort themselves.
+func (c *Combobox) Append(what ...string) {
c.lock.Lock()
defer c.lock.Unlock()
if c.created {
for i, s := range what {
- err := c.sysData.append(s)
- if err != nil {
- return fmt.Errorf("error adding element %d in Combobox.Append() (%q): %v", i, s, err)
- }
+ c.sysData.append(s)
}
- return nil
+ return
}
c.initItems = append(c.initItems, what...)
- return nil
}
// InsertBefore inserts a new item in the Combobox before the item at the given position. It panics if the given index is out of bounds.
-func (c *Combobox) InsertBefore(what string, before int) (err error) {
+// InsertBefore will also panic if something goes wrong on platforms that do not abort themselves.
+func (c *Combobox) InsertBefore(what string, before int) {
c.lock.Lock()
defer c.lock.Unlock()
@@ -64,7 +62,8 @@ func (c *Combobox) InsertBefore(what string, before int) (err error) {
if before < 0 || before >= c.sysData.len() {
goto badrange
}
- return c.sysData.insertBefore(what, before)
+ c.sysData.insertBefore(what, before)
+ return
}
if before < 0 || before >= len(c.initItems) {
goto badrange
@@ -73,7 +72,7 @@ func (c *Combobox) InsertBefore(what string, before int) (err error) {
m = append(m, c.initItems[:before]...)
m = append(m, what)
c.initItems = append(m, c.initItems[before:]...)
- return nil
+ return
badrange:
panic(fmt.Errorf("index %d out of range in Combobox.InsertBefore()", before))
}
diff --git a/listbox.go b/listbox.go
index 54c698b..b028bdc 100644
--- a/listbox.go
+++ b/listbox.go
@@ -28,25 +28,23 @@ func NewListbox(multiple bool, items ...string) (l *Listbox) {
}
// Append adds items to the end of the Listbox's list.
-func (l *Listbox) Append(what ...string) (err error) {
+// Append will panic if something goes wrong on platforms that do not abort themselves.
+func (l *Listbox) Append(what ...string) {
l.lock.Lock()
defer l.lock.Unlock()
if l.created {
for i, s := range what {
- err := l.sysData.append(s)
- if err != nil {
- return fmt.Errorf("error adding element %d in Listbox.Append() (%q): %v", i, s, err)
- }
+ l.sysData.append(s)
}
- return nil
+ return
}
l.initItems = append(l.initItems, what...)
- return nil
}
// InsertBefore inserts a new item in the Listbox before the item at the given position. It panics if the given index is out of bounds.
-func (l *Listbox) InsertBefore(what string, before int) (err error) {
+// InsertBefore will also panic if something goes wrong on platforms that do not abort themselves.
+func (l *Listbox) InsertBefore(what string, before int) {
l.lock.Lock()
defer l.lock.Unlock()
@@ -56,7 +54,8 @@ func (l *Listbox) InsertBefore(what string, before int) (err error) {
if before < 0 || before >= l.sysData.len() {
goto badrange
}
- return l.sysData.insertBefore(what, before)
+ l.sysData.insertBefore(what, before)
+ return
}
if before < 0 || before >= len(l.initItems) {
goto badrange
@@ -65,7 +64,7 @@ func (l *Listbox) InsertBefore(what string, before int) (err error) {
m = append(m, l.initItems[:before]...)
m = append(m, what)
l.initItems = append(m, l.initItems[before:]...)
- return nil
+ return
badrange:
panic(fmt.Errorf("index %d out of range in Listbox.InsertBefore()", before))
}
diff --git a/sysdata.go b/sysdata.go
index eb62107..8ee6f3e 100644
--- a/sysdata.go
+++ b/sysdata.go
@@ -40,10 +40,10 @@ func (c *cSysData) isChecked() bool {
func (c *cSysData) text() string {
panic(runtime.GOOS + " sysData does not define text()")
}
-func (c *cSysData) append(string) error {
+func (c *cSysData) append(string) {
panic(runtime.GOOS + " sysData does not define append()")
}
-func (c *cSysData) insertBefore(string, int) error {
+func (c *cSysData) insertBefore(string, int) {
panic(runtime.GOOS + " sysData does not define insertBefore()")
}
func (c *cSysData) selectedIndex() int {
diff --git a/sysdata_darwin.go b/sysdata_darwin.go
index 6db7ad3..02e3d8e 100644
--- a/sysdata_darwin.go
+++ b/sysdata_darwin.go
@@ -387,7 +387,7 @@ func (s *sysData) text() string {
return <-ret
}
-func (s *sysData) append(what string) error {
+func (s *sysData) append(what string) {
ret := make(chan struct{})
defer close(ret)
uitask <- func() {
@@ -395,10 +395,9 @@ func (s *sysData) append(what string) error {
ret <- struct{}{}
}
<-ret
- return nil
}
-func (s *sysData) insertBefore(what string, before int) error {
+func (s *sysData) insertBefore(what string, before int) {
ret := make(chan struct{})
defer close(ret)
uitask <- func() {
@@ -406,7 +405,6 @@ func (s *sysData) insertBefore(what string, before int) error {
ret <- struct{}{}
}
<-ret
- return nil
}
func (s *sysData) selectedIndex() int {
diff --git a/sysdata_unix.go b/sysdata_unix.go
index f55e463..c07545a 100644
--- a/sysdata_unix.go
+++ b/sysdata_unix.go
@@ -216,7 +216,7 @@ func (s *sysData) text() string {
return <-ret
}
-func (s *sysData) append(what string) error {
+func (s *sysData) append(what string) {
ret := make(chan struct{})
defer close(ret)
uitask <- func() {
@@ -224,10 +224,9 @@ func (s *sysData) append(what string) error {
ret <- struct{}{}
}
<-ret
- return nil
}
-func (s *sysData) insertBefore(what string, before int) error {
+func (s *sysData) insertBefore(what string, before int) {
ret := make(chan struct{})
defer close(ret)
uitask <- func() {
@@ -235,7 +234,6 @@ func (s *sysData) insertBefore(what string, before int) error {
ret <- struct{}{}
}
<-ret
- return nil
}
func (s *sysData) selectedIndex() int {
diff --git a/sysdata_windows.go b/sysdata_windows.go
index bf72ba5..4b951f2 100644
--- a/sysdata_windows.go
+++ b/sysdata_windows.go
@@ -317,7 +317,7 @@ func (s *sysData) text() (str string) {
return syscall.UTF16ToString(tc)
}
-func (s *sysData) append(what string) (err error) {
+func (s *sysData) append(what string) {
ret := make(chan uiret)
defer close(ret)
uitask <- &uimsg{
@@ -332,14 +332,13 @@ func (s *sysData) append(what string) (err error) {
}
r := <-ret
if r.ret == uintptr(classTypes[s.ctype].addSpaceErr) {
- return fmt.Errorf("out of space adding item to combobox/listbox (last error: %v)", r.err)
+ panic(fmt.Errorf("out of space adding item to combobox/listbox (last error: %v)", r.err))
} else if r.ret == uintptr(classTypes[s.ctype].selectedIndexErr) {
- return fmt.Errorf("failed to add item to combobox/listbox (last error: %v)", r.err)
+ panic(fmt.Errorf("failed to add item to combobox/listbox (last error: %v)", r.err))
}
- return nil
}
-func (s *sysData) insertBefore(what string, index int) (err error) {
+func (s *sysData) insertBefore(what string, index int) {
ret := make(chan uiret)
defer close(ret)
uitask <- &uimsg{
@@ -354,11 +353,10 @@ func (s *sysData) insertBefore(what string, index int) (err error) {
}
r := <-ret
if r.ret == uintptr(classTypes[s.ctype].addSpaceErr) {
- return fmt.Errorf("out of space adding item to combobox/listbox (last error: %v)", r.err)
+ panic(fmt.Errorf("out of space adding item to combobox/listbox (last error: %v)", r.err))
} else if r.ret == uintptr(classTypes[s.ctype].selectedIndexErr) {
- return fmt.Errorf("failed to add item to combobox/listbox (last error: %v)", r.err)
+ panic(fmt.Errorf("failed to add item to combobox/listbox (last error: %v)", r.err))
}
- return nil
}
func (s *sysData) selectedIndex() int {