diff --git a/ui/integration.cpp b/ui/integration.cpp index ae49b3e..f8df624 100644 --- a/ui/integration.cpp +++ b/ui/integration.cpp @@ -79,6 +79,10 @@ const Emoji::One *Integration::defaultEmojiVariant(const Emoji::One *emoji) { return emoji; } +QWidget *Integration::modalWindowParent() { + return nullptr; +} + rpl::producer<> Integration::forcePopupMenuHideRequests() { return rpl::never(); } diff --git a/ui/integration.h b/ui/integration.h index 0ae8343..e3c90db 100644 --- a/ui/integration.h +++ b/ui/integration.h @@ -56,6 +56,8 @@ public: [[nodiscard]] virtual const Emoji::One *defaultEmojiVariant( const Emoji::One *emoji); + [[nodiscard]] virtual QWidget *modalWindowParent(); + [[nodiscard]] virtual rpl::producer<> forcePopupMenuHideRequests(); [[nodiscard]] virtual QString phraseContextCopyText(); diff --git a/ui/platform/ui_platform_window_title.cpp b/ui/platform/ui_platform_window_title.cpp index 1a5b406..7da20ec 100644 --- a/ui/platform/ui_platform_window_title.cpp +++ b/ui/platform/ui_platform_window_title.cpp @@ -90,12 +90,16 @@ not_null TitleControls::window() const { void TitleControls::init(Fn maximize) { _minimize->setClickedCallback([=] { + const auto weak = MakeWeak(_minimize.data()); window()->setWindowState( window()->windowState() | Qt::WindowMinimized); - _minimize->clearState(); + if (weak) { + _minimize->clearState(); + } }); _minimize->setPointerCursor(false); _maximizeRestore->setClickedCallback([=] { + const auto weak = MakeWeak(_maximizeRestore.data()); if (maximize) { maximize(!_maximizedState); } else { @@ -103,12 +107,17 @@ void TitleControls::init(Fn maximize) { ? Qt::WindowNoState : Qt::WindowMaximized); } - _maximizeRestore->clearState(); + if (weak) { + _maximizeRestore->clearState(); + } }); _maximizeRestore->setPointerCursor(false); _close->setClickedCallback([=] { + const auto weak = MakeWeak(_close.data()); window()->close(); - _close->clearState(); + if (weak) { + _close->clearState(); + } }); _close->setPointerCursor(false);