Implementation of DragDetect. Based on Wine code (C) 1993, 1994 Alexandre Julliard.
Modified: trunk/reactos/lib/user32/windows/input.c

Modified: trunk/reactos/lib/user32/windows/input.c
--- trunk/reactos/lib/user32/windows/input.c	2005-06-07 16:34:07 UTC (rev 15830)
+++ trunk/reactos/lib/user32/windows/input.c	2005-06-07 16:54:15 UTC (rev 15831)
@@ -44,7 +44,46 @@
   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
 }