From f22646c8fd9f77dde6b761523c666cf037578c65 Mon Sep 17 00:00:00 2001 From: 0penBrain <48731257+0penBrain@users.noreply.github.com> Date: Wed, 2 Nov 2022 12:37:19 +0100 Subject: [PATCH] Gui: improve decimal point converter algorithm Fix a bug in key code for forged key event Only process spontaneous events --- src/Gui/Language/Translator.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/Gui/Language/Translator.cpp b/src/Gui/Language/Translator.cpp index add3472c6c..5446460077 100644 --- a/src/Gui/Language/Translator.cpp +++ b/src/Gui/Language/Translator.cpp @@ -367,13 +367,15 @@ bool Translator::eventFilter(QObject* obj, QEvent* ev) QKeyEvent *kev = static_cast(ev); Qt::KeyboardModifiers mod = kev->modifiers(); int key = kev->key(); - if ((mod & Qt::KeypadModifier) && (key == Qt::Key_Period || key == Qt::Key_Comma)) - { - QChar dp = QLocale().decimalPoint(); - if (key != dp) { - QKeyEvent modifiedKeyEvent(kev->type(), dp.digitValue(), mod, QString(dp), kev->isAutoRepeat(), kev->count()); - qApp->sendEvent(obj, &modifiedKeyEvent); - return true; + if ((mod & Qt::KeypadModifier) && (key == Qt::Key_Period || key == Qt::Key_Comma)) { + if (ev->spontaneous()) { + QChar dp = QLocale().decimalPoint(); + int dpcode = QKeySequence(dp)[0]; + if (key != dp) { + QKeyEvent modifiedKeyEvent(kev->type(), dpcode, mod, dp, kev->isAutoRepeat(), kev->count()); + qApp->sendEvent(obj, &modifiedKeyEvent); + return true; + } } } }