mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-06 23:24:01 +02:00
Move media viewer back to the right screen if it was moved by window manager
This commit is contained in:
parent
c9d2ef278f
commit
dcd1e62c36
1 changed files with 9 additions and 2 deletions
|
@ -445,19 +445,26 @@ void OverlayWidget::moveToScreen() {
|
|||
? Core::App().activeWindow()->widget().get()
|
||||
: nullptr;
|
||||
const auto activeWindowScreen = widgetScreen(window);
|
||||
const auto myScreen = widgetScreen(this);
|
||||
// Wayland doesn't support positioning, but Qt emits screenChanged anyway
|
||||
// and geometry of the widget become broken
|
||||
if (activeWindowScreen
|
||||
&& myScreen != activeWindowScreen
|
||||
&& !Platform::IsWayland()) {
|
||||
windowHandle()->setScreen(activeWindowScreen);
|
||||
}
|
||||
updateGeometry();
|
||||
}
|
||||
|
||||
void OverlayWidget::updateGeometry() {
|
||||
const auto screen = windowHandle() && windowHandle()->screen()
|
||||
? windowHandle()->screen()
|
||||
: QApplication::primaryScreen();
|
||||
setGeometry(screen->geometry());
|
||||
const auto available = screen->geometry();
|
||||
if (geometry() == available) {
|
||||
return;
|
||||
}
|
||||
setGeometry(available);
|
||||
|
||||
auto navSkip = 2 * st::mediaviewControlMargin + st::mediaviewControlSize;
|
||||
_closeNav = myrtlrect(width() - st::mediaviewControlMargin - st::mediaviewControlSize, st::mediaviewControlMargin, st::mediaviewControlSize, st::mediaviewControlSize);
|
||||
|
@ -1327,7 +1334,7 @@ void OverlayWidget::handleVisibleChanged(bool visible) {
|
|||
}
|
||||
|
||||
void OverlayWidget::handleScreenChanged(QScreen *screen) {
|
||||
updateGeometry();
|
||||
moveToScreen();
|
||||
}
|
||||
|
||||
void OverlayWidget::onToMessage() {
|
||||
|
|
Loading…
Add table
Reference in a new issue