diff --git a/Telegram/SourceFiles/media/view/media_view_overlay_raster.cpp b/Telegram/SourceFiles/media/view/media_view_overlay_raster.cpp index 4ca702d39..2867a363c 100644 --- a/Telegram/SourceFiles/media/view/media_view_overlay_raster.cpp +++ b/Telegram/SourceFiles/media/view/media_view_overlay_raster.cpp @@ -20,10 +20,21 @@ OverlayWidget::RendererSW::RendererSW(not_null<OverlayWidget*> owner) , _transparentBrush(style::TransparentPlaceholder()) { } +bool OverlayWidget::RendererSW::handleHideWorkaround() { + // This is needed on Windows or Linux, + // because on reopen it blinks with the last shown content. + return _owner->_hideWorkaround != nullptr; +} + void OverlayWidget::RendererSW::paintFallback( Painter &&p, const QRegion &clip, Ui::GL::Backend backend) { + if (handleHideWorkaround()) { + p.setCompositionMode(QPainter::CompositionMode_Source); + p.fillRect(clip.boundingRect(), Qt::transparent); + return; + } _p = &p; _clip = &clip; _clipOuter = clip.boundingRect(); diff --git a/Telegram/SourceFiles/media/view/media_view_overlay_raster.h b/Telegram/SourceFiles/media/view/media_view_overlay_raster.h index 6399f2219..8057e4d91 100644 --- a/Telegram/SourceFiles/media/view/media_view_overlay_raster.h +++ b/Telegram/SourceFiles/media/view/media_view_overlay_raster.h @@ -59,6 +59,7 @@ private: QRect rect, float64 opacity = 1.) override; + bool handleHideWorkaround(); void validateOverControlImage(); [[nodiscard]] static QRect TransformRect(QRectF geometry, int rotation);