From 2a162a86ddfca8570498407c1912589859be292d 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 --- lib/ui/frame_pack.go | 16 ++++++++-------- lib/ui/label.go | 2 +- lib/ui/widget.go | 13 +++++++++++-- pkg/editor_scene.go | 6 +++--- pkg/guitest_scene.go | 4 +++- 5 files changed, 26 insertions(+), 15 deletions(-) diff --git a/lib/ui/frame_pack.go b/lib/ui/frame_pack.go index a4fe769..cece214 100644 --- a/lib/ui/frame_pack.go +++ b/lib/ui/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/lib/ui/label.go b/lib/ui/label.go index d970637..cf18910 100644 --- a/lib/ui/label.go +++ b/lib/ui/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/lib/ui/widget.go b/lib/ui/widget.go index e7b2328..57a00a2 100644 --- a/lib/ui/widget.go +++ b/lib/ui/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 } diff --git a/pkg/editor_scene.go b/pkg/editor_scene.go index 91f45e5..9005093 100644 --- a/pkg/editor_scene.go +++ b/pkg/editor_scene.go @@ -53,9 +53,9 @@ func (s *EditorScene) Setup(d *Doodle) error { s.debSwatch = new(string) s.debWorldIndex = new(string) customDebugLabels = []debugLabel{ - {"Pixel", s.debWorldIndex}, - {"Tool", s.debTool}, - {"Swatch", s.debSwatch}, + {"Pixel:", s.debWorldIndex}, + {"Tool:", s.debTool}, + {"Swatch:", s.debSwatch}, } // Initialize the user interface. It references the palette and such so it diff --git a/pkg/guitest_scene.go b/pkg/guitest_scene.go index 5ebcf28..09afafb 100644 --- a/pkg/guitest_scene.go +++ b/pkg/guitest_scene.go @@ -17,11 +17,12 @@ type GUITestScene struct { // Private widgets. Frame *ui.Frame Window *ui.Frame + body *ui.Frame } // Name of the scene. func (s *GUITestScene) Name() string { - return "Main" + return "GUITest" } // Setup the scene. @@ -64,6 +65,7 @@ func (s *GUITestScene) Setup(d *Doodle) error { Anchor: ui.N, Expand: true, }) + s.body = body // Left Frame leftFrame := ui.NewFrame("Left Frame")