From 8d0d9bb0bd2fbeb8ef826e582bef5b0620950620 Mon Sep 17 00:00:00 2001 From: Ilya Fedin Date: Sat, 6 Jul 2024 00:43:18 +0400 Subject: [PATCH] Delay clearing transient parent until the pip window is really exposed --- Telegram/SourceFiles/media/view/media_view_pip.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Telegram/SourceFiles/media/view/media_view_pip.cpp b/Telegram/SourceFiles/media/view/media_view_pip.cpp index 0975b5c6f1..da359769fa 100644 --- a/Telegram/SourceFiles/media/view/media_view_pip.cpp +++ b/Telegram/SourceFiles/media/view/media_view_pip.cpp @@ -351,10 +351,14 @@ void PipPanel::init() { widget()->resize(0, 0); widget()->hide(); - rp()->shownValue( - ) | rpl::filter([=](bool shown) { - return shown; - }) | rpl::start_with_next([=] { + rpl::merge( + rp()->shownValue() | rpl::to_empty, + rp()->paintRequest() | rpl::to_empty + ) | rpl::map([=] { + return widget()->windowHandle() + && widget()->windowHandle()->isExposed(); + }) | rpl::distinct_until_changed( + ) | rpl::filter(rpl::mappers::_1) | rpl::start_with_next([=] { // Workaround Qt's forced transient parent. Ui::Platform::ClearTransientParent(widget()); }, rp()->lifetime());