From a3b534925c242b062f6e33e2c5a05a2ca0d6d523 Mon Sep 17 00:00:00 2001 From: Jacalz Date: Sat, 22 Jul 2023 12:01:13 +0200 Subject: [PATCH] Support deleting a word with ctrl + backspace --- widget/entry.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/widget/entry.go b/widget/entry.go index bef41e2faa..9eda5cf2e0 100644 --- a/widget/entry.go +++ b/widget/entry.go @@ -941,10 +941,27 @@ func (e *Entry) registerShortcut() { e.selecting = false moveWord(se) } + removeWord := func(se fyne.Shortcut) { + row := e.textProvider().row(e.CursorRow) + start, end := getTextWhitespaceRegion(row, e.CursorColumn, true) + if start == -1 || end == -1 { + return + } + + e.propertyLock.Lock() + pos := e.cursorTextPos() + e.textProvider().deleteFromTo(start, pos) + e.CursorRow, e.CursorColumn = e.rowColFromTextPos(pos - 1) + e.propertyLock.Unlock() + + e.updateTextAndRefresh(e.textProvider().String()) + } + e.shortcut.AddShortcut(&desktop.CustomShortcut{KeyName: fyne.KeyLeft, Modifier: fyne.KeyModifierShortcutDefault}, unselectMoveWord) e.shortcut.AddShortcut(&desktop.CustomShortcut{KeyName: fyne.KeyLeft, Modifier: fyne.KeyModifierShortcutDefault | fyne.KeyModifierShift}, selectMoveWord) e.shortcut.AddShortcut(&desktop.CustomShortcut{KeyName: fyne.KeyRight, Modifier: fyne.KeyModifierShortcutDefault}, unselectMoveWord) e.shortcut.AddShortcut(&desktop.CustomShortcut{KeyName: fyne.KeyRight, Modifier: fyne.KeyModifierShortcutDefault | fyne.KeyModifierShift}, selectMoveWord) + e.shortcut.AddShortcut(&desktop.CustomShortcut{KeyName: fyne.KeyBackspace, Modifier: fyne.KeyModifierShortcutDefault}, removeWord) } func (e *Entry) requestFocus() {