Windows QPA: Call raise unconditionally for popups

A case of nested Qt::WindowStaysOnTopHint may occur when
context menus are created on windows with Qt::WindowStaysOnTopHint
set. Raise the popup in that case.

Amends 329a029c36.

Task-number: QTBUG-62004
Change-Id: Ifb761edbd42b1447bec30735810c006d02e1aa97
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
This commit is contained in:
Friedemann Kleint 2017-08-21 11:18:14 +02:00
parent 0f4cce2630
commit 1fc9c8d8f3
1 changed files with 3 additions and 1 deletions

View File

@ -872,8 +872,10 @@ void QWindowsBaseWindow::hide_sys() // Normal hide, do not activate other window
void QWindowsBaseWindow::raise_sys() void QWindowsBaseWindow::raise_sys()
{ {
qCDebug(lcQpaWindows) << __FUNCTION__ << this << window(); qCDebug(lcQpaWindows) << __FUNCTION__ << this << window();
if ((window()->flags() & (Qt::WindowStaysOnTopHint | Qt::WindowStaysOnBottomHint)) == 0) if (window()->type() == Qt::Popup
|| (window()->flags() & (Qt::WindowStaysOnTopHint | Qt::WindowStaysOnBottomHint)) == 0) {
SetWindowPos(handle(), HWND_TOP, 0, 0, 0, 0, SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE); SetWindowPos(handle(), HWND_TOP, 0, 0, 0, 0, SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);
}
} }
void QWindowsBaseWindow::lower_sys() void QWindowsBaseWindow::lower_sys()