Skip to content

Commit ad06241

Browse files
authored
fix(issue-350): on RedHat/CentOS, sometimes there will be one more move event after user release their mouse which will cause the floating overlay can not be hide. Here we use the WindowActivate and WindowDeactivate event to check whether user release their mouse. (#401)
1 parent 6a1ea6c commit ad06241

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

src/FloatingDockContainer.cpp

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1239,19 +1239,36 @@ void CFloatingDockContainer::resizeEvent(QResizeEvent *event)
12391239
Super::resizeEvent(event);
12401240
}
12411241

1242-
1242+
static bool s_mousePressed = false;
12431243
//============================================================================
12441244
void CFloatingDockContainer::moveEvent(QMoveEvent *event)
12451245
{
12461246
Super::moveEvent(event);
1247-
if (!d->IsResizing && event->spontaneous())
1247+
if (!d->IsResizing && event->spontaneous() && s_mousePressed)
12481248
{
12491249
d->DraggingState = DraggingFloatingWidget;
12501250
d->updateDropOverlays(QCursor::pos());
12511251
}
12521252
d->IsResizing = false;
12531253
}
12541254

1255+
//============================================================================
1256+
bool CFloatingDockContainer::event(QEvent *e)
1257+
{
1258+
bool result = Super::event(e);
1259+
switch (e->type())
1260+
{
1261+
case QEvent::WindowActivate:
1262+
s_mousePressed = false;
1263+
break;
1264+
case QEvent::WindowDeactivate:
1265+
s_mousePressed = true;
1266+
break;
1267+
default:
1268+
break;
1269+
}
1270+
return result;
1271+
}
12551272

12561273
//============================================================================
12571274
bool CFloatingDockContainer::hasNativeTitleBar()

src/FloatingDockContainer.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ private Q_SLOTS:
188188
#ifdef Q_OS_LINUX
189189
virtual void moveEvent(QMoveEvent *event) override;
190190
virtual void resizeEvent(QResizeEvent *event) override;
191+
virtual bool event(QEvent *e) override;
191192
#endif
192193

193194
#ifdef Q_OS_WIN

0 commit comments

Comments
 (0)