Wintab32 (Patch 6 of 8) -- Expose more XInput events through the wintab api.

Robert North 7ownq0k402 at sneakemail.com
Fri Jan 21 12:52:11 CST 2005


This set of patches works towards better quality painting in Painter5.
Tested on Painter5 & Photoshop 6.

Changelog:

*Packets from eraser cursors are marked as inverted, matching behavior 
on Windows Wacom tablets.

-------------- next part --------------
Index: dlls/x11drv/wintab.c
===================================================================
--- dlls/x11drv/wintab.c	(revision 158)
+++ dlls/x11drv/wintab.c	(revision 159)
@@ -595,9 +595,12 @@
     if(event->type ==  motion_type)
     {
         XDeviceMotionEvent *motion = (XDeviceMotionEvent *)event;
+        LPWTI_CURSORS_INFO cursor = &gSysCursor[motion->deviceid];
 
         TRACE_(event)("Received tablet motion event (%p)\n",hwnd);
         TRACE("Received tablet motion event (%p)\n",hwnd);
+        /* Set cursor to inverted if cursor is the eraser */
+        gMsgPacket.pkStatus = (cursor->TYPE == 0xc85a ?TPS_INVERT:0);
         gMsgPacket.pkTime = EVENT_x11_time_to_win32_time(motion->time);
         gMsgPacket.pkSerialNumber = gSerial++;
         gMsgPacket.pkCursor = motion->deviceid;
@@ -615,11 +618,14 @@
               button_release_type))
     {
         XDeviceButtonEvent *button = (XDeviceButtonEvent *) event;
+        LPWTI_CURSORS_INFO cursor = &gSysCursor[button->deviceid];
 
         TRACE_(event)("Received tablet button event\n");
         TRACE("Received tablet button %s event\n", (event->type ==
                                 button_press_type)?"press":"release");
 
+        /* Set cursor to inverted if cursor is the eraser */
+        gMsgPacket.pkStatus = (cursor->TYPE == 0xc85a ?TPS_INVERT:0);
         set_button_state(button->deviceid);
         gMsgPacket.pkTime = button->time;
         gMsgPacket.pkSerialNumber = gSerial++;
@@ -648,10 +654,13 @@
              (event->type == proximity_out_type))
     {
         XProximityNotifyEvent *proximity = (XProximityNotifyEvent *) event;
+        LPWTI_CURSORS_INFO cursor = &gSysCursor[proximity->deviceid];
 
         TRACE_(event)("Received tablet proximity event\n");
         TRACE("Received tablet proximity event\n");
-        gMsgPacket.pkStatus = (event->type==proximity_out_type)?TPS_PROXIMITY:0;
+        /* Set cursor to inverted if cursor is the eraser */
+        gMsgPacket.pkStatus = (cursor->TYPE == 0xc85a ?TPS_INVERT:0);
+        gMsgPacket.pkStatus |= (event->type==proximity_out_type)?TPS_PROXIMITY:0;
         gMsgPacket.pkTime = proximity->time;
         gMsgPacket.pkSerialNumber = gSerial++;
         gMsgPacket.pkCursor = proximity->deviceid;


More information about the wine-patches mailing list