Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 185582 Details for
Bug 279884
[Widgets] Add API for multi-touch events and gestures
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
Gestures only for Win32
Gestures-win32-complete-12202010.txt (text/plain), 107.70 KB, created by
Scott Kovatch
on 2010-12-20 13:47:42 EST
(
hide
)
Description:
Gestures only for Win32
Filename:
MIME Type:
Creator:
Scott Kovatch
Created:
2010-12-20 13:47:42 EST
Size:
107.70 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.swt >Index: Eclipse SWT PI/win32/library/os.c >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.swt/Eclipse SWT PI/win32/library/os.c,v >retrieving revision 1.183 >diff -u -r1.183 os.c >--- Eclipse SWT PI/win32/library/os.c 15 Dec 2010 11:42:13 -0000 1.183 >+++ Eclipse SWT PI/win32/library/os.c 20 Dec 2010 18:46:30 -0000 >@@ -857,6 +857,26 @@ > } > #endif > >+#ifndef NO_CloseGestureInfoHandle >+JNIEXPORT jintLong JNICALL OS_NATIVE(CloseGestureInfoHandle) >+ (JNIEnv *env, jclass that, jintLong arg0) >+{ >+ jintLong rc = 0; >+ OS_NATIVE_ENTER(env, that, CloseGestureInfoHandle_FUNC); >+/* >+ rc = (jintLong)CloseGestureInfoHandle((HGESTUREINFO)arg0); >+*/ >+ { >+ LOAD_FUNCTION(fp, CloseGestureInfoHandle) >+ if (fp) { >+ rc = (jintLong)((jintLong (CALLING_CONVENTION*)(HGESTUREINFO))fp)((HGESTUREINFO)arg0); >+ } >+ } >+ OS_NATIVE_EXIT(env, that, CloseGestureInfoHandle_FUNC); >+ return rc; >+} >+#endif >+ > #ifndef NO_CloseHandle > JNIEXPORT jboolean JNICALL OS_NATIVE(CloseHandle) > (JNIEnv *env, jclass that, jintLong arg0) >@@ -889,6 +909,26 @@ > } > #endif > >+#ifndef NO_CloseTouchInputHandle >+JNIEXPORT jboolean JNICALL OS_NATIVE(CloseTouchInputHandle) >+ (JNIEnv *env, jclass that, jintLong arg0) >+{ >+ jboolean rc = 0; >+ OS_NATIVE_ENTER(env, that, CloseTouchInputHandle_FUNC); >+/* >+ rc = (jboolean)CloseTouchInputHandle((HTOUCHINPUT)arg0); >+*/ >+ { >+ LOAD_FUNCTION(fp, CloseTouchInputHandle) >+ if (fp) { >+ rc = (jboolean)((jboolean (CALLING_CONVENTION*)(HTOUCHINPUT))fp)((HTOUCHINPUT)arg0); >+ } >+ } >+ OS_NATIVE_EXIT(env, that, CloseTouchInputHandle_FUNC); >+ return rc; >+} >+#endif >+ > #ifndef NO_CoCreateInstance > JNIEXPORT jint JNICALL OS_NATIVE(CoCreateInstance) > (JNIEnv *env, jclass that, jbyteArray arg0, jintLong arg1, jint arg2, jbyteArray arg3, jintLongArray arg4) >@@ -3133,6 +3173,30 @@ > } > #endif > >+#ifndef NO_FLICK_1DATA_1sizeof >+JNIEXPORT jint JNICALL OS_NATIVE(FLICK_1DATA_1sizeof) >+ (JNIEnv *env, jclass that) >+{ >+ jint rc = 0; >+ OS_NATIVE_ENTER(env, that, FLICK_1DATA_1sizeof_FUNC); >+ rc = (jint)FLICK_DATA_sizeof(); >+ OS_NATIVE_EXIT(env, that, FLICK_1DATA_1sizeof_FUNC); >+ return rc; >+} >+#endif >+ >+#ifndef NO_FLICK_1POINT_1sizeof >+JNIEXPORT jint JNICALL OS_NATIVE(FLICK_1POINT_1sizeof) >+ (JNIEnv *env, jclass that) >+{ >+ jint rc = 0; >+ OS_NATIVE_ENTER(env, that, FLICK_1POINT_1sizeof_FUNC); >+ rc = (jint)FLICK_POINT_sizeof(); >+ OS_NATIVE_EXIT(env, that, FLICK_1POINT_1sizeof_FUNC); >+ return rc; >+} >+#endif >+ > #ifndef NO_FillPath > JNIEXPORT jboolean JNICALL OS_NATIVE(FillPath) > (JNIEnv *env, jclass that, jintLong arg0) >@@ -3254,6 +3318,30 @@ > } > #endif > >+#ifndef NO_GESTURECONFIG_1sizeof >+JNIEXPORT jint JNICALL OS_NATIVE(GESTURECONFIG_1sizeof) >+ (JNIEnv *env, jclass that) >+{ >+ jint rc = 0; >+ OS_NATIVE_ENTER(env, that, GESTURECONFIG_1sizeof_FUNC); >+ rc = (jint)GESTURECONFIG_sizeof(); >+ OS_NATIVE_EXIT(env, that, GESTURECONFIG_1sizeof_FUNC); >+ return rc; >+} >+#endif >+ >+#ifndef NO_GESTUREINFO_1sizeof >+JNIEXPORT jint JNICALL OS_NATIVE(GESTUREINFO_1sizeof) >+ (JNIEnv *env, jclass that) >+{ >+ jint rc = 0; >+ OS_NATIVE_ENTER(env, that, GESTUREINFO_1sizeof_FUNC); >+ rc = (jint)GESTUREINFO_sizeof(); >+ OS_NATIVE_EXIT(env, that, GESTUREINFO_1sizeof_FUNC); >+ return rc; >+} >+#endif >+ > #ifndef NO_GET_1WHEEL_1DELTA_1WPARAM > JNIEXPORT jint JNICALL OS_NATIVE(GET_1WHEEL_1DELTA_1WPARAM) > (JNIEnv *env, jclass that, jintLong arg0) >@@ -3290,6 +3378,18 @@ > } > #endif > >+#ifndef NO_GID_1ROTATE_1ANGLE_1FROM_1ARGUMENT >+JNIEXPORT jdouble JNICALL OS_NATIVE(GID_1ROTATE_1ANGLE_1FROM_1ARGUMENT) >+ (JNIEnv *env, jclass that, jlong arg0) >+{ >+ jdouble rc = 0; >+ OS_NATIVE_ENTER(env, that, GID_1ROTATE_1ANGLE_1FROM_1ARGUMENT_FUNC); >+ rc = (jdouble)GID_ROTATE_ANGLE_FROM_ARGUMENT(arg0); >+ OS_NATIVE_EXIT(env, that, GID_1ROTATE_1ANGLE_1FROM_1ARGUMENT_FUNC); >+ return rc; >+} >+#endif >+ > #ifndef NO_GRADIENT_1RECT_1sizeof > JNIEXPORT jint JNICALL OS_NATIVE(GRADIENT_1RECT_1sizeof) > (JNIEnv *env, jclass that) >@@ -4086,6 +4186,30 @@ > } > #endif > >+#ifndef NO_GetGestureInfo >+JNIEXPORT jboolean JNICALL OS_NATIVE(GetGestureInfo) >+ (JNIEnv *env, jclass that, jintLong arg0, jobject arg1) >+{ >+ GESTUREINFO _arg1, *lparg1=NULL; >+ jboolean rc = 0; >+ OS_NATIVE_ENTER(env, that, GetGestureInfo_FUNC); >+ if (arg1) if ((lparg1 = getGESTUREINFOFields(env, arg1, &_arg1)) == NULL) goto fail; >+/* >+ rc = (jboolean)GetGestureInfo((HGESTUREINFO)arg0, (PGESTUREINFO)lparg1); >+*/ >+ { >+ LOAD_FUNCTION(fp, GetGestureInfo) >+ if (fp) { >+ rc = (jboolean)((jboolean (CALLING_CONVENTION*)(HGESTUREINFO, PGESTUREINFO))fp)((HGESTUREINFO)arg0, (PGESTUREINFO)lparg1); >+ } >+ } >+fail: >+ if (arg1 && lparg1) setGESTUREINFOFields(env, arg1, lparg1); >+ OS_NATIVE_EXIT(env, that, GetGestureInfo_FUNC); >+ return rc; >+} >+#endif >+ > #ifndef NO_GetGlyphIndicesW > JNIEXPORT jint JNICALL OS_NATIVE(GetGlyphIndicesW) > (JNIEnv *env, jclass that, jintLong arg0, jcharArray arg1, jint arg2, jshortArray arg3, jint arg4) >@@ -6003,6 +6127,26 @@ > } > #endif > >+#ifndef NO_GetTouchInputInfo >+JNIEXPORT jboolean JNICALL OS_NATIVE(GetTouchInputInfo) >+ (JNIEnv *env, jclass that, jintLong arg0, jint arg1, jintLong arg2, jint arg3) >+{ >+ jboolean rc = 0; >+ OS_NATIVE_ENTER(env, that, GetTouchInputInfo_FUNC); >+/* >+ rc = (jboolean)GetTouchInputInfo((HTOUCHINPUT)arg0, (UINT)arg1, (PTOUCHINPUT)arg2, arg3); >+*/ >+ { >+ LOAD_FUNCTION(fp, GetTouchInputInfo) >+ if (fp) { >+ rc = (jboolean)((jboolean (CALLING_CONVENTION*)(HTOUCHINPUT, UINT, PTOUCHINPUT, jint))fp)((HTOUCHINPUT)arg0, (UINT)arg1, (PTOUCHINPUT)arg2, arg3); >+ } >+ } >+ OS_NATIVE_EXIT(env, that, GetTouchInputInfo_FUNC); >+ return rc; >+} >+#endif >+ > #ifndef NO_GetUpdateRect > JNIEXPORT jboolean JNICALL OS_NATIVE(GetUpdateRect) > (JNIEnv *env, jclass that, jintLong arg0, jobject arg1, jboolean arg2) >@@ -7710,6 +7854,18 @@ > } > #endif > >+#ifndef NO_LODWORD >+JNIEXPORT jint JNICALL OS_NATIVE(LODWORD) >+ (JNIEnv *env, jclass that, jlong arg0) >+{ >+ jint rc = 0; >+ OS_NATIVE_ENTER(env, that, LODWORD_FUNC); >+ rc = (jint)LODWORD(arg0); >+ OS_NATIVE_EXIT(env, that, LODWORD_FUNC); >+ return rc; >+} >+#endif >+ > #ifndef NO_LOGBRUSH_1sizeof > JNIEXPORT jint JNICALL OS_NATIVE(LOGBRUSH_1sizeof) > (JNIEnv *env, jclass that) >@@ -8587,6 +8743,30 @@ > } > #endif > >+#if (!defined(NO_MoveMemory__ILorg_eclipse_swt_internal_win32_GESTURECONFIG_2I) && !defined(JNI64)) || (!defined(NO_MoveMemory__JLorg_eclipse_swt_internal_win32_GESTURECONFIG_2I) && defined(JNI64)) >+#ifndef JNI64 >+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__ILorg_eclipse_swt_internal_win32_GESTURECONFIG_2I)(JNIEnv *env, jclass that, jintLong arg0, jobject arg1, jint arg2) >+#else >+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__JLorg_eclipse_swt_internal_win32_GESTURECONFIG_2I)(JNIEnv *env, jclass that, jintLong arg0, jobject arg1, jint arg2) >+#endif >+{ >+ GESTURECONFIG _arg1, *lparg1=NULL; >+#ifndef JNI64 >+ OS_NATIVE_ENTER(env, that, MoveMemory__ILorg_eclipse_swt_internal_win32_GESTURECONFIG_2I_FUNC); >+#else >+ OS_NATIVE_ENTER(env, that, MoveMemory__JLorg_eclipse_swt_internal_win32_GESTURECONFIG_2I_FUNC); >+#endif >+ if (arg1) if ((lparg1 = getGESTURECONFIGFields(env, arg1, &_arg1)) == NULL) goto fail; >+ MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2); >+fail: >+#ifndef JNI64 >+ OS_NATIVE_EXIT(env, that, MoveMemory__ILorg_eclipse_swt_internal_win32_GESTURECONFIG_2I_FUNC); >+#else >+ OS_NATIVE_EXIT(env, that, MoveMemory__JLorg_eclipse_swt_internal_win32_GESTURECONFIG_2I_FUNC); >+#endif >+} >+#endif >+ > #if (!defined(NO_MoveMemory__ILorg_eclipse_swt_internal_win32_GRADIENT_1RECT_2I) && !defined(JNI64)) || (!defined(NO_MoveMemory__JLorg_eclipse_swt_internal_win32_GRADIENT_1RECT_2I) && defined(JNI64)) > #ifndef JNI64 > JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__ILorg_eclipse_swt_internal_win32_GRADIENT_1RECT_2I)(JNIEnv *env, jclass that, jintLong arg0, jobject arg1, jint arg2) >@@ -9620,6 +9800,62 @@ > } > #endif > >+#if (!defined(NO_MoveMemory__Lorg_eclipse_swt_internal_win32_FLICK_1DATA_2_3II) && !defined(JNI64)) || (!defined(NO_MoveMemory__Lorg_eclipse_swt_internal_win32_FLICK_1DATA_2_3JI) && defined(JNI64)) >+#ifndef JNI64 >+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_FLICK_1DATA_2_3II)(JNIEnv *env, jclass that, jobject arg0, jintLongArray arg1, jint arg2) >+#else >+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_FLICK_1DATA_2_3JI)(JNIEnv *env, jclass that, jobject arg0, jintLongArray arg1, jint arg2) >+#endif >+{ >+ FLICK_DATA _arg0, *lparg0=NULL; >+ jintLong *lparg1=NULL; >+#ifndef JNI64 >+ OS_NATIVE_ENTER(env, that, MoveMemory__Lorg_eclipse_swt_internal_win32_FLICK_1DATA_2_3II_FUNC); >+#else >+ OS_NATIVE_ENTER(env, that, MoveMemory__Lorg_eclipse_swt_internal_win32_FLICK_1DATA_2_3JI_FUNC); >+#endif >+ if (arg0) if ((lparg0 = &_arg0) == NULL) goto fail; >+ if (arg1) if ((lparg1 = (*env)->GetIntLongArrayElements(env, arg1, NULL)) == NULL) goto fail; >+ MoveMemory((PVOID)lparg0, (CONST VOID *)lparg1, arg2); >+fail: >+ if (arg1 && lparg1) (*env)->ReleaseIntLongArrayElements(env, arg1, lparg1, JNI_ABORT); >+ if (arg0 && lparg0) setFLICK_DATAFields(env, arg0, lparg0); >+#ifndef JNI64 >+ OS_NATIVE_EXIT(env, that, MoveMemory__Lorg_eclipse_swt_internal_win32_FLICK_1DATA_2_3II_FUNC); >+#else >+ OS_NATIVE_EXIT(env, that, MoveMemory__Lorg_eclipse_swt_internal_win32_FLICK_1DATA_2_3JI_FUNC); >+#endif >+} >+#endif >+ >+#if (!defined(NO_MoveMemory__Lorg_eclipse_swt_internal_win32_FLICK_1POINT_2_3II) && !defined(JNI64)) || (!defined(NO_MoveMemory__Lorg_eclipse_swt_internal_win32_FLICK_1POINT_2_3JI) && defined(JNI64)) >+#ifndef JNI64 >+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_FLICK_1POINT_2_3II)(JNIEnv *env, jclass that, jobject arg0, jintLongArray arg1, jint arg2) >+#else >+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_FLICK_1POINT_2_3JI)(JNIEnv *env, jclass that, jobject arg0, jintLongArray arg1, jint arg2) >+#endif >+{ >+ FLICK_POINT _arg0, *lparg0=NULL; >+ jintLong *lparg1=NULL; >+#ifndef JNI64 >+ OS_NATIVE_ENTER(env, that, MoveMemory__Lorg_eclipse_swt_internal_win32_FLICK_1POINT_2_3II_FUNC); >+#else >+ OS_NATIVE_ENTER(env, that, MoveMemory__Lorg_eclipse_swt_internal_win32_FLICK_1POINT_2_3JI_FUNC); >+#endif >+ if (arg0) if ((lparg0 = &_arg0) == NULL) goto fail; >+ if (arg1) if ((lparg1 = (*env)->GetIntLongArrayElements(env, arg1, NULL)) == NULL) goto fail; >+ MoveMemory((PVOID)lparg0, (CONST VOID *)lparg1, arg2); >+fail: >+ if (arg1 && lparg1) (*env)->ReleaseIntLongArrayElements(env, arg1, lparg1, JNI_ABORT); >+ if (arg0 && lparg0) setFLICK_POINTFields(env, arg0, lparg0); >+#ifndef JNI64 >+ OS_NATIVE_EXIT(env, that, MoveMemory__Lorg_eclipse_swt_internal_win32_FLICK_1POINT_2_3II_FUNC); >+#else >+ OS_NATIVE_EXIT(env, that, MoveMemory__Lorg_eclipse_swt_internal_win32_FLICK_1POINT_2_3JI_FUNC); >+#endif >+} >+#endif >+ > #if (!defined(NO_MoveMemory__Lorg_eclipse_swt_internal_win32_HDITEM_2II) && !defined(JNI64)) || (!defined(NO_MoveMemory__Lorg_eclipse_swt_internal_win32_HDITEM_2JI) && defined(JNI64)) > #ifndef JNI64 > JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_HDITEM_2II)(JNIEnv *env, jclass that, jobject arg0, jintLong arg1, jint arg2) >@@ -10629,6 +10865,31 @@ > } > #endif > >+#if (!defined(NO_MoveMemory__Lorg_eclipse_swt_internal_win32_TOUCHINPUT_2II) && !defined(JNI64)) || (!defined(NO_MoveMemory__Lorg_eclipse_swt_internal_win32_TOUCHINPUT_2JI) && defined(JNI64)) >+#ifndef JNI64 >+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_TOUCHINPUT_2II)(JNIEnv *env, jclass that, jobject arg0, jintLong arg1, jint arg2) >+#else >+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_TOUCHINPUT_2JI)(JNIEnv *env, jclass that, jobject arg0, jintLong arg1, jint arg2) >+#endif >+{ >+ TOUCHINPUT _arg0, *lparg0=NULL; >+#ifndef JNI64 >+ OS_NATIVE_ENTER(env, that, MoveMemory__Lorg_eclipse_swt_internal_win32_TOUCHINPUT_2II_FUNC); >+#else >+ OS_NATIVE_ENTER(env, that, MoveMemory__Lorg_eclipse_swt_internal_win32_TOUCHINPUT_2JI_FUNC); >+#endif >+ if (arg0) if ((lparg0 = &_arg0) == NULL) goto fail; >+ MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2); >+fail: >+ if (arg0 && lparg0) setTOUCHINPUTFields(env, arg0, lparg0); >+#ifndef JNI64 >+ OS_NATIVE_EXIT(env, that, MoveMemory__Lorg_eclipse_swt_internal_win32_TOUCHINPUT_2II_FUNC); >+#else >+ OS_NATIVE_EXIT(env, that, MoveMemory__Lorg_eclipse_swt_internal_win32_TOUCHINPUT_2JI_FUNC); >+#endif >+} >+#endif >+ > #if (!defined(NO_MoveMemory__Lorg_eclipse_swt_internal_win32_TVITEM_2II) && !defined(JNI64)) || (!defined(NO_MoveMemory__Lorg_eclipse_swt_internal_win32_TVITEM_2JI) && defined(JNI64)) > #ifndef JNI64 > JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_TVITEM_2II)(JNIEnv *env, jclass that, jobject arg0, jintLong arg1, jint arg2) >@@ -12570,6 +12831,26 @@ > } > #endif > >+#ifndef NO_RegisterTouchWindow >+JNIEXPORT jboolean JNICALL OS_NATIVE(RegisterTouchWindow) >+ (JNIEnv *env, jclass that, jintLong arg0, jint arg1) >+{ >+ jboolean rc = 0; >+ OS_NATIVE_ENTER(env, that, RegisterTouchWindow_FUNC); >+/* >+ rc = (jboolean)RegisterTouchWindow((HWND)arg0, (ULONG)arg1); >+*/ >+ { >+ LOAD_FUNCTION(fp, RegisterTouchWindow) >+ if (fp) { >+ rc = (jboolean)((jboolean (CALLING_CONVENTION*)(HWND, ULONG))fp)((HWND)arg0, (ULONG)arg1); >+ } >+ } >+ OS_NATIVE_EXIT(env, that, RegisterTouchWindow_FUNC); >+ return rc; >+} >+#endif >+ > #ifndef NO_RegisterWindowMessageA > JNIEXPORT jint JNICALL OS_NATIVE(RegisterWindowMessageA) > (JNIEnv *env, jclass that, jbyteArray arg0) >@@ -15726,6 +16007,26 @@ > } > #endif > >+#ifndef NO_SetGestureConfig >+JNIEXPORT jboolean JNICALL OS_NATIVE(SetGestureConfig) >+ (JNIEnv *env, jclass that, jintLong arg0, jint arg1, jint arg2, jintLong arg3, jint arg4) >+{ >+ jboolean rc = 0; >+ OS_NATIVE_ENTER(env, that, SetGestureConfig_FUNC); >+/* >+ rc = (jboolean)SetGestureConfig((HWND)arg0, arg1, arg2, (PGESTURECONFIG)arg3, arg4); >+*/ >+ { >+ LOAD_FUNCTION(fp, SetGestureConfig) >+ if (fp) { >+ rc = (jboolean)((jboolean (CALLING_CONVENTION*)(HWND, jint, jint, PGESTURECONFIG, jint))fp)((HWND)arg0, arg1, arg2, (PGESTURECONFIG)arg3, arg4); >+ } >+ } >+ OS_NATIVE_EXIT(env, that, SetGestureConfig_FUNC); >+ return rc; >+} >+#endif >+ > #ifndef NO_SetGraphicsMode > JNIEXPORT jint JNICALL OS_NATIVE(SetGraphicsMode) > (JNIEnv *env, jclass that, jintLong arg0, jint arg1) >@@ -16803,6 +17104,30 @@ > } > #endif > >+#ifndef NO_TOUCHINPUT_1sizeof >+JNIEXPORT jint JNICALL OS_NATIVE(TOUCHINPUT_1sizeof) >+ (JNIEnv *env, jclass that) >+{ >+ jint rc = 0; >+ OS_NATIVE_ENTER(env, that, TOUCHINPUT_1sizeof_FUNC); >+ rc = (jint)TOUCHINPUT_sizeof(); >+ OS_NATIVE_EXIT(env, that, TOUCHINPUT_1sizeof_FUNC); >+ return rc; >+} >+#endif >+ >+#ifndef NO_TOUCH_1COORD_1TO_1PIXEL >+JNIEXPORT jlong JNICALL OS_NATIVE(TOUCH_1COORD_1TO_1PIXEL) >+ (JNIEnv *env, jclass that, jlong arg0) >+{ >+ jlong rc = 0; >+ OS_NATIVE_ENTER(env, that, TOUCH_1COORD_1TO_1PIXEL_FUNC); >+ rc = (jlong)TOUCH_COORD_TO_PIXEL(arg0); >+ OS_NATIVE_EXIT(env, that, TOUCH_1COORD_1TO_1PIXEL_FUNC); >+ return rc; >+} >+#endif >+ > #ifndef NO_TRACKMOUSEEVENT_1sizeof > JNIEXPORT jint JNICALL OS_NATIVE(TRACKMOUSEEVENT_1sizeof) > (JNIEnv *env, jclass that) >@@ -17153,6 +17478,26 @@ > } > #endif > >+#ifndef NO_UnregisterTouchWindow >+JNIEXPORT jboolean JNICALL OS_NATIVE(UnregisterTouchWindow) >+ (JNIEnv *env, jclass that, jintLong arg0) >+{ >+ jboolean rc = 0; >+ OS_NATIVE_ENTER(env, that, UnregisterTouchWindow_FUNC); >+/* >+ rc = (jboolean)UnregisterTouchWindow(arg0); >+*/ >+ { >+ LOAD_FUNCTION(fp, UnregisterTouchWindow) >+ if (fp) { >+ rc = (jboolean)((jboolean (CALLING_CONVENTION*)(jintLong))fp)(arg0); >+ } >+ } >+ OS_NATIVE_EXIT(env, that, UnregisterTouchWindow_FUNC); >+ return rc; >+} >+#endif >+ > #ifndef NO_UpdateLayeredWindow > JNIEXPORT jboolean JNICALL OS_NATIVE(UpdateLayeredWindow) > (JNIEnv *env, jclass that, jintLong arg0, jintLong arg1, jobject arg2, jobject arg3, jintLong arg4, jobject arg5, jint arg6, jobject arg7, jint arg8) >Index: Eclipse SWT PI/win32/library/os.h >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.swt/Eclipse SWT PI/win32/library/os.h,v >retrieving revision 1.133 >diff -u -r1.133 os.h >--- Eclipse SWT PI/win32/library/os.h 31 May 2010 16:44:05 -0000 1.133 >+++ Eclipse SWT PI/win32/library/os.h 20 Dec 2010 18:46:30 -0000 >@@ -68,6 +68,11 @@ > #define NO_EMREXTCREATEFONTINDIRECTW > #define NO_EXTLOGFONTW > #define NO_EXTLOGPEN >+#define NO_FLICK_DATA >+#define NO_FLICK_POINT >+#define NO_GESTURECONFIG >+#define NO_GESTUREINFO >+#define NO_GESTURENOTIFYSTRUCT > #define NO_GCP_RESULTS > #define NO_GRADIENT_RECT > #define NO_GUITHREADINFO >@@ -113,6 +118,7 @@ > #define NO_TF_DA_COLOR > #define NO_TF_DISPLAYATTRIBUTE > #define NO_TOOLINFO >+#define NO_TOUCHINPUT > #define NO_TRACKMOUSEEVENT > #define NO_TRIVERTEX > #define NO_TVITEMEX >@@ -179,7 +185,9 @@ > #define NO_ChooseFontA > #define NO_ChooseFontW > #define NO_CloseEnhMetaFile >+#define NO_CloseGestureInfoHandle > #define NO_CloseThemeData >+#define NO_CloseTouchInputHandle > #define NO_CoCreateInstance > #define NO_CoInternetIsFeatureEnabled > #define NO_CoInternetSetFeatureEnabled >@@ -245,8 +253,13 @@ > #define NO_ExtractIconExA > #define NO_FillPath > #define NO_FindWindowA >+#define NO_FLICK_1DATA_1sizeof >+#define NO_FLICK_1POINT_1sizeof > #define NO_FormatMessageA > #define NO_GdiSetBatchLimit >+#define NO_GESTURECONFIG_1sizeof >+#define NO_GESTUREINFO_1sizeof >+#define NO_GID_1ROTATE_1ANGLE_1FROM_1ARGUMENT > #define NO_GetCharABCWidthsA > #define NO_GetCharABCWidthsW > #define NO_GetCharWidthA >@@ -261,6 +274,7 @@ > #define NO_GetDIBColorTable > #define NO_GetDIBits > #define NO_GetFontLanguageInfo >+#define NO_GetGestureInfo > #define NO_GetGlyphIndicesW > #define NO_GetGraphicsMode > #define NO_GetGUIThreadInfo >@@ -328,6 +342,7 @@ > #define NO_GetThemeRect > #define NO_GetThemeSysSize > #define NO_GetTimeFormatA >+#define NO_GetTouchInputInfo > #define NO_GetVersionExA__Lorg_eclipse_swt_internal_win32_OSVERSIONINFOA_2 > #define NO_GetVersionExA__Lorg_eclipse_swt_internal_win32_OSVERSIONINFOEXA_2 > #define NO_GetVersionExW__Lorg_eclipse_swt_internal_win32_OSVERSIONINFOEXW_2 >@@ -374,6 +389,7 @@ > #define NO_LoadLibraryA > #define NO_LoadStringA > #define NO_LockWindowUpdate >+#define NO_LODWORD > #define NO_LPtoDP > #define NO_MapVirtualKeyA > #define NO_MCIWndRegisterClass >@@ -386,10 +402,14 @@ > #define NO_MoveMemory__Lorg_eclipse_swt_internal_win32_EMREXTCREATEFONTINDIRECTW_2II > #define NO_MoveMemory__Lorg_eclipse_swt_internal_win32_EMR_2II > #define NO_MoveMemory__Lorg_eclipse_swt_internal_win32_EXTLOGPEN_2II >+#define NO_MoveMemory__Lorg_eclipse_swt_internal_win32_FLICK_1POINT_2_3II >+#define NO_MoveMemory__Lorg_eclipse_swt_internal_win32_FLICK_1DATA_2_3II > #define NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMREBARCHEVRON_2II > #define NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMREBARCHILDSIZE_2II > #define NO_MoveMemory__Lorg_eclipse_swt_internal_win32_HELPINFO_2II > #define NO_MoveMemory__ILorg_eclipse_swt_internal_win32_TRIVERTEX_2I >+#define NO_MoveMemory__ILorg_eclipse_swt_internal_win32_GESTURECONFIG_2I >+#define NO_MoveMemory__ILorg_eclipse_swt_internal_win32_GESTURECONFIG_2I > #define NO_MoveMemory__ILorg_eclipse_swt_internal_win32_GRADIENT_1RECT_2I > #define NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMLINK_2II > #define NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMTBHOTITEM_2II >@@ -408,6 +428,7 @@ > #define NO_MoveMemory__Lorg_eclipse_swt_internal_win32_SHDRAGIMAGE_2II > #define NO_MoveMemory__ILorg_eclipse_swt_internal_win32_MINMAXINFO_2I > #define NO_MoveMemory__Lorg_eclipse_swt_internal_win32_MINMAXINFO_2II >+#define NO_MoveMemory__Lorg_eclipse_swt_internal_win32_TOUCHINPUT_2II > #define NO_MoveToEx > #define NO_NotifyWinEvent > #define NO_OleInitialize >@@ -432,12 +453,14 @@ > #define NO_RegQueryValueExA__I_3BI_3I_3I_3I > #define NO_RegisterClassA > #define NO_RegisterClipboardFormatA >+#define NO_RegisterTouchWindow > #define NO_RegisterWindowMessageA > #define NO_RemoveFontResourceExW > #define NO_RemovePropA > #define NO_RemovePropW > #define NO_ReplyMessage > #define NO_SetCurrentProcessExplicitAppUserModelID >+#define NO_SetGestureConfig > #define NO_SetLayeredWindowAttributes > #define NO_SetLayout > #define NO_SetProcessDPIAware >@@ -553,6 +576,8 @@ > #define NO_ScriptXtoCP > #define NO_StrokePath > #define NO_ToAscii >+#define NO_TOUCHINPUT_1sizeof >+#define NO_TOUCH_1COORD_1TO_1PIXEL > #define NO_ToUnicode > #define NO_TrackMouseEvent > #define NO_TranslateAcceleratorA >@@ -560,6 +585,7 @@ > #define NO_TransparentBlt > #define NO_UnhookWindowsHookEx > #define NO_UnregisterClassA >+#define NO_UnregisterTouchWindow > #define NO_UpdateLayeredWindow > #define NO_VkKeyScanA > #define NO_VkKeyScanW >@@ -673,10 +699,127 @@ > #endif /* _WIN32_IE <= 0x0600 */ > #endif /* _WIN32_WCE */ > >+#if (WINVER < 0x0601) >+typedef enum FLICKDIRECTION >+{ >+ FLICKDIRECTION_MIN = 0, >+ FLICKDIRECTION_RIGHT = 0, >+ FLICKDIRECTION_UPRIGHT = 1, >+ FLICKDIRECTION_UP = 2, >+ FLICKDIRECTION_UPLEFT = 3, >+ FLICKDIRECTION_LEFT = 4, >+ FLICKDIRECTION_DOWNLEFT = 5, >+ FLICKDIRECTION_DOWN = 6, >+ FLICKDIRECTION_DOWNRIGHT = 7, >+ FLICKDIRECTION_INVALID = 8, >+}FLICKDIRECTION; >+ >+typedef struct FLICK_POINT >+{ >+ INT x:16; >+ INT y:16; >+}FLICK_POINT; >+ >+typedef enum FLICKACTION_COMMANDCODE >+{ >+ FLICKACTION_COMMANDCODE_NULL = 0, >+ FLICKACTION_COMMANDCODE_SCROLL = 1, >+ FLICKACTION_COMMANDCODE_APPCOMMAND = 2, >+ FLICKACTION_COMMANDCODE_CUSTOMKEY = 3, >+ FLICKACTION_COMMANDCODE_KEYMODIFIER = 4, >+}FLICKACTION_COMMANDCODE; >+ >+typedef struct FLICK_DATA >+{ >+ FLICKACTION_COMMANDCODE iFlickActionCommandCode:5; >+ FLICKDIRECTION iFlickDirection:3; >+ BOOL fControlModifier:1; >+ BOOL fMenuModifier:1; >+ BOOL fAltGRModifier:1; >+ BOOL fWinModifier:1; >+ BOOL fShiftModifier:1; >+ INT iReserved:2; >+ BOOL fOnInkingSurface:1; >+ INT iActionArgument:16; >+}FLICK_DATA; >+ >+/* >+ * Touch input handle >+ */ >+DECLARE_HANDLE(HTOUCHINPUT); >+ >+typedef struct tagTOUCHINPUT { >+ LONG x; >+ LONG y; >+ HANDLE hSource; >+ DWORD dwID; >+ DWORD dwFlags; >+ DWORD dwMask; >+ DWORD dwTime; >+ ULONG_PTR dwExtraInfo; >+ DWORD cxContact; >+ DWORD cyContact; >+} TOUCHINPUT, *PTOUCHINPUT; >+typedef TOUCHINPUT const * PCTOUCHINPUT; >+ >+/* >+ * Conversion of touch input coordinates to pixels >+ */ >+#define TOUCH_COORD_TO_PIXEL(l) ((l) / 100) >+ >+/* >+ * Gesture information handle >+ */ >+DECLARE_HANDLE(HGESTUREINFO); >+ >+typedef struct tagGESTUREINFO { >+ UINT cbSize; // size, in bytes, of this structure (including variable length Args field) >+ DWORD dwFlags; // see GF_* flags >+ DWORD dwID; // gesture ID, see GID_* defines >+ HWND hwndTarget; // handle to window targeted by this gesture >+ POINTS ptsLocation; // current location of this gesture >+ DWORD dwInstanceID; // internally used >+ DWORD dwSequenceID; // internally used >+ ULONGLONG ullArguments; // arguments for gestures whose arguments fit in 8 BYTES >+ UINT cbExtraArgs; // size, in bytes, of extra arguments, if any, that accompany this gesture >+} GESTUREINFO, *PGESTUREINFO; >+typedef GESTUREINFO const * PCGESTUREINFO; >+ >+typedef struct tagGESTURENOTIFYSTRUCT { >+ UINT cbSize; // size, in bytes, of this structure >+ DWORD dwFlags; // unused >+ HWND hwndTarget; // handle to window targeted by the gesture >+ POINTS ptsLocation; // starting location >+ DWORD dwInstanceID; // internally used >+} GESTURENOTIFYSTRUCT, *PGESTURENOTIFYSTRUCT; >+ >+/* >+ * Gesture argument helpers >+ * - Angle should be a double in the range of -2pi to +2pi >+ * - Argument should be an unsigned 16-bit value >+ */ >+#define GID_ROTATE_ANGLE_TO_ARGUMENT(_arg_) ((USHORT)((((_arg_) + 2.0 * 3.14159265) / (4.0 * 3.14159265)) * 65535.0)) >+#define GID_ROTATE_ANGLE_FROM_ARGUMENT(_arg_) ((((double)(_arg_) / 65535.0) * 4.0 * 3.14159265) - 2.0 * 3.14159265) >+ >+typedef struct tagGESTURECONFIG { >+ DWORD dwID; // gesture ID >+ DWORD dwWant; // settings related to gesture ID that are to be turned on >+ DWORD dwBlock; // settings related to gesture ID that are to be turned off >+} GESTURECONFIG, *PGESTURECONFIG; >+#endif /* WINVER >= 0x0601 */ >+ > #ifndef GET_WHEEL_DELTA_WPARAM > #define GET_WHEEL_DELTA_WPARAM(wParam) ((short)HIWORD(wParam)) > #endif > >+#ifndef LODWORD >+#define LODWORD(l) ((DWORD)((DWORDLONG)(l))) >+#endif >+ >+#ifndef HIDWORD >+#define HIDWORD(l) ((DWORD)(((DWORDLONG)(l)>>32)&0xFFFFFFFF)) >+#endif >+ > #include "os_custom.h" > > #endif /* INC_os_H */ >Index: Eclipse SWT PI/win32/library/os_custom.h >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.swt/Eclipse SWT PI/win32/library/os_custom.h,v >retrieving revision 1.49 >diff -u -r1.49 os_custom.h >--- Eclipse SWT PI/win32/library/os_custom.h 31 May 2010 16:44:05 -0000 1.49 >+++ Eclipse SWT PI/win32/library/os_custom.h 20 Dec 2010 18:46:30 -0000 >@@ -26,7 +26,9 @@ > #define BufferedPaintUnInit_LIB "uxtheme.dll" > #define BufferedPaintSetAlpha_LIB "uxtheme.dll" > #define BeginBufferedPaint_LIB "uxtheme.dll" >+#define CloseGestureInfoHandle_LIB "user32.dll" > #define CloseThemeData_LIB "uxtheme.dll" >+#define CloseTouchInputHandle_LIB "user32.dll" > #define CoInternetIsFeatureEnabled_LIB "urlmon.dll" > #define CoInternetSetFeatureEnabled_LIB "urlmon.dll" > #define CreateActCtxW_LIB "kernel32.dll" >@@ -38,6 +40,7 @@ > #define DrawThemeText_LIB "uxtheme.dll" > #define DwmEnableBlurBehindWindow_LIB "dwmapi.dll" > #define DwmExtendFrameIntoClientArea_LIB "dwmapi.dll" >+#define GetGestureInfo_LIB "user32.dll" > #define GetThemeInt_LIB "uxtheme.dll" > #define GetThemeMargins_LIB "uxtheme.dll" > #define GetThemeBackgroundContentRect_LIB "uxtheme.dll" >@@ -47,6 +50,7 @@ > #define GetThemeMetric_LIB "uxtheme.dll" > #define GetThemeRect_LIB "uxtheme.dll" > #define GetThemeSysSize_LIB "uxtheme.dll" >+#define GetTouchInputInfo_LIB "user32.dll" > #define HitTestThemeBackground_LIB "uxtheme.dll" > #define EndBufferedPaint_LIB "uxtheme.dll" > #define EnumDisplayMonitors_LIB "user32.dll" >@@ -72,7 +76,9 @@ > #define OpenThemeData_LIB "uxtheme.dll" > #define PrintWindow_LIB "user32.dll" > #define PSPropertyKeyFromString_LIB "propsys.dll" >+#define RegisterTouchWindow_LIB "user32.dll" > #define SetCurrentProcessExplicitAppUserModelID_LIB "shell32.dll" >+#define SetGestureConfig_LIB "user32.dll" > #define SetLayeredWindowAttributes_LIB "user32.dll" > #define SetLayout_LIB "gdi32.dll" > #define SetMenuInfo_LIB "user32.dll" >@@ -81,4 +87,5 @@ > #define SHCreateItemFromRelativeName_LIB "shell32.dll" > #define SHCreateItemInKnownFolder_LIB "shell32.dll" > #define TransparentBlt_LIB "msimg32.dll" >+#define UnregisterTouchWindow_LIB "user32.dll" > #define UpdateLayeredWindow_LIB "user32.dll" >Index: Eclipse SWT PI/win32/library/os_stats.c >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.swt/Eclipse SWT PI/win32/library/os_stats.c,v >retrieving revision 1.136 >diff -u -r1.136 os_stats.c >--- Eclipse SWT PI/win32/library/os_stats.c 15 Dec 2010 11:42:12 -0000 1.136 >+++ Eclipse SWT PI/win32/library/os_stats.c 20 Dec 2010 18:46:31 -0000 >@@ -14,8 +14,8 @@ > > #ifdef NATIVE_STATS > >-int OS_nativeFunctionCount = 1012; >-int OS_nativeFunctionCallCount[1012]; >+int OS_nativeFunctionCount = 1031; >+int OS_nativeFunctionCallCount[1031]; > char * OS_nativeFunctionNames[] = { > "ACCEL_1sizeof", > "ACTCTX_1sizeof", >@@ -78,8 +78,10 @@ > "ClientToScreen", > "CloseClipboard", > "CloseEnhMetaFile", >+ "CloseGestureInfoHandle", > "CloseHandle", > "CloseThemeData", >+ "CloseTouchInputHandle", > "CoCreateInstance", > "CoInternetIsFeatureEnabled", > "CoInternetSetFeatureEnabled", >@@ -231,6 +233,8 @@ > "ExtractIconExA", > "ExtractIconExW", > "FILETIME_1sizeof", >+ "FLICK_1DATA_1sizeof", >+ "FLICK_1POINT_1sizeof", > "FillPath", > "FillRect", > "FindWindowA", >@@ -239,9 +243,12 @@ > "FormatMessageW", > "FreeLibrary", > "GCP_1RESULTS_1sizeof", >+ "GESTURECONFIG_1sizeof", >+ "GESTUREINFO_1sizeof", > "GET_1WHEEL_1DELTA_1WPARAM", > "GET_1X_1LPARAM", > "GET_1Y_1LPARAM", >+ "GID_1ROTATE_1ANGLE_1FROM_1ARGUMENT", > "GRADIENT_1RECT_1sizeof", > "GUITHREADINFO_1sizeof", > "GdiSetBatchLimit", >@@ -289,6 +296,7 @@ > "GetFontLanguageInfo", > "GetForegroundWindow", > "GetGUIThreadInfo", >+ "GetGestureInfo", > "GetGlyphIndicesW", > "GetGraphicsMode", > "GetIconInfo", >@@ -448,6 +456,7 @@ > "GetTickCount", > "GetTimeFormatA", > "GetTimeFormatW", >+ "GetTouchInputInfo", > "GetUpdateRect", > "GetUpdateRgn", > "GetVersionExA__Lorg_eclipse_swt_internal_win32_OSVERSIONINFOA_2", >@@ -586,6 +595,7 @@ > "KEYBDINPUT_1sizeof", > "KillTimer", > "LITEM_1sizeof", >+ "LODWORD", > "LOGBRUSH_1sizeof", > "LOGFONTA_1sizeof", > "LOGFONTW_1sizeof", >@@ -688,6 +698,11 @@ > "MoveMemory__JLorg_eclipse_swt_internal_win32_DROPFILES_2I", > #endif > #ifndef JNI64 >+ "MoveMemory__ILorg_eclipse_swt_internal_win32_GESTURECONFIG_2I", >+#else >+ "MoveMemory__JLorg_eclipse_swt_internal_win32_GESTURECONFIG_2I", >+#endif >+#ifndef JNI64 > "MoveMemory__ILorg_eclipse_swt_internal_win32_GRADIENT_1RECT_2I", > #else > "MoveMemory__JLorg_eclipse_swt_internal_win32_GRADIENT_1RECT_2I", >@@ -874,6 +889,16 @@ > "MoveMemory__Lorg_eclipse_swt_internal_win32_EXTLOGPEN_2JI", > #endif > #ifndef JNI64 >+ "MoveMemory__Lorg_eclipse_swt_internal_win32_FLICK_1DATA_2_3II", >+#else >+ "MoveMemory__Lorg_eclipse_swt_internal_win32_FLICK_1DATA_2_3JI", >+#endif >+#ifndef JNI64 >+ "MoveMemory__Lorg_eclipse_swt_internal_win32_FLICK_1POINT_2_3II", >+#else >+ "MoveMemory__Lorg_eclipse_swt_internal_win32_FLICK_1POINT_2_3JI", >+#endif >+#ifndef JNI64 > "MoveMemory__Lorg_eclipse_swt_internal_win32_HDITEM_2II", > #else > "MoveMemory__Lorg_eclipse_swt_internal_win32_HDITEM_2JI", >@@ -1070,6 +1095,11 @@ > "MoveMemory__Lorg_eclipse_swt_internal_win32_TEXTMETRICW_2JI", > #endif > #ifndef JNI64 >+ "MoveMemory__Lorg_eclipse_swt_internal_win32_TOUCHINPUT_2II", >+#else >+ "MoveMemory__Lorg_eclipse_swt_internal_win32_TOUCHINPUT_2JI", >+#endif >+#ifndef JNI64 > "MoveMemory__Lorg_eclipse_swt_internal_win32_TVITEM_2II", > #else > "MoveMemory__Lorg_eclipse_swt_internal_win32_TVITEM_2JI", >@@ -1239,6 +1269,7 @@ > "RegisterClassW", > "RegisterClipboardFormatA", > "RegisterClipboardFormatW", >+ "RegisterTouchWindow", > "RegisterWindowMessageA", > "RegisterWindowMessageW", > "ReleaseCapture", >@@ -1666,6 +1697,7 @@ > "SetErrorMode", > "SetFocus", > "SetForegroundWindow", >+ "SetGestureConfig", > "SetGraphicsMode", > "SetLayeredWindowAttributes", > "SetLayout", >@@ -1741,6 +1773,8 @@ > "TF_1DA_1COLOR_1sizeof", > "TF_1DISPLAYATTRIBUTE_1sizeof", > "TOOLINFO_1sizeof", >+ "TOUCHINPUT_1sizeof", >+ "TOUCH_1COORD_1TO_1PIXEL", > "TRACKMOUSEEVENT_1sizeof", > "TRIVERTEX_1sizeof", > "TVHITTESTINFO_1sizeof", >@@ -1765,6 +1799,7 @@ > "UnmapViewOfFile", > "UnregisterClassA", > "UnregisterClassW", >+ "UnregisterTouchWindow", > "UpdateLayeredWindow", > "UpdateWindow", > "ValidateRect", >Index: Eclipse SWT PI/win32/library/os_stats.h >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.swt/Eclipse SWT PI/win32/library/os_stats.h,v >retrieving revision 1.136 >diff -u -r1.136 os_stats.h >--- Eclipse SWT PI/win32/library/os_stats.h 15 Dec 2010 11:42:13 -0000 1.136 >+++ Eclipse SWT PI/win32/library/os_stats.h 20 Dec 2010 18:46:31 -0000 >@@ -86,8 +86,10 @@ > ClientToScreen_FUNC, > CloseClipboard_FUNC, > CloseEnhMetaFile_FUNC, >+ CloseGestureInfoHandle_FUNC, > CloseHandle_FUNC, > CloseThemeData_FUNC, >+ CloseTouchInputHandle_FUNC, > CoCreateInstance_FUNC, > CoInternetIsFeatureEnabled_FUNC, > CoInternetSetFeatureEnabled_FUNC, >@@ -239,6 +241,8 @@ > ExtractIconExA_FUNC, > ExtractIconExW_FUNC, > FILETIME_1sizeof_FUNC, >+ FLICK_1DATA_1sizeof_FUNC, >+ FLICK_1POINT_1sizeof_FUNC, > FillPath_FUNC, > FillRect_FUNC, > FindWindowA_FUNC, >@@ -247,9 +251,12 @@ > FormatMessageW_FUNC, > FreeLibrary_FUNC, > GCP_1RESULTS_1sizeof_FUNC, >+ GESTURECONFIG_1sizeof_FUNC, >+ GESTUREINFO_1sizeof_FUNC, > GET_1WHEEL_1DELTA_1WPARAM_FUNC, > GET_1X_1LPARAM_FUNC, > GET_1Y_1LPARAM_FUNC, >+ GID_1ROTATE_1ANGLE_1FROM_1ARGUMENT_FUNC, > GRADIENT_1RECT_1sizeof_FUNC, > GUITHREADINFO_1sizeof_FUNC, > GdiSetBatchLimit_FUNC, >@@ -297,6 +304,7 @@ > GetFontLanguageInfo_FUNC, > GetForegroundWindow_FUNC, > GetGUIThreadInfo_FUNC, >+ GetGestureInfo_FUNC, > GetGlyphIndicesW_FUNC, > GetGraphicsMode_FUNC, > GetIconInfo_FUNC, >@@ -456,6 +464,7 @@ > GetTickCount_FUNC, > GetTimeFormatA_FUNC, > GetTimeFormatW_FUNC, >+ GetTouchInputInfo_FUNC, > GetUpdateRect_FUNC, > GetUpdateRgn_FUNC, > GetVersionExA__Lorg_eclipse_swt_internal_win32_OSVERSIONINFOA_2_FUNC, >@@ -594,6 +603,7 @@ > KEYBDINPUT_1sizeof_FUNC, > KillTimer_FUNC, > LITEM_1sizeof_FUNC, >+ LODWORD_FUNC, > LOGBRUSH_1sizeof_FUNC, > LOGFONTA_1sizeof_FUNC, > LOGFONTW_1sizeof_FUNC, >@@ -696,6 +706,11 @@ > MoveMemory__JLorg_eclipse_swt_internal_win32_DROPFILES_2I_FUNC, > #endif > #ifndef JNI64 >+ MoveMemory__ILorg_eclipse_swt_internal_win32_GESTURECONFIG_2I_FUNC, >+#else >+ MoveMemory__JLorg_eclipse_swt_internal_win32_GESTURECONFIG_2I_FUNC, >+#endif >+#ifndef JNI64 > MoveMemory__ILorg_eclipse_swt_internal_win32_GRADIENT_1RECT_2I_FUNC, > #else > MoveMemory__JLorg_eclipse_swt_internal_win32_GRADIENT_1RECT_2I_FUNC, >@@ -882,6 +897,16 @@ > MoveMemory__Lorg_eclipse_swt_internal_win32_EXTLOGPEN_2JI_FUNC, > #endif > #ifndef JNI64 >+ MoveMemory__Lorg_eclipse_swt_internal_win32_FLICK_1DATA_2_3II_FUNC, >+#else >+ MoveMemory__Lorg_eclipse_swt_internal_win32_FLICK_1DATA_2_3JI_FUNC, >+#endif >+#ifndef JNI64 >+ MoveMemory__Lorg_eclipse_swt_internal_win32_FLICK_1POINT_2_3II_FUNC, >+#else >+ MoveMemory__Lorg_eclipse_swt_internal_win32_FLICK_1POINT_2_3JI_FUNC, >+#endif >+#ifndef JNI64 > MoveMemory__Lorg_eclipse_swt_internal_win32_HDITEM_2II_FUNC, > #else > MoveMemory__Lorg_eclipse_swt_internal_win32_HDITEM_2JI_FUNC, >@@ -1078,6 +1103,11 @@ > MoveMemory__Lorg_eclipse_swt_internal_win32_TEXTMETRICW_2JI_FUNC, > #endif > #ifndef JNI64 >+ MoveMemory__Lorg_eclipse_swt_internal_win32_TOUCHINPUT_2II_FUNC, >+#else >+ MoveMemory__Lorg_eclipse_swt_internal_win32_TOUCHINPUT_2JI_FUNC, >+#endif >+#ifndef JNI64 > MoveMemory__Lorg_eclipse_swt_internal_win32_TVITEM_2II_FUNC, > #else > MoveMemory__Lorg_eclipse_swt_internal_win32_TVITEM_2JI_FUNC, >@@ -1247,6 +1277,7 @@ > RegisterClassW_FUNC, > RegisterClipboardFormatA_FUNC, > RegisterClipboardFormatW_FUNC, >+ RegisterTouchWindow_FUNC, > RegisterWindowMessageA_FUNC, > RegisterWindowMessageW_FUNC, > ReleaseCapture_FUNC, >@@ -1674,6 +1705,7 @@ > SetErrorMode_FUNC, > SetFocus_FUNC, > SetForegroundWindow_FUNC, >+ SetGestureConfig_FUNC, > SetGraphicsMode_FUNC, > SetLayeredWindowAttributes_FUNC, > SetLayout_FUNC, >@@ -1749,6 +1781,8 @@ > TF_1DA_1COLOR_1sizeof_FUNC, > TF_1DISPLAYATTRIBUTE_1sizeof_FUNC, > TOOLINFO_1sizeof_FUNC, >+ TOUCHINPUT_1sizeof_FUNC, >+ TOUCH_1COORD_1TO_1PIXEL_FUNC, > TRACKMOUSEEVENT_1sizeof_FUNC, > TRIVERTEX_1sizeof_FUNC, > TVHITTESTINFO_1sizeof_FUNC, >@@ -1773,6 +1807,7 @@ > UnmapViewOfFile_FUNC, > UnregisterClassA_FUNC, > UnregisterClassW_FUNC, >+ UnregisterTouchWindow_FUNC, > UpdateLayeredWindow_FUNC, > UpdateWindow_FUNC, > ValidateRect_FUNC, >Index: Eclipse SWT PI/win32/library/os_structs.c >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.c,v >retrieving revision 1.81 >diff -u -r1.81 os_structs.c >--- Eclipse SWT PI/win32/library/os_structs.c 25 Feb 2010 20:37:14 -0000 1.81 >+++ Eclipse SWT PI/win32/library/os_structs.c 20 Dec 2010 18:46:36 -0000 >@@ -1721,6 +1721,98 @@ > } > #endif > >+#ifndef NO_FLICK_DATA >+typedef struct FLICK_DATA_FID_CACHE { >+ int cached; >+ jclass clazz; >+ jfieldID iFlickActionCommandCode, iFlickDirection, fControlModifier, fMenuModifier, fAltGRModifier, fWinModifier, fShiftModifier, iReserved, fOnInkingSurface, iActionArgument; >+} FLICK_DATA_FID_CACHE; >+ >+FLICK_DATA_FID_CACHE FLICK_DATAFc; >+ >+void cacheFLICK_DATAFields(JNIEnv *env, jobject lpObject) >+{ >+ if (FLICK_DATAFc.cached) return; >+ FLICK_DATAFc.clazz = (*env)->GetObjectClass(env, lpObject); >+ FLICK_DATAFc.iFlickActionCommandCode = (*env)->GetFieldID(env, FLICK_DATAFc.clazz, "iFlickActionCommandCode", "I"); >+ FLICK_DATAFc.iFlickDirection = (*env)->GetFieldID(env, FLICK_DATAFc.clazz, "iFlickDirection", "I"); >+ FLICK_DATAFc.fControlModifier = (*env)->GetFieldID(env, FLICK_DATAFc.clazz, "fControlModifier", "Z"); >+ FLICK_DATAFc.fMenuModifier = (*env)->GetFieldID(env, FLICK_DATAFc.clazz, "fMenuModifier", "Z"); >+ FLICK_DATAFc.fAltGRModifier = (*env)->GetFieldID(env, FLICK_DATAFc.clazz, "fAltGRModifier", "Z"); >+ FLICK_DATAFc.fWinModifier = (*env)->GetFieldID(env, FLICK_DATAFc.clazz, "fWinModifier", "Z"); >+ FLICK_DATAFc.fShiftModifier = (*env)->GetFieldID(env, FLICK_DATAFc.clazz, "fShiftModifier", "Z"); >+ FLICK_DATAFc.iReserved = (*env)->GetFieldID(env, FLICK_DATAFc.clazz, "iReserved", "I"); >+ FLICK_DATAFc.fOnInkingSurface = (*env)->GetFieldID(env, FLICK_DATAFc.clazz, "fOnInkingSurface", "Z"); >+ FLICK_DATAFc.iActionArgument = (*env)->GetFieldID(env, FLICK_DATAFc.clazz, "iActionArgument", "I"); >+ FLICK_DATAFc.cached = 1; >+} >+ >+FLICK_DATA *getFLICK_DATAFields(JNIEnv *env, jobject lpObject, FLICK_DATA *lpStruct) >+{ >+ if (!FLICK_DATAFc.cached) cacheFLICK_DATAFields(env, lpObject); >+ lpStruct->iFlickActionCommandCode = (*env)->GetIntField(env, lpObject, FLICK_DATAFc.iFlickActionCommandCode); >+ lpStruct->iFlickDirection = (*env)->GetIntField(env, lpObject, FLICK_DATAFc.iFlickDirection); >+ lpStruct->fControlModifier = (*env)->GetBooleanField(env, lpObject, FLICK_DATAFc.fControlModifier); >+ lpStruct->fMenuModifier = (*env)->GetBooleanField(env, lpObject, FLICK_DATAFc.fMenuModifier); >+ lpStruct->fAltGRModifier = (*env)->GetBooleanField(env, lpObject, FLICK_DATAFc.fAltGRModifier); >+ lpStruct->fWinModifier = (*env)->GetBooleanField(env, lpObject, FLICK_DATAFc.fWinModifier); >+ lpStruct->fShiftModifier = (*env)->GetBooleanField(env, lpObject, FLICK_DATAFc.fShiftModifier); >+ lpStruct->iReserved = (*env)->GetIntField(env, lpObject, FLICK_DATAFc.iReserved); >+ lpStruct->fOnInkingSurface = (*env)->GetBooleanField(env, lpObject, FLICK_DATAFc.fOnInkingSurface); >+ lpStruct->iActionArgument = (*env)->GetIntField(env, lpObject, FLICK_DATAFc.iActionArgument); >+ return lpStruct; >+} >+ >+void setFLICK_DATAFields(JNIEnv *env, jobject lpObject, FLICK_DATA *lpStruct) >+{ >+ if (!FLICK_DATAFc.cached) cacheFLICK_DATAFields(env, lpObject); >+ (*env)->SetIntField(env, lpObject, FLICK_DATAFc.iFlickActionCommandCode, (jint)lpStruct->iFlickActionCommandCode); >+ (*env)->SetIntField(env, lpObject, FLICK_DATAFc.iFlickDirection, (jint)lpStruct->iFlickDirection); >+ (*env)->SetBooleanField(env, lpObject, FLICK_DATAFc.fControlModifier, (jboolean)lpStruct->fControlModifier); >+ (*env)->SetBooleanField(env, lpObject, FLICK_DATAFc.fMenuModifier, (jboolean)lpStruct->fMenuModifier); >+ (*env)->SetBooleanField(env, lpObject, FLICK_DATAFc.fAltGRModifier, (jboolean)lpStruct->fAltGRModifier); >+ (*env)->SetBooleanField(env, lpObject, FLICK_DATAFc.fWinModifier, (jboolean)lpStruct->fWinModifier); >+ (*env)->SetBooleanField(env, lpObject, FLICK_DATAFc.fShiftModifier, (jboolean)lpStruct->fShiftModifier); >+ (*env)->SetIntField(env, lpObject, FLICK_DATAFc.iReserved, (jint)lpStruct->iReserved); >+ (*env)->SetBooleanField(env, lpObject, FLICK_DATAFc.fOnInkingSurface, (jboolean)lpStruct->fOnInkingSurface); >+ (*env)->SetIntField(env, lpObject, FLICK_DATAFc.iActionArgument, (jint)lpStruct->iActionArgument); >+} >+#endif >+ >+#ifndef NO_FLICK_POINT >+typedef struct FLICK_POINT_FID_CACHE { >+ int cached; >+ jclass clazz; >+ jfieldID x, y; >+} FLICK_POINT_FID_CACHE; >+ >+FLICK_POINT_FID_CACHE FLICK_POINTFc; >+ >+void cacheFLICK_POINTFields(JNIEnv *env, jobject lpObject) >+{ >+ if (FLICK_POINTFc.cached) return; >+ FLICK_POINTFc.clazz = (*env)->GetObjectClass(env, lpObject); >+ FLICK_POINTFc.x = (*env)->GetFieldID(env, FLICK_POINTFc.clazz, "x", "I"); >+ FLICK_POINTFc.y = (*env)->GetFieldID(env, FLICK_POINTFc.clazz, "y", "I"); >+ FLICK_POINTFc.cached = 1; >+} >+ >+FLICK_POINT *getFLICK_POINTFields(JNIEnv *env, jobject lpObject, FLICK_POINT *lpStruct) >+{ >+ if (!FLICK_POINTFc.cached) cacheFLICK_POINTFields(env, lpObject); >+ lpStruct->x = (*env)->GetIntField(env, lpObject, FLICK_POINTFc.x); >+ lpStruct->y = (*env)->GetIntField(env, lpObject, FLICK_POINTFc.y); >+ return lpStruct; >+} >+ >+void setFLICK_POINTFields(JNIEnv *env, jobject lpObject, FLICK_POINT *lpStruct) >+{ >+ if (!FLICK_POINTFc.cached) cacheFLICK_POINTFields(env, lpObject); >+ (*env)->SetIntField(env, lpObject, FLICK_POINTFc.x, (jint)lpStruct->x); >+ (*env)->SetIntField(env, lpObject, FLICK_POINTFc.y, (jint)lpStruct->y); >+} >+#endif >+ > #ifndef NO_GCP_RESULTS > typedef struct GCP_RESULTS_FID_CACHE { > int cached; >@@ -1776,6 +1868,101 @@ > } > #endif > >+#ifndef NO_GESTURECONFIG >+typedef struct GESTURECONFIG_FID_CACHE { >+ int cached; >+ jclass clazz; >+ jfieldID dwID, dwWant, dwBlock; >+} GESTURECONFIG_FID_CACHE; >+ >+GESTURECONFIG_FID_CACHE GESTURECONFIGFc; >+ >+void cacheGESTURECONFIGFields(JNIEnv *env, jobject lpObject) >+{ >+ if (GESTURECONFIGFc.cached) return; >+ GESTURECONFIGFc.clazz = (*env)->GetObjectClass(env, lpObject); >+ GESTURECONFIGFc.dwID = (*env)->GetFieldID(env, GESTURECONFIGFc.clazz, "dwID", "I"); >+ GESTURECONFIGFc.dwWant = (*env)->GetFieldID(env, GESTURECONFIGFc.clazz, "dwWant", "I"); >+ GESTURECONFIGFc.dwBlock = (*env)->GetFieldID(env, GESTURECONFIGFc.clazz, "dwBlock", "I"); >+ GESTURECONFIGFc.cached = 1; >+} >+ >+GESTURECONFIG *getGESTURECONFIGFields(JNIEnv *env, jobject lpObject, GESTURECONFIG *lpStruct) >+{ >+ if (!GESTURECONFIGFc.cached) cacheGESTURECONFIGFields(env, lpObject); >+ lpStruct->dwID = (*env)->GetIntField(env, lpObject, GESTURECONFIGFc.dwID); >+ lpStruct->dwWant = (*env)->GetIntField(env, lpObject, GESTURECONFIGFc.dwWant); >+ lpStruct->dwBlock = (*env)->GetIntField(env, lpObject, GESTURECONFIGFc.dwBlock); >+ return lpStruct; >+} >+ >+void setGESTURECONFIGFields(JNIEnv *env, jobject lpObject, GESTURECONFIG *lpStruct) >+{ >+ if (!GESTURECONFIGFc.cached) cacheGESTURECONFIGFields(env, lpObject); >+ (*env)->SetIntField(env, lpObject, GESTURECONFIGFc.dwID, (jint)lpStruct->dwID); >+ (*env)->SetIntField(env, lpObject, GESTURECONFIGFc.dwWant, (jint)lpStruct->dwWant); >+ (*env)->SetIntField(env, lpObject, GESTURECONFIGFc.dwBlock, (jint)lpStruct->dwBlock); >+} >+#endif >+ >+#ifndef NO_GESTUREINFO >+typedef struct GESTUREINFO_FID_CACHE { >+ int cached; >+ jclass clazz; >+ jfieldID cbSize, dwFlags, dwID, hwndTarget, x, y, dwInstanceID, dwSequenceID, ullArguments, cbExtraArgs; >+} GESTUREINFO_FID_CACHE; >+ >+GESTUREINFO_FID_CACHE GESTUREINFOFc; >+ >+void cacheGESTUREINFOFields(JNIEnv *env, jobject lpObject) >+{ >+ if (GESTUREINFOFc.cached) return; >+ GESTUREINFOFc.clazz = (*env)->GetObjectClass(env, lpObject); >+ GESTUREINFOFc.cbSize = (*env)->GetFieldID(env, GESTUREINFOFc.clazz, "cbSize", "I"); >+ GESTUREINFOFc.dwFlags = (*env)->GetFieldID(env, GESTUREINFOFc.clazz, "dwFlags", "I"); >+ GESTUREINFOFc.dwID = (*env)->GetFieldID(env, GESTUREINFOFc.clazz, "dwID", "I"); >+ GESTUREINFOFc.hwndTarget = (*env)->GetFieldID(env, GESTUREINFOFc.clazz, "hwndTarget", I_J); >+ GESTUREINFOFc.x = (*env)->GetFieldID(env, GESTUREINFOFc.clazz, "x", "S"); >+ GESTUREINFOFc.y = (*env)->GetFieldID(env, GESTUREINFOFc.clazz, "y", "S"); >+ GESTUREINFOFc.dwInstanceID = (*env)->GetFieldID(env, GESTUREINFOFc.clazz, "dwInstanceID", "I"); >+ GESTUREINFOFc.dwSequenceID = (*env)->GetFieldID(env, GESTUREINFOFc.clazz, "dwSequenceID", "I"); >+ GESTUREINFOFc.ullArguments = (*env)->GetFieldID(env, GESTUREINFOFc.clazz, "ullArguments", "J"); >+ GESTUREINFOFc.cbExtraArgs = (*env)->GetFieldID(env, GESTUREINFOFc.clazz, "cbExtraArgs", "I"); >+ GESTUREINFOFc.cached = 1; >+} >+ >+GESTUREINFO *getGESTUREINFOFields(JNIEnv *env, jobject lpObject, GESTUREINFO *lpStruct) >+{ >+ if (!GESTUREINFOFc.cached) cacheGESTUREINFOFields(env, lpObject); >+ lpStruct->cbSize = (*env)->GetIntField(env, lpObject, GESTUREINFOFc.cbSize); >+ lpStruct->dwFlags = (*env)->GetIntField(env, lpObject, GESTUREINFOFc.dwFlags); >+ lpStruct->dwID = (*env)->GetIntField(env, lpObject, GESTUREINFOFc.dwID); >+ lpStruct->hwndTarget = (HWND)(*env)->GetIntLongField(env, lpObject, GESTUREINFOFc.hwndTarget); >+ lpStruct->ptsLocation.x = (*env)->GetShortField(env, lpObject, GESTUREINFOFc.x); >+ lpStruct->ptsLocation.y = (*env)->GetShortField(env, lpObject, GESTUREINFOFc.y); >+ lpStruct->dwInstanceID = (*env)->GetIntField(env, lpObject, GESTUREINFOFc.dwInstanceID); >+ lpStruct->dwSequenceID = (*env)->GetIntField(env, lpObject, GESTUREINFOFc.dwSequenceID); >+ lpStruct->ullArguments = (*env)->GetLongField(env, lpObject, GESTUREINFOFc.ullArguments); >+ lpStruct->cbExtraArgs = (*env)->GetIntField(env, lpObject, GESTUREINFOFc.cbExtraArgs); >+ return lpStruct; >+} >+ >+void setGESTUREINFOFields(JNIEnv *env, jobject lpObject, GESTUREINFO *lpStruct) >+{ >+ if (!GESTUREINFOFc.cached) cacheGESTUREINFOFields(env, lpObject); >+ (*env)->SetIntField(env, lpObject, GESTUREINFOFc.cbSize, (jint)lpStruct->cbSize); >+ (*env)->SetIntField(env, lpObject, GESTUREINFOFc.dwFlags, (jint)lpStruct->dwFlags); >+ (*env)->SetIntField(env, lpObject, GESTUREINFOFc.dwID, (jint)lpStruct->dwID); >+ (*env)->SetIntLongField(env, lpObject, GESTUREINFOFc.hwndTarget, (jintLong)lpStruct->hwndTarget); >+ (*env)->SetShortField(env, lpObject, GESTUREINFOFc.x, (jshort)lpStruct->ptsLocation.x); >+ (*env)->SetShortField(env, lpObject, GESTUREINFOFc.y, (jshort)lpStruct->ptsLocation.y); >+ (*env)->SetIntField(env, lpObject, GESTUREINFOFc.dwInstanceID, (jint)lpStruct->dwInstanceID); >+ (*env)->SetIntField(env, lpObject, GESTUREINFOFc.dwSequenceID, (jint)lpStruct->dwSequenceID); >+ (*env)->SetLongField(env, lpObject, GESTUREINFOFc.ullArguments, (jlong)lpStruct->ullArguments); >+ (*env)->SetIntField(env, lpObject, GESTUREINFOFc.cbExtraArgs, (jint)lpStruct->cbExtraArgs); >+} >+#endif >+ > #ifndef NO_GRADIENT_RECT > typedef struct GRADIENT_RECT_FID_CACHE { > int cached; >@@ -8282,6 +8469,64 @@ > } > #endif > >+#ifndef NO_TOUCHINPUT >+typedef struct TOUCHINPUT_FID_CACHE { >+ int cached; >+ jclass clazz; >+ jfieldID x, y, hSource, dwID, dwFlags, dwMask, dwTime, dwExtraInfo, cxContact, cyContact; >+} TOUCHINPUT_FID_CACHE; >+ >+TOUCHINPUT_FID_CACHE TOUCHINPUTFc; >+ >+void cacheTOUCHINPUTFields(JNIEnv *env, jobject lpObject) >+{ >+ if (TOUCHINPUTFc.cached) return; >+ TOUCHINPUTFc.clazz = (*env)->GetObjectClass(env, lpObject); >+ TOUCHINPUTFc.x = (*env)->GetFieldID(env, TOUCHINPUTFc.clazz, "x", I_J); >+ TOUCHINPUTFc.y = (*env)->GetFieldID(env, TOUCHINPUTFc.clazz, "y", I_J); >+ TOUCHINPUTFc.hSource = (*env)->GetFieldID(env, TOUCHINPUTFc.clazz, "hSource", I_J); >+ TOUCHINPUTFc.dwID = (*env)->GetFieldID(env, TOUCHINPUTFc.clazz, "dwID", "I"); >+ TOUCHINPUTFc.dwFlags = (*env)->GetFieldID(env, TOUCHINPUTFc.clazz, "dwFlags", "I"); >+ TOUCHINPUTFc.dwMask = (*env)->GetFieldID(env, TOUCHINPUTFc.clazz, "dwMask", "I"); >+ TOUCHINPUTFc.dwTime = (*env)->GetFieldID(env, TOUCHINPUTFc.clazz, "dwTime", "I"); >+ TOUCHINPUTFc.dwExtraInfo = (*env)->GetFieldID(env, TOUCHINPUTFc.clazz, "dwExtraInfo", I_J); >+ TOUCHINPUTFc.cxContact = (*env)->GetFieldID(env, TOUCHINPUTFc.clazz, "cxContact", "I"); >+ TOUCHINPUTFc.cyContact = (*env)->GetFieldID(env, TOUCHINPUTFc.clazz, "cyContact", "I"); >+ TOUCHINPUTFc.cached = 1; >+} >+ >+TOUCHINPUT *getTOUCHINPUTFields(JNIEnv *env, jobject lpObject, TOUCHINPUT *lpStruct) >+{ >+ if (!TOUCHINPUTFc.cached) cacheTOUCHINPUTFields(env, lpObject); >+ lpStruct->x = (*env)->GetIntLongField(env, lpObject, TOUCHINPUTFc.x); >+ lpStruct->y = (*env)->GetIntLongField(env, lpObject, TOUCHINPUTFc.y); >+ lpStruct->hSource = (HWND)(*env)->GetIntLongField(env, lpObject, TOUCHINPUTFc.hSource); >+ lpStruct->dwID = (*env)->GetIntField(env, lpObject, TOUCHINPUTFc.dwID); >+ lpStruct->dwFlags = (*env)->GetIntField(env, lpObject, TOUCHINPUTFc.dwFlags); >+ lpStruct->dwMask = (*env)->GetIntField(env, lpObject, TOUCHINPUTFc.dwMask); >+ lpStruct->dwTime = (*env)->GetIntField(env, lpObject, TOUCHINPUTFc.dwTime); >+ lpStruct->dwExtraInfo = (*env)->GetIntLongField(env, lpObject, TOUCHINPUTFc.dwExtraInfo); >+ lpStruct->cxContact = (*env)->GetIntField(env, lpObject, TOUCHINPUTFc.cxContact); >+ lpStruct->cyContact = (*env)->GetIntField(env, lpObject, TOUCHINPUTFc.cyContact); >+ return lpStruct; >+} >+ >+void setTOUCHINPUTFields(JNIEnv *env, jobject lpObject, TOUCHINPUT *lpStruct) >+{ >+ if (!TOUCHINPUTFc.cached) cacheTOUCHINPUTFields(env, lpObject); >+ (*env)->SetIntLongField(env, lpObject, TOUCHINPUTFc.x, (jintLong)lpStruct->x); >+ (*env)->SetIntLongField(env, lpObject, TOUCHINPUTFc.y, (jintLong)lpStruct->y); >+ (*env)->SetIntLongField(env, lpObject, TOUCHINPUTFc.hSource, (jintLong)lpStruct->hSource); >+ (*env)->SetIntField(env, lpObject, TOUCHINPUTFc.dwID, (jint)lpStruct->dwID); >+ (*env)->SetIntField(env, lpObject, TOUCHINPUTFc.dwFlags, (jint)lpStruct->dwFlags); >+ (*env)->SetIntField(env, lpObject, TOUCHINPUTFc.dwMask, (jint)lpStruct->dwMask); >+ (*env)->SetIntField(env, lpObject, TOUCHINPUTFc.dwTime, (jint)lpStruct->dwTime); >+ (*env)->SetIntLongField(env, lpObject, TOUCHINPUTFc.dwExtraInfo, (jintLong)lpStruct->dwExtraInfo); >+ (*env)->SetIntField(env, lpObject, TOUCHINPUTFc.cxContact, (jint)lpStruct->cxContact); >+ (*env)->SetIntField(env, lpObject, TOUCHINPUTFc.cyContact, (jint)lpStruct->cyContact); >+} >+#endif >+ > #ifndef NO_TRACKMOUSEEVENT > typedef struct TRACKMOUSEEVENT_FID_CACHE { > int cached; >Index: Eclipse SWT PI/win32/library/os_structs.h >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.h,v >retrieving revision 1.66 >diff -u -r1.66 os_structs.h >--- Eclipse SWT PI/win32/library/os_structs.h 25 Feb 2010 20:37:16 -0000 1.66 >+++ Eclipse SWT PI/win32/library/os_structs.h 20 Dec 2010 18:46:37 -0000 >@@ -359,6 +359,30 @@ > #define FILETIME_sizeof() 0 > #endif > >+#ifndef NO_FLICK_DATA >+void cacheFLICK_DATAFields(JNIEnv *env, jobject lpObject); >+FLICK_DATA *getFLICK_DATAFields(JNIEnv *env, jobject lpObject, FLICK_DATA *lpStruct); >+void setFLICK_DATAFields(JNIEnv *env, jobject lpObject, FLICK_DATA *lpStruct); >+#define FLICK_DATA_sizeof() sizeof(FLICK_DATA) >+#else >+#define cacheFLICK_DATAFields(a,b) >+#define getFLICK_DATAFields(a,b,c) NULL >+#define setFLICK_DATAFields(a,b,c) >+#define FLICK_DATA_sizeof() 0 >+#endif >+ >+#ifndef NO_FLICK_POINT >+void cacheFLICK_POINTFields(JNIEnv *env, jobject lpObject); >+FLICK_POINT *getFLICK_POINTFields(JNIEnv *env, jobject lpObject, FLICK_POINT *lpStruct); >+void setFLICK_POINTFields(JNIEnv *env, jobject lpObject, FLICK_POINT *lpStruct); >+#define FLICK_POINT_sizeof() sizeof(FLICK_POINT) >+#else >+#define cacheFLICK_POINTFields(a,b) >+#define getFLICK_POINTFields(a,b,c) NULL >+#define setFLICK_POINTFields(a,b,c) >+#define FLICK_POINT_sizeof() 0 >+#endif >+ > #ifndef NO_GCP_RESULTS > void cacheGCP_RESULTSFields(JNIEnv *env, jobject lpObject); > GCP_RESULTS *getGCP_RESULTSFields(JNIEnv *env, jobject lpObject, GCP_RESULTS *lpStruct); >@@ -371,6 +395,30 @@ > #define GCP_RESULTS_sizeof() 0 > #endif > >+#ifndef NO_GESTURECONFIG >+void cacheGESTURECONFIGFields(JNIEnv *env, jobject lpObject); >+GESTURECONFIG *getGESTURECONFIGFields(JNIEnv *env, jobject lpObject, GESTURECONFIG *lpStruct); >+void setGESTURECONFIGFields(JNIEnv *env, jobject lpObject, GESTURECONFIG *lpStruct); >+#define GESTURECONFIG_sizeof() sizeof(GESTURECONFIG) >+#else >+#define cacheGESTURECONFIGFields(a,b) >+#define getGESTURECONFIGFields(a,b,c) NULL >+#define setGESTURECONFIGFields(a,b,c) >+#define GESTURECONFIG_sizeof() 0 >+#endif >+ >+#ifndef NO_GESTUREINFO >+void cacheGESTUREINFOFields(JNIEnv *env, jobject lpObject); >+GESTUREINFO *getGESTUREINFOFields(JNIEnv *env, jobject lpObject, GESTUREINFO *lpStruct); >+void setGESTUREINFOFields(JNIEnv *env, jobject lpObject, GESTUREINFO *lpStruct); >+#define GESTUREINFO_sizeof() sizeof(GESTUREINFO) >+#else >+#define cacheGESTUREINFOFields(a,b) >+#define getGESTUREINFOFields(a,b,c) NULL >+#define setGESTUREINFOFields(a,b,c) >+#define GESTUREINFO_sizeof() 0 >+#endif >+ > #ifndef NO_GRADIENT_RECT > void cacheGRADIENT_RECTFields(JNIEnv *env, jobject lpObject); > GRADIENT_RECT *getGRADIENT_RECTFields(JNIEnv *env, jobject lpObject, GRADIENT_RECT *lpStruct); >@@ -1727,6 +1775,18 @@ > #define TOOLINFO_sizeof() 0 > #endif > >+#ifndef NO_TOUCHINPUT >+void cacheTOUCHINPUTFields(JNIEnv *env, jobject lpObject); >+TOUCHINPUT *getTOUCHINPUTFields(JNIEnv *env, jobject lpObject, TOUCHINPUT *lpStruct); >+void setTOUCHINPUTFields(JNIEnv *env, jobject lpObject, TOUCHINPUT *lpStruct); >+#define TOUCHINPUT_sizeof() sizeof(TOUCHINPUT) >+#else >+#define cacheTOUCHINPUTFields(a,b) >+#define getTOUCHINPUTFields(a,b,c) NULL >+#define setTOUCHINPUTFields(a,b,c) >+#define TOUCHINPUT_sizeof() 0 >+#endif >+ > #ifndef NO_TRACKMOUSEEVENT > void cacheTRACKMOUSEEVENTFields(JNIEnv *env, jobject lpObject); > TRACKMOUSEEVENT *getTRACKMOUSEEVENTFields(JNIEnv *env, jobject lpObject, TRACKMOUSEEVENT *lpStruct); >Index: Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/FLICK_DATA.java >=================================================================== >RCS file: Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/FLICK_DATA.java >diff -N Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/FLICK_DATA.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/FLICK_DATA.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,17 @@ >+ >+package org.eclipse.swt.internal.win32; >+ >+public class FLICK_DATA { >+ public int iFlickActionCommandCode; >+ /* @field cast=(unsigned int) */ >+ public int iFlickDirection; >+ public boolean fControlModifier; >+ public boolean fMenuModifier; >+ public boolean fAltGRModifier; >+ public boolean fWinModifier; >+ public boolean fShiftModifier; >+ public int iReserved; >+ public boolean fOnInkingSurface; >+ public int iActionArgument; >+ public static final int sizeof = OS.FLICK_DATA_sizeof(); >+} >Index: Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/FLICK_POINT.java >=================================================================== >RCS file: Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/FLICK_POINT.java >diff -N Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/FLICK_POINT.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/FLICK_POINT.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,7 @@ >+package org.eclipse.swt.internal.win32; >+ >+public class FLICK_POINT { >+ public int x; >+ public int y; >+ public static final int sizeof = OS.FLICK_POINT_sizeof(); >+} >Index: Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/GESTURECONFIG.java >=================================================================== >RCS file: Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/GESTURECONFIG.java >diff -N Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/GESTURECONFIG.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/GESTURECONFIG.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,8 @@ >+package org.eclipse.swt.internal.win32; >+ >+public class GESTURECONFIG { >+ public int dwID; // gesture ID >+ public int dwWant; // settings related to gesture ID that are to be turned on >+ public int dwBlock; // settings related to gesture ID that are to be turned off >+ public static final int sizeof = OS.GESTURECONFIG_sizeof (); >+} >Index: Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/GESTUREINFO.java >=================================================================== >RCS file: Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/GESTUREINFO.java >diff -N Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/GESTUREINFO.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/GESTUREINFO.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,19 @@ >+package org.eclipse.swt.internal.win32; >+ >+public class GESTUREINFO { >+ public int cbSize; >+ public int dwFlags; >+ public int dwID; >+ /** @field cast=(HWND) */ >+ public int /*long*/ hwndTarget; >+ // POINTS ptsLocation >+ /** @field accessor=ptsLocation.x */ >+ public short x; >+ /** @field accessor=ptsLocation.y */ >+ public short y; >+ public int dwInstanceID; >+ public int dwSequenceID; >+ public long ullArguments; >+ public int cbExtraArgs; >+ public static final int sizeof = OS.GESTUREINFO_sizeof (); >+} >Index: Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/OS.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/OS.java,v >retrieving revision 1.446 >diff -u -r1.446 OS.java >--- Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/OS.java 15 Dec 2010 11:42:13 -0000 1.446 >+++ Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/OS.java 20 Dec 2010 18:46:43 -0000 >@@ -679,6 +679,15 @@ > public static final int FILE_ATTRIBUTE_DIRECTORY = 0x00000010; > public static final int FILE_ATTRIBUTE_NORMAL = 0x00000080; > public static final int FILE_MAP_READ = 4; >+ public static final int FLICKDIRECTION_RIGHT = 0; >+ public static final int FLICKDIRECTION_UPRIGHT = 1; >+ public static final int FLICKDIRECTION_UP = 2; >+ public static final int FLICKDIRECTION_UPLEFT = 3; >+ public static final int FLICKDIRECTION_LEFT = 4; >+ public static final int FLICKDIRECTION_DOWNLEFT = 5; >+ public static final int FLICKDIRECTION_DOWN = 6; >+ public static final int FLICKDIRECTION_DOWNRIGHT = 7; >+ public static final int FLICKDIRECTION_INVALID = 8; > public static final int FNERR_INVALIDFILENAME = 0x3002; > public static final int FNERR_BUFFERTOOSMALL = 0x3003; > public static final int FOF_SILENT = 0x0004; >@@ -705,7 +714,17 @@ > public static final int GCS_CURSORPOS = 0x0080; > public static final int GDT_VALID = 0; > public static final int GET_FEATURE_FROM_PROCESS = 0x2; >+ public static final int GF_BEGIN = 1; >+ public static final int GF_INERTIA = 2; >+ public static final int GF_END = 4; > public static final int GGI_MARK_NONEXISTING_GLYPHS = 1; >+ public static final int GID_BEGIN = 1; >+ public static final int GID_END = 2; >+ public static final int GID_ZOOM = 3; >+ public static final int GID_PAN = 4; >+ public static final int GID_ROTATE = 5; >+ public static final int GID_TWOFINGERTAP = 6; >+ public static final int GID_PRESSANDTAP = 7; > public static final int GLPS_CLOSED = 1; > public static final int GLPS_OPENED = 2; > public static final int GM_ADVANCED = 2; >@@ -1204,6 +1223,8 @@ > public static final int MWMO_INPUTAVAILABLE = 0x4; > public static final int MWT_LEFTMULTIPLY = 2; > public static final int NI_COMPOSITIONSTR = 0x15; >+ public static final int NID_READY = 0x80; >+ public static final int NID_MULTI_INPUT = 0x40; > public static final int NIF_ICON = 0x00000002; > public static final int NIF_INFO = 0x00000010; > public static final int NIF_MESSAGE = 0x00000001; >@@ -1519,6 +1540,8 @@ > public static final int SM_CMOUSEBUTTONS = 43; > public static final int SM_CYSCREEN = 0x1; > public static final int SM_CYVSCROLL = 0x14; >+ public static final int SM_DIGITIZER = 94; >+ public static final int SM_MAXIMUMTOUCHES= 95; > // public static final int SM_DBCSENABLED = 0x2A; > // public static final int SM_IMMENABLED = 0x52; > public static final int SPI_GETFONTSMOOTHINGTYPE = 0x200A; >@@ -1739,6 +1762,13 @@ > public static final int TME_QUERY = 0x40000000; > public static final int TMPF_VECTOR = 0x2; > public static final int TMT_CONTENTMARGINS = 3602; >+ public static final int TOUCHEVENTF_MOVE = 0x0001; >+ public static final int TOUCHEVENTF_DOWN = 0x0002; >+ public static final int TOUCHEVENTF_UP = 0x0004; >+ public static final int TOUCHEVENTF_INRANGE = 0x0008; >+ public static final int TOUCHEVENTF_PRIMARY = 0x0010; >+ public static final int TOUCHEVENTF_NOCOALESCE = 0x0020; >+ public static final int TOUCHEVENTF_PALM = 0x0080; > public static final String TOOLBARCLASSNAME = "ToolbarWindow32"; //$NON-NLS-1$ > public static final String TOOLTIPS_CLASS = "tooltips_class32"; //$NON-NLS-1$ > public static final int TP_BUTTON = 1; >@@ -2067,6 +2097,7 @@ > public static final int WM_ENDSESSION = 0x16; > public static final int WM_ENTERIDLE = 0x121; > public static final int WM_ERASEBKGND = 0x14; >+ public static final int WM_GESTURE = 0x0119; > public static final int WM_GETDLGCODE = 0x87; > public static final int WM_GETFONT = 0x31; > // public static final int WM_GETICON = 0x7f; >@@ -2139,8 +2170,10 @@ > public static final int WM_SYSCOMMAND = 0x112; > public static final int WM_SYSKEYDOWN = 0x104; > public static final int WM_SYSKEYUP = 0x105; >+ public static final int WM_TABLET_FLICK = 0x02C0 + 11; > public static final int WM_TIMER = 0x113; > public static final int WM_THEMECHANGED = 0x031a; >+ public static final int WM_TOUCH = 0x240; > public static final int WM_UNDO = 0x304; > public static final int WM_UPDATEUISTATE = 0x0128; > public static final int WM_USER = 0x400; >@@ -2220,7 +2253,11 @@ > public static final native int EXTLOGFONTW_sizeof (); > public static final native int EXTLOGPEN_sizeof (); > public static final native int FILETIME_sizeof (); >+public static final native int FLICK_DATA_sizeof (); >+public static final native int FLICK_POINT_sizeof (); > public static final native int GCP_RESULTS_sizeof (); >+public static final native int GESTURECONFIG_sizeof (); >+public static final native int GESTUREINFO_sizeof (); > public static final native int GRADIENT_RECT_sizeof (); > public static final native int GUITHREADINFO_sizeof (); > public static final native int HDITEM_sizeof (); >@@ -2329,6 +2366,7 @@ > public static final native int TF_DA_COLOR_sizeof (); > public static final native int TF_DISPLAYATTRIBUTE_sizeof (); > public static final native int TOOLINFO_sizeof (); >+public static final native int TOUCHINPUT_sizeof(); > public static final native int TRACKMOUSEEVENT_sizeof (); > public static final native int TRIVERTEX_sizeof (); > public static final native int TVHITTESTINFO_sizeof (); >@@ -3524,6 +3562,11 @@ > public static final native boolean CloseClipboard (); > /** @param hdc cast=(HDC) */ > public static final native int /*long*/ CloseEnhMetaFile (int /*long*/ hdc); >+/** >+ * @method flags=dynamic >+ * @param hGesture cast=(HGESTUREINFO) >+ */ >+public static final native int /*long*/ CloseGestureInfoHandle (int /*long*/ hGesture); > /** @param hObject cast=(HANDLE) */ > public static final native boolean CloseHandle (int /*long*/ hObject); > /** >@@ -3532,6 +3575,11 @@ > */ > public static final native int CloseThemeData (int /*long*/ hTheme); > /** >+ * @method flags=dynamic >+ * @param hTouchInput cast=(HTOUCHINPUT) >+ */ >+public static final native boolean CloseTouchInputHandle(int /*long*/ hTouchInput); >+/** > * @param rclsid cast=(REFCLSID) > * @param pUnkOuter cast=(LPUNKNOWN) > * @param riid cast=(REFIID) >@@ -4165,6 +4213,12 @@ > /** @param hdc cast=(HDC) */ > public static final native int GetFontLanguageInfo (int /*long*/ hdc); > public static final native int /*long*/ GetForegroundWindow (); >+/** >+ * @method flags=dynamic >+ * @param hGestureInfo cast=(HGESTUREINFO) >+ * @param pGestureInfo cast=(PGESTUREINFO) >+ */ >+public static final native boolean GetGestureInfo(int /*long*/ hGestureInfo, GESTUREINFO pGestureInfo); > /** @param hdc cast=(HDC) */ > public static final native int GetGraphicsMode (int /*long*/ hdc); > /** >@@ -4515,6 +4569,13 @@ > */ > public static final native int GetTimeFormatA(int Locale, int dwFlags, SYSTEMTIME lpTime, byte [] lpFormat, byte [] lpTimeStr, int cchTime); > /** >+ * @method flags=dynamic >+ * @param hTouchInput cast=(HTOUCHINPUT) >+ * @param cInputs cast=(UINT) >+ * @param pTouchInputs cast=(PTOUCHINPUT) >+ */ >+public static final native boolean GetTouchInputInfo(int /*long*/ hTouchInput, int cInputs, int /*long*/ pTouchInputs, int cbSize); >+/** > * @param hWnd cast=(HWND) > * @param lpRect cast=(LPRECT) > * @param bErase cast=(BOOL) >@@ -4583,6 +4644,7 @@ > * @param lpXform cast=(LPXFORM) > */ > public static final native boolean GetWorldTransform (int /*long*/ hdc, float[] lpXform); >+public static final native double GID_ROTATE_ANGLE_FROM_ARGUMENT(long dwArgument); > /** @param lpString cast=(LPCWSTR) */ > public static final native int GlobalAddAtomW (char [] lpString); > /** @param lpString cast=(LPCTSTR) */ >@@ -4924,6 +4986,7 @@ > public static final native int /*long*/ LocalFree (int /*long*/ hMem); > /** @param hWndLock cast=(HWND) */ > public static final native boolean LockWindowUpdate (int /*long*/ hWndLock); >+public static final native int LODWORD (long l); > public static final native int LOWORD (int /*long*/ l); > /** @param hdc cast=(HDC) */ > public static final native boolean LPtoDP (int /*long*/ hdc, POINT lpPoints, int nCount); >@@ -5159,6 +5222,16 @@ > public static final native void MoveMemory (EXTLOGPEN Destination, int /*long*/ Source, int Length); > /** > * @param Destination cast=(PVOID),flags=no_in >+ * @param Source cast=(CONST VOID *),flags=no_out >+ */ >+public static final native void MoveMemory (FLICK_DATA Destination, int /*long*/ [] Source, int Length); >+/** >+ * @param Destination cast=(PVOID),flags=no_in >+ * @param Source cast=(CONST VOID *),flags=no_out >+ */ >+public static final native void MoveMemory (FLICK_POINT Destination, int /*long*/ [] Source, int Length); >+/** >+ * @param Destination cast=(PVOID),flags=no_in > * @param Source cast=(CONST VOID *) > */ > public static final native void MoveMemory (HDITEM Destination, int /*long*/ Source, int Length); >@@ -5377,6 +5450,11 @@ > * @param Destination cast=(PVOID),flags=no_in > * @param Source cast=(CONST VOID *) > */ >+public static final native void MoveMemory (TOUCHINPUT Destination, int /*long*/ Source, int Length); >+/** >+ * @param Destination cast=(PVOID),flags=no_in >+ * @param Source cast=(CONST VOID *) >+ */ > public static final native void MoveMemory (TVITEM Destination, int /*long*/ Source, int Length); > /** > * @param Destination cast=(PVOID),flags=no_in >@@ -5444,6 +5522,11 @@ > */ > public static final native void MoveMemory (int /*long*/ Destination, MOUSEINPUT Source, int Length); > /** >+ * @param Destination cast=(PVOID) >+ * @param Source cast=(CONST VOID *),flags=no_out >+ */ >+public static final native void MoveMemory (int /*long*/ Destination, GESTURECONFIG Source, int Length); >+/** > * @param hdc cast=(HDC) > * @param lPoint cast=(LPPOINT) > */ >@@ -5588,6 +5671,12 @@ > /** @param lpWndClass cast=(LPWNDCLASSW) */ > public static final native int RegisterClassW (WNDCLASS lpWndClass); > public static final native int RegisterClassA (WNDCLASS lpWndClass); >+/** >+ * @method flags=dynamic >+ * @param hWnd cast=(HWND) >+ * @param ulFlags cast=(ULONG) >+ */ >+public static final native boolean RegisterTouchWindow(int /*long*/ hWnd, int ulFlags); > /** @param lpString cast=(LPWSTR) */ > public static final native int RegisterWindowMessageW (char [] lpString); > /** @param lpString cast=(LPTSTR) */ >@@ -6298,6 +6387,12 @@ > public static final native int /*long*/ SetFocus (int /*long*/ hWnd); > /** @param hWnd cast=(HWND) */ > public static final native boolean SetForegroundWindow (int /*long*/ hWnd); >+/** >+ * @method flags=dynamic >+ * @param hwnd cast=(HWND) >+ * @param pGestureConfig cast=(PGESTURECONFIG) >+ */ >+public static final native boolean SetGestureConfig(int /*long*/ hwnd, int dwReserved, int cIDs, int /*long*/ pGestureConfig, int cbSize); > /** @param hdc cast=(HDC) */ > public static final native int SetGraphicsMode (int /*long*/ hdc, int iMode); > /** >@@ -6558,6 +6653,7 @@ > * @param pwszBuff cast=(LPWSTR) > */ > public static final native int ToUnicode (int wVirtKey, int wScanCode, byte [] lpKeyState, char [] pwszBuff, int cchBuff, int wFlags); >+public static final native long TOUCH_COORD_TO_PIXEL(long touchCoord); > /** > * @param hwndTV cast=(HWND) > * @param hitem cast=(HTREEITEM) >@@ -6618,6 +6714,11 @@ > * @param crKey cast=(COLORREF) > */ > public static final native boolean UpdateLayeredWindow (int /*long*/ hwnd, int /*long*/ hdcDst, POINT pptDst, SIZE psize, int /*long*/ hdcSrc, POINT pptSrc, int crKey, BLENDFUNCTION pblend, int dwFlags); >+/** >+ * @method flags=dynamic >+ * @param hWnd cast=(HWND) >+ */ >+public static final native boolean UnregisterTouchWindow (int /*long*/ hwnd); > /** @param hWnd cast=(HWND) */ > public static final native boolean UpdateWindow (int /*long*/ hWnd); > /** @param hWnd cast=(HWND) */ >Index: Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/TOUCHINPUT.java >=================================================================== >RCS file: Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/TOUCHINPUT.java >diff -N Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/TOUCHINPUT.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/TOUCHINPUT.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,26 @@ >+/******************************************************************************* >+ * Copyright (c) 2000, 2008 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ *******************************************************************************/ >+package org.eclipse.swt.internal.win32; >+ >+public class TOUCHINPUT { >+ public int /*long*/ x; >+ public int /*long*/ y; >+ /** @field cast=(HWND) */ >+ public int /*long*/ hSource; >+ public int dwID; >+ public int dwFlags; >+ public int dwMask; >+ public int dwTime; >+ public int /*long*/ dwExtraInfo; >+ public int cxContact; >+ public int cyContact; >+ public static final int sizeof = OS.TOUCHINPUT_sizeof(); >+} >Index: Eclipse SWT/common/org/eclipse/swt/SWT.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/SWT.java,v >retrieving revision 1.201 >diff -u -r1.201 SWT.java >--- Eclipse SWT/common/org/eclipse/swt/SWT.java 15 Dec 2010 11:42:13 -0000 1.201 >+++ Eclipse SWT/common/org/eclipse/swt/SWT.java 20 Dec 2010 18:46:46 -0000 >@@ -715,6 +715,54 @@ > */ > public static final int OpenDocument = 46; > >+ /** >+ * The touch event type (value is 46). >+ * >+ * <p> >+ * This event is sent when SWT receives notification that a document >+ * should be opened. >+ * </p> >+ * >+ * @see org.eclipse.swt.widgets.Display#addListener >+ * @see org.eclipse.swt.widgets.Event >+ * >+ * @since 3.7 >+ */ >+ public static final int Touch = 47; >+ >+ /** >+ * The gesture event type (value is 48). >+ * >+ * <p> >+ * This event is sent when a gesture has been performed. >+ * </p> >+ * >+ * @see org.eclipse.swt.widgets.Display#addListener >+ * @see org.eclipse.swt.widgets.Event >+ * @see org.eclipse.swt.widgets.SWT#GESTURE_MAGNIFY >+ * @see org.eclipse.swt.widgets.SWT#GESTURE_PAN >+ * @see org.eclipse.swt.widgets.SWT#GESTURE_ROTATE >+ * @see org.eclipse.swt.widgets.SWT#GESTURE_SWIPE >+ * >+ * @since 3.7 >+ */ >+ public static final int Gesture = 48; >+ >+ /** >+ * The end gesture event type (value is 49). >+ * >+ * <p> >+ * This event is sent when SWT receives notification that a document >+ * should be opened. >+ * </p> >+ * >+ * @see org.eclipse.swt.widgets.Display#addListener >+ * @see org.eclipse.swt.widgets.Event >+ * >+ * @since 3.7 >+ */ >+ public static final int EndGesture = 49; >+ > /* Event Details */ > > /** >@@ -897,6 +945,58 @@ > * (value is 1<<9). > */ > public static final int TRAVERSE_PAGE_NEXT = 1 << 9; >+ >+ /** >+ * Gesture event detail field value indicating that a continuous >+ * gesture is about to begin. >+ * >+ * @since 3.7 >+ */ >+ public static final int GESTURE_BEGIN = 1 << 1; >+ >+ /** >+ * Gesture event detail field value indicating that a continuous >+ * gesture has ended. >+ * >+ * @since 3.7 >+ */ >+ public static final int GESTURE_END = 1 << 2; >+ >+ /** >+ * Gesture event detail field value indicating that a >+ * rotation gesture has happened. Only the rotation field >+ * of the event is valid. >+ * >+ * @since 3.7 >+ */ >+ public static final int GESTURE_ROTATE = 1 << 3; >+ >+ /** >+ * Gesture event detail field value indicating that a >+ * swipe gesture has happened. Only the xDirection >+ * and yDirection fields of the event are valid. >+ * >+ * @since 3.7 >+ */ >+ public static final int GESTURE_SWIPE = 1 << 4; >+ >+ /** >+ * Gesture event detail field value indicating that a >+ * magnification gesture has happened. Only the magnification >+ * field of the event is valid. >+ * >+ * @since 3.7 >+ */ >+ public static final int GESTURE_MAGNIFY = 1 << 5; >+ >+ /** >+ * Gesture event detail field value indicating that a >+ * panning (two-finger scroll) gesture has happened. Only the >+ * xDirection and yDirection fields of the event are valid. >+ * >+ * @since 3.7 >+ */ >+ public static final int GESTURE_PAN = 1 << 6; > > /** > * A constant indicating that widgets have changed. >Index: Eclipse SWT/common/org/eclipse/swt/events/GestureAdapter.java >=================================================================== >RCS file: Eclipse SWT/common/org/eclipse/swt/events/GestureAdapter.java >diff -N Eclipse SWT/common/org/eclipse/swt/events/GestureAdapter.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ Eclipse SWT/common/org/eclipse/swt/events/GestureAdapter.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,37 @@ >+/******************************************************************************* >+ * Copyright (c) 2010 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ *******************************************************************************/ >+package org.eclipse.swt.events; >+ >+/** >+ * This adapter class provides default implementations for the >+ * methods described by the <code>GestureListener</code> interface. >+ * <p> >+ * Classes that wish to deal with <code>GestureEvent</code>s can >+ * extend this class and override only the methods which they are >+ * interested in. >+ * </p> >+ * >+ * @see GestureListener >+ * @see GestureEvent >+ * @see <a href="http://www.eclipse.org/swt/">Sample code and further information</a> >+ * @since 3.7 >+ */ >+public abstract class GestureAdapter implements GestureListener { >+ >+/** >+ * Sent when a recognized gesture has occurred. >+ * >+ * @param e an event containing information about the gesture. >+ */ >+public void gesture(GestureEvent e) { >+} >+ >+} >Index: Eclipse SWT/common/org/eclipse/swt/events/GestureEvent.java >=================================================================== >RCS file: Eclipse SWT/common/org/eclipse/swt/events/GestureEvent.java >diff -N Eclipse SWT/common/org/eclipse/swt/events/GestureEvent.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ Eclipse SWT/common/org/eclipse/swt/events/GestureEvent.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,161 @@ >+/******************************************************************************* >+ * Copyright (c) 2010 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ *******************************************************************************/ >+package org.eclipse.swt.events; >+ >+ >+import org.eclipse.swt.widgets.*; >+ >+/** >+ * Instances of this class are sent as a result of >+ * a touch-based gesture being generated by the user. >+ * <p> >+ * </p> >+ * >+ * @see GestureListener >+ * @see <a href="http://www.eclipse.org/swt/">Sample code and further information</a> >+ * @since 3.7 >+ */ >+ >+public class GestureEvent extends TypedEvent { >+ >+ /** >+ * the state of the keyboard modifier keys and mouse masks >+ * at the time the event was generated. >+ * >+ * @see org.eclipse.swt.SWT#MODIFIER_MASK >+ * @see org.eclipse.swt.SWT#BUTTON_MASK >+ */ >+ public int stateMask; >+ >+ /** >+ * The gesture type. >+ * <p><ul> >+ * <li>{@link org.eclipse.swt.SWT#GESTURE_NONE}</li> >+ * <li>{@link org.eclipse.swt.SWT#GESTURE_MAGNIFY}</li> >+ * <li>{@link org.eclipse.swt.SWT#GESTURE_PAN}</li> >+ * <li>{@link org.eclipse.swt.SWT#GESTURE_ROTATE}</li> >+ * <li>{@link org.eclipse.swt.SWT#GESTURE_SWIPE}</li> >+ * </ul></p> >+ * >+ * The value of the <code>detail</code> field determines which fields of the >+ * <code>GestureEvent</code> contain valid data. >+ */ >+ public int detail; >+ >+ /** >+ * Depending on the value of the <code>detail</code> field and the current platform, this field >+ * can mean the x coordinate of the centroid of the touches that make up the gesture (Windows), or the x coordinate of >+ * the screen location of the cursor at the time the gesture was performed (Mac OS X). >+ * >+ * NOTE: The definition of this field is subject to change before the API freeze for 3.7. >+ */ >+ public int x; >+ >+ /** >+ * Depending on the value of the <code>detail</code> field and the current platform, this field >+ * can mean the y coordinate of the centroid of the touches that make up the gesture (Windows), or the y component of >+ * the screen location of the cursor at the time the gesture was performed (Mac OS X). >+ * >+ * NOTE: The definition of this field is subject to change before the API freeze for 3.7. >+ */ >+ public int y; >+ >+ /** >+ * Number of degrees rotated on the device since the gesture started. Positive values indicated counter-clockwise >+ * rotation; negative values indicate clockwise rotation. >+ * >+ * This field is valid when the <code>detail</code> field is set to <code>GESTURE_ROTATE</code>. >+ */ >+ public double rotation; >+ >+ /** >+ * The meaning of this field depends on the value of the <code>detail</code> field. >+ * >+ * If <code>detail</code> is <code>GESTURE_SWIPE</code> >+ * and non-zero, a positive value indicates a swipe to the right, and a negative value indicates a swipe to the left. >+ * >+ * If <code>detail</code> is <code>GESTURE_PAN</code> a positive value indicates a pan to the right of that many pixels, >+ * and a negative value indicates a pan to the left of that many pixels. >+ * >+ * This field is valid when the <code>detail</code> field is set to <code>GESTURE_SWIPE</code> or <code>GESTURE_PAN</code>. >+ * Both the <code>xDirection</code> and <code>yDirection</code> can be valid for an individual gesture. >+ */ >+ public int xDirection; >+ >+ /** >+ * The meaning of this field depends on the value of the <code>detail</code> field. >+ * >+ * If <code>detail</code> is <code>GESTURE_SWIPE</code> >+ * and non-zero, a positive value indicates a swipe down, and a negative value indicates a swipe up. >+ * >+ * If <code>detail</code> is <code>GESTURE_PAN</code> a positive value indicates a pan downwards of that many pixels, >+ * and a negative value indicates a pan upwards of that many pixels. >+ * >+ * This field is valid when the <code>detail</code> field is set to <code>GESTURE_SWIPE</code> or <code>GESTURE_PAN</code>. >+ * Both the <code>xDirection</code> and <code>yDirection</code> can be valid for an individual gesture. >+ */ >+ public int yDirection; >+ >+ /** >+ * Scale factor to be applied. In the first <code>GESTURE_MAGNIFY</code> received for a magnification this value will be 1.0 >+ * and will then fluctuate as the user moves their fingers. >+ * >+ * This field is valid when the <code>detail</code> field is set to <code>GESTURE_MAGNIFY</code>. >+ */ >+ public double magnification; >+ >+ /** >+ * A flag indicating whether the operation should be allowed. >+ * Setting this field to <code>false</code> will cancel the operation. >+ */ >+ public boolean doit; >+ >+ static final long serialVersionUID = -8348741538373572182L; >+ >+/** >+ * Constructs a new instance of this class based on the >+ * information in the given untyped event. >+ * >+ * @param e the untyped event containing the information >+ */ >+public GestureEvent(Event e) { >+ super(e); >+ this.stateMask = e.stateMask; >+ this.x = e.x; >+ this.y = e.y; >+ this.detail = e.detail; >+ this.rotation = e.rotation; >+ this.xDirection = e.xDirection; >+ this.yDirection = e.yDirection; >+ this.magnification = e.magnification; >+ this.doit = e.doit; >+} >+ >+/** >+ * Returns a string containing a concise, human-readable >+ * description of the receiver. >+ * >+ * @return a string representation of the event >+ */ >+public String toString() { >+ String string = super.toString (); >+ return string.substring (0, string.length() - 1) // remove trailing '}' >+ + " stateMask=" + stateMask >+ + " detail=" + detail >+ + " x=" + x >+ + " y=" + y >+ + " rotation=" + rotation >+ + " xDirection=" + xDirection >+ + " yDirection=" + yDirection >+ + " magnification=" + magnification >+ + "}"; >+} >+} >Index: Eclipse SWT/common/org/eclipse/swt/events/GestureListener.java >=================================================================== >RCS file: Eclipse SWT/common/org/eclipse/swt/events/GestureListener.java >diff -N Eclipse SWT/common/org/eclipse/swt/events/GestureListener.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ Eclipse SWT/common/org/eclipse/swt/events/GestureListener.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,42 @@ >+/******************************************************************************* >+ * Copyright (c) 2010 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ *******************************************************************************/ >+package org.eclipse.swt.events; >+ >+ >+import org.eclipse.swt.internal.*; >+ >+/** >+ * Classes which implement this interface provide methods >+ * that deal with the events that are generated as gestures >+ * are triggered when the user interacts with a touch pad or >+ * touch screen. >+ * <p> >+ * After creating an instance of a class that implements >+ * this interface it can be added to a control using the >+ * <code>addGestureListener</code> method and removed using >+ * the <code>removeGestureListener</code> method. When a >+ * gesture is invoked, the appropriate method will be invoked. >+ * </p> >+ * >+ * @see GestureAdapter >+ * @see GestureEvent >+ * @since 3.7 >+ */ >+public interface GestureListener extends SWTEventListener { >+ >+/** >+ * Sent when a recognized gesture has occurred. >+ * >+ * @param e an event containing information about the gesture. >+ */ >+public void gesture(GestureEvent e); >+ >+} >\ No newline at end of file >Index: Eclipse SWT/common/org/eclipse/swt/events/TouchAdapter.java >=================================================================== >RCS file: Eclipse SWT/common/org/eclipse/swt/events/TouchAdapter.java >diff -N Eclipse SWT/common/org/eclipse/swt/events/TouchAdapter.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ Eclipse SWT/common/org/eclipse/swt/events/TouchAdapter.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,39 @@ >+/******************************************************************************* >+ * Copyright (c) 2010 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ *******************************************************************************/ >+package org.eclipse.swt.events; >+ >+ >+/** >+ * This adapter class provides default implementations for the >+ * methods described by the <code>TouchListener</code> interface. >+ * <p> >+ * Classes that wish to deal with <code>TouchEvent</code>s can >+ * extend this class and override only the methods which they are >+ * interested in. >+ * </p> >+ * >+ * @see TouchListener >+ * @see TouchEvent >+ * @see <a href="http://www.eclipse.org/swt/">Sample code and further information</a> >+ * @since 3.7 >+ */ >+public class TouchAdapter implements TouchListener { >+ >+/** >+ * Sent when a touch was canceled for some reason. The default behavior is >+ * to do nothing. >+ * >+ * @param e >+ * an event containing information about the touch >+ */ >+public void touch(TouchEvent e) { >+} >+} >Index: Eclipse SWT/common/org/eclipse/swt/events/TouchEvent.java >=================================================================== >RCS file: Eclipse SWT/common/org/eclipse/swt/events/TouchEvent.java >diff -N Eclipse SWT/common/org/eclipse/swt/events/TouchEvent.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ Eclipse SWT/common/org/eclipse/swt/events/TouchEvent.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,85 @@ >+/******************************************************************************* >+ * Copyright (c) 2010 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ *******************************************************************************/ >+package org.eclipse.swt.events; >+ >+ >+import org.eclipse.swt.widgets.*; >+ >+/** >+ * Instances of this class are sent as a result of >+ * a touch-based input source being touched. >+ * <p> >+ * </p> >+ * >+ * @see TouchListener >+ * @see TraverseListener >+ * @see <a href="http://www.eclipse.org/swt/">Sample code and further information</a> >+ */ >+ >+public class TouchEvent extends TypedEvent { >+ >+ public TouchState[] touches; >+ >+ /** >+ * the state of the keyboard modifier keys and mouse masks >+ * at the time the event was generated. >+ * >+ * @see org.eclipse.swt.SWT#MODIFIER_MASK >+ * @see org.eclipse.swt.SWT#BUTTON_MASK >+ */ >+ public int stateMask; >+ >+ /** >+ * the widget-relative, x coordinate of the pointer >+ * at the time the touch occurred >+ */ >+ public int x; >+ >+ /** >+ * the widget-relative, y coordinate of the pointer >+ * at the time the touch occurred >+ */ >+ public int y; >+ >+ static final long serialVersionUID = -8348741538373572182L; >+ >+/** >+ * Constructs a new instance of this class based on the >+ * information in the given untyped event. >+ * >+ * @param e the untyped event containing the information >+ */ >+public TouchEvent(Event e) { >+ super(e); >+ //this.touches = e.touches; >+ this.stateMask = e.stateMask; >+ this.x = e.x; >+ this.y = e.y; >+} >+ >+/** >+ * Returns a string containing a concise, human-readable >+ * description of the receiver. >+ * >+ * @return a string representation of the event >+ */ >+public String toString() { >+ String string = super.toString(); >+ string = string.substring (0, string.length() - 1); // remove trailing '}' >+ if (touches != null) { >+ for (int i = 0; i < touches.length; i++) { >+ string += "\n " + touches[i].toString(); >+ } >+ } >+ string += "}"; >+ return string; >+} >+} >Index: Eclipse SWT/common/org/eclipse/swt/events/TouchListener.java >=================================================================== >RCS file: Eclipse SWT/common/org/eclipse/swt/events/TouchListener.java >diff -N Eclipse SWT/common/org/eclipse/swt/events/TouchListener.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ Eclipse SWT/common/org/eclipse/swt/events/TouchListener.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,40 @@ >+/******************************************************************************* >+ * Copyright (c) 2010 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ *******************************************************************************/ >+package org.eclipse.swt.events; >+ >+ >+import org.eclipse.swt.internal.*; >+ >+/** >+ * Classes which implement this interface provide methods >+ * that deal with the events that are generated as keys >+ * are pressed on the system keyboard. >+ * <p> >+ * After creating an instance of a class that implements >+ * this interface it can be added to a control using the >+ * <code>addKeyListener</code> method and removed using >+ * the <code>removeKeyListener</code> method. When a >+ * key is pressed or released, the appropriate method will >+ * be invoked. >+ * </p> >+ * >+ * @see TouchAdapter >+ * @see TouchEvent >+ */ >+public interface TouchListener extends SWTEventListener { >+ >+/** >+ * Sent when a touch sequence begins, changes state, or ends. >+ * >+ * @param e an event containing information about the touch >+ */ >+public void touch(TouchEvent e); >+} >Index: Eclipse SWT/common/org/eclipse/swt/events/TouchState.java >=================================================================== >RCS file: Eclipse SWT/common/org/eclipse/swt/events/TouchState.java >diff -N Eclipse SWT/common/org/eclipse/swt/events/TouchState.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ Eclipse SWT/common/org/eclipse/swt/events/TouchState.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,84 @@ >+/******************************************************************************* >+ * Copyright (c) 2010 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ *******************************************************************************/ >+package org.eclipse.swt.events; >+ >+import org.eclipse.swt.internal.*; >+ >+/** >+ * Instances of this class are sent as a result of >+ * a touch-based input device being touched. It represents the state of a single finger in a touch. >+ * <p> >+ * </p> >+ * >+ * @see TouchEvent >+ * @see <a href="http://www.eclipse.org/swt/">Sample code and further information</a> >+ * @since 3.7 >+ */ >+ >+public final class TouchState implements SerializableCompatibility { >+ >+ public static final int TOUCHSTATE_DOWN = 1 << 0; >+ public static final int TOUCHSTATE_MOVE = 1 << 1; >+ public static final int TOUCHSTATE_STATIONARY = 1 << 2; >+ public static final int TOUCHSTATE_UP = 1 << 3; >+ >+ public long identity; >+ public long device; >+ public int phase; >+ public boolean primary; >+ >+ public double normalizedX, normalizedY; >+ public long screenX, screenY; >+ >+ static final long serialVersionUID = 4739171633050362401L; >+ >+/** >+ * Constructs a new touch state from the given inputs. >+ * >+ * @param identity Identity of the touch. Use this value to track changes to a touch during the touch's life. >+ * @param device Identifier for the device that generated the touch. Two touches may have the same identifier >+ * even though they came from different devices. >+ * @param phase One of the state constants representing the state of this touch. >+ * @param primary This touch represents the primary input of the current touch session. >+ * @param screenX X location of the touch in screen coordinates >+ * @param screenY Y location of the touch in screen coordinates >+ * @param normalizedX X location of the touch, normalized to a value 0.0 to 1.0 inclusive. >+ * @param normalizedY Y location of the touch, normalized to a value 0.0 to 1.0 inclusive. >+ */ >+public TouchState(long identity, long device, int phase, boolean primary, long screenX, long screenY, double normalizedX, double normalizedY) { >+ this.identity = identity; >+ this.device = device; >+ this.phase = phase; >+ this.primary = primary; >+ this.screenX = screenX; >+ this.screenY = screenY; >+ this.normalizedX = normalizedX; >+ this.normalizedY = normalizedY; >+} >+ >+/** >+ * Returns a string containing a concise, human-readable >+ * description of the receiver. >+ * >+ * @return a string representation of the event >+ */ >+public String toString() { >+ return "{identity=" + identity >+ + " device=" + device >+ + " phase=" + phase >+ + " primary=" + primary >+ + " normalizedX=" + normalizedX >+ + " normalizedY=" + normalizedY >+ + " screenX=" + screenX >+ + " screenY=" + screenY >+ + "}"; >+} >+} >Index: Eclipse SWT/common/org/eclipse/swt/widgets/Event.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/Event.java,v >retrieving revision 1.39 >diff -u -r1.39 Event.java >--- Eclipse SWT/common/org/eclipse/swt/widgets/Event.java 31 May 2010 16:44:09 -0000 1.39 >+++ Eclipse SWT/common/org/eclipse/swt/widgets/Event.java 20 Dec 2010 18:46:47 -0000 >@@ -215,6 +215,40 @@ > */ > public Object data; > >+ /** >+ * An array of the touch states for the current touch event. >+ * @since 3.7 >+ */ >+ //public Touch[] touches; >+ >+ /** >+ * If nonzero, a positive value indicates a swipe to the right, >+ * and a negative value indicates a swipe to the left. >+ * @since 3.7 >+ */ >+ public int xDirection; >+ >+ /** >+ * If nonzero, a positive value indicates a swipe in the up direction, >+ * and a negative value indicates a swipe in the down direction. >+ * @since 3.7 >+ */ >+ public int yDirection; >+ >+ /** >+ * Change in magnification. This value should be added to the current >+ * scaling of an item to get the new scale factor. >+ * @since 3.7 >+ */ >+ public double magnification; >+ >+ /** >+ * Number of degrees rotated on the track pad. >+ * @since 3.7 >+ */ >+ public double rotation; >+ >+ > /** > * Gets the bounds. > * >Index: Eclipse SWT/common/org/eclipse/swt/widgets/TypedListener.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/TypedListener.java,v >retrieving revision 1.25 >diff -u -r1.25 TypedListener.java >--- Eclipse SWT/common/org/eclipse/swt/widgets/TypedListener.java 31 May 2010 16:44:09 -0000 1.25 >+++ Eclipse SWT/common/org/eclipse/swt/widgets/TypedListener.java 20 Dec 2010 18:46:47 -0000 >@@ -143,6 +143,10 @@ > ((FocusListener) eventListener).focusLost(new FocusEvent(e)); > break; > } >+ case SWT.Gesture: { >+ ((GestureListener)eventListener).gesture(new GestureEvent(e)); >+ break; >+ } > case SWT.Help: { > ((HelpListener) eventListener).helpRequested (new HelpEvent (e)); > break; >Index: Eclipse SWT/win32/org/eclipse/swt/widgets/Control.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Control.java,v >retrieving revision 1.384 >diff -u -r1.384 Control.java >--- Eclipse SWT/win32/org/eclipse/swt/widgets/Control.java 20 Dec 2010 18:05:12 -0000 1.384 >+++ Eclipse SWT/win32/org/eclipse/swt/widgets/Control.java 20 Dec 2010 18:46:49 -0000 >@@ -10,13 +10,12 @@ > *******************************************************************************/ > package org.eclipse.swt.widgets; > >- >-import org.eclipse.swt.internal.gdip.*; >-import org.eclipse.swt.internal.win32.*; >-import org.eclipse.swt.graphics.*; > import org.eclipse.swt.*; >-import org.eclipse.swt.events.*; > import org.eclipse.swt.accessibility.*; >+import org.eclipse.swt.events.*; >+import org.eclipse.swt.graphics.*; >+import org.eclipse.swt.internal.gdip.*; >+import org.eclipse.swt.internal.win32.*; > > /** > * Control is the abstract superclass of all windowed user interface classes. >@@ -44,6 +43,8 @@ > */ > > public abstract class Control extends Widget implements Drawable { >+ static final int GESTURE_COUNT = 5; >+ > /** > * the handle to the OS resource > * (Warning: This field is platform dependent) >@@ -194,6 +195,32 @@ > > /** > * Adds the listener to the collection of listeners who will >+ * be notified when gesture events are generated for the control, >+ * by sending it one of the messages defined in the >+ * <code>GestureListener</code> interface. >+ * >+ * @param listener the listener which should be notified >+ * >+ * @exception IllegalArgumentException <ul> >+ * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> >+ * </ul> >+ * @exception SWTException <ul> >+ * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> >+ * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> >+ * </ul> >+ * >+ * @see GestureListener >+ * @see #removeGestureListener >+ */ >+public void addGestureListener (GestureListener listener) { >+ checkWidget(); >+ if (listener == null) error (SWT.ERROR_NULL_ARGUMENT); >+ TypedListener typedListener = new TypedListener (listener); >+ addListener (SWT.Gesture, typedListener); >+} >+ >+/** >+ * Adds the listener to the collection of listeners who will > * be notified when help events are generated for the control, > * by sending it one of the messages defined in the > * <code>HelpListener</code> interface. >@@ -640,6 +667,31 @@ > OS.ImmAssociateContext (handle, hIMC); > OS.ImmReleaseContext (hwndParent, hIMC); > } >+ >+} >+ >+void checkGesture() { >+ if (!OS.IsWinCE && OS.WIN32_VERSION >= OS.VERSION (6, 1)) { >+ int value = OS.GetSystemMetrics(OS.SM_DIGITIZER); >+ >+ if ((value & (OS.NID_READY | OS.NID_MULTI_INPUT)) != 0) { >+ int /*long*/ hHeap = OS.GetProcessHeap(); >+ int /*long*/ pConfigs = OS.HeapAlloc(hHeap, OS.HEAP_ZERO_MEMORY, GESTURE_COUNT * GESTURECONFIG.sizeof); >+ >+ if (pConfigs != 0) { >+ GESTURECONFIG config = new GESTURECONFIG(); >+ for (int i = 0; i < GESTURE_COUNT; i++) { >+ config.dwID = i + OS.GID_ZOOM; >+ config.dwWant = 1; >+ config.dwBlock = 0; >+ OS.MoveMemory(pConfigs + i * GESTURECONFIG.sizeof, config, GESTURECONFIG.sizeof); >+ } >+ >+ OS.SetGestureConfig(handle, 0, GESTURE_COUNT, pConfigs, GESTURECONFIG.sizeof); >+ OS.HeapFree(hHeap, 0, pConfigs); >+ } >+ } >+ } > } > > void createWidget () { >@@ -655,6 +707,7 @@ > setDefaultFont (); > checkMirrored (); > checkBorder (); >+ checkGesture(); > if ((state & PARENT_BACKGROUND) != 0) { > setBackground (); > } >@@ -2379,6 +2432,30 @@ > > /** > * Removes the listener from the collection of listeners who will >+ * be notified when gesture events are generated for the control. >+ * >+ * @param listener the listener which should no longer be notified >+ * >+ * @exception IllegalArgumentException <ul> >+ * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> >+ * </ul> >+ * @exception SWTException <ul> >+ * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> >+ * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> >+ * </ul> >+ * >+ * @see GestureListener >+ * @see #addGestureListener >+ */ >+public void removeGestureListener (GestureListener listener) { >+ checkWidget(); >+ if (listener == null) error (SWT.ERROR_NULL_ARGUMENT); >+ if (eventTable == null) return; >+ eventTable.unhook(SWT.Gesture, listener); >+} >+ >+/** >+ * Removes the listener from the collection of listeners who will > * be notified when the help events are generated for the control. > * > * @param listener the listener which should no longer be notified >@@ -4180,6 +4257,7 @@ > case OS.WM_ENDSESSION: result = WM_ENDSESSION (wParam, lParam); break; > case OS.WM_ENTERIDLE: result = WM_ENTERIDLE (wParam, lParam); break; > case OS.WM_ERASEBKGND: result = WM_ERASEBKGND (wParam, lParam); break; >+ case OS.WM_GESTURE: result = WM_GESTURE (wParam, lParam); break; > case OS.WM_GETDLGCODE: result = WM_GETDLGCODE (wParam, lParam); break; > case OS.WM_GETFONT: result = WM_GETFONT (wParam, lParam); break; > case OS.WM_GETOBJECT: result = WM_GETOBJECT (wParam, lParam); break; >@@ -4242,6 +4320,7 @@ > case OS.WM_SYSCOMMAND: result = WM_SYSCOMMAND (wParam, lParam); break; > case OS.WM_SYSKEYDOWN: result = WM_SYSKEYDOWN (wParam, lParam); break; > case OS.WM_SYSKEYUP: result = WM_SYSKEYUP (wParam, lParam); break; >+ case OS.WM_TABLET_FLICK: result = WM_TABLET_FLICK (wParam, lParam); break; > case OS.WM_TIMER: result = WM_TIMER (wParam, lParam); break; > case OS.WM_UNDO: result = WM_UNDO (wParam, lParam); break; > case OS.WM_UPDATEUISTATE: result = WM_UPDATEUISTATE (wParam, lParam); break; >@@ -4358,6 +4437,10 @@ > return null; > } > >+LRESULT WM_GESTURE (int /*long*/ wParam, int /*long*/ lParam) { >+ return wmGesture(handle, wParam, lParam); >+} >+ > LRESULT WM_GETDLGCODE (int /*long*/ wParam, int /*long*/ lParam) { > return null; > } >@@ -4951,6 +5034,10 @@ > return wmSysKeyUp (handle, wParam, lParam); > } > >+LRESULT WM_TABLET_FLICK (int /*long*/ wParam, int /*long*/ lParam) { >+ return wmTabletFlick (handle, wParam, lParam); >+} >+ > LRESULT WM_TIMER (int /*long*/ wParam, int /*long*/ lParam) { > return null; > } >Index: Eclipse SWT/win32/org/eclipse/swt/widgets/Display.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Display.java,v >retrieving revision 1.350 >diff -u -r1.350 Display.java >--- Eclipse SWT/win32/org/eclipse/swt/widgets/Display.java 21 Oct 2010 15:03:16 -0000 1.350 >+++ Eclipse SWT/win32/org/eclipse/swt/widgets/Display.java 20 Dec 2010 18:46:50 -0000 >@@ -246,6 +246,11 @@ > boolean accelKeyHit, mnemonicKeyHit; > boolean lockActiveWindow, captureChanged, xMouse; > >+ /* Gesture state */ >+ double magStartDistance, lastDistance; >+ double rotationAngle; >+ int lastX, lastY; >+ > /* Tool Tips */ > int nextToolTipId; > >Index: Eclipse SWT/win32/org/eclipse/swt/widgets/Widget.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Widget.java,v >retrieving revision 1.156 >diff -u -r1.156 Widget.java >--- Eclipse SWT/win32/org/eclipse/swt/widgets/Widget.java 31 May 2010 16:44:10 -0000 1.156 >+++ Eclipse SWT/win32/org/eclipse/swt/widgets/Widget.java 20 Dec 2010 18:46:51 -0000 >@@ -1080,6 +1080,81 @@ > } > } > >+boolean sendGestureEvent (GESTUREINFO gi) { >+ Event event = new Event (); >+ int type = 0; >+ POINT screenLoc = new POINT(); >+ screenLoc.x = gi.x; >+ screenLoc.y = gi.y; >+ OS.MapWindowPoints (0, gi.hwndTarget, screenLoc, 1); >+ event.x = screenLoc.x; >+ event.y = screenLoc.y; >+ >+ switch (gi.dwID){ >+ case OS.GID_ZOOM: >+ type = SWT.Gesture; >+ event.detail = SWT.GESTURE_MAGNIFY; >+ int fingerDistance = OS.LODWORD(gi.ullArguments); >+ if ((gi.dwFlags & OS.GF_BEGIN) != 0) { >+ event.detail = SWT.GESTURE_BEGIN; >+ display.magStartDistance = display.lastDistance = fingerDistance; >+ } else if ((gi.dwFlags & OS.GF_END) != 0) { >+ event.detail = SWT.GESTURE_END; >+ } >+ >+ // gi.ullArguments is the distance between the fingers. Scale factor is relative >+ // to that original value. >+ if (fingerDistance == display.lastDistance && event.detail == SWT.GESTURE_MAGNIFY) return false; >+ if (fingerDistance != 0) event.magnification = fingerDistance / display.magStartDistance; >+ display.lastDistance = fingerDistance; >+ break; >+ case OS.GID_PAN: >+ type = SWT.Gesture; >+ event.detail = SWT.GESTURE_PAN; >+ if ((gi.dwFlags & OS.GF_BEGIN) != 0) { >+ event.detail = SWT.GESTURE_BEGIN; >+ display.lastX = screenLoc.x; >+ display.lastY = screenLoc.y; >+ } else if ((gi.dwFlags & OS.GF_END) != 0) { >+ event.detail = SWT.GESTURE_END; >+ } >+ >+ if (display.lastX == screenLoc.x && display.lastY == screenLoc.y && event.detail == SWT.GESTURE_PAN) return false; >+ >+ event.xDirection = screenLoc.x - display.lastX; >+ event.yDirection = screenLoc.y - display.lastY; >+ >+ display.lastX = screenLoc.x; >+ display.lastY = screenLoc.y; >+ break; >+ case OS.GID_ROTATE: >+ type = SWT.Gesture; >+ event.detail = SWT.GESTURE_ROTATE; >+ double rotationInRadians = OS.GID_ROTATE_ANGLE_FROM_ARGUMENT(OS.LODWORD(gi.ullArguments)); >+ if ((gi.dwFlags & OS.GF_BEGIN) != 0) { >+ event.detail = SWT.GESTURE_BEGIN; >+ display.rotationAngle = rotationInRadians; >+ } else if ((gi.dwFlags & OS.GF_END) != 0) { >+ event.detail = SWT.GESTURE_END; >+ } >+ >+ // Feature in Win32: Rotation events are sent even when the fingers are at rest. >+ // If the current rotation is the same as the last one received don't send the event. >+ if (display.rotationAngle == rotationInRadians && event.detail == SWT.GESTURE_ROTATE) return false; >+ event.rotation = rotationInRadians * 180.0 / Compatibility.PI; >+ display.rotationAngle = rotationInRadians; >+ break; >+ default: >+ // Unknown gesture -- ignore. >+ break; >+ } >+ >+ if (type == 0) return false; >+ setInputState (event, type); >+ sendEvent (type, event); >+ return event.doit; >+} >+ > void sendSelectionEvent (int type) { > sendSelectionEvent (type, null, false); > } >@@ -1559,6 +1634,17 @@ > return showMenu (x, y) ? LRESULT.ZERO : null; > } > >+LRESULT wmGesture (int /*long*/ hwnd, int /*long*/ wParam, int /*long*/ lParam) { >+ boolean handled = false; >+ GESTUREINFO gi = new GESTUREINFO(); >+ gi.cbSize = GESTUREINFO.sizeof; >+ if (OS.GetGestureInfo(lParam, gi)) { >+ handled = sendGestureEvent(gi); >+ } >+ OS.CloseGestureInfoHandle(lParam); >+ return (handled ? LRESULT.ZERO : null); >+} >+ > LRESULT wmIMEChar (int /*long*/ hwnd, int /*long*/ wParam, int /*long*/ lParam) { > Display display = this.display; > display.lastKey = 0; >@@ -2565,6 +2651,69 @@ > return wmKeyUp (hwnd, wParam, lParam); > } > >+LRESULT wmTabletFlick (int /*long*/ hwnd, int /*long*/ wParam, int /*long*/ lParam) { >+ Event event = new Event (); >+ FLICK_DATA fData = new FLICK_DATA(); >+ int /*long*/ [] source = new int /*long*/ [1]; >+ source[0] = wParam; >+ OS.MoveMemory(fData, source, OS.FLICK_DATA_sizeof()); >+ >+ FLICK_POINT fPoint = new FLICK_POINT(); >+ source[0] = lParam; >+ OS.MoveMemory(fPoint, source, OS.FLICK_POINT_sizeof()); >+ >+ /* >+ * Feature in Win32: iFlickDirection is defined as a 3-bit field in a packed structure. >+ * Unpacking into a Java int (or long) maintains the sign. Mask off all but the last 3 bits >+ * to get the FLICK_DIRECTION enum value. >+ */ >+ fData.iFlickDirection &= 0x7; >+ >+ switch (fData.iFlickDirection) { >+ case OS.FLICKDIRECTION_RIGHT: >+ event.xDirection = 1; >+ event.yDirection = 0; >+ break; >+ case OS.FLICKDIRECTION_UPRIGHT: >+ event.xDirection = 1; >+ event.yDirection = -1; >+ break; >+ case OS.FLICKDIRECTION_UP: >+ event.xDirection = 0; >+ event.yDirection = -1; >+ break; >+ case OS.FLICKDIRECTION_UPLEFT: >+ event.xDirection = -1; >+ event.yDirection = -1; >+ break; >+ case OS.FLICKDIRECTION_LEFT: >+ event.xDirection = -1; >+ event.yDirection = 0; >+ break; >+ case OS.FLICKDIRECTION_DOWNLEFT: >+ event.xDirection = -1; >+ event.yDirection = 1; >+ break; >+ case OS.FLICKDIRECTION_DOWN: >+ event.xDirection = 0; >+ event.yDirection = 1; >+ break; >+ case OS.FLICKDIRECTION_DOWNRIGHT: >+ event.xDirection = 1; >+ event.yDirection = 1; >+ break; >+ } >+ >+ event.x = fPoint.x; >+ event.y = fPoint.y; >+ event.doit = true; >+ event.type = SWT.Gesture; >+ event.detail = SWT.GESTURE_SWIPE; >+ setInputState (event, SWT.Gesture); >+ sendEvent (SWT.Gesture, event); >+ return (event.doit == false ? LRESULT.ONE : null); >+} >+ > LRESULT wmXButtonDblClk (int /*long*/ hwnd, int /*long*/ wParam, int /*long*/ lParam) { > /* > * Feature in Windows. Windows sends the following
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 279884
:
179350
|
184198
|
184199
|
184200
|
184827
|
184828
|
184829
|
184914
|
184915
|
185101
|
185155
|
185192
| 185582 |
185586
|
185587
|
185600
|
185601
|
186057
|
186058
|
186059
|
186448
|
186449
|
186450
|
186761
|
186762
|
186763
|
186764