make co_WinPosShowWindow take pWnd, not hWnd add co_ to some funcs Modified: trunk/reactos/subsys/win32k/include/userfuncs.h Modified: trunk/reactos/subsys/win32k/include/winpos.h Modified: trunk/reactos/subsys/win32k/ntuser/scrollbar.c Modified: trunk/reactos/subsys/win32k/ntuser/window.c Modified: trunk/reactos/subsys/win32k/ntuser/winpos.c _____
Modified: trunk/reactos/subsys/win32k/include/userfuncs.h --- trunk/reactos/subsys/win32k/include/userfuncs.h 2005-09-07 00:02:39 UTC (rev 17712) +++ trunk/reactos/subsys/win32k/include/userfuncs.h 2005-09-07 07:53:31 UTC (rev 17713) @@ -93,8 +93,6 @@
HWND FASTCALL UserGetShellWindow();
-HWND FASTCALL UserSetParent(HWND hWndChild, HWND hWndNewParent); - HWND FASTCALL UserGetWindow(HWND hWnd, UINT Relationship);
HDC FASTCALL _____
Modified: trunk/reactos/subsys/win32k/include/winpos.h --- trunk/reactos/subsys/win32k/include/winpos.h 2005-09-07 00:02:39 UTC (rev 17712) +++ trunk/reactos/subsys/win32k/include/winpos.h 2005-09-07 07:53:31 UTC (rev 17713) @@ -29,7 +29,7 @@
co_WinPosSetWindowPos(HWND Wnd, HWND WndInsertAfter, INT x, INT y, INT cx, INT cy, UINT flags); BOOLEAN FASTCALL -co_WinPosShowWindow(HWND Wnd, INT Cmd); +co_WinPosShowWindow(PWINDOW_OBJECT Window, INT Cmd); USHORT FASTCALL co_WinPosWindowFromPoint(PWINDOW_OBJECT ScopeWin, PUSER_MESSAGE_QUEUE OnlyHitTests, POINT *WinPoint, PWINDOW_OBJECT* Window); _____
Modified: trunk/reactos/subsys/win32k/ntuser/scrollbar.c --- trunk/reactos/subsys/win32k/ntuser/scrollbar.c 2005-09-07 00:02:39 UTC (rev 17712) +++ trunk/reactos/subsys/win32k/ntuser/scrollbar.c 2005-09-07 07:53:31 UTC (rev 17713) @@ -853,7 +853,7 @@
{ IntUpdateSBInfo(Window, SB_CTL);
- co_WinPosShowWindow(Window->hSelf, bShow ? SW_SHOW : SW_HIDE); + co_WinPosShowWindow(Window, bShow ? SW_SHOW : SW_HIDE); return( TRUE); }
_____
Modified: trunk/reactos/subsys/win32k/ntuser/window.c --- trunk/reactos/subsys/win32k/ntuser/window.c 2005-09-07 00:02:39 UTC (rev 17712) +++ trunk/reactos/subsys/win32k/ntuser/window.c 2005-09-07 07:53:31 UTC (rev 17713) @@ -913,7 +913,7 @@
}
PWINDOW_OBJECT FASTCALL -IntSetParent(PWINDOW_OBJECT Wnd, PWINDOW_OBJECT WndNewParent) +co_IntSetParent(PWINDOW_OBJECT Wnd, PWINDOW_OBJECT WndNewParent) { PWINDOW_OBJECT WndOldParent, Sibling, InsertAfter; HWND hWnd, hWndNewParent, hWndOldParent; @@ -930,7 +930,7 @@ * Windows hides the window first, then shows it again * including the WM_SHOWWINDOW messages and all */ - WasVisible = co_WinPosShowWindow(hWnd, SW_HIDE); + WasVisible = co_WinPosShowWindow(Wnd, SW_HIDE);
/* Validate that window and parent still exist */ if (!IntIsWindow(hWnd) || !IntIsWindow(hWndNewParent)) @@ -1984,14 +1984,16 @@ { co_UserShowScrollBar(Window, SB_HORZ, TRUE); } - UserDereferenceWindowObjectCo(Window);
if (dwStyle & WS_VISIBLE) { DPRINT("IntCreateWindow(): About to show window\n"); - co_WinPosShowWindow(Window->hSelf, dwShowMode); + co_WinPosShowWindow(Window, dwShowMode); }
+ //faxme: temp hack + UserDereferenceWindowObjectCo(Window); + DPRINT("IntCreateWindow(): = %X\n", Handle); DPRINT("WindowObject->SystemMenu = 0x%x\n", Window->SystemMenu); return((HWND)Handle); @@ -2098,6 +2100,8 @@ { BOOLEAN isChild;
+ ASSERT_REFS(Window); + if (Window == NULL) { return FALSE; @@ -2113,7 +2117,7 @@ /* Look whether the focus is within the tree of windows we will * be destroying. */ - if (!co_WinPosShowWindow(Window->hSelf, SW_HIDE)) + if (!co_WinPosShowWindow(Window, SW_HIDE)) { if (UserGetActiveWindow() == Window->hSelf) { @@ -2862,7 +2866,7 @@
HWND FASTCALL -UserSetParent(HWND hWndChild, HWND hWndNewParent) +co_UserSetParent(HWND hWndChild, HWND hWndNewParent) { PWINDOW_OBJECT Wnd = NULL, WndParent = NULL, WndOldParent; HWND hWndOldParent = NULL; @@ -2903,7 +2907,7 @@ return( NULL); }
- WndOldParent = IntSetParent(Wnd, WndParent); + WndOldParent = co_IntSetParent(Wnd, WndParent);
if (WndOldParent) { @@ -2944,7 +2948,7 @@ DPRINT("Enter NtUserSetParent\n"); UserEnterExclusive();
- RETURN( UserSetParent(hWndChild, hWndNewParent)); + RETURN( co_UserSetParent(hWndChild, hWndNewParent));
CLEANUP: DPRINT("Leave NtUserSetParent, ret=%i\n",_ret_); @@ -3408,7 +3412,7 @@
LONG FASTCALL -UserSetWindowLong(HWND hWnd, DWORD Index, LONG NewValue, BOOL Ansi) +co_UserSetWindowLong(HWND hWnd, DWORD Index, LONG NewValue, BOOL Ansi) { PWINDOW_OBJECT Window, Parent; PWINSTATION_OBJECT WindowStation; @@ -3499,7 +3503,7 @@ if (Parent && (Parent->hSelf == IntGetDesktopWindow())) OldValue = (LONG) IntSetOwner(Window->hSelf, (HWND) NewValue); else - OldValue = (LONG) UserSetParent(Window->hSelf, (HWND) NewValue); + OldValue = (LONG) co_UserSetParent(Window->hSelf, (HWND) NewValue); if(Parent) IntReleaseWindowObject(Parent); break; @@ -3548,7 +3552,7 @@ DPRINT("Enter NtUserSetWindowLong\n"); UserEnterExclusive();
- RETURN( UserSetWindowLong(hWnd, Index, NewValue, Ansi)); + RETURN( co_UserSetWindowLong(hWnd, Index, NewValue, Ansi));
CLEANUP: DPRINT("Leave NtUserSetWindowLong, ret=%i\n",_ret_); @@ -3580,7 +3584,7 @@ case GWL_ID: case GWL_HINSTANCE: case GWL_HWNDPARENT: - RETURN( UserSetWindowLong(hWnd, Index, (UINT)NewValue, TRUE)); + RETURN( co_UserSetWindowLong(hWnd, Index, (UINT)NewValue, TRUE)); default: if (Index < 0) { @@ -4064,7 +4068,7 @@ }
/* FIXME - change window status */ - co_WinPosShowWindow(Window->hSelf, Safepl.showCmd); + co_WinPosShowWindow(Window, Safepl.showCmd);
if (Window->InternalPos == NULL) Window->InternalPos = ExAllocatePoolWithTag(PagedPool, sizeof(INTERNALPOS), TAG_WININTLIST); @@ -4245,16 +4249,26 @@ * @implemented */ BOOL STDCALL -NtUserShowWindow(HWND hWnd, - LONG nCmdShow) +NtUserShowWindow(HWND hWnd, LONG nCmdShow) { + PWINDOW_OBJECT Window; + BOOL ret; DECLARE_RETURN(BOOL);
DPRINT("Enter NtUserShowWindow\n"); UserEnterExclusive(); + + if (!(Window = UserGetWindowObject(hWnd))) + { + RETURN(FALSE); + } + + UserReferenceWindowObjectCo(Window); + ret = co_WinPosShowWindow(Window, nCmdShow); + UserReferenceWindowObjectCo(Window); + + RETURN(ret);
- RETURN( co_WinPosShowWindow(hWnd, nCmdShow)); - CLEANUP: DPRINT("Leave NtUserShowWindow, ret=%i\n",_ret_); UserLeave(); _____
Modified: trunk/reactos/subsys/win32k/ntuser/winpos.c --- trunk/reactos/subsys/win32k/ntuser/winpos.c 2005-09-07 00:02:39 UTC (rev 17712) +++ trunk/reactos/subsys/win32k/ntuser/winpos.c 2005-09-07 07:53:31 UTC (rev 17713) @@ -1236,25 +1236,15 @@
}
BOOLEAN FASTCALL -co_WinPosShowWindow(HWND Wnd, INT Cmd) +co_WinPosShowWindow(PWINDOW_OBJECT Window, INT Cmd) { BOOLEAN WasVisible; - PWINDOW_OBJECT Window; - NTSTATUS Status; UINT Swp = 0; RECT NewPos; BOOLEAN ShowFlag; // HRGN VisibleRgn;
- Status = - ObmReferenceObjectByHandle(gHandleTable, - Wnd, - otWindow, - (PVOID*)&Window); - if (!NT_SUCCESS(Status)) - { - return(FALSE); - } + ASSERT_REFS(Window);
WasVisible = (Window->Style & WS_VISIBLE) != 0;
@@ -1264,7 +1254,6 @@ { if (!WasVisible) { - ObmDereferenceObject(Window); return(FALSE); } Swp |= SWP_HIDEWINDOW | SWP_NOSIZE | SWP_NOMOVE; @@ -1336,14 +1325,14 @@ ShowFlag = (Cmd != SW_HIDE); if (ShowFlag != WasVisible) { - co_IntSendMessage(Wnd, WM_SHOWWINDOW, ShowFlag, 0); + co_IntSendMessage(Window->hSelf, WM_SHOWWINDOW, ShowFlag, 0); /* * FIXME: Need to check the window wasn't destroyed during the * window procedure. */ if (!(Window->Parent)) { - co_IntShellHookNotify(HSHELL_WINDOWCREATED, (LPARAM)Wnd); + co_IntShellHookNotify(HSHELL_WINDOWCREATED, (LPARAM)Window->hSelf); } }
@@ -1371,15 +1360,15 @@ }
/* Revert focus to parent */ - if (Wnd == IntGetThreadFocusWindow() || - IntIsChildWindow(Wnd, IntGetThreadFocusWindow())) + if (Window->hSelf == IntGetThreadFocusWindow() || + IntIsChildWindow(Window->hSelf, IntGetThreadFocusWindow())) { UserSetFocus(Window->Parent->hSelf); }
if (!(Window->Parent)) { - co_IntShellHookNotify(HSHELL_WINDOWDESTROYED, (LPARAM)Wnd); + co_IntShellHookNotify(HSHELL_WINDOWDESTROYED, (LPARAM)Window->hSelf); } }
@@ -1400,12 +1389,12 @@ wParam = SIZE_MINIMIZED; }
- co_IntSendMessage(Wnd, WM_SIZE, wParam, + co_IntSendMessage(Window->hSelf, WM_SIZE, wParam, MAKELONG(Window->ClientRect.right - Window->ClientRect.left, Window->ClientRect.bottom - Window->ClientRect.top)); - co_IntSendMessage(Wnd, WM_MOVE, 0, + co_IntSendMessage(Window->hSelf, WM_MOVE, 0, MAKELONG(Window->ClientRect.left, Window->ClientRect.top)); IntEngWindowChanged(Window, WOC_RGN_CLIENT); @@ -1418,8 +1407,6 @@ WinPosChangeActiveWindow(Wnd, FALSE); } */ - - ObmDereferenceObject(Window); return(WasVisible); }
@@ -1431,6 +1418,8 @@ PWINDOW_OBJECT Current; HWND *List, *phWnd;
+ ASSERT_REFS(ScopeWin); + if ((List = IntWinListChildren(ScopeWin))) { for (phWnd = List; *phWnd; ++phWnd)