diff --git a/eventMouseClick.go b/eventMouseClick.go index 6ebd800..8c32910 100644 --- a/eventMouseClick.go +++ b/eventMouseClick.go @@ -15,11 +15,6 @@ func (tk *guiWidget) redrawWindow(w int, h int) { } tk.setFullSize() // might make the green box the right size - // draw the current window - // w = tk.gocuiSize.w0 + 4 - // h = tk.gocuiSize.h0 + 4 - w = w + 4 - h = h + 4 tk.DrawAt(w, h) tk.setColor(&colorActiveW) // sets the window to Green BG tk.placeWidgets(w, h) // compute the sizes & places for each widget @@ -47,7 +42,7 @@ func (tk *guiWidget) doWidgetClick(w int, h int) { me.currentWindow.isCurrent = true tk.active = false - tk.redrawWindow(tk.gocuiSize.w0, tk.gocuiSize.h0) + tk.redrawWindow(w, h) return case widget.Group: if tk.active { diff --git a/place.go b/place.go index ddd488d..12bb156 100644 --- a/place.go +++ b/place.go @@ -75,27 +75,13 @@ func (tk *guiWidget) placeWidgets(startW int, startH int) (int, int) { switch tk.node.WidgetType { case widget.Window: - newW := startW - newH := startH - // var maxH int = 0 for _, child := range tk.children { - child.placeWidgets(newW, newH) - sizeW, sizeH := child.Size() - /* - if sizeW < 20 { - sizeW = 20 - } - */ - newW += sizeW - newH += sizeH - /* - if sizeH > maxH { - maxH = sizeH - } - */ + child.placeWidgets(startW, startH) + sizeW, _ := child.Size() + startW += sizeW + 4 // add the width to move the next widget over } - return newW - startW, newH - startH + return startW, startH case widget.Tab: case widget.Grid: return tk.placeGrid(startW, startH) diff --git a/treeDraw.go b/treeDraw.go index 39db38d..9f71eb2 100644 --- a/treeDraw.go +++ b/treeDraw.go @@ -101,7 +101,7 @@ func (w *guiWidget) DrawAt(offsetW, offsetH int) { w.setColor(&colorActiveW) w.placeWidgets(offsetW, offsetH) // compute the sizes & places for each widget w.active = false - w.dumpWidget("DrawAt()") + w.dumpWidget(fmt.Sprintf("DrawAt(%d,%d)", offsetW, offsetH)) } func (w *guiWidget) simpleDrawAt(offsetW, offsetH int) { @@ -139,3 +139,43 @@ func (w *guiWidget) drawTree(draw bool) { child.drawTree(draw) } } + +func (w *guiWidget) Show() { + // don't display fake widgets + if w.isFake { + return + } + + // deprecate this + // if this isn't in the binary tree + // it's some internal widget so always display those + if w.node == nil { + w.drawView() + return + } + + // deprecate this + // always show window titles + if w.node.WidgetType == widget.Window { + w.drawView() + return + } + + /* + // if the widget is not in the current displayed windo + if !w.IsCurrent() { + // log.Log(GOCUI, "Show() w.IsCurrent == false. NOT drawing", w.cuiName, w.String()) + return + } + */ + + // this comes from the application developer + // finally, check if the widget State is hidden or not + if w.node.Hidden() { + // log.Log(GOCUI, "Show() w.node.Hidden() = false. not drawing", w.cuiName, w.String()) + // don't display hidden widgets + return + } + // log.Log(GOCUI, "Show() doing w.drawView()", w.cuiName, w.String()) + w.drawView() +} diff --git a/treeWidget.go b/treeWidget.go index 3d69788..784aac4 100644 --- a/treeWidget.go +++ b/treeWidget.go @@ -103,64 +103,6 @@ func (tk *guiWidget) Visible() bool { return true } -func (w *guiWidget) Show() { - // always should the dropdown widget - /* - if w == me.dropdownV { - me.dropdownV.drawView() - return - } - */ - - // don't display fake widgets - if w.isFake { - return - } - - // if this isn't in the binary tree - // it's some internal widget so always display those - if w.node == nil { - w.drawView() - return - } - - // always show window titles - if w.node.WidgetType == widget.Window { - w.drawView() - return - } - - /* - if w.node.WidgetType == widget.Dropdown { - log.Log(NOW, "Show() dropdown", w.cuiName, w.String()) - log.Log(NOW, "Show() dropdown n.Strings() =", w.node.Strings()) - } - if w.node.WidgetType == widget.Combobox { - log.Log(NOW, "Show() dropdown", w.cuiName, w.String()) - log.Log(NOW, "Show() dropdown n.Strings() =", w.node.Strings()) - } - */ - - // if the widget is not in the current displayed windo - // then ignore it - // log.Log(GOCUI, "Show() widget =", w.cuiName, w.String()) - // log.Log(GOCUI, "Show() w.IsCurrent() returned", w.IsCurrent()) - if !w.IsCurrent() { - // log.Log(GOCUI, "Show() w.IsCurrent == false. NOT drawing", w.cuiName, w.String()) - return - } - - // finally, check if the widget State is hidden or not - if w.node.Hidden() { - // log.Log(GOCUI, "Show() w.node.Hidden() = false. not drawing", w.cuiName, w.String()) - // don't display hidden widgets - return - } - // log.Log(GOCUI, "Show() doing w.drawView()", w.cuiName, w.String()) - // okay, if you made it this far, then display the widget - w.drawView() -} - func (tk *guiWidget) Hide() { tk.deleteView() } diff --git a/window.go b/window.go index 36e1aed..ed9debe 100644 --- a/window.go +++ b/window.go @@ -4,18 +4,23 @@ package main import ( + "fmt" + "go.wit.com/widget" ) // re-draws the buttons for each of the windows -func (w *guiWidget) redoWindows(nextW int, nextH int) { - var startW int = nextW - var startH int = nextH +func (tk *guiWidget) redoWindows(nextW int, nextH int) { - for _, child := range w.children { + for _, child := range tk.children { if child.node.WidgetType != widget.Window { continue } + child.gocuiSize.w0 = nextW + child.gocuiSize.h0 = nextH + + tmp := fmt.Sprintf("redoWindowsS (%d,%d)", nextW, nextH) + child.dumpWidget(tmp) child.frame = false child.hasTabs = false @@ -23,10 +28,18 @@ func (w *guiWidget) redoWindows(nextW int, nextH int) { // this should make the window the full size and re-draw it child.setFullSize() // child.gocuiSetWH(nextW, nextH) child.Hide() - child.drawView() + child.DrawAt(nextW, nextH) + child.Show() - sizeW := child.gocuiSize.Width() - nextW += sizeW + 4 - child.redoWindows(startW+3, startH+2) + tmp = fmt.Sprintf("redoWindowsE (%d,%d)", nextW, nextH) + child.dumpWidget(tmp) + + nextW += child.gocuiSize.Width() + 4 + child.redoWindows(nextW, nextH) + /* + sizeW := child.gocuiSize.Width() + nextW += sizeW + 4 + child.redoWindows(startW+3, startH+2) + */ } }