Eriks Dobelis : wintab: Fix incorrectly classifying cursor as stylus instead of eraser.
Alexandre Julliard
julliard at winehq.org
Tue Apr 1 14:32:01 CDT 2014
Module: wine
Branch: master
Commit: 2de64560fe3e36e56eccafa220836f73d1188687
URL: http://source.winehq.org/git/wine.git/?a=commit;h=2de64560fe3e36e56eccafa220836f73d1188687
Author: Eriks Dobelis <eriks.dobelis at biti.lv>
Date: Mon Mar 31 16:54:10 2014 +0300
wintab: Fix incorrectly classifying cursor as stylus instead of eraser.
---
dlls/winex11.drv/wintab.c | 34 +++++++++++++---------------------
1 file changed, 13 insertions(+), 21 deletions(-)
diff --git a/dlls/winex11.drv/wintab.c b/dlls/winex11.drv/wintab.c
index 23a5423..ca0f35e 100644
--- a/dlls/winex11.drv/wintab.c
+++ b/dlls/winex11.drv/wintab.c
@@ -415,7 +415,7 @@ static BOOL is_tablet_cursor(const char *name, const char *type)
return FALSE;
}
-static BOOL is_stylus(const char *name, const char *type)
+static UINT get_cursor_type(const char *name, const char *type)
{
int i;
static const char* tablet_stylus_whitelist[] = {
@@ -426,23 +426,21 @@ static BOOL is_stylus(const char *name, const char *type)
NULL
};
+ /* First check device type to avoid cases where name is "Pen and Eraser" and type is "ERASER" */
for (i=0; tablet_stylus_whitelist[i] != NULL; i++) {
- if (name && match_token(name, tablet_stylus_whitelist[i]))
- return TRUE;
if (type && match_token(type, tablet_stylus_whitelist[i]))
- return TRUE;
+ return CSR_TYPE_PEN;
}
-
- return FALSE;
-}
-
-static BOOL is_eraser(const char *name, const char *type)
-{
- if (name && match_token(name, "eraser"))
- return TRUE;
if (type && match_token(type, "eraser"))
- return TRUE;
- return FALSE;
+ return CSR_TYPE_ERASER;
+ for (i=0; tablet_stylus_whitelist[i] != NULL; i++) {
+ if (name && match_token(name, tablet_stylus_whitelist[i]))
+ return CSR_TYPE_PEN;
+ }
+ if (name && match_token(name, "eraser"))
+ return CSR_TYPE_ERASER;
+
+ return CSR_TYPE_OTHER;
}
/* cursors are placed in gSysCursor rows depending on their type
@@ -635,13 +633,7 @@ BOOL CDECL X11DRV_LoadTabletInfo(HWND hwnddefault)
cursor.NPBTNMARKS[1] = 1 ;
cursor.CAPABILITIES = CRC_MULTIMODE;
- /* prefer finding TYPE_PEN(most capable) */
- if (is_stylus(target->name, device_type))
- cursor.TYPE = CSR_TYPE_PEN;
- else if (is_eraser(target->name, device_type))
- cursor.TYPE = CSR_TYPE_ERASER;
- else
- cursor.TYPE = CSR_TYPE_OTHER;
+ cursor.TYPE = get_cursor_type(target->name, device_type);
any = target->inputclassinfo;
More information about the wine-cvs
mailing list