summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--eventMouseClick.go15
-rw-r--r--find.go20
-rw-r--r--window.go50
3 files changed, 48 insertions, 37 deletions
diff --git a/eventMouseClick.go b/eventMouseClick.go
index 8c32910..3707ae0 100644
--- a/eventMouseClick.go
+++ b/eventMouseClick.go
@@ -9,21 +9,6 @@ import (
"go.wit.com/widget"
)
-func (tk *guiWidget) redrawWindow(w int, h int) {
- if tk.node.WidgetType != widget.Window {
- return
- }
- tk.setFullSize() // might make the green box the right size
-
- tk.DrawAt(w, h)
- tk.setColor(&colorActiveW) // sets the window to Green BG
- tk.placeWidgets(w, h) // compute the sizes & places for each widget
- tk.showWidgets()
-
- tk.setFullSize()
- me.baseGui.SetView(tk.cuiName, tk.gocuiSize.w0, tk.gocuiSize.h0, tk.gocuiSize.w1, tk.gocuiSize.h1, 0)
-}
-
// this whole things was impossible to make but it got me where I am now
// the debugging is way way better now with it being visible in the Stdout window
// so now it's possible to redo all this and make it better
diff --git a/find.go b/find.go
index 1c8deb9..9191b06 100644
--- a/find.go
+++ b/find.go
@@ -58,6 +58,26 @@ func (tk *guiWidget) findByXYreal(w int, h int) []*guiWidget {
return widgets
}
+// returns all the windows from the root of the binary tree
+func findWindows() []*guiWidget {
+ rootW := me.treeRoot.TK.(*guiWidget)
+ return rootW.findWindows()
+}
+
+// walk the binary tree looking for WidgetType == Window
+func (tk *guiWidget) findWindows() []*guiWidget {
+ var found []*guiWidget
+
+ if tk.node.WidgetType == widget.Window {
+ found = append(found, tk)
+ }
+
+ for _, child := range tk.children {
+ found = append(found, child.findWindows()...)
+ }
+ return found
+}
+
func (tk *guiWidget) setFullSize() rectType {
r := tk.getFullSize()
diff --git a/window.go b/window.go
index ed9debe..130c688 100644
--- a/window.go
+++ b/window.go
@@ -9,37 +9,43 @@ import (
"go.wit.com/widget"
)
+func (tk *guiWidget) redrawWindow(w int, h int) {
+ if tk.node.WidgetType != widget.Window {
+ return
+ }
+ tk.setFullSize() // might make the green box the right size
+
+ tk.DrawAt(w, h)
+ tk.setColor(&colorActiveW) // sets the window to Green BG
+ tk.placeWidgets(w, h) // compute the sizes & places for each widget
+ tk.showWidgets()
+
+ tk.setFullSize()
+ me.baseGui.SetView(tk.cuiName, tk.gocuiSize.w0, tk.gocuiSize.h0, tk.gocuiSize.w1, tk.gocuiSize.h1, 0)
+}
+
// re-draws the buttons for each of the windows
func (tk *guiWidget) redoWindows(nextW int, nextH int) {
-
- for _, child := range tk.children {
- if child.node.WidgetType != widget.Window {
- continue
- }
- child.gocuiSize.w0 = nextW
- child.gocuiSize.h0 = nextH
+ for _, win := range findWindows() {
+ win.gocuiSize.w0 = nextW
+ win.gocuiSize.h0 = nextH
tmp := fmt.Sprintf("redoWindowsS (%d,%d)", nextW, nextH)
- child.dumpWidget(tmp)
+ win.dumpWidget(tmp)
- child.frame = false
- child.hasTabs = false
+ win.frame = false
+ win.hasTabs = false
// this should make the window the full size and re-draw it
- child.setFullSize() // child.gocuiSetWH(nextW, nextH)
- child.Hide()
- child.DrawAt(nextW, nextH)
- child.Show()
+ win.setFullSize() // win.gocuiSetWH(nextW, nextH)
+ win.Hide()
+ win.DrawAt(nextW, nextH)
+ win.Show()
tmp = fmt.Sprintf("redoWindowsE (%d,%d)", nextW, nextH)
- child.dumpWidget(tmp)
+ win.dumpWidget(tmp)
- nextW += child.gocuiSize.Width() + 4
- child.redoWindows(nextW, nextH)
- /*
- sizeW := child.gocuiSize.Width()
- nextW += sizeW + 4
- child.redoWindows(startW+3, startH+2)
- */
+ // increment the width for the next window
+ nextW += win.gocuiSize.Width() + 4
}
}