From c88320566ed69841c6cdcc43424def0e3769500f Mon Sep 17 00:00:00 2001 From: Michail Vourlakos Date: Mon, 27 Feb 2017 23:06:03 +0200 Subject: [PATCH] do not allow a primary dock overlap an explicit --- app/dockview.cpp | 26 ++++++++------------------ 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/app/dockview.cpp b/app/dockview.cpp index a2e569a79..f6e09b617 100644 --- a/app/dockview.cpp +++ b/app/dockview.cpp @@ -215,9 +215,14 @@ void DockView::reconsiderScreen() } if (m_onPrimary && screen() != qGuiApp->primaryScreen()) { - connect(qGuiApp->primaryScreen(), &QScreen::geometryChanged, this, &DockView::screenGeometryChanged); - setScreenToFollow(qGuiApp->primaryScreen()); - syncGeometry(); + auto *dockCorona = qobject_cast(this->corona()); + + //change to primary screen only if the specific edge is free + if (dockCorona->freeEdges(qGuiApp->primaryScreen()).contains(location())) { + connect(qGuiApp->primaryScreen(), &QScreen::geometryChanged, this, &DockView::screenGeometryChanged); + setScreenToFollow(qGuiApp->primaryScreen()); + syncGeometry(); + } } else { foreach (auto scr, qGuiApp->screens()) { if (scr && scr->name() == m_screenToFollowId) { @@ -450,26 +455,11 @@ inline void DockView::syncGeometry() if (!(this->screen() && this->containment())) return; - //if (qGuiApp->primaryScreen() && screen() != qGuiApp->primaryScreen()){ - // setScreen(qGuiApp->primaryScreen()); - //} bool found{false}; if (this->screen() != m_screenToFollow) { qDebug() << "Sync Geometry screens incosistent!!!!"; - /*foreach(auto scr, qGuiApp->screens()){ - qDebug() << "Found screen: "<name(); - if (scr && scr->name() == m_screenToFollowId){ - qDebug() << " found ... "; - //setScreenToFollow(scr); - // found=true; - } - }*/ m_screenSyncTimer.start(); - //QTimer::singleShot(2500, this, &DockView::reconsiderScreen); - - //if (found) - // setScreenToFollow(m_screenToFollow); } else { found = true; }