indent with astyle v1.15.3: --style=ansi -c -s3 -S --convert-tabs
[reactos.git] / reactos / subsys / win32k / ntuser / cursoricon.c
index 4fdb880..770fbf1 100644 (file)
@@ -50,25 +50,25 @@ static LIST_ENTRY CurIconList;
 BOOL FASTCALL
 IntGetCursorLocation(PWINSTATION_OBJECT WinStaObject, POINT *loc)
 {
-  HDC hDC;
-  PDC dc;
-  GDIDEVICE *GDIDevice;
+   HDC hDC;
+   PDC dc;
+   GDIDEVICE *GDIDevice;
 
 #if 1
-  /* FIXME - get the screen dc from the window station or desktop */
-  if (!(hDC = IntGetScreenDC()))
-    return FALSE;
+   /* FIXME - get the screen dc from the window station or desktop */
+   if (!(hDC = IntGetScreenDC()))
+      return FALSE;
 #endif
 
-  if (!(dc = DC_LockDc(hDC)))
-    return FALSE;
-  GDIDevice = (GDIDEVICE *)dc->GDIDevice;
-  DC_UnlockDc(dc);
+   if (!(dc = DC_LockDc(hDC)))
+      return FALSE;
+   GDIDevice = (GDIDEVICE *)dc->GDIDevice;
+   DC_UnlockDc(dc);
 
-  loc->x = GDIDevice->Pointer.Pos.x;
-  loc->y = GDIDevice->Pointer.Pos.y;
+   loc->x = GDIDevice->Pointer.Pos.x;
+   loc->y = GDIDevice->Pointer.Pos.y;
 
-  return TRUE;
+   return TRUE;
 }
 
 
@@ -83,7 +83,7 @@ PCURICON_OBJECT FASTCALL UserGetCurIconObject(HANDLE hWnd)
       SetLastWin32Error(ERROR_INVALID_CURSOR_HANDLE);
       return NULL;
    }
-   
+
    ASSERT(USER_BODY_TO_HEADER(Window)->RefCount >= 0);
    return Window;
 }
@@ -95,7 +95,7 @@ IntGetCurIconObject(HANDLE Handle)
    if (ci)
    {
       ASSERT(USER_BODY_TO_HEADER(ci)->RefCount >= 0);
-      
+
       USER_BODY_TO_HEADER(ci)->RefCount++;
    }
    return ci;
@@ -104,7 +104,7 @@ IntGetCurIconObject(HANDLE Handle)
 #define COLORCURSORS_ALLOWED FALSE
 HCURSOR FASTCALL
 IntSetCursor(PWINSTATION_OBJECT WinStaObject, PCURICON_OBJECT NewCursor,
-   BOOL ForceChange)
+             BOOL ForceChange)
 {
    BITMAPOBJ *BitmapObj;
    SURFOBJ *SurfObj;
@@ -134,7 +134,7 @@ IntSetCursor(PWINSTATION_OBJECT WinStaObject, PCURICON_OBJECT NewCursor,
    {
       if(!(Screen = IntGetScreenDC()))
       {
-        return (HCURSOR)0;
+         return (HCURSOR)0;
       }
       /* FIXME use the desktop's HDC instead of using ScreenDeviceContext */
       PDC dc = DC_LockDc(Screen);
@@ -149,7 +149,7 @@ IntSetCursor(PWINSTATION_OBJECT WinStaObject, PCURICON_OBJECT NewCursor,
 
       BitmapObj = BITMAPOBJ_LockBitmap(dcbmp);
       if ( !BitmapObj )
-        return (HCURSOR)0;
+         return (HCURSOR)0;
       SurfObj = &BitmapObj->SurfObj;
       ASSERT(SurfObj);
    }
@@ -192,135 +192,135 @@ IntSetCursor(PWINSTATION_OBJECT WinStaObject, PCURICON_OBJECT NewCursor,
       }
 
       if ((DevInfo->flGraphicsCaps2 & GCAPS2_ALPHACURSOR) &&
-          SurfObj->iBitmapFormat >= BMF_16BPP &&
-          SurfObj->iBitmapFormat <= BMF_32BPP &&
-          NewCursor->Shadow && COLORCURSORS_ALLOWED)
+            SurfObj->iBitmapFormat >= BMF_16BPP &&
+            SurfObj->iBitmapFormat <= BMF_32BPP &&
+            NewCursor->Shadow && COLORCURSORS_ALLOWED)
       {
-        /* FIXME - Create a color pointer, only 32bit bitmap, set alpha bits!
-                   Do not pass a mask bitmap to DrvSetPointerShape()!
-                   Create a XLATEOBJ that describes the colors of the bitmap. */
-        DPRINT1("SetCursor: (Colored) alpha cursors are not supported!\n");
+         /* FIXME - Create a color pointer, only 32bit bitmap, set alpha bits!
+                    Do not pass a mask bitmap to DrvSetPointerShape()!
+                    Create a XLATEOBJ that describes the colors of the bitmap. */
+         DPRINT1("SetCursor: (Colored) alpha cursors are not supported!\n");
       }
       else
       {
-        if(NewCursor->IconInfo.hbmColor
-           && COLORCURSORS_ALLOWED)
-        {
-          /* FIXME - Create a color pointer, create only one 32bit bitmap!
-                     Do not pass a mask bitmap to DrvSetPointerShape()!
-                     Create a XLATEOBJ that describes the colors of the bitmap.
-                     (16bit bitmaps are propably allowed) */
-          DPRINT1("SetCursor: Cursors with colors are not supported!\n");
-        }
-        else
-        {
-          MaskBmpObj = BITMAPOBJ_LockBitmap(NewCursor->IconInfo.hbmMask);
-          if(MaskBmpObj)
-          {
-            RECTL DestRect = {0, 0, MaskBmpObj->SurfObj.sizlBitmap.cx, MaskBmpObj->SurfObj.sizlBitmap.cy};
-            POINTL SourcePoint = {0, 0};
-
-            /*
-             * NOTE: For now we create the cursor in top-down bitmap,
-             * because VMware driver rejects it otherwise. This should
-             * be fixed later.
-             */
-            hMask = EngCreateBitmap(
-              MaskBmpObj->SurfObj.sizlBitmap, abs(MaskBmpObj->SurfObj.lDelta),
-              MaskBmpObj->SurfObj.iBitmapFormat, BMF_TOPDOWN,
-              NULL);
-            if ( !hMask )
+         if(NewCursor->IconInfo.hbmColor
+               && COLORCURSORS_ALLOWED)
+         {
+            /* FIXME - Create a color pointer, create only one 32bit bitmap!
+                       Do not pass a mask bitmap to DrvSetPointerShape()!
+                       Create a XLATEOBJ that describes the colors of the bitmap.
+                       (16bit bitmaps are propably allowed) */
+            DPRINT1("SetCursor: Cursors with colors are not supported!\n");
+         }
+         else
+         {
+            MaskBmpObj = BITMAPOBJ_LockBitmap(NewCursor->IconInfo.hbmMask);
+            if(MaskBmpObj)
             {
-              BITMAPOBJ_UnlockBitmap(MaskBmpObj);
-              BITMAPOBJ_UnlockBitmap(BitmapObj);
-              return (HCURSOR)0;
+               RECTL DestRect = {0, 0, MaskBmpObj->SurfObj.sizlBitmap.cx, MaskBmpObj->SurfObj.sizlBitmap.cy};
+               POINTL SourcePoint = {0, 0};
+
+               /*
+                * NOTE: For now we create the cursor in top-down bitmap,
+                * because VMware driver rejects it otherwise. This should
+                * be fixed later.
+                */
+               hMask = EngCreateBitmap(
+                          MaskBmpObj->SurfObj.sizlBitmap, abs(MaskBmpObj->SurfObj.lDelta),
+                          MaskBmpObj->SurfObj.iBitmapFormat, BMF_TOPDOWN,
+                          NULL);
+               if ( !hMask )
+               {
+                  BITMAPOBJ_UnlockBitmap(MaskBmpObj);
+                  BITMAPOBJ_UnlockBitmap(BitmapObj);
+                  return (HCURSOR)0;
+               }
+               soMask = EngLockSurface((HSURF)hMask);
+               EngCopyBits(soMask, &MaskBmpObj->SurfObj, NULL, NULL,
+                           &DestRect, &SourcePoint);
+               BITMAPOBJ_UnlockBitmap(MaskBmpObj);
             }
-            soMask = EngLockSurface((HSURF)hMask);
-            EngCopyBits(soMask, &MaskBmpObj->SurfObj, NULL, NULL,
-              &DestRect, &SourcePoint);
-            BITMAPOBJ_UnlockBitmap(MaskBmpObj);
-          }
-        }
+         }
       }
       CurInfo->ShowingCursor = CURSOR_SHOWING;
       CurInfo->CurrentCursorObject = NewCursor;
-    }
-    else
-    {
+   }
+   else
+   {
       CurInfo->ShowingCursor = 0;
       CurInfo->CurrentCursorObject = NULL;
-    }
+   }
 
-    if (GDIDEVFUNCS(SurfObj).SetPointerShape)
-    {
+   if (GDIDEVFUNCS(SurfObj).SetPointerShape)
+   {
       GDIDEV(SurfObj)->Pointer.Status =
          GDIDEVFUNCS(SurfObj).SetPointerShape(
-                                                        SurfObj, soMask, soColor, XlateObj,
-                                                        NewCursor->IconInfo.xHotspot,
-                                                        NewCursor->IconInfo.yHotspot,
-                                                        GDIDEV(SurfObj)->Pointer.Pos.x,
-                                                        GDIDEV(SurfObj)->Pointer.Pos.y,
-                                                        &(GDIDEV(SurfObj)->Pointer.Exclude),
-                                                        SPS_CHANGE);
+            SurfObj, soMask, soColor, XlateObj,
+            NewCursor->IconInfo.xHotspot,
+            NewCursor->IconInfo.yHotspot,
+            GDIDEV(SurfObj)->Pointer.Pos.x,
+            GDIDEV(SurfObj)->Pointer.Pos.y,
+            &(GDIDEV(SurfObj)->Pointer.Exclude),
+            SPS_CHANGE);
       DPRINT("SetCursor: DrvSetPointerShape() returned %x\n",
-         GDIDEV(SurfObj)->Pointer.Status);
-    }
-    else
-    {
+             GDIDEV(SurfObj)->Pointer.Status);
+   }
+   else
+   {
       GDIDEV(SurfObj)->Pointer.Status = SPS_DECLINE;
-    }
+   }
 
-    if(GDIDEV(SurfObj)->Pointer.Status == SPS_DECLINE)
-    {
+   if(GDIDEV(SurfObj)->Pointer.Status == SPS_DECLINE)
+   {
       GDIDEV(SurfObj)->Pointer.Status = EngSetPointerShape(
-                         SurfObj, soMask, soColor, XlateObj,
-                         NewCursor->IconInfo.xHotspot,
-                         NewCursor->IconInfo.yHotspot,
-                         GDIDEV(SurfObj)->Pointer.Pos.x,
-                         GDIDEV(SurfObj)->Pointer.Pos.y,
-                         &(GDIDEV(SurfObj)->Pointer.Exclude),
-                         SPS_CHANGE);
+                                           SurfObj, soMask, soColor, XlateObj,
+                                           NewCursor->IconInfo.xHotspot,
+                                           NewCursor->IconInfo.yHotspot,
+                                           GDIDEV(SurfObj)->Pointer.Pos.x,
+                                           GDIDEV(SurfObj)->Pointer.Pos.y,
+                                           &(GDIDEV(SurfObj)->Pointer.Exclude),
+                                           SPS_CHANGE);
       GDIDEV(SurfObj)->Pointer.MovePointer = NULL;
-    }
-    else
-    {
+   }
+   else
+   {
       GDIDEV(SurfObj)->Pointer.MovePointer = GDIDEVFUNCS(SurfObj).MovePointer;
-    }
+   }
 
-    BITMAPOBJ_UnlockBitmap(BitmapObj);
-    if(hMask)
-    {
+   BITMAPOBJ_UnlockBitmap(BitmapObj);
+   if(hMask)
+   {
       EngUnlockSurface(soMask);
       EngDeleteSurface((HSURF)hMask);
-    }
-    if(hColor)
-    {
+   }
+   if(hColor)
+   {
       EngDeleteSurface((HSURF)hColor);
-    }
-    if(XlateObj)
-    {
+   }
+   if(XlateObj)
+   {
       EngDeleteXlate(XlateObj);
-    }
+   }
 
-    if(GDIDEV(SurfObj)->Pointer.Status == SPS_ERROR)
+   if(GDIDEV(SurfObj)->Pointer.Status == SPS_ERROR)
       DPRINT1("SetCursor: DrvSetPointerShape() returned SPS_ERROR\n");
 
-  return Ret;
+   return Ret;
 }
 
 BOOL FASTCALL
 IntSetupCurIconHandles(PWINSTATION_OBJECT WinStaObject)
 {
-  ExInitializePagedLookasideList(&ProcessLookasideList,
-                                NULL,
-                                NULL,
-                                0,
-                                sizeof(CURICON_PROCESS),
-                                0,
-                                128);
-  InitializeListHead(&CurIconList);
-
-  return TRUE;
+   ExInitializePagedLookasideList(&ProcessLookasideList,
+                                  NULL,
+                                  NULL,
+                                  0,
+                                  sizeof(CURICON_PROCESS),
+                                  0,
+                                  128);
+   InitializeListHead(&CurIconList);
+
+   return TRUE;
 }
 
 /*
@@ -335,234 +335,234 @@ IntSetupCurIconHandles(PWINSTATION_OBJECT WinStaObject)
 static BOOLEAN FASTCALL
 ReferenceCurIconByProcess(PCURICON_OBJECT Object)
 {
-  PW32PROCESS Win32Process;
-  PLIST_ENTRY Search;
-  PCURICON_PROCESS Current;
+   PW32PROCESS Win32Process;
+   PLIST_ENTRY Search;
+   PCURICON_PROCESS Current;
 
-  Win32Process = PsGetWin32Process();
+   Win32Process = PsGetWin32Process();
 
-  Search = Object->ProcessList.Flink;
-  while (Search != &Object->ProcessList)
-    {
+   Search = Object->ProcessList.Flink;
+   while (Search != &Object->ProcessList)
+   {
       Current = CONTAINING_RECORD(Search, CURICON_PROCESS, ListEntry);
       if (Current->Process == Win32Process)
-        {
-          /* Already registered for this process */
-          return TRUE;
-        }
+      {
+         /* Already registered for this process */
+         return TRUE;
+      }
       Search = Search->Flink;
-    }
+   }
 
-  /* Not registered yet */
-  Current = ExAllocateFromPagedLookasideList(&ProcessLookasideList);
-  if (NULL == Current)
-    {
+   /* Not registered yet */
+   Current = ExAllocateFromPagedLookasideList(&ProcessLookasideList);
+   if (NULL == Current)
+   {
       return FALSE;
-    }
-  InsertHeadList(&Object->ProcessList, &Current->ListEntry);
-  Current->Process = Win32Process;
+   }
+   InsertHeadList(&Object->ProcessList, &Current->ListEntry);
+   Current->Process = Win32Process;
 
-  return TRUE;
+   return TRUE;
 }
 
 PCURICON_OBJECT FASTCALL
 IntFindExistingCurIconObject(PWINSTATION_OBJECT WinStaObject, HMODULE hModule,
                              HRSRC hRsrc, LONG cx, LONG cy)
 {
-  PLIST_ENTRY CurrentEntry;
-  PCURICON_OBJECT Object;
-
-  CurrentEntry = CurIconList.Flink;
-  while (CurrentEntry != &CurIconList)
-  {
-    Object = CONTAINING_RECORD(CurrentEntry, CURICON_OBJECT, ListEntry);
-    CurrentEntry = CurrentEntry->Flink;
-
-//    if(NT_SUCCESS(ObmReferenceObjectByPointer(Object, otCursorIcon))) //<- huh????
-    ObmReferenceObject(  Object);
-    {
-      if((Object->hModule == hModule) && (Object->hRsrc == hRsrc))
+   PLIST_ENTRY CurrentEntry;
+   PCURICON_OBJECT Object;
+
+   CurrentEntry = CurIconList.Flink;
+   while (CurrentEntry != &CurIconList)
+   {
+      Object = CONTAINING_RECORD(CurrentEntry, CURICON_OBJECT, ListEntry);
+      CurrentEntry = CurrentEntry->Flink;
+
+      //    if(NT_SUCCESS(ObmReferenceObjectByPointer(Object, otCursorIcon))) //<- huh????
+      ObmReferenceObject(  Object);
       {
-        if(cx && ((cx != Object->Size.cx) || (cy != Object->Size.cy)))
-        {
-          ObmDereferenceObject(Object);
-          continue;
-        }
-        if (! ReferenceCurIconByProcess(Object))
-        {
-          return NULL;
-        }
-
-        return Object;
+         if((Object->hModule == hModule) && (Object->hRsrc == hRsrc))
+         {
+            if(cx && ((cx != Object->Size.cx) || (cy != Object->Size.cy)))
+            {
+               ObmDereferenceObject(Object);
+               continue;
+            }
+            if (! ReferenceCurIconByProcess(Object))
+            {
+               return NULL;
+            }
+
+            return Object;
+         }
       }
-    }
-    ObmDereferenceObject(Object);
+      ObmDereferenceObject(Object);
 
-  }
+   }
 
-  return NULL;
+   return NULL;
 }
 
 PCURICON_OBJECT FASTCALL
 IntCreateCurIconHandle(PWINSTATION_OBJECT WinStaObject)
 {
-  PCURICON_OBJECT Object;
-  HANDLE Handle;
+   PCURICON_OBJECT Object;
+   HANDLE Handle;
 
-  Object = ObmCreateObject(&gHandleTable, &Handle, otCursor, sizeof(CURICON_OBJECT));
+   Object = ObmCreateObject(&gHandleTable, &Handle, otCursor, sizeof(CURICON_OBJECT));
 
-  if(!Object)
-  {
-    SetLastWin32Error(ERROR_NOT_ENOUGH_MEMORY);
-    return FALSE;
-  }
+   if(!Object)
+   {
+      SetLastWin32Error(ERROR_NOT_ENOUGH_MEMORY);
+      return FALSE;
+   }
 
-  Object->Self = Handle;
-  InitializeListHead(&Object->ProcessList);
+   Object->Self = Handle;
+   InitializeListHead(&Object->ProcessList);
 
-  if (! ReferenceCurIconByProcess(Object))
-  {
-    DPRINT1("Failed to add process\n");
-    ObmDeleteObject(Handle, otCursor);
-    ObmDereferenceObject(Object);
-    return NULL;
-  }
+   if (! ReferenceCurIconByProcess(Object))
+   {
+      DPRINT1("Failed to add process\n");
+      ObmDeleteObject(Handle, otCursor);
+      ObmDereferenceObject(Object);
+      return NULL;
+   }
 
-  InsertHeadList(&CurIconList, &Object->ListEntry);
+   InsertHeadList(&CurIconList, &Object->ListEntry);
 
-  ObmDereferenceObject(Object);
+   ObmDereferenceObject(Object);
 
-  return Object;
+   return Object;
 }
 
 BOOLEAN FASTCALL
 IntDestroyCurIconObject(PWINSTATION_OBJECT WinStaObject, PCURICON_OBJECT Object, BOOL ProcessCleanup)
 {
-  PSYSTEM_CURSORINFO CurInfo;
-  HBITMAP bmpMask, bmpColor;
-  BOOLEAN Ret;
-  PLIST_ENTRY Search;
-  PCURICON_PROCESS Current = NULL;
-  PW32PROCESS W32Process = PsGetWin32Process();
-
-  /* Private objects can only be destroyed by their own process */
-  if (NULL == Object->hModule)
-    {
-    ASSERT(Object->ProcessList.Flink->Flink == &Object->ProcessList);
-    Current = CONTAINING_RECORD(Object->ProcessList.Flink, CURICON_PROCESS, ListEntry);
-    if (Current->Process != W32Process)
+   PSYSTEM_CURSORINFO CurInfo;
+   HBITMAP bmpMask, bmpColor;
+   BOOLEAN Ret;
+   PLIST_ENTRY Search;
+   PCURICON_PROCESS Current = NULL;
+   PW32PROCESS W32Process = PsGetWin32Process();
+
+   /* Private objects can only be destroyed by their own process */
+   if (NULL == Object->hModule)
+   {
+      ASSERT(Object->ProcessList.Flink->Flink == &Object->ProcessList);
+      Current = CONTAINING_RECORD(Object->ProcessList.Flink, CURICON_PROCESS, ListEntry);
+      if (Current->Process != W32Process)
       {
-        DPRINT1("Trying to destroy private icon/cursor of another process\n");
-        return FALSE;
+         DPRINT1("Trying to destroy private icon/cursor of another process\n");
+         return FALSE;
       }
-    }
-  else if (! ProcessCleanup)
-    {
+   }
+   else if (! ProcessCleanup)
+   {
       DPRINT("Trying to destroy shared icon/cursor\n");
       return FALSE;
-    }
-
-  /* Now find this process in the list of processes referencing this object and
-     remove it from that list */
-  Search = Object->ProcessList.Flink;
-  while (Search != &Object->ProcessList)
-    {
-    Current = CONTAINING_RECORD(Search, CURICON_PROCESS, ListEntry);
-    if (Current->Process == W32Process)
+   }
+
+   /* Now find this process in the list of processes referencing this object and
+      remove it from that list */
+   Search = Object->ProcessList.Flink;
+   while (Search != &Object->ProcessList)
+   {
+      Current = CONTAINING_RECORD(Search, CURICON_PROCESS, ListEntry);
+      if (Current->Process == W32Process)
       {
-      break;
+         break;
       }
-    Search = Search->Flink;
-    }
-  ASSERT(Search != &Object->ProcessList);
-  RemoveEntryList(Search);
-  ExFreeToPagedLookasideList(&ProcessLookasideList, Current);
-
-  /* If there are still processes referencing this object we can't destroy it yet */
-  if (! IsListEmpty(&Object->ProcessList))
-    {
-    return TRUE;
-    }
-
-
-  if (! ProcessCleanup)
-    {
-    RemoveEntryList(&Object->ListEntry);
-    }
-
-  CurInfo = IntGetSysCursorInfo(WinStaObject);
-
-  if (CurInfo->CurrentCursorObject == Object)
-  {
-    /* Hide the cursor if we're destroying the current cursor */
-    IntSetCursor(WinStaObject, NULL, TRUE);
-  }
-
-  bmpMask = Object->IconInfo.hbmMask;
-  bmpColor = Object->IconInfo.hbmColor;
-
-  Ret = ObmDeleteObject(Object->Self, otCursor);
-
-  /* delete bitmaps */
-  if(bmpMask)
-  {
-    GDIOBJ_SetOwnership(bmpMask, PsGetCurrentProcess());
-    NtGdiDeleteObject(bmpMask);
-  }
-  if(bmpColor)
-  {
-    GDIOBJ_SetOwnership(bmpColor, PsGetCurrentProcess());
-    NtGdiDeleteObject(bmpColor);
-  }
-
-  return Ret;
+      Search = Search->Flink;
+   }
+   ASSERT(Search != &Object->ProcessList);
+   RemoveEntryList(Search);
+   ExFreeToPagedLookasideList(&ProcessLookasideList, Current);
+
+   /* If there are still processes referencing this object we can't destroy it yet */
+   if (! IsListEmpty(&Object->ProcessList))
+   {
+      return TRUE;
+   }
+
+
+   if (! ProcessCleanup)
+   {
+      RemoveEntryList(&Object->ListEntry);
+   }
+
+   CurInfo = IntGetSysCursorInfo(WinStaObject);
+
+   if (CurInfo->CurrentCursorObject == Object)
+   {
+      /* Hide the cursor if we're destroying the current cursor */
+      IntSetCursor(WinStaObject, NULL, TRUE);
+   }
+
+   bmpMask = Object->IconInfo.hbmMask;
+   bmpColor = Object->IconInfo.hbmColor;
+
+   Ret = ObmDeleteObject(Object->Self, otCursor);
+
+   /* delete bitmaps */
+   if(bmpMask)
+   {
+      GDIOBJ_SetOwnership(bmpMask, PsGetCurrentProcess());
+      NtGdiDeleteObject(bmpMask);
+   }
+   if(bmpColor)
+   {
+      GDIOBJ_SetOwnership(bmpColor, PsGetCurrentProcess());
+      NtGdiDeleteObject(bmpColor);
+   }
+
+   return Ret;
 }
 
 VOID FASTCALL
 IntCleanupCurIcons(struct _EPROCESS *Process, PW32PROCESS Win32Process)
 {
-  PWINSTATION_OBJECT WinStaObject;
-  PLIST_ENTRY CurrentEntry;
-  PCURICON_OBJECT Object;
-  PLIST_ENTRY ProcessEntry;
-  PCURICON_PROCESS ProcessData;
-
-  WinStaObject = IntGetWinStaObj();
-  if(WinStaObject == NULL)
-  {
-    return;
-  }
+   PWINSTATION_OBJECT WinStaObject;
+   PLIST_ENTRY CurrentEntry;
+   PCURICON_OBJECT Object;
+   PLIST_ENTRY ProcessEntry;
+   PCURICON_PROCESS ProcessData;
+
+   WinStaObject = IntGetWinStaObj();
+   if(WinStaObject == NULL)
+   {
+      return;
+   }
 
-  CurrentEntry = CurIconList.Flink;
-  while (CurrentEntry != &CurIconList)
-  {
-    Object = CONTAINING_RECORD(CurrentEntry, CURICON_OBJECT, ListEntry);
-    CurrentEntry = CurrentEntry->Flink;
+   CurrentEntry = CurIconList.Flink;
+   while (CurrentEntry != &CurIconList)
+   {
+      Object = CONTAINING_RECORD(CurrentEntry, CURICON_OBJECT, ListEntry);
+      CurrentEntry = CurrentEntry->Flink;
 
 
       ObmReferenceObject(Object);
-//    if(NT_SUCCESS(ObmReferenceObjectByPointer(Object, otCursorIcon)))
+      //    if(NT_SUCCESS(ObmReferenceObjectByPointer(Object, otCursorIcon)))
       {
-      ProcessEntry = Object->ProcessList.Flink;
-      while (ProcessEntry != &Object->ProcessList)
-      {
-        ProcessData = CONTAINING_RECORD(ProcessEntry, CURICON_PROCESS, ListEntry);
-        if (Win32Process == ProcessData->Process)
-        {
-          RemoveEntryList(&Object->ListEntry);
-          IntDestroyCurIconObject(WinStaObject, Object, TRUE);
-          break;
-        }
-        ProcessEntry = ProcessEntry->Flink;
-      }
+         ProcessEntry = Object->ProcessList.Flink;
+         while (ProcessEntry != &Object->ProcessList)
+         {
+            ProcessData = CONTAINING_RECORD(ProcessEntry, CURICON_PROCESS, ListEntry);
+            if (Win32Process == ProcessData->Process)
+            {
+               RemoveEntryList(&Object->ListEntry);
+               IntDestroyCurIconObject(WinStaObject, Object, TRUE);
+               break;
+            }
+            ProcessEntry = ProcessEntry->Flink;
+         }
 
-      ObmDereferenceObject(Object);
-    }
+         ObmDereferenceObject(Object);
+      }
 
 
-  }
+   }
 
-  ObDereferenceObject(WinStaObject);
+   ObDereferenceObject(WinStaObject);
 }
 
 /*
@@ -572,76 +572,76 @@ HANDLE
 STDCALL
 NtUserCreateCursorIconHandle(PICONINFO IconInfo, BOOL Indirect)
 {
-  PCURICON_OBJECT CurIconObject;
-  PWINSTATION_OBJECT WinStaObject;
-  PBITMAPOBJ bmp;
-  NTSTATUS Status;
-  HANDLE Ret;
-  DECLARE_RETURN(HANDLE);
-
-  DPRINT("Enter NtUserCreateCursorIconHandle\n");
-  UserEnterExclusive();
-
-  WinStaObject = IntGetWinStaObj();
-  if(WinStaObject == NULL)
-  {
-    RETURN( (HANDLE)0);
-  }
-
-  CurIconObject = IntCreateCurIconHandle(WinStaObject);
-  if(CurIconObject)
-  {
-    Ret = CurIconObject->Self;
-
-    if(IconInfo)
-    {
-      Status = MmCopyFromCaller(&CurIconObject->IconInfo, IconInfo, sizeof(ICONINFO));
-      if(NT_SUCCESS(Status))
-      {
-        if(Indirect)
-        {
-          CurIconObject->IconInfo.hbmMask = BITMAPOBJ_CopyBitmap(CurIconObject->IconInfo.hbmMask);
-          CurIconObject->IconInfo.hbmColor = BITMAPOBJ_CopyBitmap(CurIconObject->IconInfo.hbmColor);
-        }
-        if(CurIconObject->IconInfo.hbmColor &&
-          (bmp = BITMAPOBJ_LockBitmap(CurIconObject->IconInfo.hbmColor)))
-        {
-          CurIconObject->Size.cx = bmp->SurfObj.sizlBitmap.cx;
-          CurIconObject->Size.cy = bmp->SurfObj.sizlBitmap.cy;
-          BITMAPOBJ_UnlockBitmap(bmp);
-          GDIOBJ_SetOwnership(CurIconObject->IconInfo.hbmColor, NULL);
-        }
-        if(CurIconObject->IconInfo.hbmMask &&
-          (bmp = BITMAPOBJ_LockBitmap(CurIconObject->IconInfo.hbmMask)))
-        {
-          if (CurIconObject->IconInfo.hbmColor == NULL)
-          {
-            CurIconObject->Size.cx = bmp->SurfObj.sizlBitmap.cx;
-            CurIconObject->Size.cy = bmp->SurfObj.sizlBitmap.cy / 2;
-          }
-          BITMAPOBJ_UnlockBitmap(bmp);
-          GDIOBJ_SetOwnership(CurIconObject->IconInfo.hbmMask, NULL);
-        }
-      }
-      else
+   PCURICON_OBJECT CurIconObject;
+   PWINSTATION_OBJECT WinStaObject;
+   PBITMAPOBJ bmp;
+   NTSTATUS Status;
+   HANDLE Ret;
+   DECLARE_RETURN(HANDLE);
+
+   DPRINT("Enter NtUserCreateCursorIconHandle\n");
+   UserEnterExclusive();
+
+   WinStaObject = IntGetWinStaObj();
+   if(WinStaObject == NULL)
+   {
+      RETURN( (HANDLE)0);
+   }
+
+   CurIconObject = IntCreateCurIconHandle(WinStaObject);
+   if(CurIconObject)
+   {
+      Ret = CurIconObject->Self;
+
+      if(IconInfo)
       {
-        SetLastNtError(Status);
-        /* FIXME - Don't exit here */
+         Status = MmCopyFromCaller(&CurIconObject->IconInfo, IconInfo, sizeof(ICONINFO));
+         if(NT_SUCCESS(Status))
+         {
+            if(Indirect)
+            {
+               CurIconObject->IconInfo.hbmMask = BITMAPOBJ_CopyBitmap(CurIconObject->IconInfo.hbmMask);
+               CurIconObject->IconInfo.hbmColor = BITMAPOBJ_CopyBitmap(CurIconObject->IconInfo.hbmColor);
+            }
+            if(CurIconObject->IconInfo.hbmColor &&
+                  (bmp = BITMAPOBJ_LockBitmap(CurIconObject->IconInfo.hbmColor)))
+            {
+               CurIconObject->Size.cx = bmp->SurfObj.sizlBitmap.cx;
+               CurIconObject->Size.cy = bmp->SurfObj.sizlBitmap.cy;
+               BITMAPOBJ_UnlockBitmap(bmp);
+               GDIOBJ_SetOwnership(CurIconObject->IconInfo.hbmColor, NULL);
+            }
+            if(CurIconObject->IconInfo.hbmMask &&
+                  (bmp = BITMAPOBJ_LockBitmap(CurIconObject->IconInfo.hbmMask)))
+            {
+               if (CurIconObject->IconInfo.hbmColor == NULL)
+               {
+                  CurIconObject->Size.cx = bmp->SurfObj.sizlBitmap.cx;
+                  CurIconObject->Size.cy = bmp->SurfObj.sizlBitmap.cy / 2;
+               }
+               BITMAPOBJ_UnlockBitmap(bmp);
+               GDIOBJ_SetOwnership(CurIconObject->IconInfo.hbmMask, NULL);
+            }
+         }
+         else
+         {
+            SetLastNtError(Status);
+            /* FIXME - Don't exit here */
+         }
       }
-    }
 
-    ObDereferenceObject(WinStaObject);
-    RETURN( Ret);
-  }
+      ObDereferenceObject(WinStaObject);
+      RETURN( Ret);
+   }
+
+   SetLastWin32Error(ERROR_NOT_ENOUGH_MEMORY);
+   ObDereferenceObject(WinStaObject);
+   RETURN( (HANDLE)0);
 
-  SetLastWin32Error(ERROR_NOT_ENOUGH_MEMORY);
-  ObDereferenceObject(WinStaObject);
-  RETURN( (HANDLE)0);
-  
 CLEANUP:
-  DPRINT("Leave NtUserCreateCursorIconHandle, ret=%i\n",_ret_);
-  UserLeave();
-  END_CLEANUP;
+   DPRINT("Leave NtUserCreateCursorIconHandle, ret=%i\n",_ret_);
+   UserLeave();
+   END_CLEANUP;
 }
 
 /*
@@ -650,61 +650,61 @@ CLEANUP:
 BOOL
 STDCALL
 NtUserGetCursorIconInfo(
-  HANDLE Handle,
-  PICONINFO IconInfo)
+   HANDLE Handle,
+   PICONINFO IconInfo)
 {
-  ICONINFO ii;
-  PCURICON_OBJECT CurIconObject;
-  PWINSTATION_OBJECT WinStaObject;
-  NTSTATUS Status;
-  BOOL Ret = FALSE;
-  DECLARE_RETURN(BOOL);
-
-  DPRINT("Enter NtUserGetCursorIconInfo\n");
-  UserEnterExclusive();
-
-  WinStaObject = IntGetWinStaObj();
-  if(WinStaObject == NULL)
-  {
-    RETURN( FALSE);
-  }
-
-  CurIconObject = IntGetCurIconObject(Handle);
-  if(CurIconObject)
-  {
-    if(IconInfo)
-    {
-      RtlCopyMemory(&ii, &CurIconObject->IconInfo, sizeof(ICONINFO));
-
-      /* Copy bitmaps */
-      ii.hbmMask = BITMAPOBJ_CopyBitmap(ii.hbmMask);
-      ii.hbmColor = BITMAPOBJ_CopyBitmap(ii.hbmColor);
+   ICONINFO ii;
+   PCURICON_OBJECT CurIconObject;
+   PWINSTATION_OBJECT WinStaObject;
+   NTSTATUS Status;
+   BOOL Ret = FALSE;
+   DECLARE_RETURN(BOOL);
+
+   DPRINT("Enter NtUserGetCursorIconInfo\n");
+   UserEnterExclusive();
+
+   WinStaObject = IntGetWinStaObj();
+   if(WinStaObject == NULL)
+   {
+      RETURN( FALSE);
+   }
 
-      /* Copy fields */
-      Status = MmCopyToCaller(IconInfo, &ii, sizeof(ICONINFO));
-      if(NT_SUCCESS(Status))
-        Ret = TRUE;
+   CurIconObject = IntGetCurIconObject(Handle);
+   if(CurIconObject)
+   {
+      if(IconInfo)
+      {
+         RtlCopyMemory(&ii, &CurIconObject->IconInfo, sizeof(ICONINFO));
+
+         /* Copy bitmaps */
+         ii.hbmMask = BITMAPOBJ_CopyBitmap(ii.hbmMask);
+         ii.hbmColor = BITMAPOBJ_CopyBitmap(ii.hbmColor);
+
+         /* Copy fields */
+         Status = MmCopyToCaller(IconInfo, &ii, sizeof(ICONINFO));
+         if(NT_SUCCESS(Status))
+            Ret = TRUE;
+         else
+            SetLastNtError(Status);
+      }
       else
-        SetLastNtError(Status);
-    }
-    else
-    {
-      SetLastWin32Error(ERROR_INVALID_PARAMETER);
-    }
+      {
+         SetLastWin32Error(ERROR_INVALID_PARAMETER);
+      }
 
-    IntReleaseCurIconObject(CurIconObject);
-    ObDereferenceObject(WinStaObject);
-    RETURN( Ret);
-  }
+      IntReleaseCurIconObject(CurIconObject);
+      ObDereferenceObject(WinStaObject);
+      RETURN( Ret);
+   }
+
+   SetLastWin32Error(ERROR_INVALID_CURSOR_HANDLE);
+   ObDereferenceObject(WinStaObject);
+   RETURN( FALSE);
 
-  SetLastWin32Error(ERROR_INVALID_CURSOR_HANDLE);
-  ObDereferenceObject(WinStaObject);
-  RETURN( FALSE);
-  
 CLEANUP:
-  DPRINT("Leave NtUserGetCursorIconInfo, ret=%i\n",_ret_);
-  UserLeave();
-  END_CLEANUP;
+   DPRINT("Leave NtUserGetCursorIconInfo, ret=%i\n",_ret_);
+   UserLeave();
+   END_CLEANUP;
 }
 
 
@@ -714,66 +714,66 @@ CLEANUP:
 BOOL
 STDCALL
 NtUserGetCursorIconSize(
-  HANDLE Handle,
-  BOOL *fIcon,
-  SIZE *Size)
+   HANDLE Handle,
+   BOOL *fIcon,
+   SIZE *Size)
 {
-  PCURICON_OBJECT CurIconObject;
-  PBITMAPOBJ bmp;
-  PWINSTATION_OBJECT WinStaObject;
-  NTSTATUS Status;
-  BOOL Ret = FALSE;
-  SIZE SafeSize;
-  DECLARE_RETURN(BOOL);
-
-  DPRINT("Enter NtUserGetCursorIconSize\n");
-  UserEnterExclusive();
-
-  WinStaObject = IntGetWinStaObj();
-  if(WinStaObject == NULL)
-  {
-    RETURN( FALSE);
-  }
-
-  CurIconObject = IntGetCurIconObject(Handle);
-  if(CurIconObject)
-  {
-    /* Copy fields */
-    Status = MmCopyToCaller(fIcon, &CurIconObject->IconInfo.fIcon, sizeof(BOOL));
-    if(!NT_SUCCESS(Status))
-    {
-      SetLastNtError(Status);
-      goto done;
-    }
+   PCURICON_OBJECT CurIconObject;
+   PBITMAPOBJ bmp;
+   PWINSTATION_OBJECT WinStaObject;
+   NTSTATUS Status;
+   BOOL Ret = FALSE;
+   SIZE SafeSize;
+   DECLARE_RETURN(BOOL);
+
+   DPRINT("Enter NtUserGetCursorIconSize\n");
+   UserEnterExclusive();
+
+   WinStaObject = IntGetWinStaObj();
+   if(WinStaObject == NULL)
+   {
+      RETURN( FALSE);
+   }
+
+   CurIconObject = IntGetCurIconObject(Handle);
+   if(CurIconObject)
+   {
+      /* Copy fields */
+      Status = MmCopyToCaller(fIcon, &CurIconObject->IconInfo.fIcon, sizeof(BOOL));
+      if(!NT_SUCCESS(Status))
+      {
+         SetLastNtError(Status);
+         goto done;
+      }
 
-    bmp = BITMAPOBJ_LockBitmap(CurIconObject->IconInfo.hbmColor);
-    if(!bmp)
-      goto done;
+      bmp = BITMAPOBJ_LockBitmap(CurIconObject->IconInfo.hbmColor);
+      if(!bmp)
+         goto done;
 
-    SafeSize.cx = bmp->SurfObj.sizlBitmap.cx;
-    SafeSize.cy = bmp->SurfObj.sizlBitmap.cy;
-    Status = MmCopyToCaller(Size, &SafeSize, sizeof(SIZE));
-    if(NT_SUCCESS(Status))
-      Ret = TRUE;
-    else
-      SetLastNtError(Status);
+      SafeSize.cx = bmp->SurfObj.sizlBitmap.cx;
+      SafeSize.cy = bmp->SurfObj.sizlBitmap.cy;
+      Status = MmCopyToCaller(Size, &SafeSize, sizeof(SIZE));
+      if(NT_SUCCESS(Status))
+         Ret = TRUE;
+      else
+         SetLastNtError(Status);
 
-    BITMAPOBJ_UnlockBitmap(bmp);
+      BITMAPOBJ_UnlockBitmap(bmp);
+
+done:
+      IntReleaseCurIconObject(CurIconObject);
+      ObDereferenceObject(WinStaObject);
+      RETURN( Ret);
+   }
 
-    done:
-    IntReleaseCurIconObject(CurIconObject);
-    ObDereferenceObject(WinStaObject);
-    RETURN( Ret);
-  }
+   SetLastWin32Error(ERROR_INVALID_CURSOR_HANDLE);
+   ObDereferenceObject(WinStaObject);
+   RETURN( FALSE);
 
-  SetLastWin32Error(ERROR_INVALID_CURSOR_HANDLE);
-  ObDereferenceObject(WinStaObject);
-  RETURN( FALSE);
-  
 CLEANUP:
-  DPRINT("Leave NtUserGetCursorIconSize, ret=%i\n",_ret_);
-  UserLeave();
-  END_CLEANUP;
+   DPRINT("Leave NtUserGetCursorIconSize, ret=%i\n",_ret_);
+   UserLeave();
+   END_CLEANUP;
 }
 
 
@@ -783,14 +783,14 @@ CLEANUP:
 DWORD
 STDCALL
 NtUserGetCursorFrameInfo(
-  DWORD Unknown0,
-  DWORD Unknown1,
-  DWORD Unknown2,
-  DWORD Unknown3)
+   DWORD Unknown0,
+   DWORD Unknown1,
+   DWORD Unknown2,
+   DWORD Unknown3)
 {
-  UNIMPLEMENTED
+   UNIMPLEMENTED
 
-  return 0;
+   return 0;
 }
 
 
@@ -800,70 +800,71 @@ NtUserGetCursorFrameInfo(
 BOOL
 STDCALL
 NtUserGetCursorInfo(
-  PCURSORINFO pci)
+   PCURSORINFO pci)
 {
-  CURSORINFO SafeCi;
-  PSYSTEM_CURSORINFO CurInfo;
-  PWINSTATION_OBJECT WinStaObject;
-  NTSTATUS Status;
-  PCURICON_OBJECT CursorObject;
-  DECLARE_RETURN(BOOL);
+   CURSORINFO SafeCi;
+   PSYSTEM_CURSORINFO CurInfo;
+   PWINSTATION_OBJECT WinStaObject;
+   NTSTATUS Status;
+   PCURICON_OBJECT CursorObject;
+   DECLARE_RETURN(BOOL);
 
-  DPRINT("Enter NtUserGetCursorInfo\n");
-  UserEnterExclusive();
+   DPRINT("Enter NtUserGetCursorInfo\n");
+   UserEnterExclusive();
 
 #if 1
-  HDC hDC;
 
-  /* FIXME - get the screen dc from the window station or desktop */
-  if (!(hDC = IntGetScreenDC()))
-  {
-    RETURN( FALSE);
-  }
+   HDC hDC;
+
+   /* FIXME - get the screen dc from the window station or desktop */
+   if (!(hDC = IntGetScreenDC()))
+   {
+      RETURN( FALSE);
+   }
 #endif
 
-  Status = MmCopyFromCaller(&SafeCi.cbSize, pci, sizeof(DWORD));
-  if(!NT_SUCCESS(Status))
-  {
-    SetLastNtError(Status);
-    RETURN( FALSE);
-  }
-
-  if(SafeCi.cbSize != sizeof(CURSORINFO))
-  {
-    SetLastWin32Error(ERROR_INVALID_PARAMETER);
-    RETURN( FALSE);
-  }
-
-  WinStaObject = IntGetWinStaObj();
-  if(WinStaObject == NULL)
-  {
-    RETURN( FALSE);
-  }
-
-  CurInfo = IntGetSysCursorInfo(WinStaObject);
-  CursorObject = (PCURICON_OBJECT)CurInfo->CurrentCursorObject;
-
-  SafeCi.flags = ((CurInfo->ShowingCursor && CursorObject) ? CURSOR_SHOWING : 0);
-  SafeCi.hCursor = (CursorObject ? (HCURSOR)CursorObject->Self : (HCURSOR)0);
-
-  IntGetCursorLocation(WinStaObject, &SafeCi.ptScreenPos);
-
-  Status = MmCopyToCaller(pci, &SafeCi, sizeof(CURSORINFO));
-  if(!NT_SUCCESS(Status))
-  {
-    ObDereferenceObject(WinStaObject);
-    SetLastNtError(Status);
-    RETURN( FALSE);
-  }
-
-  ObDereferenceObject(WinStaObject);
-  RETURN( TRUE);
-  
+   Status = MmCopyFromCaller(&SafeCi.cbSize, pci, sizeof(DWORD));
+   if(!NT_SUCCESS(Status))
+   {
+      SetLastNtError(Status);
+      RETURN( FALSE);
+   }
+
+   if(SafeCi.cbSize != sizeof(CURSORINFO))
+   {
+      SetLastWin32Error(ERROR_INVALID_PARAMETER);
+      RETURN( FALSE);
+   }
+
+   WinStaObject = IntGetWinStaObj();
+   if(WinStaObject == NULL)
+   {
+      RETURN( FALSE);
+   }
+
+   CurInfo = IntGetSysCursorInfo(WinStaObject);
+   CursorObject = (PCURICON_OBJECT)CurInfo->CurrentCursorObject;
+
+   SafeCi.flags = ((CurInfo->ShowingCursor && CursorObject) ? CURSOR_SHOWING : 0);
+   SafeCi.hCursor = (CursorObject ? (HCURSOR)CursorObject->Self : (HCURSOR)0);
+
+   IntGetCursorLocation(WinStaObject, &SafeCi.ptScreenPos);
+
+   Status = MmCopyToCaller(pci, &SafeCi, sizeof(CURSORINFO));
+   if(!NT_SUCCESS(Status))
+   {
+      ObDereferenceObject(WinStaObject);
+      SetLastNtError(Status);
+      RETURN( FALSE);
+   }
+
+   ObDereferenceObject(WinStaObject);
+   RETURN( TRUE);
+
 CLEANUP:
-  DPRINT("Leave NtUserGetCursorInfo, ret=%i\n",_ret_);
-  UserLeave();
-  END_CLEANUP;
+   DPRINT("Leave NtUserGetCursorInfo, ret=%i\n",_ret_);
+   UserLeave();
+   END_CLEANUP;
 }
 
 
@@ -873,71 +874,71 @@ CLEANUP:
 BOOL
 STDCALL
 NtUserClipCursor(
-  RECT *UnsafeRect)
+   RECT *UnsafeRect)
 {
-  /* FIXME - check if process has WINSTA_WRITEATTRIBUTES */
-
-  PWINSTATION_OBJECT WinStaObject;
-  PSYSTEM_CURSORINFO CurInfo;
-  RECT Rect;
-  PWINDOW_OBJECT DesktopWindow = NULL;
-  POINT MousePos;
-  DECLARE_RETURN(BOOL);
-
-  DPRINT("Enter NtUserClipCursor\n");
-  UserEnterExclusive();
-
-  WinStaObject = IntGetWinStaObj();
-  if (WinStaObject == NULL)
-  {
-    RETURN( FALSE);
-  }
-
-  if (NULL != UnsafeRect && ! NT_SUCCESS(MmCopyFromCaller(&Rect, UnsafeRect, sizeof(RECT))))
-  {
-    ObDereferenceObject(WinStaObject);
-    SetLastWin32Error(ERROR_INVALID_PARAMETER);
-    RETURN( FALSE);
-  }
-
-  CurInfo = IntGetSysCursorInfo(WinStaObject);
-  IntGetCursorLocation(WinStaObject, &MousePos);
-
-  if(WinStaObject->ActiveDesktop)
-    DesktopWindow = IntGetWindowObject(WinStaObject->ActiveDesktop->DesktopWindow);
-
-  if((Rect.right > Rect.left) && (Rect.bottom > Rect.top)
-     && DesktopWindow && UnsafeRect != NULL)
-  {
-    MOUSEINPUT mi;
-
-    CurInfo->CursorClipInfo.IsClipped = TRUE;
-    CurInfo->CursorClipInfo.Left = max(Rect.left, DesktopWindow->WindowRect.left);
-    CurInfo->CursorClipInfo.Top = max(Rect.top, DesktopWindow->WindowRect.top);
-    CurInfo->CursorClipInfo.Right = min(Rect.right - 1, DesktopWindow->WindowRect.right - 1);
-    CurInfo->CursorClipInfo.Bottom = min(Rect.bottom - 1, DesktopWindow->WindowRect.bottom - 1);
-    IntReleaseWindowObject(DesktopWindow);
-
-    mi.dx = MousePos.x;
-    mi.dy = MousePos.y;
-    mi.mouseData = 0;
-    mi.dwFlags = MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE;
-    mi.time = 0;
-    mi.dwExtraInfo = 0;
-    IntMouseInput(&mi);
-
-    RETURN( TRUE);
-  }
-
-  CurInfo->CursorClipInfo.IsClipped = FALSE;
-  ObDereferenceObject(WinStaObject);
-
-  RETURN( TRUE);
-  
+   /* FIXME - check if process has WINSTA_WRITEATTRIBUTES */
+
+   PWINSTATION_OBJECT WinStaObject;
+   PSYSTEM_CURSORINFO CurInfo;
+   RECT Rect;
+   PWINDOW_OBJECT DesktopWindow = NULL;
+   POINT MousePos;
+   DECLARE_RETURN(BOOL);
+
+   DPRINT("Enter NtUserClipCursor\n");
+   UserEnterExclusive();
+
+   WinStaObject = IntGetWinStaObj();
+   if (WinStaObject == NULL)
+   {
+      RETURN( FALSE);
+   }
+
+   if (NULL != UnsafeRect && ! NT_SUCCESS(MmCopyFromCaller(&Rect, UnsafeRect, sizeof(RECT))))
+   {
+      ObDereferenceObject(WinStaObject);
+      SetLastWin32Error(ERROR_INVALID_PARAMETER);
+      RETURN( FALSE);
+   }
+
+   CurInfo = IntGetSysCursorInfo(WinStaObject);
+   IntGetCursorLocation(WinStaObject, &MousePos);
+
+   if(WinStaObject->ActiveDesktop)
+      DesktopWindow = IntGetWindowObject(WinStaObject->ActiveDesktop->DesktopWindow);
+
+   if((Rect.right > Rect.left) && (Rect.bottom > Rect.top)
+         && DesktopWindow && UnsafeRect != NULL)
+   {
+      MOUSEINPUT mi;
+
+      CurInfo->CursorClipInfo.IsClipped = TRUE;
+      CurInfo->CursorClipInfo.Left = max(Rect.left, DesktopWindow->WindowRect.left);
+      CurInfo->CursorClipInfo.Top = max(Rect.top, DesktopWindow->WindowRect.top);
+      CurInfo->CursorClipInfo.Right = min(Rect.right - 1, DesktopWindow->WindowRect.right - 1);
+      CurInfo->CursorClipInfo.Bottom = min(Rect.bottom - 1, DesktopWindow->WindowRect.bottom - 1);
+      IntReleaseWindowObject(DesktopWindow);
+
+      mi.dx = MousePos.x;
+      mi.dy = MousePos.y;
+      mi.mouseData = 0;
+      mi.dwFlags = MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE;
+      mi.time = 0;
+      mi.dwExtraInfo = 0;
+      IntMouseInput(&mi);
+
+      RETURN( TRUE);
+   }
+
+   CurInfo->CursorClipInfo.IsClipped = FALSE;
+   ObDereferenceObject(WinStaObject);
+
+   RETURN( TRUE);
+
 CLEANUP:
-  DPRINT("Leave NtUserClipCursor, ret=%i\n",_ret_);
-  UserLeave();
-  END_CLEANUP;
+   DPRINT("Leave NtUserClipCursor, ret=%i\n",_ret_);
+   UserLeave();
+   END_CLEANUP;
 }
 
 
@@ -947,51 +948,51 @@ CLEANUP:
 BOOL
 STDCALL
 NtUserDestroyCursorIcon(
-  HANDLE Handle,
-  DWORD Unknown)
+   HANDLE Handle,
+   DWORD Unknown)
 {
-  PWINSTATION_OBJECT WinStaObject;
-  PCURICON_OBJECT Object;
-  DECLARE_RETURN(BOOL);
-
-  DPRINT("Enter NtUserDestroyCursorIcon\n");
-  UserEnterExclusive();
-
-  WinStaObject = IntGetWinStaObj();
-  if(WinStaObject == NULL)
-  {
-    RETURN( FALSE);
-  }
-
-  if (!(Object = IntGetCurIconObject(Handle)))
-  {
-     ObDereferenceObject(WinStaObject);
-     RETURN(FALSE); 
-  }
-//  Status = ObmReferenceObjectByHandle(gHandleTable, Handle, otCursorIcon, (PVOID*)&Object);
-//  if(!NT_SUCCESS(Status))
-//  {
-//    ObDereferenceObject(WinStaObject);
-//    SetLastNtError(Status);
-//    RETURN( FALSE);
-//  }
-
-  if(IntDestroyCurIconObject(WinStaObject, Object, FALSE))
-  {
-    ObmDereferenceObject(Object);
-    ObDereferenceObject(WinStaObject);
-    RETURN( TRUE);
-  }
-
-  ObmDereferenceObject(Object);
-  ObDereferenceObject(WinStaObject);
-  SetLastWin32Error(ERROR_INVALID_CURSOR_HANDLE);
-  RETURN( FALSE);
-  
+   PWINSTATION_OBJECT WinStaObject;
+   PCURICON_OBJECT Object;
+   DECLARE_RETURN(BOOL);
+
+   DPRINT("Enter NtUserDestroyCursorIcon\n");
+   UserEnterExclusive();
+
+   WinStaObject = IntGetWinStaObj();
+   if(WinStaObject == NULL)
+   {
+      RETURN( FALSE);
+   }
+
+   if (!(Object = IntGetCurIconObject(Handle)))
+   {
+      ObDereferenceObject(WinStaObject);
+      RETURN(FALSE);
+   }
+   //  Status = ObmReferenceObjectByHandle(gHandleTable, Handle, otCursorIcon, (PVOID*)&Object);
+   //  if(!NT_SUCCESS(Status))
+   //  {
+   //    ObDereferenceObject(WinStaObject);
+   //    SetLastNtError(Status);
+   //    RETURN( FALSE);
+   //  }
+
+   if(IntDestroyCurIconObject(WinStaObject, Object, FALSE))
+   {
+      ObmDereferenceObject(Object);
+      ObDereferenceObject(WinStaObject);
+      RETURN( TRUE);
+   }
+
+   ObmDereferenceObject(Object);
+   ObDereferenceObject(WinStaObject);
+   SetLastWin32Error(ERROR_INVALID_CURSOR_HANDLE);
+   RETURN( FALSE);
+
 CLEANUP:
-  DPRINT("Leave NtUserDestroyCursorIcon, ret=%i\n",_ret_);
-  UserLeave();
-  END_CLEANUP;
+   DPRINT("Leave NtUserDestroyCursorIcon, ret=%i\n",_ret_);
+   UserLeave();
+   END_CLEANUP;
 }
 
 
@@ -1001,43 +1002,43 @@ CLEANUP:
 HICON
 STDCALL
 NtUserFindExistingCursorIcon(
-  HMODULE hModule,
-  HRSRC hRsrc,
-  LONG cx,
-  LONG cy)
+   HMODULE hModule,
+   HRSRC hRsrc,
+   LONG cx,
+   LONG cy)
 {
-  PCURICON_OBJECT CurIconObject;
-  PWINSTATION_OBJECT WinStaObject;
-  HANDLE Ret = (HANDLE)0;
-  DECLARE_RETURN(HICON);
-
-  DPRINT("Enter NtUserFindExistingCursorIcon\n");
-  UserEnterExclusive();
-
-  WinStaObject = IntGetWinStaObj();
-  if(WinStaObject == NULL)
-  {
-    RETURN( Ret);
-  }
-
-  CurIconObject = IntFindExistingCurIconObject(WinStaObject, hModule, hRsrc, cx, cy);
-  if(CurIconObject)
-  {
-    Ret = CurIconObject->Self;
-
-    IntReleaseCurIconObject(CurIconObject);
-    ObDereferenceObject(WinStaObject);
-    RETURN( Ret);
-  }
-
-  SetLastWin32Error(ERROR_INVALID_CURSOR_HANDLE);
-  ObDereferenceObject(WinStaObject);
-  RETURN( (HANDLE)0);
-  
+   PCURICON_OBJECT CurIconObject;
+   PWINSTATION_OBJECT WinStaObject;
+   HANDLE Ret = (HANDLE)0;
+   DECLARE_RETURN(HICON);
+
+   DPRINT("Enter NtUserFindExistingCursorIcon\n");
+   UserEnterExclusive();
+
+   WinStaObject = IntGetWinStaObj();
+   if(WinStaObject == NULL)
+   {
+      RETURN( Ret);
+   }
+
+   CurIconObject = IntFindExistingCurIconObject(WinStaObject, hModule, hRsrc, cx, cy);
+   if(CurIconObject)
+   {
+      Ret = CurIconObject->Self;
+
+      IntReleaseCurIconObject(CurIconObject);
+      ObDereferenceObject(WinStaObject);
+      RETURN( Ret);
+   }
+
+   SetLastWin32Error(ERROR_INVALID_CURSOR_HANDLE);
+   ObDereferenceObject(WinStaObject);
+   RETURN( (HANDLE)0);
+
 CLEANUP:
-  DPRINT("Leave NtUserFindExistingCursorIcon, ret=%i\n",_ret_);
-  UserLeave();
-  END_CLEANUP;
+   DPRINT("Leave NtUserFindExistingCursorIcon, ret=%i\n",_ret_);
+   UserLeave();
+   END_CLEANUP;
 }
 
 
@@ -1047,59 +1048,59 @@ CLEANUP:
 BOOL
 STDCALL
 NtUserGetClipCursor(
-  RECT *lpRect)
+   RECT *lpRect)
 {
-  /* FIXME - check if process has WINSTA_READATTRIBUTES */
-  PSYSTEM_CURSORINFO CurInfo;
-  PWINSTATION_OBJECT WinStaObject;
-  RECT Rect;
-  NTSTATUS Status;
-  DECLARE_RETURN(BOOL);
-
-  DPRINT("Enter NtUserGetClipCursor\n");
-  UserEnterExclusive();
-
-  if(!lpRect)
-    RETURN( FALSE);
-
-  WinStaObject = IntGetWinStaObj();
-  if (WinStaObject == NULL)
-  {
-    RETURN( FALSE);
-  }
-
-  CurInfo = IntGetSysCursorInfo(WinStaObject);
-  if(CurInfo->CursorClipInfo.IsClipped)
-  {
-    Rect.left = CurInfo->CursorClipInfo.Left;
-    Rect.top = CurInfo->CursorClipInfo.Top;
-    Rect.right = CurInfo->CursorClipInfo.Right;
-    Rect.bottom = CurInfo->CursorClipInfo.Bottom;
-  }
-  else
-  {
-    Rect.left = 0;
-    Rect.top = 0;
-    Rect.right = UserGetSystemMetrics(SM_CXSCREEN);
-    Rect.bottom = UserGetSystemMetrics(SM_CYSCREEN);
-  }
-
-  Status = MmCopyToCaller((PRECT)lpRect, &Rect, sizeof(RECT));
-  if(!NT_SUCCESS(Status))
-  {
-    ObDereferenceObject(WinStaObject);
-    SetLastNtError(Status);
-    RETURN( FALSE);
-  }
-
-  ObDereferenceObject(WinStaObject);
-
-  RETURN( TRUE);
-  
+   /* FIXME - check if process has WINSTA_READATTRIBUTES */
+   PSYSTEM_CURSORINFO CurInfo;
+   PWINSTATION_OBJECT WinStaObject;
+   RECT Rect;
+   NTSTATUS Status;
+   DECLARE_RETURN(BOOL);
+
+   DPRINT("Enter NtUserGetClipCursor\n");
+   UserEnterExclusive();
+
+   if(!lpRect)
+      RETURN( FALSE);
+
+   WinStaObject = IntGetWinStaObj();
+   if (WinStaObject == NULL)
+   {
+      RETURN( FALSE);
+   }
+
+   CurInfo = IntGetSysCursorInfo(WinStaObject);
+   if(CurInfo->CursorClipInfo.IsClipped)
+   {
+      Rect.left = CurInfo->CursorClipInfo.Left;
+      Rect.top = CurInfo->CursorClipInfo.Top;
+      Rect.right = CurInfo->CursorClipInfo.Right;
+      Rect.bottom = CurInfo->CursorClipInfo.Bottom;
+   }
+   else
+   {
+      Rect.left = 0;
+      Rect.top = 0;
+      Rect.right = UserGetSystemMetrics(SM_CXSCREEN);
+      Rect.bottom = UserGetSystemMetrics(SM_CYSCREEN);
+   }
+
+   Status = MmCopyToCaller((PRECT)lpRect, &Rect, sizeof(RECT));
+   if(!NT_SUCCESS(Status))
+   {
+      ObDereferenceObject(WinStaObject);
+      SetLastNtError(Status);
+      RETURN( FALSE);
+   }
+
+   ObDereferenceObject(WinStaObject);
+
+   RETURN( TRUE);
+
 CLEANUP:
-  DPRINT("Leave NtUserGetClipCursor, ret=%i\n",_ret_);
-  UserLeave();
-  END_CLEANUP;
+   DPRINT("Leave NtUserGetClipCursor, ret=%i\n",_ret_);
+   UserLeave();
+   END_CLEANUP;
 }
 
 
@@ -1109,38 +1110,38 @@ CLEANUP:
 HCURSOR
 STDCALL
 NtUserSetCursor(
-  HCURSOR hCursor)
+   HCURSOR hCursor)
 {
-  PCURICON_OBJECT CurIconObject;
-  HICON OldCursor = (HCURSOR)0;
-  PWINSTATION_OBJECT WinStaObject;
-  DECLARE_RETURN(HCURSOR);
-
-  DPRINT("Enter NtUserSetCursor\n");
-  UserEnterExclusive();
-
-  WinStaObject = IntGetWinStaObj();
-  if(WinStaObject == NULL)
-  {
-    RETURN( (HCURSOR)0);
-  }
-
-  CurIconObject = IntGetCurIconObject(hCursor);
-  if(CurIconObject)
-  {
-    OldCursor = IntSetCursor(WinStaObject, CurIconObject, FALSE);
-    IntReleaseCurIconObject(CurIconObject);
-  }
-  else
-    SetLastWin32Error(ERROR_INVALID_CURSOR_HANDLE);
-
-  ObDereferenceObject(WinStaObject);
-  RETURN( OldCursor);
-  
+   PCURICON_OBJECT CurIconObject;
+   HICON OldCursor = (HCURSOR)0;
+   PWINSTATION_OBJECT WinStaObject;
+   DECLARE_RETURN(HCURSOR);
+
+   DPRINT("Enter NtUserSetCursor\n");
+   UserEnterExclusive();
+
+   WinStaObject = IntGetWinStaObj();
+   if(WinStaObject == NULL)
+   {
+      RETURN( (HCURSOR)0);
+   }
+
+   CurIconObject = IntGetCurIconObject(hCursor);
+   if(CurIconObject)
+   {
+      OldCursor = IntSetCursor(WinStaObject, CurIconObject, FALSE);
+      IntReleaseCurIconObject(CurIconObject);
+   }
+   else
+      SetLastWin32Error(ERROR_INVALID_CURSOR_HANDLE);
+
+   ObDereferenceObject(WinStaObject);
+   RETURN( OldCursor);
+
 CLEANUP:
-  DPRINT("Leave NtUserSetCursor, ret=%i\n",_ret_);
-  UserLeave();
-  END_CLEANUP;
+   DPRINT("Leave NtUserSetCursor, ret=%i\n",_ret_);
+   UserLeave();
+   END_CLEANUP;
 }
 
 
@@ -1150,73 +1151,73 @@ CLEANUP:
 BOOL
 STDCALL
 NtUserSetCursorIconContents(
-  HANDLE Handle,
-  PICONINFO IconInfo)
+   HANDLE Handle,
+   PICONINFO IconInfo)
 {
-  PCURICON_OBJECT CurIconObject;
-  PBITMAPOBJ bmp;
-  PWINSTATION_OBJECT WinStaObject;
-  NTSTATUS Status;
-  BOOL Ret = FALSE;
-  DECLARE_RETURN(BOOL);
-
-  DPRINT("Enter NtUserSetCursorIconContents\n");
-  UserEnterExclusive();
-
-  WinStaObject = IntGetWinStaObj();
-  if(WinStaObject == NULL)
-  {
-    RETURN( FALSE);
-  }
-
-  CurIconObject = IntGetCurIconObject(Handle);
-  if(CurIconObject)
-  {
-    /* Copy fields */
-    Status = MmCopyFromCaller(&CurIconObject->IconInfo, IconInfo, sizeof(ICONINFO));
-    if(!NT_SUCCESS(Status))
-    {
-      SetLastNtError(Status);
-      goto done;
-    }
-
-    bmp = BITMAPOBJ_LockBitmap(CurIconObject->IconInfo.hbmColor);
-    if(bmp)
-    {
-      CurIconObject->Size.cx = bmp->SurfObj.sizlBitmap.cx;
-      CurIconObject->Size.cy = bmp->SurfObj.sizlBitmap.cy;
-      BITMAPOBJ_UnlockBitmap(bmp);
-      GDIOBJ_SetOwnership(CurIconObject->IconInfo.hbmColor, NULL);
-    }
-    else
-    {
-      bmp = BITMAPOBJ_LockBitmap(CurIconObject->IconInfo.hbmMask);
-      if(!bmp)
-        goto done;
+   PCURICON_OBJECT CurIconObject;
+   PBITMAPOBJ bmp;
+   PWINSTATION_OBJECT WinStaObject;
+   NTSTATUS Status;
+   BOOL Ret = FALSE;
+   DECLARE_RETURN(BOOL);
+
+   DPRINT("Enter NtUserSetCursorIconContents\n");
+   UserEnterExclusive();
+
+   WinStaObject = IntGetWinStaObj();
+   if(WinStaObject == NULL)
+   {
+      RETURN( FALSE);
+   }
 
-      CurIconObject->Size.cx = bmp->SurfObj.sizlBitmap.cx;
-      CurIconObject->Size.cy = bmp->SurfObj.sizlBitmap.cy / 2;
+   CurIconObject = IntGetCurIconObject(Handle);
+   if(CurIconObject)
+   {
+      /* Copy fields */
+      Status = MmCopyFromCaller(&CurIconObject->IconInfo, IconInfo, sizeof(ICONINFO));
+      if(!NT_SUCCESS(Status))
+      {
+         SetLastNtError(Status);
+         goto done;
+      }
 
-      BITMAPOBJ_UnlockBitmap(bmp);
-      GDIOBJ_SetOwnership(CurIconObject->IconInfo.hbmMask, NULL);
-    }
+      bmp = BITMAPOBJ_LockBitmap(CurIconObject->IconInfo.hbmColor);
+      if(bmp)
+      {
+         CurIconObject->Size.cx = bmp->SurfObj.sizlBitmap.cx;
+         CurIconObject->Size.cy = bmp->SurfObj.sizlBitmap.cy;
+         BITMAPOBJ_UnlockBitmap(bmp);
+         GDIOBJ_SetOwnership(CurIconObject->IconInfo.hbmColor, NULL);
+      }
+      else
+      {
+         bmp = BITMAPOBJ_LockBitmap(CurIconObject->IconInfo.hbmMask);
+         if(!bmp)
+            goto done;
 
-    Ret = TRUE;
+         CurIconObject->Size.cx = bmp->SurfObj.sizlBitmap.cx;
+         CurIconObject->Size.cy = bmp->SurfObj.sizlBitmap.cy / 2;
 
-    done:
-    IntReleaseCurIconObject(CurIconObject);
-    ObDereferenceObject(WinStaObject);
-    RETURN( Ret);
-  }
+         BITMAPOBJ_UnlockBitmap(bmp);
+         GDIOBJ_SetOwnership(CurIconObject->IconInfo.hbmMask, NULL);
+      }
+
+      Ret = TRUE;
+
+done:
+      IntReleaseCurIconObject(CurIconObject);
+      ObDereferenceObject(WinStaObject);
+      RETURN( Ret);
+   }
+
+   SetLastWin32Error(ERROR_INVALID_CURSOR_HANDLE);
+   ObDereferenceObject(WinStaObject);
+   RETURN( FALSE);
 
-  SetLastWin32Error(ERROR_INVALID_CURSOR_HANDLE);
-  ObDereferenceObject(WinStaObject);
-  RETURN( FALSE);
-  
 CLEANUP:
-  DPRINT("Leave NtUserSetCursorIconContents, ret=%i\n",_ret_);
-  UserLeave();
-  END_CLEANUP;
+   DPRINT("Leave NtUserSetCursorIconContents, ret=%i\n",_ret_);
+   UserLeave();
+   END_CLEANUP;
 }
 
 
@@ -1226,85 +1227,85 @@ CLEANUP:
 BOOL
 STDCALL
 NtUserSetCursorIconData(
-  HANDLE Handle,
-  PBOOL fIcon,
-  POINT *Hotspot,
-  HMODULE hModule,
-  HRSRC hRsrc,
-  HRSRC hGroupRsrc)
+   HANDLE Handle,
+   PBOOL fIcon,
+   POINT *Hotspot,
+   HMODULE hModule,
+   HRSRC hRsrc,
+   HRSRC hGroupRsrc)
 {
-  PCURICON_OBJECT CurIconObject;
-  PWINSTATION_OBJECT WinStaObject;
-  NTSTATUS Status;
-  POINT SafeHotspot;
-  BOOL Ret = FALSE;
-  DECLARE_RETURN(BOOL);
-
-  DPRINT("Enter NtUserSetCursorIconData\n");
-  UserEnterExclusive();
-
-  WinStaObject = IntGetWinStaObj();
-  if(WinStaObject == NULL)
-  {
-    RETURN( FALSE);
-  }
-
-  CurIconObject = IntGetCurIconObject(Handle);
-  if(CurIconObject)
-  {
-    CurIconObject->hModule = hModule;
-    CurIconObject->hRsrc = hRsrc;
-    CurIconObject->hGroupRsrc = hGroupRsrc;
-
-    /* Copy fields */
-    if(fIcon)
-    {
-      Status = MmCopyFromCaller(&CurIconObject->IconInfo.fIcon, fIcon, sizeof(BOOL));
-      if(!NT_SUCCESS(Status))
+   PCURICON_OBJECT CurIconObject;
+   PWINSTATION_OBJECT WinStaObject;
+   NTSTATUS Status;
+   POINT SafeHotspot;
+   BOOL Ret = FALSE;
+   DECLARE_RETURN(BOOL);
+
+   DPRINT("Enter NtUserSetCursorIconData\n");
+   UserEnterExclusive();
+
+   WinStaObject = IntGetWinStaObj();
+   if(WinStaObject == NULL)
+   {
+      RETURN( FALSE);
+   }
+
+   CurIconObject = IntGetCurIconObject(Handle);
+   if(CurIconObject)
+   {
+      CurIconObject->hModule = hModule;
+      CurIconObject->hRsrc = hRsrc;
+      CurIconObject->hGroupRsrc = hGroupRsrc;
+
+      /* Copy fields */
+      if(fIcon)
       {
-        SetLastNtError(Status);
-        goto done;
+         Status = MmCopyFromCaller(&CurIconObject->IconInfo.fIcon, fIcon, sizeof(BOOL));
+         if(!NT_SUCCESS(Status))
+         {
+            SetLastNtError(Status);
+            goto done;
+         }
       }
-    }
-    else
-    {
-      if(!Hotspot)
-        Ret = TRUE;
-    }
-
-    if(Hotspot)
-    {
-      Status = MmCopyFromCaller(&SafeHotspot, Hotspot, sizeof(POINT));
-      if(NT_SUCCESS(Status))
+      else
       {
-        CurIconObject->IconInfo.xHotspot = SafeHotspot.x;
-        CurIconObject->IconInfo.yHotspot = SafeHotspot.y;
+         if(!Hotspot)
+            Ret = TRUE;
+      }
 
-        Ret = TRUE;
+      if(Hotspot)
+      {
+         Status = MmCopyFromCaller(&SafeHotspot, Hotspot, sizeof(POINT));
+         if(NT_SUCCESS(Status))
+         {
+            CurIconObject->IconInfo.xHotspot = SafeHotspot.x;
+            CurIconObject->IconInfo.yHotspot = SafeHotspot.y;
+
+            Ret = TRUE;
+         }
+         else
+            SetLastNtError(Status);
       }
-      else
-        SetLastNtError(Status);
-    }
 
-    if(!fIcon && !Hotspot)
-    {
-      Ret = TRUE;
-    }
-
-    done:
-    IntReleaseCurIconObject(CurIconObject);
-    ObDereferenceObject(WinStaObject);
-    RETURN( Ret);
-  }
-
-  SetLastWin32Error(ERROR_INVALID_CURSOR_HANDLE);
-  ObDereferenceObject(WinStaObject);
-  RETURN( FALSE);
-  
+      if(!fIcon && !Hotspot)
+      {
+         Ret = TRUE;
+      }
+
+done:
+      IntReleaseCurIconObject(CurIconObject);
+      ObDereferenceObject(WinStaObject);
+      RETURN( Ret);
+   }
+
+   SetLastWin32Error(ERROR_INVALID_CURSOR_HANDLE);
+   ObDereferenceObject(WinStaObject);
+   RETURN( FALSE);
+
 CLEANUP:
-  DPRINT("Leave NtUserSetCursorIconData, ret=%i\n",_ret_);
-  UserLeave();
-  END_CLEANUP;
+   DPRINT("Leave NtUserSetCursorIconData, ret=%i\n",_ret_);
+   UserLeave();
+   END_CLEANUP;
 }
 
 
@@ -1314,10 +1315,10 @@ CLEANUP:
 BOOL
 STDCALL
 NtUserSetSystemCursor(
-  HCURSOR hcur,
-  DWORD id)
+   HCURSOR hcur,
+   DWORD id)
 {
-  return FALSE;
+   return FALSE;
 }
 
 
@@ -1328,191 +1329,204 @@ NtUserSetSystemCursor(
 BOOL
 STDCALL
 NtUserDrawIconEx(
-  HDC hdc,
-  int xLeft,
-  int yTop,
-  HICON hIcon,
-  int cxWidth,
-  int cyWidth,
-  UINT istepIfAniCur,
-  HBRUSH hbrFlickerFreeDraw,
-  UINT diFlags,
-  DWORD Unknown0,
-  DWORD Unknown1)
+   HDC hdc,
+   int xLeft,
+   int yTop,
+   HICON hIcon,
+   int cxWidth,
+   int cyWidth,
+   UINT istepIfAniCur,
+   HBRUSH hbrFlickerFreeDraw,
+   UINT diFlags,
+   DWORD Unknown0,
+   DWORD Unknown1)
 {
-  PCURICON_OBJECT CurIconObject;
-  PWINSTATION_OBJECT WinStaObject;
-  HBITMAP hbmMask, hbmColor;
-  BITMAP bmpMask, bmpColor;
-  BOOL DoFlickerFree;
-  SIZE IconSize;
-  COLORREF oldFg, oldBg;
-  HDC hdcMem, hdcOff = (HDC)0;
-  HBITMAP hbmOff = (HBITMAP)0;
-  HGDIOBJ hOldOffBrush = 0, hOldOffBmp = 0, hOldMem;
-  BOOL Ret = FALSE;
-  #if CANSTRETCHBLT
-  INT nStretchMode;
-  #endif
-  DECLARE_RETURN(BOOL);
-
-  DPRINT("Enter NtUserDrawIconEx\n");
-  UserEnterExclusive();
-
-  WinStaObject = IntGetWinStaObj();
-  if(WinStaObject == NULL)
-  {
-    RETURN( FALSE);
-  }
-
-  CurIconObject = IntGetCurIconObject(hIcon);
-  if(CurIconObject)
-  {
-    hbmMask = CurIconObject->IconInfo.hbmMask;
-    hbmColor = CurIconObject->IconInfo.hbmColor;
-    IntReleaseCurIconObject(CurIconObject);
-
-    if(istepIfAniCur)
-      DPRINT1("NtUserDrawIconEx: istepIfAniCur is not supported!\n");
-
-    if(!hbmMask || !IntGdiGetObject(hbmMask, sizeof(BITMAP), &bmpMask))
-      goto done;
-
-    if(hbmColor && !IntGdiGetObject(hbmColor, sizeof(BITMAP), &bmpColor))
-      goto done;
-
-    if(hbmColor)
-    {
-      IconSize.cx = bmpColor.bmWidth;
-      IconSize.cy = bmpColor.bmHeight;
-    }
-    else
-    {
-      IconSize.cx = bmpMask.bmWidth;
-      IconSize.cy = bmpMask.bmHeight / 2;
-    }
-
-    if(!diFlags)
-      diFlags = DI_NORMAL;
-
-    if(!cxWidth)
-      cxWidth = ((diFlags & DI_DEFAULTSIZE) ? UserGetSystemMetrics(SM_CXICON) : IconSize.cx);
-    if(!cyWidth)
-      cyWidth = ((diFlags & DI_DEFAULTSIZE) ? UserGetSystemMetrics(SM_CYICON) : IconSize.cy);
-
-    DoFlickerFree = (hbrFlickerFreeDraw && (NtGdiGetObjectType(hbrFlickerFreeDraw) == OBJ_BRUSH));
-
-    if(DoFlickerFree)
-    {
-      RECT r;
-      r.right = cxWidth;
-      r.bottom = cyWidth;
-
-      hdcOff = NtGdiCreateCompatableDC(hdc);
-      if(!hdcOff)
-        goto done;
-
-      hbmOff = NtGdiCreateCompatibleBitmap(hdc, cxWidth, cyWidth);
-      if(!hbmOff)
+   PCURICON_OBJECT CurIconObject;
+   PWINSTATION_OBJECT WinStaObject;
+   HBITMAP hbmMask, hbmColor;
+   BITMAP bmpMask, bmpColor;
+   BOOL DoFlickerFree;
+   SIZE IconSize;
+   COLORREF oldFg, oldBg;
+   HDC hdcMem, hdcOff = (HDC)0;
+   HBITMAP hbmOff = (HBITMAP)0;
+   HGDIOBJ hOldOffBrush = 0, hOldOffBmp = 0, hOldMem;
+   BOOL Ret = FALSE;
+#if CANSTRETCHBLT
+
+   INT nStretchMode;
+#endif
+
+   DECLARE_RETURN(BOOL);
+
+   DPRINT("Enter NtUserDrawIconEx\n");
+   UserEnterExclusive();
+
+   WinStaObject = IntGetWinStaObj();
+   if(WinStaObject == NULL)
+   {
+      RETURN( FALSE);
+   }
+
+   CurIconObject = IntGetCurIconObject(hIcon);
+   if(CurIconObject)
+   {
+      hbmMask = CurIconObject->IconInfo.hbmMask;
+      hbmColor = CurIconObject->IconInfo.hbmColor;
+      IntReleaseCurIconObject(CurIconObject);
+
+      if(istepIfAniCur)
+         DPRINT1("NtUserDrawIconEx: istepIfAniCur is not supported!\n");
+
+      if(!hbmMask || !IntGdiGetObject(hbmMask, sizeof(BITMAP), &bmpMask))
+         goto done;
+
+      if(hbmColor && !IntGdiGetObject(hbmColor, sizeof(BITMAP), &bmpColor))
+         goto done;
+
+      if(hbmColor)
+      {
+         IconSize.cx = bmpColor.bmWidth;
+         IconSize.cy = bmpColor.bmHeight;
+      }
+      else
+      {
+         IconSize.cx = bmpMask.bmWidth;
+         IconSize.cy = bmpMask.bmHeight / 2;
+      }
+
+      if(!diFlags)
+         diFlags = DI_NORMAL;
+
+      if(!cxWidth)
+         cxWidth = ((diFlags & DI_DEFAULTSIZE) ? UserGetSystemMetrics(SM_CXICON) : IconSize.cx);
+      if(!cyWidth)
+         cyWidth = ((diFlags & DI_DEFAULTSIZE) ? UserGetSystemMetrics(SM_CYICON) : IconSize.cy);
+
+      DoFlickerFree = (hbrFlickerFreeDraw && (NtGdiGetObjectType(hbrFlickerFreeDraw) == OBJ_BRUSH));
+
+      if(DoFlickerFree)
       {
-        NtGdiDeleteDC(hdcOff);
-        goto done;
+         RECT r;
+         r.right = cxWidth;
+         r.bottom = cyWidth;
+
+         hdcOff = NtGdiCreateCompatableDC(hdc);
+         if(!hdcOff)
+            goto done;
+
+         hbmOff = NtGdiCreateCompatibleBitmap(hdc, cxWidth, cyWidth);
+         if(!hbmOff)
+         {
+            NtGdiDeleteDC(hdcOff);
+            goto done;
+         }
+         hOldOffBrush = NtGdiSelectObject(hdcOff, hbrFlickerFreeDraw);
+         hOldOffBmp = NtGdiSelectObject(hdcOff, hbmOff);
+         NtGdiPatBlt(hdcOff, 0, 0, r.right, r.bottom, PATCOPY);
+         NtGdiSelectObject(hdcOff, hbmOff);
       }
-      hOldOffBrush = NtGdiSelectObject(hdcOff, hbrFlickerFreeDraw);
-      hOldOffBmp = NtGdiSelectObject(hdcOff, hbmOff);
-      NtGdiPatBlt(hdcOff, 0, 0, r.right, r.bottom, PATCOPY);
-      NtGdiSelectObject(hdcOff, hbmOff);
-    }
-
-    hdcMem = NtGdiCreateCompatableDC(hdc);
-    if(!hdcMem)
-      goto cleanup;
-
-    if(!DoFlickerFree)
-      hdcOff = hdc;
-
-    #if CANSTRETCHBLT
-    nStretchMode = NtGdiSetStretchBltMode(hdcOff, STRETCH_DELETESCANS);
-    #endif
-    oldFg = NtGdiSetTextColor(hdcOff, RGB(0, 0, 0));
-    oldBg = NtGdiSetBkColor(hdcOff, RGB(255, 255, 255));
-
-    if(diFlags & DI_MASK)
-    {
-      hOldMem = NtGdiSelectObject(hdcMem, hbmMask);
-      #if CANSTRETCHBLT
-      NtGdiStretchBlt(hdcOff, (DoFlickerFree ? 0 : xLeft), (DoFlickerFree ? 0 : yTop),
-                      cxWidth, cyWidth, hdcMem, 0, 0, IconSize.cx, IconSize.cy,
-                      ((diFlags & DI_IMAGE) ? SRCAND : SRCCOPY));
-      #else
-      NtGdiBitBlt(hdcOff, (DoFlickerFree ? 0 : xLeft), (DoFlickerFree ? 0 : yTop),
-                  cxWidth, cyWidth, hdcMem, 0, 0, ((diFlags & DI_IMAGE) ? SRCAND : SRCCOPY));
-      #endif
-      if(!hbmColor && (bmpMask.bmHeight == 2 * bmpMask.bmWidth) && (diFlags & DI_IMAGE))
+
+      hdcMem = NtGdiCreateCompatableDC(hdc);
+      if(!hdcMem)
+         goto cleanup;
+
+      if(!DoFlickerFree)
+         hdcOff = hdc;
+
+#if CANSTRETCHBLT
+
+      nStretchMode = NtGdiSetStretchBltMode(hdcOff, STRETCH_DELETESCANS);
+#endif
+
+      oldFg = NtGdiSetTextColor(hdcOff, RGB(0, 0, 0));
+      oldBg = NtGdiSetBkColor(hdcOff, RGB(255, 255, 255));
+
+      if(diFlags & DI_MASK)
       {
-        #if CANSTRETCHBLT
-        NtGdiStretchBlt(hdcOff, (DoFlickerFree ? 0 : xLeft), (DoFlickerFree ? 0 : yTop),
-                        cxWidth, cyWidth, hdcMem, 0, IconSize.cy, IconSize.cx, IconSize.cy, SRCINVERT);
-        #else
-        NtGdiBitBlt(hdcOff, (DoFlickerFree ? 0 : xLeft), (DoFlickerFree ? 0 : yTop),
-                    cxWidth, cyWidth, hdcMem, 0, IconSize.cy, SRCINVERT);
-        #endif
-        diFlags &= ~DI_IMAGE;
+         hOldMem = NtGdiSelectObject(hdcMem, hbmMask);
+#if CANSTRETCHBLT
+
+         NtGdiStretchBlt(hdcOff, (DoFlickerFree ? 0 : xLeft), (DoFlickerFree ? 0 : yTop),
+                         cxWidth, cyWidth, hdcMem, 0, 0, IconSize.cx, IconSize.cy,
+                         ((diFlags & DI_IMAGE) ? SRCAND : SRCCOPY));
+#else
+
+         NtGdiBitBlt(hdcOff, (DoFlickerFree ? 0 : xLeft), (DoFlickerFree ? 0 : yTop),
+                     cxWidth, cyWidth, hdcMem, 0, 0, ((diFlags & DI_IMAGE) ? SRCAND : SRCCOPY));
+#endif
+
+         if(!hbmColor && (bmpMask.bmHeight == 2 * bmpMask.bmWidth) && (diFlags & DI_IMAGE))
+         {
+#if CANSTRETCHBLT
+            NtGdiStretchBlt(hdcOff, (DoFlickerFree ? 0 : xLeft), (DoFlickerFree ? 0 : yTop),
+                            cxWidth, cyWidth, hdcMem, 0, IconSize.cy, IconSize.cx, IconSize.cy, SRCINVERT);
+#else
+
+            NtGdiBitBlt(hdcOff, (DoFlickerFree ? 0 : xLeft), (DoFlickerFree ? 0 : yTop),
+                        cxWidth, cyWidth, hdcMem, 0, IconSize.cy, SRCINVERT);
+#endif
+
+            diFlags &= ~DI_IMAGE;
+         }
+         NtGdiSelectObject(hdcMem, hOldMem);
       }
-      NtGdiSelectObject(hdcMem, hOldMem);
-    }
-
-    if(diFlags & DI_IMAGE)
-    {
-      hOldMem = NtGdiSelectObject(hdcMem, (hbmColor ? hbmColor : hbmMask));
-      #if CANSTRETCHBLT
-      NtGdiStretchBlt(hdcOff, (DoFlickerFree ? 0 : xLeft), (DoFlickerFree ? 0 : yTop),
-                      cxWidth, cyWidth, hdcMem, 0, (hbmColor ? 0 : IconSize.cy),
-                      IconSize.cx, IconSize.cy, ((diFlags & DI_MASK) ? SRCINVERT : SRCCOPY));
-      #else
-      NtGdiBitBlt(hdcOff, (DoFlickerFree ? 0 : xLeft), (DoFlickerFree ? 0 : yTop),
-                  cxWidth, cyWidth, hdcMem, 0, (hbmColor ? 0 : IconSize.cy),
-                  ((diFlags & DI_MASK) ? SRCINVERT : SRCCOPY));
-      #endif
-      NtGdiSelectObject(hdcMem, hOldMem);
-    }
-
-    if(DoFlickerFree)
-      NtGdiBitBlt(hdc, xLeft, yTop, cxWidth, cyWidth, hdcOff, 0, 0, SRCCOPY);
-
-    NtGdiSetTextColor(hdcOff, oldFg);
-    NtGdiSetBkColor(hdcOff, oldBg);
-    #if CANSTRETCHBLT
-    SetStretchBltMode(hdcOff, nStretchMode);
-    #endif
-
-    Ret = TRUE;
-
-    cleanup:
-    if(DoFlickerFree)
-    {
-
-      NtGdiSelectObject(hdcOff, hOldOffBmp);
-      NtGdiSelectObject(hdcOff, hOldOffBrush);
-      NtGdiDeleteObject(hbmOff);
-      NtGdiDeleteDC(hdcOff);
-    }
-    if(hdcMem)
-      NtGdiDeleteDC(hdcMem);
-
-    done:
-    ObDereferenceObject(WinStaObject);
-
-    RETURN( Ret);
-  }
-
-  SetLastWin32Error(ERROR_INVALID_CURSOR_HANDLE);
-  ObDereferenceObject(WinStaObject);
-  RETURN( FALSE);
-  
+
+      if(diFlags & DI_IMAGE)
+      {
+         hOldMem = NtGdiSelectObject(hdcMem, (hbmColor ? hbmColor : hbmMask));
+#if CANSTRETCHBLT
+
+         NtGdiStretchBlt(hdcOff, (DoFlickerFree ? 0 : xLeft), (DoFlickerFree ? 0 : yTop),
+                         cxWidth, cyWidth, hdcMem, 0, (hbmColor ? 0 : IconSize.cy),
+                         IconSize.cx, IconSize.cy, ((diFlags & DI_MASK) ? SRCINVERT : SRCCOPY));
+#else
+
+         NtGdiBitBlt(hdcOff, (DoFlickerFree ? 0 : xLeft), (DoFlickerFree ? 0 : yTop),
+                     cxWidth, cyWidth, hdcMem, 0, (hbmColor ? 0 : IconSize.cy),
+                     ((diFlags & DI_MASK) ? SRCINVERT : SRCCOPY));
+#endif
+
+         NtGdiSelectObject(hdcMem, hOldMem);
+      }
+
+      if(DoFlickerFree)
+         NtGdiBitBlt(hdc, xLeft, yTop, cxWidth, cyWidth, hdcOff, 0, 0, SRCCOPY);
+
+      NtGdiSetTextColor(hdcOff, oldFg);
+      NtGdiSetBkColor(hdcOff, oldBg);
+#if CANSTRETCHBLT
+
+      SetStretchBltMode(hdcOff, nStretchMode);
+#endif
+
+      Ret = TRUE;
+
+cleanup:
+      if(DoFlickerFree)
+      {
+
+         NtGdiSelectObject(hdcOff, hOldOffBmp);
+         NtGdiSelectObject(hdcOff, hOldOffBrush);
+         NtGdiDeleteObject(hbmOff);
+         NtGdiDeleteDC(hdcOff);
+      }
+      if(hdcMem)
+         NtGdiDeleteDC(hdcMem);
+
+done:
+      ObDereferenceObject(WinStaObject);
+
+      RETURN( Ret);
+   }
+
+   SetLastWin32Error(ERROR_INVALID_CURSOR_HANDLE);
+   ObDereferenceObject(WinStaObject);
+   RETURN( FALSE);
+
 CLEANUP:
-  DPRINT("Leave NtUserDrawIconEx, ret=%i\n",_ret_);
-  UserLeave();
-  END_CLEANUP;
+   DPRINT("Leave NtUserDrawIconEx, ret=%i\n",_ret_);
+   UserLeave();
+   END_CLEANUP;
 }