diff options
-rw-r--r-- | src/shared/qtsingleapplication/qtsingleapplication.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/shared/qtsingleapplication/qtsingleapplication.cpp b/src/shared/qtsingleapplication/qtsingleapplication.cpp index fdb00b1..fc452db 100644 --- a/src/shared/qtsingleapplication/qtsingleapplication.cpp +++ b/src/shared/qtsingleapplication/qtsingleapplication.cpp @@ -148,9 +148,14 @@ void QtSingleApplication::activateWindow() actWin->raise(); actWin->activateWindow(); #ifdef Q_OS_WIN - SetWindowPos(actWin->winId(), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE ); - SetWindowPos(actWin->winId(), HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | - SWP_NOSIZE ); + WId winId = actWin->winId(); + DWORD foregroundPId = GetWindowThreadProcessId(GetForegroundWindow(), NULL); + DWORD myPId = GetWindowThreadProcessId(winId, NULL); + if (foregroundPId != myPId) { + AttachThreadInput(foregroundPId, myPId, true); + BringWindowToTop(winId); + AttachThreadInput(foregroundPId, myPId, false); + } #elif defined(Q_WS_X11) XEvent xev; xev.xclient.type = ClientMessage; |