Skip to content

Commit c11a496

Browse files
UweUwe
authored andcommitted
Change to ensure that modal widgets are always on top of floating widgets
1 parent d27783e commit c11a496

2 files changed

Lines changed: 12 additions & 1 deletion

File tree

src/DockFocusController.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ void CDockFocusController::onFocusWindowChanged(QWindow *focusWindow)
264264
//===========================================================================
265265
void CDockFocusController::onApplicationFocusChanged(QWidget* focusedOld, QWidget* focusedNow)
266266
{
267-
Q_UNUSED(focusedOld);
267+
Q_UNUSED(focusedOld);
268268

269269
if (d->DockManager->isRestoringState())
270270
{

src/DockManager.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
#include <QSettings>
4646
#include <QMenu>
4747
#include <QApplication>
48+
#include <QWindow>
4849

4950
#include "FloatingDockContainer.h"
5051
#include "DockOverlay.h"
@@ -500,6 +501,16 @@ CDockManager::CDockManager(QWidget *parent) :
500501

501502
#ifdef Q_OS_LINUX
502503
window()->installEventFilter(this);
504+
505+
connect(qApp, &QApplication::focusWindowChanged, [](QWindow* focusWindow)
506+
{
507+
// bring modal dialogs to foreground to ensure that they are in front of any
508+
// floating dock widget
509+
if (focusWindow && focusWindow->isModal())
510+
{
511+
focusWindow->raise();
512+
}
513+
});
503514
#endif
504515
}
505516

0 commit comments

Comments
 (0)