From kde-commits Sat Mar 31 22:37:32 2018 From: Michail Vourlakos Date: Sat, 31 Mar 2018 22:37:32 +0000 To: kde-commits Subject: [latte-dock] app/dock: fix #946, improve kwin screen edges under X11 Message-Id: X-MARC-Message: https://marc.info/?l=kde-commits&m=152253586706067 Git commit fb8063cdee0f0b7ae58f54d62b8124e5900902cf by Michail Vourlakos. Committed on 31/03/2018 at 22:37. Pushed by mvourlakos into branch 'master'. fix #946,improve kwin screen edges under X11 --make sure that the kwin ghost window ends at the correct geometry at all cases M +22 -6 app/dock/screenedgeghostwindow.cpp M +2 -0 app/dock/screenedgeghostwindow.h https://commits.kde.org/latte-dock/fb8063cdee0f0b7ae58f54d62b8124e5900902cf diff --git a/app/dock/screenedgeghostwindow.cpp b/app/dock/screenedgeghostw= indow.cpp index 1309d8d..3465f74 100644 --- a/app/dock/screenedgeghostwindow.cpp +++ b/app/dock/screenedgeghostwindow.cpp @@ -45,6 +45,11 @@ ScreenEdgeGhostWindow::ScreenEdgeGhostWindow(DockView *v= iew) : | Qt::NoDropShadowWindowHint | Qt::WindowDoesNotAcceptFocus); = + connect(this, &QQuickView::xChanged, this, &ScreenEdgeGhostWindow::fix= Geometry); + connect(this, &QQuickView::yChanged, this, &ScreenEdgeGhostWindow::fix= Geometry); + connect(this, &QQuickView::widthChanged, this, &ScreenEdgeGhostWindow:= :fixGeometry); + connect(this, &QQuickView::heightChanged, this, &ScreenEdgeGhostWindow= ::fixGeometry); + connect(m_dockView, &DockView::absGeometryChanged, this, &ScreenEdgeGh= ostWindow::updateGeometry); connect(m_dockView, &DockView::screenGeometryChanged, this, &ScreenEdg= eGhostWindow::updateGeometry); connect(m_dockView, &DockView::locationChanged, this, &ScreenEdgeGhost= Window::updateGeometry); @@ -140,13 +145,24 @@ void ScreenEdgeGhostWindow::updateGeometry() newGeometry.setHeight(qMin(m_dockView->absGeometry().height(), m_d= ockView->screenGeometry().height() - 1)); } = - setMinimumSize(newGeometry.size()); - setMaximumSize(newGeometry.size()); - resize(newGeometry.size()); - setPosition(newGeometry.x(), newGeometry.y()); + m_calculatedGeometry =3D newGeometry; = - if (m_shellSurface) { - m_shellSurface->setPosition(newGeometry.topLeft()); + fixGeometry(); +} + +void ScreenEdgeGhostWindow::fixGeometry() +{ + if (!m_calculatedGeometry.isEmpty() + && (m_calculatedGeometry.x() !=3D x() || m_calculatedGeometry.y() = !=3D y() + || m_calculatedGeometry.width() !=3D width() || m_calculatedGe= ometry.height() !=3D height())) { + setMinimumSize(m_calculatedGeometry.size()); + setMaximumSize(m_calculatedGeometry.size()); + resize(m_calculatedGeometry.size()); + setPosition(m_calculatedGeometry.x(), m_calculatedGeometry.y()); + + if (m_shellSurface) { + m_shellSurface->setPosition(m_calculatedGeometry.topLeft()); + } } } = diff --git a/app/dock/screenedgeghostwindow.h b/app/dock/screenedgeghostwin= dow.h index 0cef795..5403d9d 100644 --- a/app/dock/screenedgeghostwindow.h +++ b/app/dock/screenedgeghostwindow.h @@ -76,12 +76,14 @@ protected: = private slots: void updateGeometry(); + void fixGeometry(); = private: void setupWaylandIntegration(); = private: bool m_inDelete{false}; + QRect m_calculatedGeometry; = DockView *m_dockView{nullptr}; =20