diff --git a/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp b/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp index 7a99a21f1e..10fb688c6f 100644 --- a/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp +++ b/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp @@ -359,6 +359,7 @@ OverlayWidget::OverlayWidget() DEBUG_LOG(("Viewer Pos: Moved to %1, %2") .arg(position.x()) .arg(position.y())); + moveToScreen(true); } else if (type == QEvent::Resize) { const auto size = static_cast(e.get())->size(); DEBUG_LOG(("Viewer Pos: Resized to %1, %2") @@ -478,7 +479,7 @@ void OverlayWidget::refreshLang() { InvokeQueued(_widget, [=] { updateThemePreviewGeometry(); }); } -void OverlayWidget::moveToScreen() { +void OverlayWidget::moveToScreen(bool inMove) { const auto widgetScreen = [&](auto &&widget) -> QScreen* { if (auto handle = widget ? widget->windowHandle() : nullptr) { return handle->screen(); @@ -499,10 +500,10 @@ void OverlayWidget::moveToScreen() { DEBUG_LOG(("Viewer Pos: New actual screen: %1") .arg(screenList.indexOf(window()->screen()))); } - updateGeometry(); + updateGeometry(inMove); } -void OverlayWidget::updateGeometry() { +void OverlayWidget::updateGeometry(bool inMove) { if (Platform::IsWayland()) { return; } @@ -523,6 +524,9 @@ void OverlayWidget::updateGeometry() { const auto mask = useSizeHack ? QRegion(QRect(QPoint(), available.size())) : QRegion(); + if (inMove && use.contains(_widget->geometry())) { + return; + } if ((_widget->geometry() == use) && (!useSizeHack || window()->mask() == mask)) { return; diff --git a/Telegram/SourceFiles/media/view/media_view_overlay_widget.h b/Telegram/SourceFiles/media/view/media_view_overlay_widget.h index f881b8c6ca..3129ae36b9 100644 --- a/Telegram/SourceFiles/media/view/media_view_overlay_widget.h +++ b/Telegram/SourceFiles/media/view/media_view_overlay_widget.h @@ -223,8 +223,8 @@ private: void assignMediaPointer(not_null photo); void updateOver(QPoint mpos); - void moveToScreen(); - void updateGeometry(); + void moveToScreen(bool inMove = false); + void updateGeometry(bool inMove = false); bool moveToNext(int delta); void preloadData(int delta);