Try to react to move events in media viewer, again

This time with a weaker geometry check
This commit is contained in:
Ilya Fedin 2022-02-15 19:16:53 +04:00 committed by John Preston
parent 4b93f58d2f
commit b9519dd5b9
2 changed files with 9 additions and 5 deletions

View file

@ -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<QResizeEvent*>(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;

View file

@ -223,8 +223,8 @@ private:
void assignMediaPointer(not_null<PhotoData*> 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);