Merge from trunk.
Make sure we don't hang forever when activating a window belonging to
another thread
Modified:
branches/ros-branch-0_2_8/reactos/subsys/win32k/ntuser/winpos.c
_____
Modified:
branches/ros-branch-0_2_8/reactos/subsys/win32k/ntuser/winpos.c
--- branches/ros-branch-0_2_8/reactos/subsys/win32k/ntuser/winpos.c
2005-10-15 09:53:14 UTC (rev 18468)
+++ branches/ros-branch-0_2_8/reactos/subsys/win32k/ntuser/winpos.c
2005-10-15 09:55:46 UTC (rev 18469)
@@ -596,7 +596,7 @@
if (!(WinPos->flags & SWP_NOSENDCHANGING))
{
- co_IntSendMessage(Window->hSelf, WM_WINDOWPOSCHANGING, 0,
(LPARAM) WinPos);
+ co_IntPostOrSendMessage(Window->hSelf, WM_WINDOWPOSCHANGING, 0,
(LPARAM) WinPos);
}
*WindowRect = Window->WindowRect;
@@ -1282,7 +1282,7 @@
}
if ((WinPos.flags & SWP_AGG_STATUSFLAGS) != SWP_AGG_NOPOSCHANGE)
- co_IntSendMessage(WinPos.hwnd, WM_WINDOWPOSCHANGED, 0, (LPARAM)
&WinPos);
+ co_IntPostOrSendMessage(WinPos.hwnd, WM_WINDOWPOSCHANGED, 0,
(LPARAM) &WinPos);
return TRUE;
}
@@ -1337,28 +1337,39 @@
/* Fall through. */
case SW_MINIMIZE:
{
- Swp |= SWP_FRAMECHANGED | SWP_NOACTIVATE;
+ Swp |= SWP_NOACTIVATE;
if (!(Window->Style & WS_MINIMIZE))
{
- Swp |= co_WinPosMinMaximize(Window, SW_MINIMIZE,
&NewPos);
+ Swp |= co_WinPosMinMaximize(Window, SW_MINIMIZE,
&NewPos) |
+ SWP_FRAMECHANGED;
}
else
{
Swp |= SWP_NOSIZE | SWP_NOMOVE;
+ if (! WasVisible)
+ {
+ Swp |= SWP_FRAMECHANGED;
+ }
}
break;
}
case SW_SHOWMAXIMIZED:
{
- Swp |= SWP_SHOWWINDOW | SWP_FRAMECHANGED;
+//__asm__("int $3\n");
+ Swp |= SWP_SHOWWINDOW;
if (!(Window->Style & WS_MAXIMIZE))
{
- Swp |= co_WinPosMinMaximize(Window, SW_MAXIMIZE,
&NewPos);
+ Swp |= co_WinPosMinMaximize(Window, SW_MAXIMIZE,
&NewPos) |
+ SWP_FRAMECHANGED;
}
else
{
Swp |= SWP_NOSIZE | SWP_NOMOVE;
+ if (! WasVisible)
+ {
+ Swp |= SWP_FRAMECHANGED;
+ }
}
break;
}
@@ -1377,14 +1388,19 @@
case SW_SHOWNORMAL:
case SW_SHOWDEFAULT:
case SW_RESTORE:
- Swp |= SWP_SHOWWINDOW | SWP_FRAMECHANGED;
+ Swp |= SWP_SHOWWINDOW;
if (Window->Style & (WS_MINIMIZE | WS_MAXIMIZE))
{
- Swp |= co_WinPosMinMaximize(Window, SW_RESTORE, &NewPos);
+ Swp |= co_WinPosMinMaximize(Window, SW_RESTORE, &NewPos) |
+ SWP_FRAMECHANGED;
}
else
{
Swp |= SWP_NOSIZE | SWP_NOMOVE;
+ if (! WasVisible)
+ {
+ Swp |= SWP_FRAMECHANGED;
+ }
}
break;
}
Show replies by date