summaryrefslogtreecommitdiffstats
path: root/src/widgets/widgets/qwidgetlinecontrol.cpp
diff options
context:
space:
mode:
authorJohannes Grunenberg <nerixdev@outlook.de>2023-12-11 22:39:24 +0100
committerVolker Hilsheimer <volker.hilsheimer@qt.io>2023-12-14 19:25:16 +0000
commit1d953b2fbc3deccad6eb2a5ebe39b24908dbcf3e (patch)
tree4ae4cf254b598b044c21e553e195827d02a6e7a2 /src/widgets/widgets/qwidgetlinecontrol.cpp
parent7835f9e60157987b4aafc9b860f925d775151b7c (diff)
QLineEdit: Use existing selection when deleting a word
When using QKeySequence::DeleteEndOfWord or QKeySequence::DeleteStartOfWord in a QLineEdit with an existing selection, the selection was ignored which resulted in unexpected behavior (see bugreport). This is fixed by only setting the selection if none exists yet. To prevent an entry in the history when the input is empty, the selection is checked before calling del(). Fixes: QTBUG-120006 Pick-to: 6.7 6.6 6.5 Change-Id: I2e803c5eff1f0e289e93a77c58ecd78299241da7 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'src/widgets/widgets/qwidgetlinecontrol.cpp')
-rw-r--r--src/widgets/widgets/qwidgetlinecontrol.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/widgets/widgets/qwidgetlinecontrol.cpp b/src/widgets/widgets/qwidgetlinecontrol.cpp
index 4b5d8a237f..6365073e53 100644
--- a/src/widgets/widgets/qwidgetlinecontrol.cpp
+++ b/src/widgets/widgets/qwidgetlinecontrol.cpp
@@ -1809,13 +1809,18 @@ void QWidgetLineControl::processKeyEvent(QKeyEvent* event)
}
else if (event == QKeySequence::DeleteEndOfWord) {
if (!isReadOnly()) {
- cursorWordForward(true);
- del();
+ if (!hasSelectedText())
+ cursorWordForward(true);
+
+ if (hasSelectedText())
+ del();
}
}
else if (event == QKeySequence::DeleteStartOfWord) {
if (!isReadOnly()) {
- cursorWordBackward(true);
+ if (!hasSelectedText())
+ cursorWordBackward(true);
+
if (hasSelectedText())
del();
}