From cc0fc0d35c230c3e9fd7fefb9d6534d5b0accdd5 Mon Sep 17 00:00:00 2001 From: Filip Navara Date: Tue, 7 Jun 2005 16:54:15 +0000 Subject: [PATCH] Implementation of DragDetect. Based on Wine code (C) 1993, 1994 Alexandre Julliard. svn path=/trunk/; revision=15831 --- reactos/lib/user32/windows/input.c | 39 ++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/reactos/lib/user32/windows/input.c b/reactos/lib/user32/windows/input.c index d041c8ef022..35be047e19d 100644 --- a/reactos/lib/user32/windows/input.c +++ b/reactos/lib/user32/windows/input.c @@ -44,7 +44,46 @@ DragDetect( HWND hWnd, POINT pt) { +#if 0 return NtUserDragDetect(hWnd, pt.x, pt.y); +#else + MSG msg; + RECT rect; + POINT tmp; + ULONG dx = NtUserGetSystemMetrics(SM_CXDRAG); + ULONG dy = NtUserGetSystemMetrics(SM_CYDRAG); + + rect.left = pt.x - dx; + rect.right = pt.x + dx; + rect.top = pt.y - dy; + rect.bottom = pt.y + dy; + + SetCapture(hWnd); + + for (;;) + { + while (PeekMessageW(&msg, 0, WM_MOUSEFIRST, WM_MOUSELAST, PM_REMOVE)) + { + if (msg.message == WM_LBUTTONUP) + { + ReleaseCapture(); + return 0; + } + if (msg.message == WM_MOUSEMOVE) + { + tmp.x = LOWORD(msg.lParam); + tmp.y = HIWORD(msg.lParam); + if (!PtInRect(&rect, tmp)) + { + ReleaseCapture(); + return 1; + } + } + } + WaitMessage(); + } + return 0; +#endif }