adjust borders when the panel moves

wilder-5.14
Marco Martin 13 years ago
parent 9c5b0da508
commit e763becde3
  1. 4
      panelview.cpp
  2. 1
      panelview.h
  3. 74
      qmlpackages/desktop/contents/views/Panel.qml

@ -22,6 +22,8 @@
#include <QAction>
#include <QDebug>
#include <QScreen>
#include <QQmlEngine>
#include <QQmlContext>
#include <KActionCollection>
#include <KWindowSystem>
@ -100,6 +102,8 @@ void PanelView::init()
}
setResizeMode(View::SizeRootObjectToView);
qmlRegisterType<QScreen>();
engine()->rootContext()->setContextProperty("panel", this);
setSource(QUrl::fromLocalFile(m_corona->package().filePath("views", "Panel.qml")));
positionPanel();
}

@ -35,6 +35,7 @@ class PanelView : public View
Q_PROPERTY(int length READ length WRITE setLength NOTIFY lengthChanged)
Q_PROPERTY(int maximumLength READ maximumLength WRITE setMaximumLength NOTIFY maximumLengthChanged)
Q_PROPERTY(int minimumLength READ minimumLength WRITE setMinimumLength NOTIFY minimumLengthChanged)
Q_PROPERTY(QScreen *screen READ screen /*NOTIFY screenChanged*/)
public:
explicit PanelView(DesktopCorona *corona, QWindow *parent = 0);

@ -30,6 +30,41 @@ PlasmaCore.FrameSvgItem {
property Item containment
function adjustBorders() {
var borders = PlasmaCore.FrameSvg.AllBorders;
switch (containment.location) {
case PlasmaCore.Types.TopEdge:
borders = borders & ~PlasmaCore.FrameSvg.TopBorder;
break;
case PlasmaCore.Types.LeftEdge:
borders = borders & ~PlasmaCore.FrameSvg.LeftBorder;
break;
case PlasmaCore.Types.RightEdge:
borders = borders & ~PlasmaCore.FrameSvg.RightBorder;
break;
case PlasmaCore.Types.BottomEdge:
default:
borders = borders & ~PlasmaCore.FrameSvg.BottomBorder;
break;
}
if (panel.x <= panel.screen.geometry.x) {
borders = borders & ~PlasmaCore.FrameSvg.LeftBorder;
}
if (panel.x + panel.width >= panel.screen.geometry.x + panel.screen.geometry.width) {
borders = borders & ~PlasmaCore.FrameSvg.RightBorder;
}
if (panel.y <= panel.screen.geometry.y) {
borders = borders & ~PlasmaCore.FrameSvg.TopBorder;
}
if (panel.y + panel.height >= panel.screen.geometry.y + panel.screen.geometry.height) {
borders = borders & ~PlasmaCore.FrameSvg.BottomBorder;
}
root.enabledBorders = borders;
}
onContainmentChanged: {
print("New panel Containment: " + containment)
//containment.parent = root
@ -40,25 +75,30 @@ PlasmaCore.FrameSvgItem {
Connections {
target: containment
onLocationChanged: {
var borders = PlasmaCore.FrameSvg.AllBorders;
adjustBorders()
}
}
switch (containment.location) {
case PlasmaCore.Types.TopEdge:
borders = borders & ~PlasmaCore.FrameSvg.TopBorder;
break;
case PlasmaCore.Types.LeftEdge:
borders = borders & ~PlasmaCore.FrameSvg.LeftBorder;
break;
case PlasmaCore.Types.RightEdge:
borders = borders & ~PlasmaCore.FrameSvg.RightBorder;
break;
case PlasmaCore.Types.BottomEdge:
default:
borders = borders & ~PlasmaCore.FrameSvg.BottomBorder;
break;
}
Connections {
target: panel
onXChanged: {
adjustBorders();
}
onYChanged: {
adjustBorders();
}
onWidthChanged: {
adjustBorders();
}
onHeightChanged: {
adjustBorders();
}
}
root.enabledBorders = borders;
Connections {
target: panel.screen
onGeometryChanged: {
adjustBorders();
}
}

Loading…
Cancel
Save