diff --git a/widget/entry.go b/widget/entry.go index 3f4ed0f873..4057ee70c1 100644 --- a/widget/entry.go +++ b/widget/entry.go @@ -1034,7 +1034,7 @@ func (r *entryRenderer) Refresh() { r.entry.propertyLock.RUnlock() if content != string(provider.buffer) { - provider.setText(content) + r.entry.SetText(content) return } diff --git a/widget/entry_test.go b/widget/entry_test.go index 1791e35eee..f51852565a 100644 --- a/widget/entry_test.go +++ b/widget/entry_test.go @@ -134,6 +134,22 @@ func TestEntry_SetText_Manual(t *testing.T) { test.AssertImageMatches(t, "entry/set_text_changed.png", c.Capture()) } +func TestEntry_SetText_Underflow(t *testing.T) { + entry := widget.NewEntry() + test.Type(entry, "test") + assert.Equal(t, 4, entry.CursorColumn) + + entry.Text = "" + entry.Refresh() + assert.Equal(t, 0, entry.CursorColumn) + + key := &fyne.KeyEvent{Name: fyne.KeyBackspace} + entry.TypedKey(key) + + assert.Equal(t, 0, entry.CursorColumn) + assert.Equal(t, "", entry.Text) +} + func TestEntry_OnKeyDown(t *testing.T) { entry := widget.NewEntry()