/*
- * ReactOS kernel
- * Copyright (C) 1998, 1999, 2000, 2001 ReactOS Team
+ * ReactOS W32 Subsystem
+ * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 ReactOS Team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
-/* $Id: mouse.c,v 1.20 2003/03/11 00:21:41 gvg Exp $
+/* $Id: mouse.c,v 1.25 2003/05/18 19:30:55 ea Exp $
*
* PROJECT: ReactOS kernel
* PURPOSE: Mouse
#include "include/msgqueue.h"
#include "include/object.h"
#include "include/winsta.h"
+#include <include/mouse.h>
#define NDEBUG
#include <debug.h>
/* FUNCTIONS *****************************************************************/
-INT
+INT STDCALL
MouseSafetyOnDrawStart(PSURFOBJ SurfObj, PSURFGDI SurfGDI, LONG HazardX1,
LONG HazardY1, LONG HazardX2, LONG HazardY2)
/*
return(TRUE);
}
-INT
+INT FASTCALL
MouseSafetyOnDrawEnd(PSURFOBJ SurfObj, PSURFGDI SurfGDI)
/*
* FUNCTION: Notify the mouse driver that drawing has finished on a surface.
return(TRUE);
}
-VOID
+VOID /* STDCALL */
MouseGDICallBack(PMOUSE_INPUT_DATA Data, ULONG InputCount)
/*
* FUNCTION: Call by the mouse driver when input events occur.
Msg.time = TickCount;
Msg.pt.x = mouse_x + mouse_cx;
Msg.pt.y = mouse_y + mouse_cy;
- if ((mouse_cx > 0) || (mouse_cy > 0))
+ if ((0 != Data[i].LastX) || (0 != Data[i].LastY))
{
MsqInsertSystemMessage(&Msg);
}
mouse_x = min(mouse_x, 620);
mouse_y = min(mouse_y, 460);
+
if (SafetySwitch == FALSE && SafetySwitch2 == FALSE)
{
SurfGDI->MovePointer(SurfObj, mouse_x, mouse_y, &MouseRect);
}
}
-VOID
+VOID FASTCALL
EnableMouse(HDC hDisplayDC)
{
PDC dc;
SIZEL MouseSize;
RECTL MouseRect;
- dc = DC_HandleToPtr(hDisplayDC);
- if( dc ){
- SurfObj = (PSURFOBJ)AccessUserObject((ULONG) dc->Surface);
- SurfGDI = (PSURFGDI)AccessInternalObject((ULONG) dc->Surface);
- DC_ReleasePtr( hDisplayDC );
-
- /* Create the default mouse cursor. */
- mouse_width = 32;
- mouse_height = 32;
- MouseSize.cx = 32;
- MouseSize.cy = 64;
- hMouseSurf = EngCreateBitmap(MouseSize, 4, BMF_1BPP, BMF_TOPDOWN, DefaultCursor);
- MouseSurf = (PSURFOBJ)AccessUserObject((ULONG) hMouseSurf);
-
- /* Tell the display driver to set the pointer shape. */
+ if( hDisplayDC )
+ {
+ dc = DC_HandleToPtr(hDisplayDC);
+ SurfObj = (PSURFOBJ)AccessUserObject((ULONG) dc->Surface);
+ SurfGDI = (PSURFGDI)AccessInternalObject((ULONG) dc->Surface);
+ DC_ReleasePtr( hDisplayDC );
+
+ /* Create the default mouse cursor. */
+ mouse_width = 32;
+ mouse_height = 32;
+ MouseSize.cx = 32;
+ MouseSize.cy = 64;
+ hMouseSurf = EngCreateBitmap(MouseSize, 4, BMF_1BPP, BMF_TOPDOWN, DefaultCursor);
+ MouseSurf = (PSURFOBJ)AccessUserObject((ULONG) hMouseSurf);
+
+ /* Tell the display driver to set the pointer shape. */
#if 0
- mouse_x = SurfObj->sizlBitmap.cx / 2;
- mouse_y = SurfObj->sizlBitmap.cy / 2;
+ mouse_x = SurfObj->sizlBitmap.cx / 2;
+ mouse_y = SurfObj->sizlBitmap.cy / 2;
#else
- mouse_x = 320;
- mouse_y = 240;
+ mouse_x = 320;
+ mouse_y = 240;
#endif
- PointerStatus = SurfGDI->SetPointerShape(SurfObj, MouseSurf, NULL, NULL,
- 0, 0, mouse_x, mouse_y, &MouseRect,
- SPS_CHANGE);
+ PointerStatus = SurfGDI->SetPointerShape(SurfObj, MouseSurf, NULL, NULL,
+ 0, 0, mouse_x, mouse_y, &MouseRect,
+ SPS_CHANGE);
+
+ MouseEnabled = (SPS_ACCEPT_EXCLUDE == PointerStatus ||
+ SPS_ACCEPT_NOEXCLUDE == PointerStatus);
- MouseEnabled = (SPS_ACCEPT_EXCLUDE == PointerStatus ||
- SPS_ACCEPT_NOEXCLUDE == PointerStatus);
+ EngDeleteSurface(hMouseSurf);
}
- else{
- MouseEnabled = FALSE;
+ else
+ {
+ MouseEnabled = FALSE;
}
}
-
+/* EOF */