Win32k/User32:

- Removed NtUserGetSystemMetric, updated all related.
- Add GetConnected, this is needed, sometimes global pointers are initilized with zeros. This is normal.
- Fix prototype for NtUserDragDetect, and add the Esc key hit to DragDetect.

svn path=/trunk/; revision=34370
This commit is contained in:
James Tabor 2008-07-08 18:58:07 +00:00
parent 0a953de77e
commit ef1f9bd06c
7 changed files with 44 additions and 34 deletions

View file

@ -115,3 +115,4 @@ PWINDOW FASTCALL ValidateHwndOrDesk(HWND hwnd);
PWINDOW FASTCALL GetThreadDesktopWnd(VOID);
PVOID FASTCALL ValidateHandleNoErr(HANDLE handle, UINT uType);
PWINDOW FASTCALL ValidateHwndNoErr(HWND hwnd);
VOID FASTCALL GetConnected(VOID);

View file

@ -99,12 +99,10 @@ LogFontW2A(LPLOGFONTA pA, CONST LOGFONTW *pW)
int STDCALL
GetSystemMetrics(int nIndex)
{
GetConnected();
// FIXME("Global Sever Data -> %x\n",g_psi);
if (nIndex < 0 || nIndex >= SM_CMETRICS) return 0;
if (g_psi)
return g_psi->SystemMetrics[nIndex];
else
return(NtUserGetSystemMetrics(nIndex));
return g_psi->SystemMetrics[nIndex];
}

View file

@ -295,3 +295,25 @@ DllMain(
return TRUE;
}
VOID
FASTCALL
GetConnected(VOID)
{
PW32PROCESSINFO pi;
if ((PW32THREADINFO)NtCurrentTeb()->Win32ThreadInfo == NULL)
NtUserGetThreadState(THREADSTATE_GETTHREADINFO);
if (g_pi && g_kpi && g_psi) return;
pi = GetW32ProcessInfo();
if (!g_pi) g_pi = pi;
if (!g_kpi) g_kpi = SharedPtrToKernel(pi);
if (!g_psi) g_psi = SharedPtrToUser(pi->psi);
if (!g_psi) { WARN("Global Share Information has not been initialized!\n"); }
if (!gHandleTable) gHandleTable = SharedPtrToUser(pi->UserHandleTable);
if (!gHandleEntries) gHandleEntries = SharedPtrToUser(gHandleTable->handles);
}

View file

@ -50,13 +50,13 @@ DragDetect(
POINT pt)
{
#if 0
return NtUserDragDetect(hWnd, pt.x, pt.y);
return NtUserDragDetect(hWnd, pt);
#else
MSG msg;
RECT rect;
POINT tmp;
ULONG dx = NtUserGetSystemMetrics(SM_CXDRAG);
ULONG dy = NtUserGetSystemMetrics(SM_CYDRAG);
ULONG dx = GetSystemMetrics(SM_CXDRAG);
ULONG dy = GetSystemMetrics(SM_CYDRAG);
rect.left = pt.x - dx;
rect.right = pt.x + dx;
@ -67,12 +67,15 @@ DragDetect(
for (;;)
{
while (PeekMessageW(&msg, 0, WM_MOUSEFIRST, WM_MOUSELAST, PM_REMOVE))
while (
PeekMessageW(&msg, 0, WM_MOUSEFIRST, WM_MOUSELAST, PM_REMOVE) ||
PeekMessageW(&msg, 0, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE)
)
{
if (msg.message == WM_LBUTTONUP)
{
ReleaseCapture();
return 0;
return FALSE;
}
if (msg.message == WM_MOUSEMOVE)
{
@ -81,9 +84,17 @@ DragDetect(
if (!PtInRect(&rect, tmp))
{
ReleaseCapture();
return 1;
return TRUE;
}
}
if (msg.message == WM_KEYDOWN)
{
if (msg.wParam == VK_ESCAPE)
{
ReleaseCapture();
return TRUE;
}
}
}
WaitMessage();
}

View file

@ -1062,8 +1062,7 @@ BOOL
NTAPI
NtUserDragDetect(
HWND hWnd,
LONG x,
LONG y);
POINT pt);
DWORD
NTAPI
@ -2718,10 +2717,6 @@ HWND
NTAPI
NtUserGetShellWindow();
ULONG
NTAPI
NtUserGetSystemMetrics(ULONG Index);
HWND
NTAPI
NtUserGetWindow(HWND hWnd, UINT Relationship);

View file

@ -885,8 +885,7 @@ BOOL
STDCALL
NtUserDragDetect(
HWND hWnd,
LONG x,
LONG y)
POINT pt) // Just like the User call.
{
UNIMPLEMENTED
return 0;

View file

@ -467,21 +467,5 @@ UserGetSystemMetrics(ULONG Index)
}
}
ULONG STDCALL
NtUserGetSystemMetrics(ULONG Index)
{
DECLARE_RETURN(ULONG);
DPRINT("Enter NtUserGetSystemMetrics\n");
UserEnterShared();
RETURN(UserGetSystemMetrics(Index));
CLEANUP:
DPRINT("Leave NtUserGetSystemMetrics, ret=%i\n",_ret_);
UserLeave();
END_CLEANUP;
}
/* EOF */