@@ -547,9 +547,16 @@ bool CDockManager::eventFilter(QObject *obj, QEvent *e)
547
547
// setWindowFlags(Qt::WindowStaysOnTopHint) will hide the window and thus requires a show call.
548
548
// This then leads to flickering and a nasty endless loop (also buggy behaviour on Ubuntu).
549
549
// So we just do it ourself.
550
- internal::xcb_update_prop (true , _window->window ()->winId (),
551
- " _NET_WM_STATE" , " _NET_WM_STATE_ABOVE" , " _NET_WM_STATE_STAYS_ON_TOP" );
552
- }
550
+ if (QGuiApplication::platformName () == QLatin1String (" xcb" ))
551
+ {
552
+ internal::xcb_update_prop (true , _window->window ()->winId (),
553
+ " _NET_WM_STATE" , " _NET_WM_STATE_ABOVE" , " _NET_WM_STATE_STAYS_ON_TOP" );
554
+ }
555
+ else
556
+ {
557
+ _window->setWindowFlag (Qt::WindowStaysOnTopHint, true );
558
+ }
559
+ }
553
560
}
554
561
else if (e->type () == QEvent::WindowDeactivate)
555
562
{
@@ -559,8 +566,16 @@ bool CDockManager::eventFilter(QObject *obj, QEvent *e)
559
566
{
560
567
continue ;
561
568
}
562
- internal::xcb_update_prop (false , _window->window ()->winId (),
563
- " _NET_WM_STATE" , " _NET_WM_STATE_ABOVE" , " _NET_WM_STATE_STAYS_ON_TOP" );
569
+
570
+ if (QGuiApplication::platformName () == QLatin1String (" xcb" ))
571
+ {
572
+ internal::xcb_update_prop (false , _window->window ()->winId (),
573
+ " _NET_WM_STATE" , " _NET_WM_STATE_ABOVE" , " _NET_WM_STATE_STAYS_ON_TOP" );
574
+ }
575
+ else
576
+ {
577
+ _window->setWindowFlag (Qt::WindowStaysOnTopHint, false );
578
+ }
564
579
_window->raise ();
565
580
}
566
581
}
0 commit comments