From aaa795245a446e3719f025aa2463bbe126d2f2de Mon Sep 17 00:00:00 2001 From: Noah Petherbridge Date: Fri, 19 Apr 2019 15:08:00 -0700 Subject: [PATCH] UI: Fix packing bug in the GUITest --- frame_pack.go | 16 ++++++++-------- label.go | 2 +- widget.go | 13 +++++++++++-- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/frame_pack.go b/frame_pack.go index a4fe769..cece214 100644 --- a/frame_pack.go +++ b/frame_pack.go @@ -86,12 +86,12 @@ func (w *Frame) computePacked(e render.Engine) { xDirection int32 = 1 ) - if anchor.IsSouth() { // TODO: these need tuning + if anchor.IsSouth() { y = frameSize.H - w.BoxThickness(4) - yDirection = -1 * w.BoxThickness(4) // parent + child BoxThickness(1) = 2 - } else if anchor == E { + yDirection = -1 + } else if anchor.IsEast() { x = frameSize.W - w.BoxThickness(4) - xDirection = -1 - w.BoxThickness(4) // - w.BoxThickness(2) + xDirection = -1 } for _, packedWidget := range w.packs[anchor] { @@ -104,8 +104,8 @@ func (w *Frame) computePacked(e render.Engine) { continue } - x += pack.PadX - y += pack.PadY + x += pack.PadX * xDirection + y += pack.PadY * yDirection var ( // point = child.Point() @@ -150,8 +150,8 @@ func (w *Frame) computePacked(e render.Engine) { if len(expanded) > 0 && !frameSize.IsZero() && frameSize.Bigger(computedSize) { // Divy up the size available. growBy := render.Rect{ - W: ((frameSize.W - computedSize.W) / int32(len(expanded))), // - w.BoxThickness(2), - H: ((frameSize.H - computedSize.H) / int32(len(expanded))), // - w.BoxThickness(2), + W: ((frameSize.W - computedSize.W) / int32(len(expanded))) - w.BoxThickness(4), + H: ((frameSize.H - computedSize.H) / int32(len(expanded))) - w.BoxThickness(4), } for _, pw := range expanded { pw.widget.ResizeBy(growBy) diff --git a/label.go b/label.go index d970637..cf18910 100644 --- a/label.go +++ b/label.go @@ -91,7 +91,7 @@ func (w *Label) Compute(e render.Engine) { ) if !w.FixedSize() { - w.resizeAuto(render.Rect{ + w.ResizeAuto(render.Rect{ W: maxRect.W + (padX * 2), H: maxRect.H + (padY * 2), }) diff --git a/widget.go b/widget.go index e7b2328..57a00a2 100644 --- a/widget.go +++ b/widget.go @@ -1,6 +1,8 @@ package ui import ( + "fmt" + "git.kirsle.net/apps/doodle/lib/render" "git.kirsle.net/apps/doodle/lib/ui/theme" ) @@ -29,6 +31,7 @@ type Widget interface { BoxSize() render.Rect // Return the full size including the border and outline. Resize(render.Rect) ResizeBy(render.Rect) + ResizeAuto(render.Rect) Rect() render.Rect // Return the full absolute rect combining the Size() and Point() Handle(Event, func(render.Point)) @@ -249,8 +252,14 @@ func (w *BaseWidget) ResizeBy(v render.Rect) { w.height += v.H } -// resizeAuto sets the size of the widget but doesn't set the fixedSize flag. -func (w *BaseWidget) resizeAuto(v render.Rect) { +// ResizeAuto sets the size of the widget but doesn't set the fixedSize flag. +func (w *BaseWidget) ResizeAuto(v render.Rect) { + if w.ID() == "Frame" { + fmt.Printf("%s: ResizeAuto Called: %+v\n", + w.ID(), + v, + ) + } w.width = v.W w.height = v.H }