Skip to content

Commit ef52c74

Browse files
committed
Update drag label
1 parent a61a0d5 commit ef52c74

File tree

3 files changed

+23
-6
lines changed

3 files changed

+23
-6
lines changed

src/JetBrainsDockingSystem/dockdragcontroller.cpp

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
#include <QtCore/QDebug>
55
#include <QtGui/QtEvents>
66
#include <QtGui/QScreen>
7+
#include <QtGui/QPainter>
8+
#include <QtWidgets/QStyle>
9+
#include <QtWidgets/QStyleOption>
710

811
#include "dockwidget_p.h"
912

@@ -27,12 +30,25 @@ namespace JBDS {
2730
return rectHitTest(rect1, rect2);
2831
}
2932

30-
class DockDragLabel : public QLabel {
33+
class DockDragLabel : public QWidget {
3134
public:
32-
explicit DockDragLabel(QWidget *parent = nullptr) : QLabel(parent) {
35+
explicit DockDragLabel(const QPixmap &pixmap, QWidget *parent = nullptr)
36+
: QWidget(parent), pixmap(pixmap) {
3337
}
3438
~DockDragLabel() = default;
3539

40+
QSize sizeHint() const override {
41+
return pixmap.size() / pixmap.devicePixelRatio();
42+
}
43+
44+
void paintEvent(QPaintEvent *) override {
45+
QPainter painter(this);
46+
QStyleOption opt;
47+
opt.initFrom(this);
48+
style()->drawItemPixmap(&painter, rect(), Qt::AlignCenter, pixmap);
49+
}
50+
51+
QPixmap pixmap;
3652
QAbstractButton *currentButton;
3753
QPoint currentPos;
3854
DockSideBar *originBar, *targetBar;
@@ -58,7 +74,7 @@ namespace JBDS {
5874
button->hide();
5975
}
6076

61-
auto label = new DockDragLabel(m_dock);
77+
auto label = new DockDragLabel(pixmap, m_dock);
6278
m_label = label;
6379
label->setWindowFlags(Qt::Popup | Qt::NoDropShadowWindowHint);
6480

@@ -67,7 +83,6 @@ namespace JBDS {
6783
label->originBar = orgSidebar;
6884
label->targetBar = nullptr;
6985

70-
label->setPixmap(pixmap);
7186
label->adjustSize();
7287
label->setFocus();
7388
label->installEventFilter(this);

src/JetBrainsDockingSystem/dockdragcontroller_p.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ namespace JBDS {
2020
bool eventFilter(QObject *obj, QEvent *event) override;
2121

2222
DockWidget *m_dock;
23-
QLabel *m_label;
23+
QWidget *m_label;
2424

2525
private:
2626
void tabDragMove();

tests/normal/MainWindow.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ MainWindow {
2020
background-color: #ffffff;
2121
}
2222
23-
23+
QLabel {
24+
padding: 50px;
25+
}
2426
2527
2628
JBDS--DockWidget {

0 commit comments

Comments
 (0)