Skip to content

Commit

Permalink
Update tab button text when the data changes
Browse files Browse the repository at this point in the history
Fixes #870
  • Loading branch information
andydotxyz committed Apr 17, 2020
1 parent 626c1aa commit 41f2d98
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 1 deletion.
14 changes: 13 additions & 1 deletion widget/tabcontainer.go
Expand Up @@ -347,8 +347,10 @@ func (t *tabContainerRenderer) Refresh() {
t.line.Refresh()

for i, child := range t.container.Items {
old := t.objects[i]
tab := t.tabBar.Objects[i].(*tabButton)
tab.setText(child.Text)

old := t.objects[i]
if old == child.Content {
continue
}
Expand Down Expand Up @@ -403,6 +405,15 @@ func (b *tabButton) MinSize() fyne.Size {
return b.BaseWidget.MinSize()
}

func (b *tabButton) setText(text string) {
if text == b.Text {
return
}

b.Text = text
b.Refresh()
}

func (b *tabButton) CreateRenderer() fyne.WidgetRenderer {
b.ExtendBaseWidget(b)
var icon *canvas.Image
Expand Down Expand Up @@ -529,6 +540,7 @@ func (r *tabButtonRenderer) Objects() []fyne.CanvasObject {
}

func (r *tabButtonRenderer) Refresh() {
r.label.Text = r.button.Text
r.label.Color = theme.TextColor()
r.label.TextSize = theme.TextSize()

Expand Down
17 changes: 17 additions & 0 deletions widget/tabcontainer_test.go
Expand Up @@ -467,3 +467,20 @@ func TestTabButtonRenderer_ApplyTheme(t *testing.T) {

assert.NotEqual(t, textSize, customTextSize)
}

func Test_tabButtonRenderer_SetText(t *testing.T) {
item := &TabItem{Text: "Test", Content: NewLabel("Content")}
tabs := NewTabContainer(item)
tabRenderer := test.WidgetRenderer(tabs).(*tabContainerRenderer)
tabButton := tabRenderer.tabBar.Objects[0].(*tabButton)
renderer := test.WidgetRenderer(tabButton).(*tabButtonRenderer)

assert.Equal(t, "Test", renderer.label.Text)

tabButton.setText("Temp")
assert.Equal(t, "Temp", renderer.label.Text)

item.Text = "Replace"
tabs.Refresh()
assert.Equal(t, "Replace", renderer.label.Text)
}

0 comments on commit 41f2d98

Please sign in to comment.