Skip to content

Commit 9deb101

Browse files
committed
fix: incorrect dependency for DockPositioner
Remove the dependency of DockPanel for DockPlugin. Log: as title.
1 parent 1733910 commit 9deb101

File tree

3 files changed

+34
-20
lines changed

3 files changed

+34
-20
lines changed

panels/dock/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,6 @@ target_link_libraries(dock-plugin PUBLIC
153153
PRIVATE
154154
PkgConfig::WaylandClient
155155
Qt${QT_VERSION_MAJOR}::WaylandCompositorPrivate
156-
dockpanel
157156
)
158157

159158
target_include_directories(dock-plugin

panels/dock/dockpositioner.cpp

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,28 @@
33
// SPDX-License-Identifier: GPL-3.0-or-later
44

55
#include "dockpositioner.h"
6-
#include "dockpanel.h"
6+
#include <panel.h>
77

8-
#include <QQuickWindow>
98
#include <QLoggingCategory>
109
#include <QQuickItem>
10+
#include <QQuickWindow>
11+
#include <QTimer>
12+
13+
DS_USE_NAMESPACE
1114

1215
namespace dock {
1316

14-
static DockPanel *isInDockPanel(QObject *object)
17+
static DPanel *isInDockPanel(QObject *object)
1518
{
16-
auto dockPanel = qobject_cast<DockPanel*>(DockPanel::qmlAttachedProperties(object));
17-
if (!dockPanel) {
19+
auto dockPanel = qobject_cast<DPanel *>(DPanel::qmlAttachedProperties(object));
20+
if (!dockPanel || dockPanel->pluginId() != "org.deepin.ds.dock") {
1821
qWarning() << "only used in DockPanel.";
1922
return nullptr;
2023
}
2124
return dockPanel;
2225
}
2326

24-
DockPositioner::DockPositioner(DockPanel *panel, QObject *parent)
27+
DockPositioner::DockPositioner(DPanel *panel, QObject *parent)
2528
: QObject(parent)
2629
, m_panel(panel)
2730
, m_positionTimer(new QTimer(this))
@@ -31,8 +34,8 @@ DockPositioner::DockPositioner(DockPanel *panel, QObject *parent)
3134
connect(m_positionTimer, &QTimer::timeout, this, &DockPositioner::updatePosition);
3235

3336
Q_ASSERT(m_panel);
34-
connect(m_panel, &DockPanel::positionChanged, this, &DockPositioner::update);
35-
connect(m_panel, &DockPanel::geometryChanged, this, &DockPositioner::update);
37+
connect(m_panel, SIGNAL(positionChanged(Position)), this, SLOT(update()));
38+
connect(m_panel, SIGNAL(geometryChanged(QRect)), this, SLOT(update()));
3639
connect(this, &DockPositioner::boundingChanged, this, &DockPositioner::update);
3740
}
3841

@@ -72,9 +75,14 @@ int DockPositioner::y() const
7275
return m_y;
7376
}
7477

75-
QWindow *DockPositioner::window() const
78+
QRect DockPositioner::dockGeometry() const
79+
{
80+
return m_panel ? m_panel->property("geometry").toRect() : QRect();
81+
}
82+
83+
Position DockPositioner::dockPosition() const
7684
{
77-
return m_panel->window();
85+
return m_panel ? static_cast<Position>(m_panel->property("position").toInt()) : Position::Top;
7886
}
7987

8088
void DockPositioner::setX(int x)
@@ -102,7 +110,7 @@ void DockPositioner::updatePosition()
102110
{
103111
int xPosition = 0;
104112
int yPosition = 0;
105-
switch(m_panel->position()) {
113+
switch (dockPosition()) {
106114
case dock::Top: {
107115
xPosition = m_bounding.x();
108116
yPosition = m_bounding.y();
@@ -131,7 +139,7 @@ void DockPositioner::updatePosition()
131139
setY(yPosition);
132140
}
133141

134-
DockPanelPositioner::DockPanelPositioner(DockPanel *panel, QObject *parent)
142+
DockPanelPositioner::DockPanelPositioner(DPanel *panel, QObject *parent)
135143
: DockPositioner(panel, parent)
136144
{
137145
connect(this, &DockPanelPositioner::horizontalOffsetChanged, this, &DockPanelPositioner::update);
@@ -188,12 +196,12 @@ void DockPanelPositioner::resetVertialOffset()
188196

189197
void DockPanelPositioner::updatePosition()
190198
{
191-
const auto dockWindowRect = window()->geometry();
199+
const auto dockWindowRect = dockGeometry();
192200
int xPosition = 0;
193201
int yPosition = 0;
194202
int horizontalOffset = m_horizontalOffset == -1 ? m_bounding.width() / 2 : m_horizontalOffset;
195203
int vertialOffset = m_vertialOffset == -1 ? m_bounding.height() / 2 : m_vertialOffset;
196-
switch(m_panel->position()) {
204+
switch (dockPosition()) {
197205
case dock::Top: {
198206
xPosition = m_bounding.x() - horizontalOffset;
199207
yPosition = dockWindowRect.height() + 10;

panels/dock/dockpositioner.h

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,19 @@
44

55
#pragma once
66

7+
#include "constants.h"
8+
#include <dsglobal.h>
9+
710
#include <QObject>
811
#include <QtQml/qqml.h>
912
#include <QWindow>
1013

14+
DS_BEGIN_NAMESPACE
15+
class DPanel;
16+
DS_END_NAMESPACE
17+
1118
namespace dock {
1219

13-
class DockPanel;
1420
class DockPositioner : public QObject
1521
{
1622
Q_OBJECT
@@ -21,7 +27,7 @@ class DockPositioner : public QObject
2127
QML_UNCREATABLE("DockPositioner is only available via attached properties.")
2228
QML_ATTACHED(DockPositioner)
2329
public:
24-
explicit DockPositioner(DockPanel *panel, QObject *parent = nullptr);
30+
explicit DockPositioner(DS_NAMESPACE::DPanel *panel, QObject *parent = nullptr);
2531
virtual ~DockPositioner() override;
2632

2733
static DockPositioner *qmlAttachedProperties(QObject *object);
@@ -30,7 +36,8 @@ class DockPositioner : public QObject
3036
void setBounding(const QRect &newBounding);
3137
int x() const;
3238
int y() const;
33-
QWindow *window() const;
39+
QRect dockGeometry() const;
40+
Position dockPosition() const;
3441

3542
void setX(int x);
3643
void setY(int y);
@@ -44,7 +51,7 @@ public slots:
4451
void yChanged();
4552

4653
protected:
47-
DockPanel *m_panel = nullptr;
54+
QPointer<DS_NAMESPACE::DPanel> m_panel;
4855
QRect m_bounding {};
4956
int m_x = 0;
5057
int m_y = 0;
@@ -60,7 +67,7 @@ class DockPanelPositioner : public DockPositioner
6067
QML_UNCREATABLE("DockPanelPositioner is only available via attached properties.")
6168
QML_ATTACHED(DockPanelPositioner)
6269
public:
63-
explicit DockPanelPositioner(DockPanel *panel, QObject *parent = nullptr);
70+
explicit DockPanelPositioner(DS_NAMESPACE::DPanel *panel, QObject *parent = nullptr);
6471
virtual ~DockPanelPositioner() override;
6572

6673
static DockPanelPositioner *qmlAttachedProperties(QObject *object);

0 commit comments

Comments
 (0)