Moved scrollbar tracking code to scroll.c.
Avoid unnecessary coordinates conversion in NC_HandleSysCommand.

diff --git a/windows/nonclient.c b/windows/nonclient.c
index 111568d..66bb6eb 100644
--- a/windows/nonclient.c
+++ b/windows/nonclient.c
@@ -1954,54 +1954,22 @@
  */
 static void NC_TrackScrollBar( HWND hwnd, WPARAM wParam, POINT pt )
 {
-    MSG msg;
     INT scrollbar;
-    WND *wndPtr = WIN_FindWndPtr( hwnd );
 
     if ((wParam & 0xfff0) == SC_HSCROLL)
     {
-	if ((wParam & 0x0f) != HTHSCROLL) goto END;
+        if ((wParam & 0x0f) != HTHSCROLL) return;
 	scrollbar = SB_HORZ;
     }
     else  /* SC_VSCROLL */
     {
-	if ((wParam & 0x0f) != HTVSCROLL) goto END;
+        if ((wParam & 0x0f) != HTVSCROLL) return;
 	scrollbar = SB_VERT;
     }
-
-    pt.x -= wndPtr->rectWindow.left;
-    pt.y -= wndPtr->rectWindow.top;
-    SetCapture( hwnd );
-    SCROLL_HandleScrollEvent( hwnd, scrollbar, WM_LBUTTONDOWN, pt );
-
-    do
-    {
-        if (!GetMessageW( &msg, 0, 0, 0 )) break;
-        if (CallMsgFilterW( &msg, MSGF_SCROLLBAR )) continue;
-	switch(msg.message)
-	{
-	case WM_LBUTTONUP:
-	case WM_MOUSEMOVE:
-        case WM_SYSTIMER:
-            pt.x = LOWORD(msg.lParam) + wndPtr->rectClient.left - wndPtr->rectWindow.left;
-            pt.y = HIWORD(msg.lParam) + wndPtr->rectClient.top - wndPtr->rectWindow.top;
-            SCROLL_HandleScrollEvent( hwnd, scrollbar, msg.message, pt );
-	    break;
-        default:
-            TranslateMessage( &msg );
-            DispatchMessageW( &msg );
-            break;
-	}
-        if (!IsWindow( hwnd ))
-        {
-            ReleaseCapture();
-            break;
-        }
-    } while (msg.message != WM_LBUTTONUP);
-END:
-    WIN_ReleaseWndPtr(wndPtr);
+    SCROLL_TrackScrollBar( hwnd, scrollbar, pt );
 }
 
+
 /***********************************************************************
  *           NC_HandleNCLButtonDown
  *
@@ -2130,20 +2098,11 @@
  *
  * Handle a WM_SYSCOMMAND message. Called from DefWindowProc().
  */
-LONG NC_HandleSysCommand( HWND hwnd, WPARAM wParam, POINT pt )
+LONG NC_HandleSysCommand( HWND hwnd, WPARAM wParam, LPARAM lParam )
 {
-    WND *wndPtr = WIN_FindWndPtr( hwnd );
-    UINT16 uCommand = wParam & 0xFFF0;
+    TRACE("Handling WM_SYSCOMMAND %x %lx\n", wParam, lParam );
 
-    TRACE("Handling WM_SYSCOMMAND %x %ld,%ld\n", wParam, pt.x, pt.y );
-
-    if (uCommand != SC_KEYMENU)
-    {
-        HWND parent = GetAncestor( hwnd, GA_PARENT );
-        if (parent != GetDesktopWindow()) ScreenToClient( parent, &pt );
-    }
-
-    switch (uCommand)
+    switch (wParam & 0xfff0)
     {
     case SC_SIZE:
     case SC_MOVE:
@@ -2170,22 +2129,31 @@
 	break;
 
     case SC_CLOSE:
-        WIN_ReleaseWndPtr(wndPtr);
 	return SendMessageA( hwnd, WM_CLOSE, 0, 0 );
 
     case SC_VSCROLL:
     case SC_HSCROLL:
-	NC_TrackScrollBar( hwnd, wParam, pt );
+        {
+            POINT pt;
+            pt.x = SLOWORD(lParam);
+            pt.y = SHIWORD(lParam);
+            NC_TrackScrollBar( hwnd, wParam, pt );
+        }
 	break;
 
     case SC_MOUSEMENU:
-        MENU_TrackMouseMenuBar( hwnd, wParam & 0x000F, pt );
+        {
+            POINT pt;
+            pt.x = SLOWORD(lParam);
+            pt.y = SHIWORD(lParam);
+            MENU_TrackMouseMenuBar( hwnd, wParam & 0x000F, pt );
+        }
 	break;
 
     case SC_KEYMENU:
-	MENU_TrackKbdMenuBar( hwnd, wParam , pt.x );
+        MENU_TrackKbdMenuBar( hwnd, wParam, LOWORD(lParam) );
 	break;
-	
+
     case SC_TASKLIST:
 	WinExec( "taskman.exe", SW_SHOWNORMAL ); 
 	break;
@@ -2213,7 +2181,6 @@
  	FIXME("unimplemented!\n");
         break;
     }
-    WIN_ReleaseWndPtr(wndPtr);
     return 0;
 }