From d41a13f5c91d7f84260f9f5554d36d88b23489ac Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Mon, 15 Feb 2021 13:41:15 +0000 Subject: [PATCH 1/3] Fix the position of elements after SetColumnWidth called Also fix the minsize for the scroller which was ignoring the value Fixes #1951 --- widget/table.go | 23 ++++++++++++++++++----- widget/table_test.go | 8 +++++++- widget/testdata/table/col_size.png | Bin 3590 -> 0 bytes 3 files changed, 25 insertions(+), 6 deletions(-) delete mode 100644 widget/testdata/table/col_size.png diff --git a/widget/table.go b/widget/table.go index f49c6aaee4..24b6922b30 100644 --- a/widget/table.go +++ b/widget/table.go @@ -508,7 +508,20 @@ func (r *tableCellsRenderer) MinSize() fyne.Size { } else { fyne.LogError("Missing Length callback required for Table", nil) } - return fyne.NewSize(r.cells.cellSize.Width*float32(cols)+float32(cols-1), r.cells.cellSize.Height*float32(rows)+float32(rows-1)) + + width := float32(0) + cellWidth := r.cells.cellSize.Width + for col := 0; col < cols; col++ { + colWidth, ok := r.cells.t.columnWidths[col] + if ok { + width += colWidth + } else { + width += cellWidth + } + } + + separatorSize := theme.SeparatorThicknessSize() + return fyne.NewSize(width+float32(cols-1)*separatorSize, r.cells.cellSize.Height*float32(rows)+float32(rows-1)*separatorSize) } func (r *tableCellsRenderer) Refresh() { @@ -556,12 +569,12 @@ func (r *tableCellsRenderer) Refresh() { if c == nil { continue } - - 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(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)) + if updateCell != nil { updateCell(TableCellID{row, col}, c) } diff --git a/widget/table_test.go b/widget/table_test.go index d0b3113e91..0adfb548fa 100644 --- a/widget/table_test.go +++ b/widget/table_test.go @@ -267,7 +267,7 @@ func TestTable_SetColumnWidth(t *testing.T) { obj.(*Label).Text = "placeholder" } }) - table.SetColumnWidth(0, 16) + table.SetColumnWidth(0, 32) table.Resize(fyne.NewSize(120, 120)) table.Select(TableCellID{1, 0}) @@ -275,7 +275,13 @@ func TestTable_SetColumnWidth(t *testing.T) { cellRenderer := test.WidgetRenderer(renderer.scroll.Content.(*tableCells)) cellRenderer.Refresh() assert.Equal(t, 8, len(cellRenderer.Objects())) + assert.Equal(t, float32(32), cellRenderer.(*tableCellsRenderer).Objects()[0].Size().Width) + cell1Offset := theme.SeparatorThicknessSize()+theme.Padding()*3 + assert.Equal(t, float32(32)+cell1Offset, cellRenderer.(*tableCellsRenderer).Objects()[1].Position().X) + + table.SetColumnWidth(0, 16) assert.Equal(t, float32(16), cellRenderer.(*tableCellsRenderer).Objects()[0].Size().Width) + assert.Equal(t, float32(16)+cell1Offset, cellRenderer.(*tableCellsRenderer).Objects()[1].Position().X) w := test.NewWindow(table) defer w.Close() diff --git a/widget/testdata/table/col_size.png b/widget/testdata/table/col_size.png deleted file mode 100644 index ec9c2fb5db323e609d9504e8612783edb864fe8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3590 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 Date: Mon, 15 Feb 2021 13:45:31 +0000 Subject: [PATCH 2/3] Somehow the image was removed instead of changed --- widget/testdata/table/col_size.png | Bin 0 -> 3595 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 widget/testdata/table/col_size.png diff --git a/widget/testdata/table/col_size.png b/widget/testdata/table/col_size.png new file mode 100644 index 0000000000000000000000000000000000000000..42de4ddc354f1080665a6ea1f8793361e52eb638 GIT binary patch literal 3595 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 Y8CSdWg^&$_OCHGVruB__Be(c}0nBp3FaQ7m literal 0 HcmV?d00001 From cf3aa038fbd233424c65e2accfdf052a37906e46 Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Mon, 15 Feb 2021 14:51:08 +0000 Subject: [PATCH 3/3] Fix formatting --- widget/table_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/widget/table_test.go b/widget/table_test.go index 0adfb548fa..5e38fcbb9b 100644 --- a/widget/table_test.go +++ b/widget/table_test.go @@ -276,7 +276,7 @@ func TestTable_SetColumnWidth(t *testing.T) { cellRenderer.Refresh() assert.Equal(t, 8, len(cellRenderer.Objects())) assert.Equal(t, float32(32), cellRenderer.(*tableCellsRenderer).Objects()[0].Size().Width) - cell1Offset := theme.SeparatorThicknessSize()+theme.Padding()*3 + cell1Offset := theme.SeparatorThicknessSize() + theme.Padding()*3 assert.Equal(t, float32(32)+cell1Offset, cellRenderer.(*tableCellsRenderer).Objects()[1].Position().X) table.SetColumnWidth(0, 16)