From cb8d40eaf2a780c1537203f8e74e2b99d1cd7abc Mon Sep 17 00:00:00 2001 From: John Preston Date: Thu, 13 Feb 2025 19:03:34 +0400 Subject: [PATCH] Fix recording shortcuts on Windows. --- .../settings/settings_shortcuts.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/Telegram/SourceFiles/settings/settings_shortcuts.cpp b/Telegram/SourceFiles/settings/settings_shortcuts.cpp index a28d22af7..b2df7fab7 100644 --- a/Telegram/SourceFiles/settings/settings_shortcuts.cpp +++ b/Telegram/SourceFiles/settings/settings_shortcuts.cpp @@ -21,6 +21,9 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "styles/style_menu_icons.h" #include "styles/style_settings.h" +#include +#include + namespace Settings { namespace { @@ -381,6 +384,7 @@ struct Labeled { } const auto key = static_cast(e.get()); const auto m = key->modifiers(); + const auto integration = QGuiApplicationPrivate::platformIntegration(); const auto k = key->key(); const auto clear = !m && (k == Qt::Key_Backspace || k == Qt::Key_Delete); @@ -396,7 +400,19 @@ struct Labeled { } return base::EventFilterResult::Cancel; } - stopRecording(clear ? QKeySequence() : QKeySequence(k | m)); + const auto r = [&] { + auto result = k; + if (m & Qt::ShiftModifier) { + const auto keys = integration->possibleKeys(key); + for (const auto possible : keys) { + if (possible > m) { + return possible - m; + } + } + } + return result; + }(); + stopRecording(clear ? QKeySequence() : QKeySequence(r | m)); return base::EventFilterResult::Cancel; } else if (type == QEvent::KeyPress && state->recording.current()) { if (!content->window()->isActiveWindow()) {