diff --git a/reactos/subsys/win32k/ntuser/winpos.c b/reactos/subsys/win32k/ntuser/winpos.c index 4e4831f1eed..5f0363d34b3 100644 --- a/reactos/subsys/win32k/ntuser/winpos.c +++ b/reactos/subsys/win32k/ntuser/winpos.c @@ -114,6 +114,29 @@ WinPosActivateOtherWindow(PWINDOW_OBJECT Window) IntSetFocusMessageQueue(NULL); return; } + if ((Window->Style & WS_POPUP) && (Wnd = IntGetOwner(Window))) + { + for(;;) + { + Old = Wnd; + Wnd = IntGetParentObject(Wnd); + if(IntIsDesktopWindow(Wnd)) + { + IntReleaseWindowObject(Wnd); + Wnd = Old; + break; + } + IntReleaseWindowObject(Old); + } + + if (IntSetForegroundWindow(Wnd)) + { + IntReleaseWindowObject(Wnd); + return; + } + + IntReleaseWindowObject(Wnd); + } Wnd = Window; for(;;) {