From e90418d31cc6fd299fed2afa972cc82433cf33db Mon Sep 17 00:00:00 2001 From: Sergey Guralnik Date: Thu, 6 Jun 2013 08:17:15 +0300 Subject: [PATCH] user32: Bring reference MDI child to bottom when switching to next. --- dlls/user32/mdi.c | 5 ++++- dlls/user32/tests/win.c | 2 -- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/dlls/user32/mdi.c b/dlls/user32/mdi.c index c92eeb1f692..7b50fae193d 100644 --- a/dlls/user32/mdi.c +++ b/dlls/user32/mdi.c @@ -1156,8 +1156,11 @@ LRESULT MDIClientWndProc_common( HWND hwnd, UINT message, WPARAM wParam, LPARAM case WM_MDINEXT: /* lParam != 0 means previous window */ { - HWND next = MDI_GetWindow( ci, WIN_GetFullHandle( (HWND)wParam ), !lParam, 0 ); + HWND hwnd = wParam ? WIN_GetFullHandle((HWND)wParam) : ci->hwndActiveChild; + HWND next = MDI_GetWindow( ci, hwnd, !lParam, 0 ); MDI_SwitchActiveChild( ci, next, TRUE ); + if(!lParam) + SetWindowPos(hwnd, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE); break; } diff --git a/dlls/user32/tests/win.c b/dlls/user32/tests/win.c index a9467ce4532..2d9faaa0a1a 100644 --- a/dlls/user32/tests/win.c +++ b/dlls/user32/tests/win.c @@ -1545,7 +1545,6 @@ static void test_MDI_child_stack(HWND mdi_client) stack[1] = GetWindow(stack[0], GW_HWNDNEXT); stack[2] = GetWindow(stack[1], GW_HWNDNEXT); stack[3] = GetWindow(stack[2], GW_HWNDNEXT); -todo_wine ok(stack[0] == child_2 && stack[1] == child_4 && stack[2] == child_1 && stack[3] == child_3, "Broken MDI child stack:\nexpected: %p->%p->%p->%p, but got: %p->%p->%p->%p\n", @@ -1558,7 +1557,6 @@ todo_wine stack[1] = GetWindow(stack[0], GW_HWNDNEXT); stack[2] = GetWindow(stack[1], GW_HWNDNEXT); stack[3] = GetWindow(stack[2], GW_HWNDNEXT); -todo_wine ok(stack[0] == child_4 && stack[1] == child_2 && stack[2] == child_1 && stack[3] == child_3, "Broken MDI child stack:\nexpected: %p->%p->%p->%p, but got: %p->%p->%p->%p\n",