From daadf7e2a155133d621d18c37c9ea932e221ef3c Mon Sep 17 00:00:00 2001 From: John Preston Date: Sat, 26 Feb 2022 19:56:55 +0300 Subject: [PATCH] Allow goToMessageClickHandler to switch accounts. --- Telegram/SourceFiles/history/history_item.cpp | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/Telegram/SourceFiles/history/history_item.cpp b/Telegram/SourceFiles/history/history_item.cpp index ad2276e3c3..b1509aa88c 100644 --- a/Telegram/SourceFiles/history/history_item.cpp +++ b/Telegram/SourceFiles/history/history_item.cpp @@ -34,6 +34,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "media/audio/media_audio.h" #include "core/application.h" #include "mainwindow.h" +#include "window/window_controller.h" #include "window/window_session_controller.h" #include "core/crash_reports.h" #include "base/unixtime.h" @@ -1354,16 +1355,18 @@ ClickHandlerPtr goToMessageClickHandler( MsgId msgId, FullMsgId returnToId) { return std::make_shared([=] { - if (const auto main = App::main()) { // multi good - if (&main->session() == &peer->session()) { - auto params = Window::SectionShow{ - Window::SectionShow::Way::Forward - }; - params.origin = Window::SectionShow::OriginMessage{ - returnToId - }; - main->controller()->showPeerHistory(peer, params, msgId); - } + const auto separate = Core::App().separateWindowForPeer(peer); + const auto controller = separate + ? separate->sessionController() + : peer->session().tryResolveWindow(); + if (controller) { + auto params = Window::SectionShow{ + Window::SectionShow::Way::Forward + }; + params.origin = Window::SectionShow::OriginMessage{ + returnToId + }; + controller->showPeerHistory(peer, params, msgId); } }); }