diff --git a/widget/list.go b/widget/list.go index f10e0eba8a..73ad66a09d 100644 --- a/widget/list.go +++ b/widget/list.go @@ -317,8 +317,7 @@ type listItemRenderer struct { // This is based on the size of the status indicator and the size of the child object. func (li *listItemRenderer) MinSize() (size fyne.Size) { itemSize := li.item.child.MinSize() - size = fyne.NewSize(itemSize.Width+theme.Padding()*3, - itemSize.Height+theme.Padding()*2) + size = fyne.NewSize(itemSize.Width+theme.Padding(), itemSize.Height) return } @@ -326,8 +325,8 @@ func (li *listItemRenderer) MinSize() (size fyne.Size) { func (li *listItemRenderer) Layout(size fyne.Size) { li.item.background.Resize(size) - li.item.child.Move(fyne.NewPos(theme.Padding()*2, theme.Padding())) - li.item.child.Resize(fyne.NewSize(size.Width-theme.Padding()*3, size.Height-theme.Padding()*2)) + li.item.child.Move(fyne.NewPos(theme.Padding(), 0)) + li.item.child.Resize(fyne.NewSize(size.Width-theme.Padding(), size.Height)) } func (li *listItemRenderer) Refresh() { diff --git a/widget/list_test.go b/widget/list_test.go index 1451d52908..698cbeb451 100644 --- a/widget/list_test.go +++ b/widget/list_test.go @@ -38,7 +38,7 @@ func TestList_MinSize(t *testing.T) { }, "large": { fyne.NewSize(100, 100), - fyne.NewSize(100+3*theme.Padding(), 100+2*theme.Padding()), + fyne.NewSize(100+theme.Padding(), 100), }, } { t.Run(name, func(t *testing.T) { @@ -108,17 +108,17 @@ func TestList_ScrollTo(t *testing.T) { assert.Equal(t, offset, list.offsetY) assert.Equal(t, offset, list.scroller.Offset.Y) - offset = float32(8245) + offset = float32(6637) list.ScrollTo(200) assert.Equal(t, offset, list.offsetY) assert.Equal(t, offset, list.scroller.Offset.Y) - offset = float32(44999) + offset = float32(36999) list.ScrollTo(999) assert.Equal(t, offset, list.offsetY) assert.Equal(t, offset, list.scroller.Offset.Y) - offset = float32(23000) + offset = float32(19000) list.ScrollTo(500) assert.Equal(t, offset, list.offsetY) assert.Equal(t, offset, list.scroller.Offset.Y) @@ -127,7 +127,7 @@ func TestList_ScrollTo(t *testing.T) { assert.Equal(t, offset, list.offsetY) assert.Equal(t, offset, list.scroller.Offset.Y) - offset = float32(46) + offset = float32(38) list.ScrollTo(1) assert.Equal(t, offset, list.offsetY) assert.Equal(t, offset, list.scroller.Offset.Y) @@ -136,7 +136,7 @@ func TestList_ScrollTo(t *testing.T) { func TestList_ScrollToBottom(t *testing.T) { list := createList(1000) - offset := float32(44999) + offset := float32(36999) list.ScrollToBottom() assert.Equal(t, offset, list.offsetY) assert.Equal(t, offset, list.scroller.Offset.Y) @@ -187,19 +187,19 @@ func TestList_Select(t *testing.T) { assert.Equal(t, float32(0), list.offsetY) list.Select(50) - assert.Equal(t, float32(1345), list.offsetY) + assert.Equal(t, float32(937), list.offsetY) visible := list.scroller.Content.(*fyne.Container).Layout.(*listLayout).visible assert.Equal(t, visible[50].background.FillColor, theme.FocusColor()) assert.True(t, visible[50].background.Visible()) list.Select(5) - assert.Equal(t, float32(230), list.offsetY) + assert.Equal(t, float32(190), list.offsetY) visible = list.scroller.Content.(*fyne.Container).Layout.(*listLayout).visible assert.Equal(t, visible[5].background.FillColor, theme.FocusColor()) assert.True(t, visible[5].background.Visible()) list.Select(6) - assert.Equal(t, float32(230), list.offsetY) + assert.Equal(t, float32(190), list.offsetY) visible = list.scroller.Content.(*fyne.Container).Layout.(*listLayout).visible assert.False(t, visible[5].background.Visible()) assert.Equal(t, visible[6].background.FillColor, theme.FocusColor()) @@ -369,7 +369,7 @@ func TestList_ScrollThenShrink(t *testing.T) { visibles := list.scroller.Content.(*fyne.Container).Layout.(*listLayout).children visibleCount := len(visibles) - assert.Equal(t, visibleCount, 8) + assert.Equal(t, visibleCount, 9) list.scroller.ScrollToBottom() visibles = list.scroller.Content.(*fyne.Container).Layout.(*listLayout).children diff --git a/widget/table.go b/widget/table.go index f26d353901..9b19249fde 100644 --- a/widget/table.go +++ b/widget/table.go @@ -63,7 +63,7 @@ func (t *Table) CreateRenderer() fyne.WidgetRenderer { colHover := canvas.NewRectangle(theme.HoverColor()) rowHover := canvas.NewRectangle(theme.HoverColor()) - cellSize := t.templateSize().Add(fyne.NewSize(theme.Padding()*2, theme.Padding()*2)) + cellSize := t.templateSize() t.cells = newTableCells(t, cellSize) t.scroll = widget.NewScroll(t.cells) @@ -104,14 +104,14 @@ func (t *Table) Select(id TableCellID) { // SetColumnWidth supports changing the width of the specified column. Columns normally take the width of the template // cell returned from the CreateCell callback. The width parameter uses the same units as a fyne.Size type and refers -// to the internal content width not including any standard padding or divider size. +// to the internal content width not including the divider size. // // Since: 1.4.1 func (t *Table) SetColumnWidth(id int, width float32) { if t.columnWidths == nil { t.columnWidths = make(map[int]float32) } - t.columnWidths[id] = width + 2*theme.Padding() // The API uses content size so it's consistent with templates + t.columnWidths[id] = width t.Refresh() } @@ -157,8 +157,7 @@ func (t *Table) scrollTo(id TableCellID) { } scrollPos := t.offset - minSize := t.templateSize() - cellPadded := minSize.Add(fyne.NewSize(theme.Padding()*2, theme.Padding()*2)) + cellSize := t.templateSize() cellX := float32(0) cellWidth := float32(0) for i := 0; i <= id.Col; i++ { @@ -166,7 +165,7 @@ func (t *Table) scrollTo(id TableCellID) { cellX += cellWidth + theme.SeparatorThicknessSize() } - width := cellPadded.Width + width := cellSize.Width if w, ok := t.columnWidths[i]; ok { width = w } @@ -179,11 +178,11 @@ func (t *Table) scrollTo(id TableCellID) { scrollPos.X = cellX + cellWidth - t.scroll.Size().Width } - cellY := float32(id.Row) * (cellPadded.Height + theme.SeparatorThicknessSize()) + cellY := float32(id.Row) * (cellSize.Height + theme.SeparatorThicknessSize()) if cellY < scrollPos.Y { scrollPos.Y = cellY - } else if cellY+cellPadded.Height > scrollPos.Y+t.scroll.Size().Height { - scrollPos.Y = cellY + cellPadded.Height - t.scroll.Size().Height + } else if cellY+cellSize.Height > scrollPos.Y+t.scroll.Size().Height { + scrollPos.Y = cellY + cellSize.Height - t.scroll.Size().Height } t.scroll.Offset = scrollPos t.offset = scrollPos @@ -268,7 +267,7 @@ func (t *tableRenderer) MinSize() fyne.Size { } func (t *tableRenderer) Refresh() { - t.cellSize = t.t.templateSize().Add(fyne.NewSize(theme.Padding()*2, theme.Padding()*2)) + t.cellSize = t.t.templateSize() t.moveIndicators() t.colMarker.FillColor = theme.PrimaryColor() @@ -548,7 +547,7 @@ func (r *tableCellsRenderer) Refresh() { r.cells.propertyLock.Lock() defer r.cells.propertyLock.Unlock() oldSize := r.cells.cellSize - r.cells.cellSize = r.cells.t.templateSize().Add(fyne.NewSize(theme.Padding()*2, theme.Padding()*2)) + r.cells.cellSize = r.cells.t.templateSize() if oldSize != r.cells.cellSize { // theme changed probably r.returnAllToPool() } @@ -591,9 +590,9 @@ func (r *tableCellsRenderer) Refresh() { } } - c.Move(fyne.NewPos(theme.Padding()+cellOffset, - theme.Padding()+float32(row)*(r.cells.cellSize.Height+separatorThickness))) - c.Resize(fyne.NewSize(colWidth-theme.Padding()*2, r.cells.cellSize.Height-theme.Padding()*2)) + c.Move(fyne.NewPos(cellOffset, + float32(row)*(r.cells.cellSize.Height+separatorThickness))) + c.Resize(fyne.NewSize(colWidth, r.cells.cellSize.Height)) if updateCell != nil { updateCell(TableCellID{row, col}, c) diff --git a/widget/table_test.go b/widget/table_test.go index 14207318b4..798bd17806 100644 --- a/widget/table_test.go +++ b/widget/table_test.go @@ -112,7 +112,7 @@ func TestTable_MinSize(t *testing.T) { }, "large": { fyne.NewSize(100, 100), - fyne.NewSize(100+3*theme.Padding(), 100+3*theme.Padding()), + fyne.NewSize(100+theme.Padding(), 100+theme.Padding()), }, } { t.Run(name, func(t *testing.T) { @@ -284,9 +284,9 @@ func TestTable_SetColumnWidth(t *testing.T) { renderer := test.WidgetRenderer(table).(*tableRenderer) cellRenderer := test.WidgetRenderer(renderer.scroll.Content.(*tableCells)) cellRenderer.Refresh() - assert.Equal(t, 8, len(cellRenderer.Objects())) + assert.Equal(t, 10, len(cellRenderer.Objects())) assert.Equal(t, float32(32), cellRenderer.(*tableCellsRenderer).Objects()[0].Size().Width) - cell1Offset := theme.SeparatorThicknessSize() + theme.Padding()*3 + cell1Offset := theme.SeparatorThicknessSize() assert.Equal(t, float32(32)+cell1Offset, cellRenderer.(*tableCellsRenderer).Objects()[1].Position().X) table.SetColumnWidth(0, 16) @@ -311,7 +311,7 @@ func TestTable_ShowVisible(t *testing.T) { renderer := test.WidgetRenderer(table).(*tableRenderer) cellRenderer := test.WidgetRenderer(renderer.scroll.Content.(*tableCells)) cellRenderer.Refresh() - assert.Equal(t, 8, len(cellRenderer.Objects())) + assert.Equal(t, 10, len(cellRenderer.Objects())) } func TestTable_SeparatorThicknessZero_NotPanics(t *testing.T) { diff --git a/widget/testdata/list/initial.xml b/widget/testdata/list/initial.xml index 2b4d697e75..962c7423f1 100644 --- a/widget/testdata/list/initial.xml +++ b/widget/testdata/list/initial.xml @@ -2,135 +2,161 @@ - - - + + + - - Test Item 0 + + Test Item 0 - - + + - - Test Item 1 + + Test Item 1 - - + + - - Test Item 2 + + Test Item 2 - - + + - - Test Item 3 + + Test Item 3 - - + + - - Test Item 4 + + Test Item 4 - - + + - - Test Item 5 + + Test Item 5 - - + + - - Test Item 6 + + Test Item 6 - - + + - - Test Item 7 + + Test Item 7 - - + + - - Test Item 8 + + Test Item 8 - - + + - - Test Item 9 + + Test Item 9 + + + + + + + + + + Test Item 10 + + + + + + + + + + Test Item 11 - + + + + + + + - + - + - + - + - + - + - + - + diff --git a/widget/testdata/list/item_removed.xml b/widget/testdata/list/item_removed.xml index 6fe4031254..71c1dea5fa 100644 --- a/widget/testdata/list/item_removed.xml +++ b/widget/testdata/list/item_removed.xml @@ -3,8 +3,8 @@ - - + + @@ -13,8 +13,8 @@ - - + + @@ -26,7 +26,7 @@ - + diff --git a/widget/testdata/list/list_initial.png b/widget/testdata/list/list_initial.png index c1f4440fa5..bf8ef41afe 100644 Binary files a/widget/testdata/list/list_initial.png and b/widget/testdata/list/list_initial.png differ diff --git a/widget/testdata/list/list_theme_changed.png b/widget/testdata/list/list_theme_changed.png index cbd34d58b5..363a130ce9 100644 Binary files a/widget/testdata/list/list_theme_changed.png and b/widget/testdata/list/list_theme_changed.png differ diff --git a/widget/testdata/list/new_data.xml b/widget/testdata/list/new_data.xml index 6904b30a5b..dde58f67fe 100644 --- a/widget/testdata/list/new_data.xml +++ b/widget/testdata/list/new_data.xml @@ -2,141 +2,167 @@ - - - + + + - - a + + a - - + + - - b + + b - - + + - - c + + c - - + + - - d + + d - - + + - - e + + e - - + + - - f + + f - - + + - - g + + g - - + + - - h + + h - - + + - - i + + i - - + + - - j + + j + + + + + + + + + + k + + + + + + + + + + l - + + + + + + + - + - + - + - + - + - + - + - + - - + + diff --git a/widget/testdata/list/offset_changed.xml b/widget/testdata/list/offset_changed.xml index a2b1b1d97f..fb687b70dc 100644 --- a/widget/testdata/list/offset_changed.xml +++ b/widget/testdata/list/offset_changed.xml @@ -2,135 +2,161 @@ - - - + + + - - Test Item 6 + + Test Item 7 - - + + - - Test Item 7 + + Test Item 8 - - + + - - Test Item 8 + + Test Item 9 - - + + - - Test Item 9 + + Test Item 10 - - + + - - Test Item 10 + + Test Item 11 - - + + - - Test Item 11 + + Test Item 12 - - + + - - Test Item 12 + + Test Item 13 - - + + - - Test Item 13 + + Test Item 14 - - + + - - Test Item 14 + + Test Item 15 - - + + - - Test Item 15 + + Test Item 16 + + + + + + + + + + Test Item 17 + + + + + + + + + + Test Item 18 - + + + + + + + - + - + - + - + - + - + - + - + diff --git a/widget/testdata/list/resized.xml b/widget/testdata/list/resized.xml index 50f0aee11f..0377ddc87d 100644 --- a/widget/testdata/list/resized.xml +++ b/widget/testdata/list/resized.xml @@ -2,187 +2,226 @@ - - - + + + - - Test Item 0 + + Test Item 0 - - + + - - Test Item 1 + + Test Item 1 - - + + - - Test Item 2 + + Test Item 2 - - + + - - Test Item 3 + + Test Item 3 - - + + - - Test Item 4 + + Test Item 4 - - + + - - Test Item 5 + + Test Item 5 - - + + - - Test Item 6 + + Test Item 6 - - + + - - Test Item 7 + + Test Item 7 - - + + - - Test Item 8 + + Test Item 8 - - + + - - Test Item 9 + + Test Item 9 - - + + - - Test Item 10 + + Test Item 10 - - + + - - Test Item 11 + + Test Item 11 - - + + - - Test Item 12 + + Test Item 12 - - + + - - Test Item 13 + + Test Item 13 + + + + + + + + + + Test Item 14 + + + + + + + + + + Test Item 15 + + + + + + + + + + Test Item 16 - + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/widget/testdata/list/small.xml b/widget/testdata/list/small.xml index e6925f72b7..c215020867 100644 --- a/widget/testdata/list/small.xml +++ b/widget/testdata/list/small.xml @@ -3,8 +3,8 @@ - - + + @@ -13,8 +13,8 @@ - - + + @@ -26,7 +26,7 @@ - + diff --git a/widget/testdata/table/col_size.png b/widget/testdata/table/col_size.png index d69bd15d26..518124eb00 100644 Binary files a/widget/testdata/table/col_size.png and b/widget/testdata/table/col_size.png differ diff --git a/widget/testdata/table/desktop/hovered.xml b/widget/testdata/table/desktop/hovered.xml index 8a09fce9c9..e554fee6f2 100644 --- a/widget/testdata/table/desktop/hovered.xml +++ b/widget/testdata/table/desktop/hovered.xml @@ -2,49 +2,52 @@ - - + + Cell 0, 0 - + Cell 0, 1 - + Cell 1, 0 - + Cell 1, 1 - + Cell 2, 0 - + Cell 2, 1 - - + + - - - + + + - + - + + + + diff --git a/widget/testdata/table/desktop/hovered_out.xml b/widget/testdata/table/desktop/hovered_out.xml index 357c4bddb4..2d0467ef87 100644 --- a/widget/testdata/table/desktop/hovered_out.xml +++ b/widget/testdata/table/desktop/hovered_out.xml @@ -2,33 +2,33 @@ - - + + Cell 0, 0 - + Cell 0, 1 - + Cell 1, 0 - + Cell 1, 1 - - + + - + - + @@ -37,6 +37,9 @@ + + + diff --git a/widget/testdata/table/filled.png b/widget/testdata/table/filled.png index 4c1e445f23..fdab8bb6e3 100644 Binary files a/widget/testdata/table/filled.png and b/widget/testdata/table/filled.png differ diff --git a/widget/testdata/table/selected.xml b/widget/testdata/table/selected.xml index 4e6f96de23..027d3d4d60 100644 --- a/widget/testdata/table/selected.xml +++ b/widget/testdata/table/selected.xml @@ -2,67 +2,70 @@ - - + + Cell 0, 0 - + Cell 0, 1 - + Cell 1, 0 - + Cell 1, 1 - + Cell 2, 0 - + Cell 2, 1 - + Cell 3, 0 - + Cell 3, 1 - + Cell 4, 0 - + Cell 4, 1 - - + + - - + + - - - + + + - + - + - + + + + diff --git a/widget/testdata/table/selected_scrolled.xml b/widget/testdata/table/selected_scrolled.xml index 46e362c394..f6d4e3f350 100644 --- a/widget/testdata/table/selected_scrolled.xml +++ b/widget/testdata/table/selected_scrolled.xml @@ -2,43 +2,49 @@ - - + + + Cell 0, 2 + + + Cell 0, 3 + + Cell 1, 2 - + Cell 1, 3 - + Cell 2, 2 - + Cell 2, 3 - + Cell 3, 2 - + Cell 3, 3 - + Cell 4, 2 - + Cell 4, 3 - - + + - - + + @@ -48,18 +54,21 @@ - - - + + + - + + + + - + - + diff --git a/widget/testdata/table/theme_changed.png b/widget/testdata/table/theme_changed.png index 296f5b702d..db490fca53 100644 Binary files a/widget/testdata/table/theme_changed.png and b/widget/testdata/table/theme_changed.png differ diff --git a/widget/testdata/table/theme_initial.png b/widget/testdata/table/theme_initial.png index 11c0cbecad..f0b4a1d101 100644 Binary files a/widget/testdata/table/theme_initial.png and b/widget/testdata/table/theme_initial.png differ diff --git a/widget/testdata/tree/layout_multiple.xml b/widget/testdata/tree/layout_multiple.xml index c621337a69..d21ff12dc7 100644 --- a/widget/testdata/tree/layout_multiple.xml +++ b/widget/testdata/tree/layout_multiple.xml @@ -3,31 +3,31 @@ - - - A + + + A - + - + - - - B + + + B - + - + - - - 44444444444444444444 + + + 44444444444444444444 diff --git a/widget/testdata/tree/layout_multiple_branch.xml b/widget/testdata/tree/layout_multiple_branch.xml index 634d99843b..962324909a 100644 --- a/widget/testdata/tree/layout_multiple_branch.xml +++ b/widget/testdata/tree/layout_multiple_branch.xml @@ -3,22 +3,22 @@ - - - A + + + A - + - + - - - B + + + B - + diff --git a/widget/testdata/tree/layout_multiple_branch_opened.xml b/widget/testdata/tree/layout_multiple_branch_opened.xml index 95dcc06899..76664279ac 100644 --- a/widget/testdata/tree/layout_multiple_branch_opened.xml +++ b/widget/testdata/tree/layout_multiple_branch_opened.xml @@ -2,65 +2,65 @@ - - - + + + A - + - - + + - - + + 11111 - - + + - - + + B - + - - + + - - + + 2222222222 - - + + - - + + C - + - - + + - - + + 333333333333333 - - + + diff --git a/widget/testdata/tree/layout_multiple_branch_opened_leaf_selected.xml b/widget/testdata/tree/layout_multiple_branch_opened_leaf_selected.xml index 117e26f158..12b4b29dc2 100644 --- a/widget/testdata/tree/layout_multiple_branch_opened_leaf_selected.xml +++ b/widget/testdata/tree/layout_multiple_branch_opened_leaf_selected.xml @@ -2,66 +2,66 @@ - - - + + + A - + - - + + - - + + 11111 - - + + - - + + B - + - - + + - - - + + + 2222222222 - - + + - - + + C - + - - + + - - + + 333333333333333 - - + + diff --git a/widget/testdata/tree/layout_multiple_branch_opened_selected.xml b/widget/testdata/tree/layout_multiple_branch_opened_selected.xml index ec4012e880..d9d7801340 100644 --- a/widget/testdata/tree/layout_multiple_branch_opened_selected.xml +++ b/widget/testdata/tree/layout_multiple_branch_opened_selected.xml @@ -2,66 +2,66 @@ - - - + + + A - + - - + + - - + + 11111 - - + + - - - + + + B - + - - + + - - + + 2222222222 - - + + - - + + C - + - - + + - - + + 333333333333333 - - + + diff --git a/widget/testdata/tree/layout_multiple_branch_selected.xml b/widget/testdata/tree/layout_multiple_branch_selected.xml index ee26d9bb09..1f9a171d90 100644 --- a/widget/testdata/tree/layout_multiple_branch_selected.xml +++ b/widget/testdata/tree/layout_multiple_branch_selected.xml @@ -3,23 +3,23 @@ - - - A + + + A - + - + - - - - B + + + + B - + diff --git a/widget/testdata/tree/layout_multiple_leaf.xml b/widget/testdata/tree/layout_multiple_leaf.xml index 51fc428d34..209bbf9659 100644 --- a/widget/testdata/tree/layout_multiple_leaf.xml +++ b/widget/testdata/tree/layout_multiple_leaf.xml @@ -3,33 +3,33 @@ - - - 11111 + + + 11111 - + - - - 2222222222 + + + 2222222222 - + - - - 333333333333333 + + + 333333333333333 - + - - - 44444444444444444444 + + + 44444444444444444444 diff --git a/widget/testdata/tree/layout_multiple_leaf_selected.xml b/widget/testdata/tree/layout_multiple_leaf_selected.xml index de4baca4b6..e7a8d2e5a7 100644 --- a/widget/testdata/tree/layout_multiple_leaf_selected.xml +++ b/widget/testdata/tree/layout_multiple_leaf_selected.xml @@ -3,34 +3,34 @@ - - - 11111 + + + 11111 - + - - - - 2222222222 + + + + 2222222222 - + - - - 333333333333333 + + + 333333333333333 - + - - - 44444444444444444444 + + + 44444444444444444444 diff --git a/widget/testdata/tree/layout_multiple_selected.xml b/widget/testdata/tree/layout_multiple_selected.xml index 06aaa1f8c4..de76f1fb46 100644 --- a/widget/testdata/tree/layout_multiple_selected.xml +++ b/widget/testdata/tree/layout_multiple_selected.xml @@ -3,32 +3,32 @@ - - - A + + + A - + - + - - - B + + + B - + - + - - - - 44444444444444444444 + + + + 44444444444444444444 diff --git a/widget/testdata/tree/layout_single_branch.xml b/widget/testdata/tree/layout_single_branch.xml index d6284b8afd..6e2ed17e90 100644 --- a/widget/testdata/tree/layout_single_branch.xml +++ b/widget/testdata/tree/layout_single_branch.xml @@ -3,11 +3,11 @@ - - - A + + + A - + diff --git a/widget/testdata/tree/layout_single_branch_opened.xml b/widget/testdata/tree/layout_single_branch_opened.xml index e26b41d89d..ec405b680c 100644 --- a/widget/testdata/tree/layout_single_branch_opened.xml +++ b/widget/testdata/tree/layout_single_branch_opened.xml @@ -3,20 +3,20 @@ - - - A + + + A - + - + - - - 11111 + + + 11111 diff --git a/widget/testdata/tree/layout_single_branch_opened_leaf_selected.xml b/widget/testdata/tree/layout_single_branch_opened_leaf_selected.xml index 9339d595cf..a212c28dd1 100644 --- a/widget/testdata/tree/layout_single_branch_opened_leaf_selected.xml +++ b/widget/testdata/tree/layout_single_branch_opened_leaf_selected.xml @@ -3,21 +3,21 @@ - - - A + + + A - + - + - - - - 11111 + + + + 11111 diff --git a/widget/testdata/tree/layout_single_branch_opened_selected.xml b/widget/testdata/tree/layout_single_branch_opened_selected.xml index fd64395d70..22aae1af60 100644 --- a/widget/testdata/tree/layout_single_branch_opened_selected.xml +++ b/widget/testdata/tree/layout_single_branch_opened_selected.xml @@ -3,21 +3,21 @@ - - - - A + + + + A - + - + - - - 11111 + + + 11111 diff --git a/widget/testdata/tree/layout_single_branch_selected.xml b/widget/testdata/tree/layout_single_branch_selected.xml index 69bc69a3b7..caf619bee4 100644 --- a/widget/testdata/tree/layout_single_branch_selected.xml +++ b/widget/testdata/tree/layout_single_branch_selected.xml @@ -3,12 +3,12 @@ - - - - A + + + + A - + diff --git a/widget/testdata/tree/layout_single_leaf.xml b/widget/testdata/tree/layout_single_leaf.xml index a8a42438a9..8ecedc6153 100644 --- a/widget/testdata/tree/layout_single_leaf.xml +++ b/widget/testdata/tree/layout_single_leaf.xml @@ -3,9 +3,9 @@ - - - 11111 + + + 11111 diff --git a/widget/testdata/tree/layout_single_leaf_selected.xml b/widget/testdata/tree/layout_single_leaf_selected.xml index 5fa2f76b45..ef8cf8e02d 100644 --- a/widget/testdata/tree/layout_single_leaf_selected.xml +++ b/widget/testdata/tree/layout_single_leaf_selected.xml @@ -3,10 +3,10 @@ - - - - 11111 + + + + 11111 diff --git a/widget/testdata/tree/move_initial.xml b/widget/testdata/tree/move_initial.xml index a42b39fc36..19273b1458 100644 --- a/widget/testdata/tree/move_initial.xml +++ b/widget/testdata/tree/move_initial.xml @@ -3,20 +3,20 @@ - - - foo + + + foo - + - + - - - foobar + + + foobar diff --git a/widget/testdata/tree/move_moved.xml b/widget/testdata/tree/move_moved.xml index d21251f214..71599a4ed4 100644 --- a/widget/testdata/tree/move_moved.xml +++ b/widget/testdata/tree/move_moved.xml @@ -3,20 +3,20 @@ - - - foo + + + foo - + - + - - - foobar + + + foobar diff --git a/widget/testdata/tree/refresh_initial.png b/widget/testdata/tree/refresh_initial.png index ef41cd93fa..517be18d6f 100644 Binary files a/widget/testdata/tree/refresh_initial.png and b/widget/testdata/tree/refresh_initial.png differ diff --git a/widget/testdata/tree/refresh_replaced.png b/widget/testdata/tree/refresh_replaced.png index 0c8ebb16ea..c21d07323d 100644 Binary files a/widget/testdata/tree/refresh_replaced.png and b/widget/testdata/tree/refresh_replaced.png differ diff --git a/widget/testdata/tree/theme_changed.png b/widget/testdata/tree/theme_changed.png index 7859904ae6..c5b0c64daa 100644 Binary files a/widget/testdata/tree/theme_changed.png and b/widget/testdata/tree/theme_changed.png differ diff --git a/widget/testdata/tree/theme_initial.png b/widget/testdata/tree/theme_initial.png index 2935b177ec..ed5f585c9e 100644 Binary files a/widget/testdata/tree/theme_initial.png and b/widget/testdata/tree/theme_initial.png differ diff --git a/widget/tree.go b/widget/tree.go index f9c3334636..dd2be6bf16 100644 --- a/widget/tree.go +++ b/widget/tree.go @@ -667,21 +667,18 @@ type treeNodeRenderer struct { } func (r *treeNodeRenderer) Layout(size fyne.Size) { - x := float32(0) + x := theme.Padding() + r.treeNode.Indent() y := float32(0) r.background.Resize(size) - h := size.Height - 2*theme.Padding() - x += theme.Padding() + r.treeNode.Indent() - y += theme.Padding() if r.treeNode.icon != nil { r.treeNode.icon.Move(fyne.NewPos(x, y)) - r.treeNode.icon.Resize(fyne.NewSize(theme.IconInlineSize(), h)) + r.treeNode.icon.Resize(fyne.NewSize(theme.IconInlineSize(), size.Height)) } x += theme.IconInlineSize() x += theme.Padding() if r.treeNode.content != nil { r.treeNode.content.Move(fyne.NewPos(x, y)) - r.treeNode.content.Resize(fyne.NewSize(size.Width-x-theme.Padding(), h)) + r.treeNode.content.Resize(fyne.NewSize(size.Width-x, size.Height)) } } @@ -689,10 +686,8 @@ func (r *treeNodeRenderer) MinSize() (min fyne.Size) { if r.treeNode.content != nil { min = r.treeNode.content.MinSize() } - min.Width += theme.Padding() + r.treeNode.Indent() + theme.IconInlineSize() - min.Width += 2 * theme.Padding() + min.Width += theme.Padding()*2 + r.treeNode.Indent() + theme.IconInlineSize() min.Height = fyne.Max(min.Height, theme.IconInlineSize()) - min.Height += 2 * theme.Padding() return } diff --git a/widget/tree_internal_test.go b/widget/tree_internal_test.go index 7c73782f29..3196e7cb11 100644 --- a/widget/tree_internal_test.go +++ b/widget/tree_internal_test.go @@ -17,7 +17,6 @@ import ( var ( treeSize = float32(200) templateMinSize = NewLabel("Template Object").MinSize() - doublePadding = 2 * theme.Padding() ) func indentation() float32 { @@ -195,8 +194,8 @@ func TestTree_Resize(t *testing.T) { tree.OpenBranch("B") separatorThickness := theme.SeparatorThicknessSize() - width := templateMinSize.Width + indentation() + theme.IconInlineSize() + doublePadding + theme.Padding() - height := (fyne.Max(templateMinSize.Height, theme.IconInlineSize())+doublePadding)*3 + separatorThickness*2 + width := templateMinSize.Width + indentation() + theme.IconInlineSize() + theme.Padding()*2 + height := fyne.Max(templateMinSize.Height, theme.IconInlineSize())*3 + separatorThickness*2 assertTreeContentMinSize(t, tree, fyne.NewSize(width, height)) a := getLeaf(t, tree, "A") @@ -206,17 +205,17 @@ func TestTree_Resize(t *testing.T) { assert.Equal(t, float32(0), a.Position().X) assert.Equal(t, float32(0), a.Position().Y) assert.Equal(t, treeSize, a.Size().Width) - assert.Equal(t, fyne.Max(templateMinSize.Height, theme.IconInlineSize())+doublePadding, a.Size().Height) + assert.Equal(t, fyne.Max(templateMinSize.Height, theme.IconInlineSize()), a.Size().Height) assert.Equal(t, float32(0), b.Position().X) - assert.Equal(t, fyne.Max(templateMinSize.Height, theme.IconInlineSize())+doublePadding+separatorThickness, b.Position().Y) + assert.Equal(t, fyne.Max(templateMinSize.Height, theme.IconInlineSize())+separatorThickness, b.Position().Y) assert.Equal(t, treeSize, b.Size().Width) - assert.Equal(t, fyne.Max(templateMinSize.Height, theme.IconInlineSize())+doublePadding, b.Size().Height) + assert.Equal(t, fyne.Max(templateMinSize.Height, theme.IconInlineSize()), b.Size().Height) assert.Equal(t, float32(0), c.Position().X) - assert.Equal(t, 2*(fyne.Max(templateMinSize.Height, theme.IconInlineSize())+doublePadding+separatorThickness), c.Position().Y) + assert.Equal(t, 2*(fyne.Max(templateMinSize.Height, theme.IconInlineSize())+separatorThickness), c.Position().Y) assert.Equal(t, treeSize, c.Size().Width) - assert.Equal(t, fyne.Max(templateMinSize.Height, theme.IconInlineSize())+doublePadding, c.Size().Height) + assert.Equal(t, fyne.Max(templateMinSize.Height, theme.IconInlineSize()), c.Size().Height) } func TestTree_MinSize(t *testing.T) { @@ -236,17 +235,17 @@ func TestTree_MinSize(t *testing.T) { "small": { fyne.NewSize(1, 1), fyne.NewSize(1, 1), - fyne.NewSize(fyne.Max(1+3*theme.Padding()+theme.IconInlineSize(), float32(32)), float32(32)), + fyne.NewSize(fyne.Max(1+2*theme.Padding()+theme.IconInlineSize(), float32(32)), float32(32)), }, "large-leaf": { fyne.NewSize(100, 100), fyne.NewSize(1, 1), - fyne.NewSize(100+3*theme.Padding()+theme.IconInlineSize(), 100+2*theme.Padding()), + fyne.NewSize(100+2*theme.Padding()+theme.IconInlineSize(), 100), }, "large-branch": { fyne.NewSize(1, 1), fyne.NewSize(100, 100), - fyne.NewSize(100+3*theme.Padding()+theme.IconInlineSize(), 100+2*theme.Padding()), + fyne.NewSize(100+2*theme.Padding()+theme.IconInlineSize(), 100), }, } { t.Run(name, func(t *testing.T) { @@ -279,8 +278,8 @@ func TestTree_MinSize(t *testing.T) { }, }, want: fyne.NewSize( - templateMinSize.Width+theme.Padding()+theme.IconInlineSize()+doublePadding, - fyne.Max(templateMinSize.Height, theme.IconInlineSize())+doublePadding, + templateMinSize.Width+2*theme.Padding()+theme.IconInlineSize(), + fyne.Max(templateMinSize.Height, theme.IconInlineSize()), ), }, "single_item_opened": { @@ -291,8 +290,8 @@ func TestTree_MinSize(t *testing.T) { }, opened: []string{"A"}, want: fyne.NewSize( - templateMinSize.Width+indentation()+theme.Padding()+theme.IconInlineSize()+doublePadding, - (fyne.Max(templateMinSize.Height, theme.IconInlineSize())+doublePadding)*2+separatorThickness, + templateMinSize.Width+indentation()+2*theme.Padding()+theme.IconInlineSize(), + (fyne.Max(templateMinSize.Height, theme.IconInlineSize()))*2+separatorThickness, ), }, "multiple_items": { @@ -308,8 +307,8 @@ func TestTree_MinSize(t *testing.T) { }, }, want: fyne.NewSize( - templateMinSize.Width+theme.Padding()+theme.IconInlineSize()+doublePadding, - (fyne.Max(templateMinSize.Height, theme.IconInlineSize())+doublePadding)*2+separatorThickness, + templateMinSize.Width+2*theme.Padding()+theme.IconInlineSize(), + (fyne.Max(templateMinSize.Height, theme.IconInlineSize()))*2+separatorThickness, ), }, "multiple_items_opened": { @@ -326,8 +325,8 @@ func TestTree_MinSize(t *testing.T) { }, opened: []string{"A", "B", "C"}, want: fyne.NewSize( - templateMinSize.Width+2*indentation()+doublePadding+theme.IconInlineSize()+theme.Padding(), - (fyne.Max(templateMinSize.Height, theme.IconInlineSize())+doublePadding)*6+(5*separatorThickness), + templateMinSize.Width+2*indentation()+theme.IconInlineSize()+2*theme.Padding(), + (fyne.Max(templateMinSize.Height, theme.IconInlineSize()))*6+(5*separatorThickness), ), }, } {