From ef93b2b90b7fe7552cba58a8c1623ef4cdbb4b61 Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Tue, 11 Jul 2023 16:23:05 +0100 Subject: [PATCH 1/2] Fix postion of line during deletion Fixes #3905 --- container/doctabs.go | 5 +++++ container/doctabs_internal_test.go | 16 ++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/container/doctabs.go b/container/doctabs.go index 854201e614..4fc8a482ce 100644 --- a/container/doctabs.go +++ b/container/doctabs.go @@ -244,7 +244,12 @@ func (r *docTabsRenderer) Layout(size fyne.Size) { r.updateCreateTab() r.updateTabs() r.layout(r.docTabs, size) + + // lay out buttons before updating indicator, which is relative to their position + buttons := r.scroller.Content.(*fyne.Container) + buttons.Layout.Layout(buttons.Objects, buttons.Size()) r.updateIndicator(r.docTabs.transitioning()) + if r.docTabs.transitioning() { r.docTabs.setTransitioning(false) } diff --git a/container/doctabs_internal_test.go b/container/doctabs_internal_test.go index 202faf1d04..0f51c3b425 100644 --- a/container/doctabs_internal_test.go +++ b/container/doctabs_internal_test.go @@ -30,3 +30,19 @@ func TestDocTabs_tabButtonRenderer_SetText(t *testing.T) { renderer = cache.Renderer(button).(*tabButtonRenderer) assert.Equal(t, "Replace", renderer.label.Text) } + +func TestDocTabs_tabButtonRenderer_Remove(t *testing.T) { + items := []*TabItem{{Text: "1", Content: widget.NewLabel("Content1")}, + {Text: "2", Content: widget.NewLabel("Content2")}, + {Text: "3", Content: widget.NewLabel("Content3")}} + tabs := NewDocTabs(items...) + tabs.Resize(fyne.NewSize(100, 100)) + tabRenderer := cache.Renderer(tabs).(*docTabsRenderer) + + tabs.SelectIndex(1) + pos := tabRenderer.indicator.Position() + tabs.RemoveIndex(0) + assert.Equal(t, 0, tabs.SelectedIndex()) + + assert.Less(t, tabRenderer.indicator.Position().X, pos.X) +} From 53f4c0726df861a534037c4f37c44ed7378fbef7 Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Fri, 21 Jul 2023 11:00:47 +0100 Subject: [PATCH 2/2] Fix tests that were validating incorrect behaviour --- container/doctabs_internal_test.go | 2 +- .../change_label_to_longer_text_selected.xml | 6 +++--- .../doctabs/desktop/dynamic_appended.xml | 4 ++-- .../desktop/dynamic_appended_and_removed.xml | 4 ++-- .../testdata/doctabs/mobile/dynamic_appended.xml | 16 ++++++++-------- .../mobile/dynamic_appended_and_removed.xml | 10 +++++----- 6 files changed, 21 insertions(+), 21 deletions(-) diff --git a/container/doctabs_internal_test.go b/container/doctabs_internal_test.go index 0f51c3b425..ddb84e81b5 100644 --- a/container/doctabs_internal_test.go +++ b/container/doctabs_internal_test.go @@ -36,7 +36,7 @@ func TestDocTabs_tabButtonRenderer_Remove(t *testing.T) { {Text: "2", Content: widget.NewLabel("Content2")}, {Text: "3", Content: widget.NewLabel("Content3")}} tabs := NewDocTabs(items...) - tabs.Resize(fyne.NewSize(100, 100)) + tabs.Resize(fyne.NewSize(160, 160)) tabRenderer := cache.Renderer(tabs).(*docTabsRenderer) tabs.SelectIndex(1) diff --git a/container/testdata/doctabs/desktop/change_label_to_longer_text_selected.xml b/container/testdata/doctabs/desktop/change_label_to_longer_text_selected.xml index de9e9b9de0..8e3816391b 100644 --- a/container/testdata/doctabs/desktop/change_label_to_longer_text_selected.xml +++ b/container/testdata/doctabs/desktop/change_label_to_longer_text_selected.xml @@ -4,10 +4,10 @@ - - New longer text 1 + + New longer text 1 - + New 2 diff --git a/container/testdata/doctabs/desktop/dynamic_appended.xml b/container/testdata/doctabs/desktop/dynamic_appended.xml index 08a7f4c77c..8967690188 100644 --- a/container/testdata/doctabs/desktop/dynamic_appended.xml +++ b/container/testdata/doctabs/desktop/dynamic_appended.xml @@ -7,8 +7,8 @@ Test1 - - Test2 + + Test2 diff --git a/container/testdata/doctabs/desktop/dynamic_appended_and_removed.xml b/container/testdata/doctabs/desktop/dynamic_appended_and_removed.xml index 483906735f..b1b43b8224 100644 --- a/container/testdata/doctabs/desktop/dynamic_appended_and_removed.xml +++ b/container/testdata/doctabs/desktop/dynamic_appended_and_removed.xml @@ -4,8 +4,8 @@ - - Test2 + + Test2 diff --git a/container/testdata/doctabs/mobile/dynamic_appended.xml b/container/testdata/doctabs/mobile/dynamic_appended.xml index 2ce392ffaa..4365a449de 100644 --- a/container/testdata/doctabs/mobile/dynamic_appended.xml +++ b/container/testdata/doctabs/mobile/dynamic_appended.xml @@ -4,16 +4,16 @@ - - Test1 - + + Test1 + - - Test2 - - + + Test2 + + @@ -27,7 +27,7 @@ - + Text 1 diff --git a/container/testdata/doctabs/mobile/dynamic_appended_and_removed.xml b/container/testdata/doctabs/mobile/dynamic_appended_and_removed.xml index 225ec572a0..c253e70ccd 100644 --- a/container/testdata/doctabs/mobile/dynamic_appended_and_removed.xml +++ b/container/testdata/doctabs/mobile/dynamic_appended_and_removed.xml @@ -4,10 +4,10 @@ - - Test2 - - + + Test2 + + @@ -21,7 +21,7 @@ - + Text 2