fix: switching the main screen position

pull/16/head
reionwong 4 years ago
parent fc1161d18a
commit 0c0f80e6f1

@ -50,7 +50,6 @@ Launcher::Launcher(bool firstShow, QQuickView *w)
setFlags(Qt::FramelessWindowHint); setFlags(Qt::FramelessWindowHint);
setResizeMode(QQuickView::SizeRootObjectToView); setResizeMode(QQuickView::SizeRootObjectToView);
setClearBeforeRendering(true); setClearBeforeRendering(true);
setScreen(qApp->primaryScreen());
onGeometryChanged(); onGeometryChanged();
setSource(QUrl(QStringLiteral("qrc:/qml/main.qml"))); setSource(QUrl(QStringLiteral("qrc:/qml/main.qml")));
@ -80,9 +79,6 @@ Launcher::Launcher(bool firstShow, QQuickView *w)
} }
connect(qApp, &QApplication::primaryScreenChanged, this, [=] { onGeometryChanged(); }); connect(qApp, &QApplication::primaryScreenChanged, this, [=] { onGeometryChanged(); });
connect(qApp->primaryScreen(), &QScreen::virtualGeometryChanged, this, &Launcher::onGeometryChanged);
connect(qApp->primaryScreen(), &QScreen::geometryChanged, this, &Launcher::onGeometryChanged);
connect(this, &QQuickView::activeChanged, this, &Launcher::onActiveChanged); connect(this, &QQuickView::activeChanged, this, &Launcher::onActiveChanged);
} }
@ -176,11 +172,18 @@ void Launcher::updateMargins()
void Launcher::onGeometryChanged() void Launcher::onGeometryChanged()
{ {
disconnect(screen());
setScreen(qApp->primaryScreen());
if (m_screenRect != qApp->primaryScreen()->geometry()) { if (m_screenRect != qApp->primaryScreen()->geometry()) {
m_screenRect = qApp->primaryScreen()->geometry(); m_screenRect = qApp->primaryScreen()->geometry();
setGeometry(m_screenRect); setGeometry(m_screenRect);
emit screenRectChanged(); emit screenRectChanged();
} }
connect(screen(), &QScreen::virtualGeometryChanged, this, &Launcher::onGeometryChanged);
connect(screen(), &QScreen::geometryChanged, this, &Launcher::onGeometryChanged);
} }
void Launcher::showEvent(QShowEvent *e) void Launcher::showEvent(QShowEvent *e)

Loading…
Cancel
Save