From 3a05cdc11e5ceb6b4d4dda976c69dced0941d067 Mon Sep 17 00:00:00 2001 From: John Preston Date: Mon, 30 Nov 2020 14:13:54 +0300 Subject: [PATCH] Allow PopupMenu not to reactivate parent window. --- ui/widgets/popup_menu.cpp | 4 +++- ui/widgets/popup_menu.h | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ui/widgets/popup_menu.cpp b/ui/widgets/popup_menu.cpp index c40ab0f..de300ec 100644 --- a/ui/widgets/popup_menu.cpp +++ b/ui/widgets/popup_menu.cpp @@ -538,7 +538,9 @@ PopupMenu::~PopupMenu() { delete submenu; } if (const auto parent = parentWidget()) { - if (QApplication::focusWidget() != nullptr + const auto focused = QApplication::focusWidget(); + if (_reactivateParent + && focused != nullptr && Ui::InFocusChain(parent->window())) { ActivateWindowDelayed(parent); } diff --git a/ui/widgets/popup_menu.h b/ui/widgets/popup_menu.h index 03f8583..ca08f98 100644 --- a/ui/widgets/popup_menu.h +++ b/ui/widgets/popup_menu.h @@ -37,6 +37,9 @@ public: void setDestroyedCallback(Fn callback) { _destroyedCallback = std::move(callback); } + void discardParentReActivate() { + _reactivateParent = false; + } ~PopupMenu(); @@ -122,6 +125,7 @@ private: bool _deleteOnHide = true; bool _triggering = false; bool _deleteLater = false; + bool _reactivateParent = true; Fn _destroyedCallback;