Skip to content

Commit 0de8c1e

Browse files
committed
Merge branch 'release/v2.4.x' into develop
2 parents 8c59d6e + 00537b2 commit 0de8c1e

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

widget/entry.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -953,10 +953,11 @@ func (e *Entry) cutToClipboard(clipboard fyne.Clipboard) {
953953
e.copyToClipboard(clipboard)
954954
e.setFieldsAndRefresh(e.eraseSelection)
955955
e.propertyLock.RLock()
956+
content := e.Text
956957
cb := e.OnChanged
957958
e.propertyLock.RUnlock()
958959
if cb != nil {
959-
cb(e.Text)
960+
cb(content)
960961
}
961962
e.Validate()
962963
}
@@ -1221,10 +1222,11 @@ func (e *Entry) selectingKeyHandler(key *fyne.KeyEvent) bool {
12211222
// clears the selection -- return handled
12221223
e.setFieldsAndRefresh(e.eraseSelection)
12231224
e.propertyLock.RLock()
1225+
content := e.Text
12241226
cb := e.OnChanged
12251227
e.propertyLock.RUnlock()
12261228
if cb != nil {
1227-
cb(e.Text)
1229+
cb(content)
12281230
}
12291231
e.Validate()
12301232
return true

widget/entry_internal_test.go

+15
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,21 @@ func TestEntry_EraseSelection(t *testing.T) {
287287
assert.Equal(t, -1, b)
288288
}
289289

290+
func TestEntry_CallbackLocking(t *testing.T) {
291+
e := &Entry{}
292+
called := 0
293+
e.OnChanged = func(_ string) {
294+
e.propertyLock.Lock()
295+
called++ // Just to not have an empty critical section.
296+
e.propertyLock.Unlock()
297+
}
298+
299+
test.Type(e, "abc123")
300+
e.selectAll()
301+
e.TypedKey(&fyne.KeyEvent{Name: fyne.KeyBackspace})
302+
assert.Equal(t, 7, called)
303+
}
304+
290305
func TestEntry_MouseClickAndDragOutsideText(t *testing.T) {
291306
entry := NewEntry()
292307
entry.SetText("A\nB\n")

0 commit comments

Comments
 (0)