From bdeb45c2e2e34c7c356e04c90946d06be6a9bf8f Mon Sep 17 00:00:00 2001 From: Volker Hilsheimer Date: Mon, 19 Jun 2023 12:44:37 +0200 Subject: [PATCH] QKeySequenceEdit: don't finish when opening a context menu Right-clicking in a QKeySequenceEdit opens the usual context menu for a line edit, which generates a focusOut event. QKeySequenceEdit finishes the recording when it loses focus, which includes deselecting the text. We should not finish or deselect if the focusOut event has focusReason FocusReasonPopup, as otherwise users cannot copy the text (keyboard shortcuts don't work for that, obviously). Task-number: QTBUG-114624 Change-Id: I0b3c535c189151daa29cf17640493f3353e6394b Reviewed-by: Axel Spoerl (cherry picked from commit 89566bf7491cd717a6f64a0a8b82306309bb0701) Reviewed-by: Qt Cherry-pick Bot --- src/widgets/widgets/qkeysequenceedit.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/widgets/widgets/qkeysequenceedit.cpp b/src/widgets/widgets/qkeysequenceedit.cpp index 9a9bf256687..d2474e5675b 100644 --- a/src/widgets/widgets/qkeysequenceedit.cpp +++ b/src/widgets/widgets/qkeysequenceedit.cpp @@ -414,7 +414,8 @@ void QKeySequenceEdit::timerEvent(QTimerEvent *e) void QKeySequenceEdit::focusOutEvent(QFocusEvent *e) { Q_D(QKeySequenceEdit); - d->finishEditing(); + if (e->reason() != Qt::PopupFocusReason) + d->finishEditing(); QWidget::focusOutEvent(e); }