summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--basicWindow.go32
1 files changed, 26 insertions, 6 deletions
diff --git a/basicWindow.go b/basicWindow.go
index 35d80d6..8e511cf 100644
--- a/basicWindow.go
+++ b/basicWindow.go
@@ -65,6 +65,20 @@ func (w *BasicWindow) Title(title string) {
return
}
+// sets this window to run os.Exit()
+func (w *BasicWindow) StandardExit() {
+ if ! w.Ready() {return}
+ w.win.Custom = func() {
+ log.Warn("BasicWindow.Custom() closed. TODO: handle this", w.title)
+ log.Warn("BasicWindow.Custom() closed. handled properly?", w.title)
+ if w.Custom != nil {
+ w.Custom()
+ }
+ w.win.StandardExit()
+ }
+ return
+}
+
// Returns true if initialized
func (w *BasicWindow) Initialized() bool {
if w == nil {return false}
@@ -107,13 +121,19 @@ func (w *BasicWindow) Make() {
log.Warn("BasicWindow.Make() window was already created")
return
}
- // various timeout settings
w.win = w.parent.RawWindow(w.title)
- w.win.Custom = func() {
- log.Warn("BasicWindow.Custom() closed. TODO: handle this", w.title)
- log.Warn("BasicWindow.Custom() closed. handled properly?", w.title)
- if w.Custom != nil {
- w.Custom()
+
+ // if Custom isn't set, set it here. This prevents the application from
+ // os.Exit() if the window is closed. It destroy's the widgets in the toolkit plugins
+ // the the window still exists in the binary tree and functions normally
+ // I like to call this Sierpinski mode
+ if w.win.Custom == nil {
+ w.win.Custom = func() {
+ log.Warn("BasicWindow.Custom() closed. TODO: handle this", w.title)
+ log.Warn("BasicWindow.Custom() closed. handled properly?", w.title)
+ if w.Custom != nil {
+ w.Custom()
+ }
}
}
if w.vertical {