From aeb5e57061137c0fddf6601461c49e53612f203e Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Tue, 30 Jul 2024 13:51:53 +0300 Subject: [PATCH] Fixed profile opening of group call participant in separate windows. --- .../calls/group/calls_group_members.cpp | 30 ++++++------------- 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/Telegram/SourceFiles/calls/group/calls_group_members.cpp b/Telegram/SourceFiles/calls/group/calls_group_members.cpp index ce806928c..2853340a5 100644 --- a/Telegram/SourceFiles/calls/group/calls_group_members.cpp +++ b/Telegram/SourceFiles/calls/group/calls_group_members.cpp @@ -1195,24 +1195,7 @@ base::unique_qptr Members::Controller::createRowContextMenu( const auto addVolumeItem = (!muted || isMe(participantPeer)); const auto admin = IsGroupCallAdmin(_peer, participantPeer); const auto session = &_peer->session(); - const auto getCurrentWindow = [=]() -> Window::SessionController* { - if (const auto window = Core::App().windowFor(participantPeer)) { - if (const auto controller = window->sessionController()) { - if (&controller->session() == session) { - return controller; - } - } - } - return nullptr; - }; - const auto getWindow = [=] { - if (const auto current = getCurrentWindow()) { - return current; - } else if (&Core::App().domain().active() != &session->account()) { - Core::App().domain().activate(&session->account()); - } - return getCurrentWindow(); - }; + const auto account = &session->account(); auto result = base::make_unique_q( parent, @@ -1223,7 +1206,7 @@ base::unique_qptr Members::Controller::createRowContextMenu( : st::groupCallPopupMenu)); const auto weakMenu = Ui::MakeWeak(result.get()); const auto withActiveWindow = [=](auto callback) { - if (const auto window = getWindow()) { + if (const auto window = Core::App().activePrimaryWindow()) { if (const auto menu = weakMenu.data()) { menu->discardParentReActivate(); @@ -1232,8 +1215,13 @@ base::unique_qptr Members::Controller::createRowContextMenu( // PopupMenu::hide activates back the group call panel :( delete weakMenu; } - callback(window); - window->widget()->activate(); + window->invokeForSessionController( + account, + participantPeer, + [&](not_null newController) { + callback(newController); + newController->widget()->activate(); + }); } }; const auto showProfile = [=] {