From 751b6059c0432ede8de32656b777196cfdd6adaf Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Tue, 16 Jan 2024 00:54:41 -0600 Subject: [PATCH] add StandardExit() Signed-off-by: Jeff Carr --- basicWindow.go | 32 ++++++++++++++++++++++++++------ 1 file 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 {