From cf1fa718a8cb308d36794c79be590bc2a3973923 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Thu, 30 Jan 2025 11:00:50 +0300 Subject: [PATCH] Improved conflict handle between IV shortcuts and Shortcuts. --- Telegram/SourceFiles/dialogs/dialogs_widget.cpp | 1 + Telegram/SourceFiles/history/history_widget.cpp | 1 + Telegram/SourceFiles/info/info_wrap_widget.cpp | 1 + Telegram/SourceFiles/iv/iv_controller.cpp | 16 +++++++++++++++- 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/Telegram/SourceFiles/dialogs/dialogs_widget.cpp b/Telegram/SourceFiles/dialogs/dialogs_widget.cpp index ecabae874..752e431a9 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_widget.cpp +++ b/Telegram/SourceFiles/dialogs/dialogs_widget.cpp @@ -1214,6 +1214,7 @@ void Widget::setupShortcuts() { }); request->check(Command::ShowChatMenu, 1) && request->handle([=] { if (_inner) { + Window::ActivateWindow(controller()); _inner->showPeerMenu(); } return true; diff --git a/Telegram/SourceFiles/history/history_widget.cpp b/Telegram/SourceFiles/history/history_widget.cpp index 67d49cad7..6c337f9c0 100644 --- a/Telegram/SourceFiles/history/history_widget.cpp +++ b/Telegram/SourceFiles/history/history_widget.cpp @@ -2010,6 +2010,7 @@ void HistoryWidget::setupShortcuts() { return true; }); request->check(Command::ShowChatMenu, 1) && request->handle([=] { + Window::ActivateWindow(controller()); _topBar->showPeerMenu(); return true; }); diff --git a/Telegram/SourceFiles/info/info_wrap_widget.cpp b/Telegram/SourceFiles/info/info_wrap_widget.cpp index 212e541f4..3e86ccb36 100644 --- a/Telegram/SourceFiles/info/info_wrap_widget.cpp +++ b/Telegram/SourceFiles/info/info_wrap_widget.cpp @@ -502,6 +502,7 @@ void WrapWidget::addTopBarMenuButton() { using Command = Shortcuts::Command; request->check(Command::ShowChatMenu, 1) && request->handle([=] { + Window::ActivateWindow(_controller->parentController()); showTopBarMenu(false); return true; }); diff --git a/Telegram/SourceFiles/iv/iv_controller.cpp b/Telegram/SourceFiles/iv/iv_controller.cpp index bf699adb7..87befe5bf 100644 --- a/Telegram/SourceFiles/iv/iv_controller.cpp +++ b/Telegram/SourceFiles/iv/iv_controller.cpp @@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "iv/iv_controller.h" +#include "base/event_filter.h" #include "base/platform/base_platform_info.h" #include "base/qt/qt_key_modifiers.h" #include "base/invoke_queued.h" @@ -679,18 +680,31 @@ void Controller::createWebview(const Webview::StorageId &storageId) { if (event->key() == Qt::Key_Escape) { escape(); } + } + }, window->lifetime()); + + base::install_event_filter(window, qApp, [=](not_null<QEvent*> e) { + if (e->type() == QEvent::ShortcutOverride) { + if (!window->isActiveWindow()) { + return base::EventFilterResult::Continue; + } + const auto event = static_cast<QKeyEvent*>(e.get()); if (event->modifiers() & Qt::ControlModifier) { if (event->key() == Qt::Key_Plus || event->key() == Qt::Key_Equal) { _delegate->ivSetZoom(_delegate->ivZoom() + kZoomStep); + return base::EventFilterResult::Cancel; } else if (event->key() == Qt::Key_Minus) { _delegate->ivSetZoom(_delegate->ivZoom() - kZoomStep); + return base::EventFilterResult::Cancel; } else if (event->key() == Qt::Key_0) { _delegate->ivSetZoom(kDefaultZoom); + return base::EventFilterResult::Cancel; } } } - }, window->lifetime()); + return base::EventFilterResult::Continue; + }); const auto widget = raw->widget(); if (!widget) {