diff --git a/canvas_test.go b/canvas_test.go index 1632ab81ee..22508b65f6 100644 --- a/canvas_test.go +++ b/canvas_test.go @@ -1,2 +1 @@ package fyne - diff --git a/desktop/canvas.go b/desktop/canvas.go index 1541a47491..4df15ac5ef 100644 --- a/desktop/canvas.go +++ b/desktop/canvas.go @@ -20,6 +20,7 @@ import "unsafe" import "github.com/fyne-io/fyne" import "github.com/fyne-io/fyne/canvas" import "github.com/fyne-io/fyne/theme" +import "github.com/fyne-io/fyne/layout" var canvases = make(map[*C.Evas]*eflCanvas) @@ -64,6 +65,14 @@ type eflCanvas struct { dirty map[fyne.CanvasObject]bool } +func ignoreObject(o fyne.CanvasObject) bool { + if _, ok := o.(layout.SpacerObject); ok { + return true + } + + return false +} + func (c *eflCanvas) buildObject(o fyne.CanvasObject, target fyne.CanvasObject, offset fyne.Position) *C.Evas_Object { var obj *C.Evas_Object var opts canvas.Options @@ -144,7 +153,9 @@ func (c *eflCanvas) buildContainer(parent fyne.CanvasObject, objs []fyne.CanvasO parent = child } - c.buildObject(child, parent, childOffset) + if !ignoreObject(child) { + c.buildObject(child, parent, childOffset) + } } } @@ -210,6 +221,9 @@ func (c *eflCanvas) refreshObject(o, o2 fyne.CanvasObject) { // TODO a better solution here as objects are added to the UI if obj == nil { + if ignoreObject(o) { + return + } obj = c.buildObject(o, o2, c.offsets[o]) } pos := c.offsets[o].Add(o.CurrentPosition()) @@ -330,7 +344,9 @@ func (c *eflCanvas) setup(o fyne.CanvasObject, offset fyne.Position) { c.buildContainer(set, set.Renderer().Objects(), set.MinSize(), o.CurrentPosition(), offset) default: - c.buildObject(o, o, offset) + if !ignoreObject(o) { + c.buildObject(o, o, offset) + } } C.ecore_thread_main_loop_end() diff --git a/layout/listlayout.go b/layout/listlayout.go index 30b3d913c9..463539177c 100644 --- a/layout/listlayout.go +++ b/layout/listlayout.go @@ -3,7 +3,6 @@ package layout import ( "github.com/fyne-io/fyne" "github.com/fyne-io/fyne/theme" - "log" ) type listLayout struct { @@ -38,7 +37,7 @@ func (g *listLayout) Layout(objects []fyne.CanvasObject, size fyne.Size) { if len(spacers) > 0 { extraCellHeight = int(float64(extraHeight) / float64(len(spacers))) } - log.Println("Missing allocation", extraHeight) + for _, child := range objects { height := child.MinSize().Height if isVerticalSpacer(child) {