Skip to content

Commit 580fadf

Browse files
committed
fix docking drag drop problem on Linux wayland
1 parent eb22a9a commit 580fadf

File tree

2 files changed

+23
-21
lines changed

2 files changed

+23
-21
lines changed

src/DockOverlay.cpp

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -190,27 +190,28 @@ struct DockOverlayCrossPrivate
190190
}
191191

192192
l->setPixmap(createHighDpiDropIndicatorPixmap(size, DockWidgetArea, Mode));
193-
l->setWindowFlags(Qt::Tool | Qt::FramelessWindowHint);
194-
l->setAttribute(Qt::WA_TranslucentBackground);
195-
l->setProperty("dockWidgetArea", DockWidgetArea);
196-
return l;
197-
}
193+
l->setWindowFlags(Qt::ToolTip);
194+
l->setAttribute(Qt::WA_TranslucentBackground);
195+
l->setProperty("dockWidgetArea", DockWidgetArea);
196+
return l;
197+
}
198198

199-
//============================================================================
200-
void updateDropIndicatorIcon(QWidget* DropIndicatorWidget)
201-
{
202-
QLabel* l = qobject_cast<QLabel*>(DropIndicatorWidget);
199+
//============================================================================
200+
void updateDropIndicatorIcon(QWidget* DropIndicatorWidget)
201+
{
202+
QLabel* l = qobject_cast<QLabel*>(DropIndicatorWidget);
203203
const qreal metric = dropIndicatiorWidth(l);
204204
const QSizeF size(metric, metric);
205205

206206
int Area = l->property("dockWidgetArea").toInt();
207207
l->setPixmap(createHighDpiDropIndicatorPixmap(size, (DockWidgetArea)Area, Mode));
208-
}
208+
}
209209

210-
//============================================================================
211-
QPixmap createHighDpiDropIndicatorPixmap(const QSizeF& size, DockWidgetArea DockWidgetArea,
212-
CDockOverlay::eMode Mode)
213-
{
210+
//============================================================================
211+
QPixmap createHighDpiDropIndicatorPixmap(const QSizeF& size,
212+
DockWidgetArea DockWidgetArea,
213+
CDockOverlay::eMode Mode)
214+
{
214215
QColor borderColor = iconColor(CDockOverlayCross::FrameColor);
215216
QColor backgroundColor = iconColor(CDockOverlayCross::WindowBackgroundColor);
216217
QColor overlayColor = iconColor(CDockOverlayCross::OverlayColor);
@@ -404,9 +405,9 @@ CDockOverlay::CDockOverlay(QWidget* parent, eMode Mode) :
404405
d->Mode = Mode;
405406
d->Cross = new CDockOverlayCross(this);
406407
#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
407-
setWindowFlags(Qt::Tool | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | Qt::X11BypassWindowManagerHint);
408+
setWindowFlags(Qt::ToolTip | Qt::X11BypassWindowManagerHint);
408409
#else
409-
setWindowFlags(Qt::Tool | Qt::FramelessWindowHint);
410+
setWindowFlags(Qt::ToolTip);
410411
#endif
411412
setWindowOpacity(1);
412413
setWindowTitle("DockOverlay");
@@ -739,9 +740,10 @@ CDockOverlayCross::CDockOverlayCross(CDockOverlay* overlay) :
739740
{
740741
d->DockOverlay = overlay;
741742
#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
742-
setWindowFlags(Qt::Tool | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | Qt::X11BypassWindowManagerHint);
743+
setWindowFlags(Qt::ToolTip | Qt::WindowStaysOnTopHint
744+
| Qt::X11BypassWindowManagerHint);
743745
#else
744-
setWindowFlags(Qt::Tool | Qt::FramelessWindowHint);
746+
setWindowFlags(Qt::ToolTip);
745747
#endif
746748
setWindowTitle("DockOverlayCross");
747749
setAttribute(Qt::WA_TranslucentBackground);

src/FloatingDragPreview.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -290,9 +290,9 @@ CFloatingDragPreview::CFloatingDragPreview(QWidget* Content, QWidget* parent) :
290290
}
291291
else
292292
{
293-
setWindowFlags(Qt::Tool | Qt::FramelessWindowHint);
294-
setAttribute(Qt::WA_NoSystemBackground);
295-
setAttribute(Qt::WA_TranslucentBackground);
293+
setWindowFlags(Qt::ToolTip);
294+
setAttribute(Qt::WA_NoSystemBackground);
295+
setAttribute(Qt::WA_TranslucentBackground);
296296
}
297297

298298
#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)

0 commit comments

Comments
 (0)