Git commit da5cb9c61f14a608a0e5d1992c34a3dd0d954d3b by Michail Vourlakos. Committed on 31/03/2018 at 22:04. Pushed by mvourlakos into branch 'master'. fix #946,improve kwin edges support --make the behaviour more robust and be more precise at geometries used at all times M +1 -0 app/dock/dockview.h M +4 -2 app/dock/screenedgeghostwindow.cpp M +14 -0 containment/package/contents/ui/DebugWindow.qml M +2 -2 containment/package/contents/ui/VisibilityManager.qml https://commits.kde.org/latte-dock/da5cb9c61f14a608a0e5d1992c34a3dd0d954d3b diff --git a/app/dock/dockview.h b/app/dock/dockview.h index 3da0837..8b15d5a 100644 --- a/app/dock/dockview.h +++ b/app/dock/dockview.h @@ -97,6 +97,7 @@ class DockView : public PlasmaQuick::ContainmentView { Q_PROPERTY(QQmlListProperty screens READ screens) = Q_PROPERTY(QRect effectsArea READ effectsArea WRITE setEffectsArea NOT= IFY effectsAreaChanged) + Q_PROPERTY(QRect absoluteGeometry READ absGeometry NOTIFY absGeometryC= hanged) Q_PROPERTY(QRect localGeometry READ localGeometry WRITE setLocalGeomet= ry NOTIFY localGeometryChanged) Q_PROPERTY(QRect maskArea READ maskArea WRITE setMaskArea NOTIFY maskA= reaChanged) Q_PROPERTY(QRect screenGeometry READ screenGeometry NOTIFY screenGeome= tryChanged) diff --git a/app/dock/screenedgeghostwindow.cpp b/app/dock/screenedgeghostw= indow.cpp index dc349af..1309d8d 100644 --- a/app/dock/screenedgeghostwindow.cpp +++ b/app/dock/screenedgeghostwindow.cpp @@ -47,6 +47,7 @@ ScreenEdgeGhostWindow::ScreenEdgeGhostWindow(DockView *vi= ew) : = 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); connect(m_dockView, &QQuickView::screenChanged, this, [this]() { setScreen(m_dockView->screen()); }); @@ -132,15 +133,16 @@ void ScreenEdgeGhostWindow::updateGeometry() } = if (m_dockView->formFactor() =3D=3D Plasma::Types::Horizontal) { - newGeometry.setWidth(m_dockView->absGeometry().width()); + newGeometry.setWidth(qMin(m_dockView->absGeometry().width(), m_doc= kView->screenGeometry().width() - 1)); newGeometry.setHeight(thickness + 1); } else { newGeometry.setWidth(thickness + 1); - newGeometry.setHeight(m_dockView->absGeometry().height()); + 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()); = if (m_shellSurface) { diff --git a/containment/package/contents/ui/DebugWindow.qml b/containment/= package/contents/ui/DebugWindow.qml index caa0c73..21e3aed 100644 --- a/containment/package/contents/ui/DebugWindow.qml +++ b/containment/package/contents/ui/DebugWindow.qml @@ -157,6 +157,20 @@ Window{ } } = + Text{ + text: "Absolute Geometry"+space + } + + Text{ + text: { + if (dock && dock.absoluteGeometry) { + return dock.absoluteGeometry.x + ", " + dock.absol= uteGeometry.y + " " + dock.absoluteGeometry.width + "x" + dock.absoluteGeo= metry.height; + } else { + return "_,_ _x_"; + } + } + } + Text{ text: "Local Geometry"+space } diff --git a/containment/package/contents/ui/VisibilityManager.qml b/contai= nment/package/contents/ui/VisibilityManager.qml index 8b641e4..fd5e620 100644 --- a/containment/package/contents/ui/VisibilityManager.qml +++ b/containment/package/contents/ui/VisibilityManager.qml @@ -465,8 +465,8 @@ Item{ } = //console.log("reached updating geometry ::: "+dock.maskArea); - if((normalState && !dock.visibility.isHidden) - && !(root.behaveAsPlasmaPanel && root.editMode)){ + if(normalState){ + var tempGeometry =3D Qt.rect(dock.maskArea.x, dock.maskArea.y,= dock.maskArea.width, dock.maskArea.height); = //the shadows size must be removed from the maskArea