John Klehm : winex11.drv: Move hardware tablet proximity into x11 layer.
Alexandre Julliard
julliard at winehq.org
Thu May 8 04:50:55 CDT 2008
Module: wine
Branch: master
Commit: cd550bf6b4f52b6d5bcc4b62ca7f21a7831eb500
URL: http://source.winehq.org/git/wine.git/?a=commit;h=cd550bf6b4f52b6d5bcc4b62ca7f21a7831eb500
Author: John Klehm <xixsimplicityxix at gmail.com>
Date: Wed May 7 15:58:49 2008 -0500
winex11.drv: Move hardware tablet proximity into x11 layer.
---
dlls/winex11.drv/wintab.c | 16 ++++++++++++++--
dlls/wintab32/wintab32.c | 8 ++------
2 files changed, 16 insertions(+), 8 deletions(-)
diff --git a/dlls/winex11.drv/wintab.c b/dlls/winex11.drv/wintab.c
index d4d7109..333e0b8 100644
--- a/dlls/winex11.drv/wintab.c
+++ b/dlls/winex11.drv/wintab.c
@@ -879,12 +879,15 @@ static void proximity_event( HWND hwnd, XEvent *event )
XProximityNotifyEvent *proximity = (XProximityNotifyEvent *) event;
LPWTI_CURSORS_INFO cursor;
int curnum = cursor_from_device(proximity->deviceid, &cursor);
+ LPARAM proximity_info;
+
+ TRACE("hwnd=%p\n", hwnd);
+
if (curnum < 0)
return;
memset(&gMsgPacket,0,sizeof(WTPACKET));
- TRACE("Received tablet proximity event\n");
/* Set cursor to inverted if cursor is the eraser */
gMsgPacket.pkStatus = (cursor->TYPE == CSR_TYPE_ERASER ? TPS_INVERT:0);
gMsgPacket.pkStatus |= (event->type==proximity_out_type)?TPS_PROXIMITY:0;
@@ -900,7 +903,16 @@ static void proximity_event( HWND hwnd, XEvent *event )
gMsgPacket.pkNormalPressure = proximity->axis_data[2];
gMsgPacket.pkButtons = get_button_state(curnum);
- SendMessageW(hwndTabletDefault, WT_PROXIMITY, (event->type == proximity_in_type), (LPARAM)hwnd);
+ /* FIXME: LPARAM loword is true when cursor entering context, false when leaving context
+ * This needs to be handled here or in wintab32. Using the proximity_in_type is not correct
+ * but kept for now.
+ * LPARAM hiword is "non-zero when the cursor is leaving or entering hardware proximity"
+ * WPARAM contains context handle.
+ * HWND to HCTX is handled by wintab32.
+ */
+ proximity_info = MAKELPARAM((event->type == proximity_in_type),
+ (event->type == proximity_in_type) || (event->type == proximity_out_type));
+ SendMessageW(hwndTabletDefault, WT_PROXIMITY, (WPARAM)hwnd, proximity_info);
}
/***********************************************************************
diff --git a/dlls/wintab32/wintab32.c b/dlls/wintab32/wintab32.c
index 1ef19d9..5f2afb1 100644
--- a/dlls/wintab32/wintab32.c
+++ b/dlls/wintab32/wintab32.c
@@ -136,15 +136,11 @@ static LRESULT WINAPI TABLET_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam,
{
WTPACKET packet;
LPOPENCONTEXT handler;
- LPARAM prox;
pGetCurrentPacket(&packet);
- handler = AddPacketToContextQueue(&packet,(HWND)lParam);
+ handler = AddPacketToContextQueue(&packet,(HWND)wParam);
if (handler)
- {
- prox = MAKELPARAM( wParam, 1 );
TABLET_PostTabletMessage(handler, WT_PROXIMITY,
- (WPARAM)handler->handle, prox, TRUE);
- }
+ (WPARAM)handler->handle, lParam, TRUE);
break;
}
}
More information about the wine-cvs
mailing list