diff options
10 files changed, 295 insertions, 2 deletions
diff --git a/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/org.eclipse.swt.internal.win32.OS.properties b/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/org.eclipse.swt.internal.win32.OS.properties index 18ec4df76d..3bd7111bd3 100644 --- a/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/org.eclipse.swt.internal.win32.OS.properties +++ b/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/org.eclipse.swt.internal.win32.OS.properties @@ -264,6 +264,14 @@ KEYBDINPUT_dwFlags= KEYBDINPUT_time= KEYBDINPUT_dwExtraInfo= +org_eclipse_swt_internal_win32_LITEM= +LITEM_mask= +LITEM_iLink= +LITEM_state= +LITEM_stateMask= +LITEM_szID= +LITEM_szUrl= + org_eclipse_swt_internal_win32_LOGBRUSH= LOGBRUSH_lbStyle= LOGBRUSH_lbColor= @@ -438,6 +446,14 @@ NMHEADER_iItem= NMHEADER_iButton= NMHEADER_pitem=cast=(HDITEM FAR *) +org_eclipse_swt_internal_win32_NMLINK= +NMLINK_mask=accessor=item.mask +NMLINK_iLink=accessor=item.iLink +NMLINK_state=accessor=item.state +NMLINK_stateMask=accessor=item.stateMask +NMLINK_szID=accessor=item.szID +NMLINK_szUrl=accessor=item.szUrl + org_eclipse_swt_internal_win32_NMLISTVIEW= NMLISTVIEW_iItem= NMLISTVIEW_iSubItem= @@ -2378,6 +2394,11 @@ OS_MoveMemory__Lorg_eclipse_swt_internal_win32_NMHEADER_2II_0=cast=(PVOID),flags OS_MoveMemory__Lorg_eclipse_swt_internal_win32_NMHEADER_2II_1=cast=(CONST VOID *) OS_MoveMemory__Lorg_eclipse_swt_internal_win32_NMHEADER_2II_2= +OS_MoveMemory__Lorg_eclipse_swt_internal_win32_NMLINK_2II= +OS_MoveMemory__Lorg_eclipse_swt_internal_win32_NMLINK_2II_0=cast=(PVOID),flags=no_in +OS_MoveMemory__Lorg_eclipse_swt_internal_win32_NMLINK_2II_1=cast=(CONST VOID *) +OS_MoveMemory__Lorg_eclipse_swt_internal_win32_NMLINK_2II_2= + OS_MoveMemory__Lorg_eclipse_swt_internal_win32_NMLISTVIEW_2II= OS_MoveMemory__Lorg_eclipse_swt_internal_win32_NMLISTVIEW_2II_0=cast=(PVOID),flags=no_in OS_MoveMemory__Lorg_eclipse_swt_internal_win32_NMLISTVIEW_2II_1=cast=(CONST VOID *) @@ -3012,6 +3033,12 @@ OS_SendMessageA__IIILorg_eclipse_swt_internal_win32_HDLAYOUT_2_1= OS_SendMessageA__IIILorg_eclipse_swt_internal_win32_HDLAYOUT_2_2=cast=(WPARAM) OS_SendMessageA__IIILorg_eclipse_swt_internal_win32_HDLAYOUT_2_3=cast=LPARAM +OS_SendMessageA__IIILorg_eclipse_swt_internal_win32_LITEM_2= +OS_SendMessageA__IIILorg_eclipse_swt_internal_win32_LITEM_2_0=cast=(HWND) +OS_SendMessageA__IIILorg_eclipse_swt_internal_win32_LITEM_2_1= +OS_SendMessageA__IIILorg_eclipse_swt_internal_win32_LITEM_2_2=cast=(WPARAM) +OS_SendMessageA__IIILorg_eclipse_swt_internal_win32_LITEM_2_3=cast=(LPARAM) + OS_SendMessageA__IIILorg_eclipse_swt_internal_win32_LVCOLUMN_2= OS_SendMessageA__IIILorg_eclipse_swt_internal_win32_LVCOLUMN_2_0=cast=(HWND) OS_SendMessageA__IIILorg_eclipse_swt_internal_win32_LVCOLUMN_2_1= @@ -3156,6 +3183,12 @@ OS_SendMessageW__IIILorg_eclipse_swt_internal_win32_HDLAYOUT_2_1= OS_SendMessageW__IIILorg_eclipse_swt_internal_win32_HDLAYOUT_2_2=cast=WPARAM OS_SendMessageW__IIILorg_eclipse_swt_internal_win32_HDLAYOUT_2_3=cast=LPARAM +OS_SendMessageW__IIILorg_eclipse_swt_internal_win32_LITEM_2= +OS_SendMessageW__IIILorg_eclipse_swt_internal_win32_LITEM_2_0=cast=(HWND) +OS_SendMessageW__IIILorg_eclipse_swt_internal_win32_LITEM_2_1= +OS_SendMessageW__IIILorg_eclipse_swt_internal_win32_LITEM_2_2=cast=(WPARAM) +OS_SendMessageW__IIILorg_eclipse_swt_internal_win32_LITEM_2_3=cast=(LPARAM) + OS_SendMessageW__IIILorg_eclipse_swt_internal_win32_LVCOLUMN_2= OS_SendMessageW__IIILorg_eclipse_swt_internal_win32_LVCOLUMN_2_0=cast=(HWND) OS_SendMessageW__IIILorg_eclipse_swt_internal_win32_LVCOLUMN_2_1= diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os.c b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os.c index 5c0aa9d214..87372f66ff 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os.c +++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os.c @@ -5984,6 +5984,20 @@ fail: } #endif +#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMLINK_2II +JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_NMLINK_2II) + (JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2) +{ + NMLINK _arg0, *lparg0=NULL; + OS_NATIVE_ENTER(env, that, MoveMemory__Lorg_eclipse_swt_internal_win32_NMLINK_2II_FUNC); + if (arg0) if ((lparg0 = &_arg0) == NULL) goto fail; + MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2); +fail: + if (arg0 && lparg0) setNMLINKFields(env, arg0, lparg0); + OS_NATIVE_EXIT(env, that, MoveMemory__Lorg_eclipse_swt_internal_win32_NMLINK_2II_FUNC); +} +#endif + #ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMLISTVIEW_2II JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_NMLISTVIEW_2II) (JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2) @@ -7952,6 +7966,22 @@ fail: } #endif +#ifndef NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_LITEM_2 +JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__IIILorg_eclipse_swt_internal_win32_LITEM_2) + (JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3) +{ + LITEM _arg3, *lparg3=NULL; + jint rc = 0; + OS_NATIVE_ENTER(env, that, SendMessageA__IIILorg_eclipse_swt_internal_win32_LITEM_2_FUNC); + if (arg3) if ((lparg3 = getLITEMFields(env, arg3, &_arg3)) == NULL) goto fail; + rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3); +fail: + if (arg3 && lparg3) setLITEMFields(env, arg3, lparg3); + OS_NATIVE_EXIT(env, that, SendMessageA__IIILorg_eclipse_swt_internal_win32_LITEM_2_FUNC); + return rc; +} +#endif + #ifndef NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_LVCOLUMN_2 JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__IIILorg_eclipse_swt_internal_win32_LVCOLUMN_2) (JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3) @@ -8335,6 +8365,22 @@ fail: } #endif +#ifndef NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_LITEM_2 +JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__IIILorg_eclipse_swt_internal_win32_LITEM_2) + (JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3) +{ + LITEM _arg3, *lparg3=NULL; + jint rc = 0; + OS_NATIVE_ENTER(env, that, SendMessageW__IIILorg_eclipse_swt_internal_win32_LITEM_2_FUNC); + if (arg3) if ((lparg3 = getLITEMFields(env, arg3, &_arg3)) == NULL) goto fail; + rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3); +fail: + if (arg3 && lparg3) setLITEMFields(env, arg3, lparg3); + OS_NATIVE_EXIT(env, that, SendMessageW__IIILorg_eclipse_swt_internal_win32_LITEM_2_FUNC); + return rc; +} +#endif + #ifndef NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_LVCOLUMN_2 JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__IIILorg_eclipse_swt_internal_win32_LVCOLUMN_2) (JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3) diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os.h b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os.h index e6af7e4f0f..865104ce74 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os.h +++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os.h @@ -56,10 +56,12 @@ #define NO_GUITHREADINFO #define NO_HELPINFO #define NO_HIGHCONTRAST +#define NO_LITEM #define NO_MARGINS #define NO_MENUBARINFO #define NO_MENUINFO #define NO_MINMAXINFO +#define NO_NMLINK #define NO_NMREBARCHEVRON #define NO_NMREBARCHILDSIZE #define NO_NMTBHOTITEM @@ -269,6 +271,7 @@ #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_GRADIENT_1RECT_2I +#define NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMLINK_2II #define NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMTBHOTITEM_2II #define NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMTTDISPINFOA_2II #define NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMTTDISPINFOW_2II @@ -309,6 +312,7 @@ #define NO_SHGetPathFromIDListA #define NO_SHGetPathFromIDListW #define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_BUTTON_1IMAGELIST_2 +#define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_LITEM_2 #define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TVITEM_2 #define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TVINSERTSTRUCT_2 #define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TVHITTESTINFO_2 @@ -333,6 +337,7 @@ #define NO_SendMessageA__II_3II #define NO_SendMessageA__II_3I_3I #define NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_BUTTON_1IMAGELIST_2 +#define NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_LITEM_2 #define NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_MARGINS_2 #define NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_TOOLINFO_2 #define NO_SetDIBColorTable diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_stats.c b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_stats.c index 1ea3b0142c..b015dd6d13 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_stats.c +++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_stats.c @@ -14,8 +14,8 @@ #ifdef NATIVE_STATS -int OS_nativeFunctionCount = 630; -int OS_nativeFunctionCallCount[630]; +int OS_nativeFunctionCount = 633; +int OS_nativeFunctionCallCount[633]; char * OS_nativeFunctionNames[] = { "AbortDoc", "ActivateKeyboardLayout", @@ -397,6 +397,7 @@ char * OS_nativeFunctionNames[] = { "MoveMemory__Lorg_eclipse_swt_internal_win32_NMCUSTOMDRAW_2II", "MoveMemory__Lorg_eclipse_swt_internal_win32_NMHDR_2II", "MoveMemory__Lorg_eclipse_swt_internal_win32_NMHEADER_2II", + "MoveMemory__Lorg_eclipse_swt_internal_win32_NMLINK_2II", "MoveMemory__Lorg_eclipse_swt_internal_win32_NMLISTVIEW_2II", "MoveMemory__Lorg_eclipse_swt_internal_win32_NMLVCUSTOMDRAW_2II", "MoveMemory__Lorg_eclipse_swt_internal_win32_NMLVDISPINFO_2II", @@ -510,6 +511,7 @@ char * OS_nativeFunctionNames[] = { "SendMessageA__IIILorg_eclipse_swt_internal_win32_BUTTON_1IMAGELIST_2", "SendMessageA__IIILorg_eclipse_swt_internal_win32_HDITEM_2", "SendMessageA__IIILorg_eclipse_swt_internal_win32_HDLAYOUT_2", + "SendMessageA__IIILorg_eclipse_swt_internal_win32_LITEM_2", "SendMessageA__IIILorg_eclipse_swt_internal_win32_LVCOLUMN_2", "SendMessageA__IIILorg_eclipse_swt_internal_win32_LVHITTESTINFO_2", "SendMessageA__IIILorg_eclipse_swt_internal_win32_LVITEM_2", @@ -534,6 +536,7 @@ char * OS_nativeFunctionNames[] = { "SendMessageW__IIILorg_eclipse_swt_internal_win32_BUTTON_1IMAGELIST_2", "SendMessageW__IIILorg_eclipse_swt_internal_win32_HDITEM_2", "SendMessageW__IIILorg_eclipse_swt_internal_win32_HDLAYOUT_2", + "SendMessageW__IIILorg_eclipse_swt_internal_win32_LITEM_2", "SendMessageW__IIILorg_eclipse_swt_internal_win32_LVCOLUMN_2", "SendMessageW__IIILorg_eclipse_swt_internal_win32_LVHITTESTINFO_2", "SendMessageW__IIILorg_eclipse_swt_internal_win32_LVITEM_2", diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_stats.h b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_stats.h index 8e1a2494e0..1102c789a0 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_stats.h +++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_stats.h @@ -401,6 +401,7 @@ typedef enum { MoveMemory__Lorg_eclipse_swt_internal_win32_NMCUSTOMDRAW_2II_FUNC, MoveMemory__Lorg_eclipse_swt_internal_win32_NMHDR_2II_FUNC, MoveMemory__Lorg_eclipse_swt_internal_win32_NMHEADER_2II_FUNC, + MoveMemory__Lorg_eclipse_swt_internal_win32_NMLINK_2II_FUNC, MoveMemory__Lorg_eclipse_swt_internal_win32_NMLISTVIEW_2II_FUNC, MoveMemory__Lorg_eclipse_swt_internal_win32_NMLVCUSTOMDRAW_2II_FUNC, MoveMemory__Lorg_eclipse_swt_internal_win32_NMLVDISPINFO_2II_FUNC, @@ -514,6 +515,7 @@ typedef enum { SendMessageA__IIILorg_eclipse_swt_internal_win32_BUTTON_1IMAGELIST_2_FUNC, SendMessageA__IIILorg_eclipse_swt_internal_win32_HDITEM_2_FUNC, SendMessageA__IIILorg_eclipse_swt_internal_win32_HDLAYOUT_2_FUNC, + SendMessageA__IIILorg_eclipse_swt_internal_win32_LITEM_2_FUNC, SendMessageA__IIILorg_eclipse_swt_internal_win32_LVCOLUMN_2_FUNC, SendMessageA__IIILorg_eclipse_swt_internal_win32_LVHITTESTINFO_2_FUNC, SendMessageA__IIILorg_eclipse_swt_internal_win32_LVITEM_2_FUNC, @@ -538,6 +540,7 @@ typedef enum { SendMessageW__IIILorg_eclipse_swt_internal_win32_BUTTON_1IMAGELIST_2_FUNC, SendMessageW__IIILorg_eclipse_swt_internal_win32_HDITEM_2_FUNC, SendMessageW__IIILorg_eclipse_swt_internal_win32_HDLAYOUT_2_FUNC, + SendMessageW__IIILorg_eclipse_swt_internal_win32_LITEM_2_FUNC, SendMessageW__IIILorg_eclipse_swt_internal_win32_LVCOLUMN_2_FUNC, SendMessageW__IIILorg_eclipse_swt_internal_win32_LVHITTESTINFO_2_FUNC, SendMessageW__IIILorg_eclipse_swt_internal_win32_LVITEM_2_FUNC, diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.c b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.c index 1a669ac0a4..f08d9a0ea4 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.c +++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.c @@ -1405,6 +1405,64 @@ void setKEYBDINPUTFields(JNIEnv *env, jobject lpObject, KEYBDINPUT *lpStruct) } #endif +#ifndef NO_LITEM +typedef struct LITEM_FID_CACHE { + int cached; + jclass clazz; + jfieldID mask, iLink, state, stateMask, szID, szUrl; +} LITEM_FID_CACHE; + +LITEM_FID_CACHE LITEMFc; + +void cacheLITEMFields(JNIEnv *env, jobject lpObject) +{ + if (LITEMFc.cached) return; + LITEMFc.clazz = (*env)->GetObjectClass(env, lpObject); + LITEMFc.mask = (*env)->GetFieldID(env, LITEMFc.clazz, "mask", "I"); + LITEMFc.iLink = (*env)->GetFieldID(env, LITEMFc.clazz, "iLink", "I"); + LITEMFc.state = (*env)->GetFieldID(env, LITEMFc.clazz, "state", "I"); + LITEMFc.stateMask = (*env)->GetFieldID(env, LITEMFc.clazz, "stateMask", "I"); + LITEMFc.szID = (*env)->GetFieldID(env, LITEMFc.clazz, "szID", "[C"); + LITEMFc.szUrl = (*env)->GetFieldID(env, LITEMFc.clazz, "szUrl", "[C"); + LITEMFc.cached = 1; +} + +LITEM *getLITEMFields(JNIEnv *env, jobject lpObject, LITEM *lpStruct) +{ + if (!LITEMFc.cached) cacheLITEMFields(env, lpObject); + lpStruct->mask = (*env)->GetIntField(env, lpObject, LITEMFc.mask); + lpStruct->iLink = (*env)->GetIntField(env, lpObject, LITEMFc.iLink); + lpStruct->state = (*env)->GetIntField(env, lpObject, LITEMFc.state); + lpStruct->stateMask = (*env)->GetIntField(env, lpObject, LITEMFc.stateMask); + { + jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, LITEMFc.szID); + (*env)->GetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szID) / 2, (jchar *)lpStruct->szID); + } + { + jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, LITEMFc.szUrl); + (*env)->GetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szUrl) / 2, (jchar *)lpStruct->szUrl); + } + return lpStruct; +} + +void setLITEMFields(JNIEnv *env, jobject lpObject, LITEM *lpStruct) +{ + if (!LITEMFc.cached) cacheLITEMFields(env, lpObject); + (*env)->SetIntField(env, lpObject, LITEMFc.mask, (jint)lpStruct->mask); + (*env)->SetIntField(env, lpObject, LITEMFc.iLink, (jint)lpStruct->iLink); + (*env)->SetIntField(env, lpObject, LITEMFc.state, (jint)lpStruct->state); + (*env)->SetIntField(env, lpObject, LITEMFc.stateMask, (jint)lpStruct->stateMask); + { + jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, LITEMFc.szID); + (*env)->SetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szID) / 2, (jchar *)lpStruct->szID); + } + { + jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, LITEMFc.szUrl); + (*env)->SetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szUrl) / 2, (jchar *)lpStruct->szUrl); + } +} +#endif + #ifndef NO_LOGBRUSH typedef struct LOGBRUSH_FID_CACHE { int cached; @@ -2434,6 +2492,67 @@ void setNMHEADERFields(JNIEnv *env, jobject lpObject, NMHEADER *lpStruct) } #endif +#ifndef NO_NMLINK +typedef struct NMLINK_FID_CACHE { + int cached; + jclass clazz; + jfieldID mask, iLink, state, stateMask, szID, szUrl; +} NMLINK_FID_CACHE; + +NMLINK_FID_CACHE NMLINKFc; + +void cacheNMLINKFields(JNIEnv *env, jobject lpObject) +{ + if (NMLINKFc.cached) return; + cacheNMHDRFields(env, lpObject); + NMLINKFc.clazz = (*env)->GetObjectClass(env, lpObject); + NMLINKFc.mask = (*env)->GetFieldID(env, NMLINKFc.clazz, "mask", "I"); + NMLINKFc.iLink = (*env)->GetFieldID(env, NMLINKFc.clazz, "iLink", "I"); + NMLINKFc.state = (*env)->GetFieldID(env, NMLINKFc.clazz, "state", "I"); + NMLINKFc.stateMask = (*env)->GetFieldID(env, NMLINKFc.clazz, "stateMask", "I"); + NMLINKFc.szID = (*env)->GetFieldID(env, NMLINKFc.clazz, "szID", "[C"); + NMLINKFc.szUrl = (*env)->GetFieldID(env, NMLINKFc.clazz, "szUrl", "[C"); + NMLINKFc.cached = 1; +} + +NMLINK *getNMLINKFields(JNIEnv *env, jobject lpObject, NMLINK *lpStruct) +{ + if (!NMLINKFc.cached) cacheNMLINKFields(env, lpObject); + getNMHDRFields(env, lpObject, (NMHDR *)lpStruct); + lpStruct->item.mask = (*env)->GetIntField(env, lpObject, NMLINKFc.mask); + lpStruct->item.iLink = (*env)->GetIntField(env, lpObject, NMLINKFc.iLink); + lpStruct->item.state = (*env)->GetIntField(env, lpObject, NMLINKFc.state); + lpStruct->item.stateMask = (*env)->GetIntField(env, lpObject, NMLINKFc.stateMask); + { + jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, NMLINKFc.szID); + (*env)->GetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->item.szID) / 2, (jchar *)lpStruct->item.szID); + } + { + jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, NMLINKFc.szUrl); + (*env)->GetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->item.szUrl) / 2, (jchar *)lpStruct->item.szUrl); + } + return lpStruct; +} + +void setNMLINKFields(JNIEnv *env, jobject lpObject, NMLINK *lpStruct) +{ + if (!NMLINKFc.cached) cacheNMLINKFields(env, lpObject); + setNMHDRFields(env, lpObject, (NMHDR *)lpStruct); + (*env)->SetIntField(env, lpObject, NMLINKFc.mask, (jint)lpStruct->item.mask); + (*env)->SetIntField(env, lpObject, NMLINKFc.iLink, (jint)lpStruct->item.iLink); + (*env)->SetIntField(env, lpObject, NMLINKFc.state, (jint)lpStruct->item.state); + (*env)->SetIntField(env, lpObject, NMLINKFc.stateMask, (jint)lpStruct->item.stateMask); + { + jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, NMLINKFc.szID); + (*env)->SetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->item.szID) / 2, (jchar *)lpStruct->item.szID); + } + { + jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, NMLINKFc.szUrl); + (*env)->SetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->item.szUrl) / 2, (jchar *)lpStruct->item.szUrl); + } +} +#endif + #ifndef NO_NMLISTVIEW typedef struct NMLISTVIEW_FID_CACHE { int cached; diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.h b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.h index a30bc3f630..ce2779d92e 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.h +++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.h @@ -347,6 +347,18 @@ void setKEYBDINPUTFields(JNIEnv *env, jobject lpObject, KEYBDINPUT *lpStruct); #define KEYBDINPUT_sizeof() 0 #endif +#ifndef NO_LITEM +void cacheLITEMFields(JNIEnv *env, jobject lpObject); +LITEM *getLITEMFields(JNIEnv *env, jobject lpObject, LITEM *lpStruct); +void setLITEMFields(JNIEnv *env, jobject lpObject, LITEM *lpStruct); +#define LITEM_sizeof() sizeof(LITEM) +#else +#define cacheLITEMFields(a,b) +#define getLITEMFields(a,b,c) NULL +#define setLITEMFields(a,b,c) +#define LITEM_sizeof() 0 +#endif + #ifndef NO_LOGBRUSH void cacheLOGBRUSHFields(JNIEnv *env, jobject lpObject); LOGBRUSH *getLOGBRUSHFields(JNIEnv *env, jobject lpObject, LOGBRUSH *lpStruct); @@ -587,6 +599,18 @@ void setNMHEADERFields(JNIEnv *env, jobject lpObject, NMHEADER *lpStruct); #define NMHEADER_sizeof() 0 #endif +#ifndef NO_NMLINK +void cacheNMLINKFields(JNIEnv *env, jobject lpObject); +NMLINK *getNMLINKFields(JNIEnv *env, jobject lpObject, NMLINK *lpStruct); +void setNMLINKFields(JNIEnv *env, jobject lpObject, NMLINK *lpStruct); +#define NMLINK_sizeof() sizeof(NMLINK) +#else +#define cacheNMLINKFields(a,b) +#define getNMLINKFields(a,b,c) NULL +#define setNMLINKFields(a,b,c) +#define NMLINK_sizeof() 0 +#endif + #ifndef NO_NMLISTVIEW void cacheNMLISTVIEWFields(JNIEnv *env, jobject lpObject); NMLISTVIEW *getNMLISTVIEWFields(JNIEnv *env, jobject lpObject, NMLISTVIEW *lpStruct); diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/LITEM.java b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/LITEM.java new file mode 100644 index 0000000000..445f8b0acc --- /dev/null +++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/LITEM.java @@ -0,0 +1,21 @@ +/******************************************************************************* + * Copyright (c) 2000, 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.swt.internal.win32; + +public class LITEM { + public int mask; + public int iLink; + public int state; + public int stateMask; + public char[] szID = new char[OS.MAX_LINKID_TEXT]; + public char[] szUrl = new char[OS.L_MAX_URL_LENGTH]; + public static final int sizeof = 4280; +} diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/NMLINK.java b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/NMLINK.java new file mode 100644 index 0000000000..3239ab576b --- /dev/null +++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/NMLINK.java @@ -0,0 +1,22 @@ +/******************************************************************************* + * Copyright (c) 2000, 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.swt.internal.win32; + +public class NMLINK extends NMHDR { +// LITEM item; + public int mask; + public int iLink; + public int state; + public int stateMask; + public char[] szID = new char[OS.MAX_LINKID_TEXT]; + public char[] szUrl = new char[OS.L_MAX_URL_LENGTH]; + public static final int sizeof = 4292; +} diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/OS.java b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/OS.java index edbacf68ba..26630209b4 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/OS.java +++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/OS.java @@ -590,6 +590,7 @@ public class OS extends Platform { public static final int KEY_QUERY_VALUE = 0x1; public static final int KEY_READ = 0x20019; public static final int KEYEVENTF_KEYUP = 0x0002; + public static final int L_MAX_URL_LENGTH = 2084; public static final int LANG_NEUTRAL = 0x0; public static final int LANG_USER_DEFAULT = 1 << 10; public static final int LAYOUT_RTL = 0x1; @@ -630,6 +631,13 @@ public class OS extends Platform { public static final int LGRPID_ARABIC = 0xd; public static final int LGRPID_HEBREW = 0xc; public static final int LGRPID_INSTALLED = 1; + public static final int LIF_ITEMINDEX = 0x1; + public static final int LIF_STATE = 0x2; + public static final int LIS_FOCUSED = 0x1; + public static final int LIS_ENABLED = 0x2; + public static final int LM_GETIDEALHEIGHT = 0x701; + public static final int LM_SETITEM = 0x702; + public static final int LM_GETITEM = 0x703; public static final int LCID_SUPPORTED = 0x2; public static final int LOCALE_IDEFAULTANSICODEPAGE = 0x1004; public static final int LOCALE_SISO3166CTRYNAME = 0x5a; @@ -742,6 +750,7 @@ public class OS extends Platform { public static final int LVS_SHAREIMAGELISTS = 0x40; public static final int LVS_SHOWSELALWAYS = 0x8; public static final int LVS_SINGLESEL = 0x4; + public static final int MAX_LINKID_TEXT = 48; public static final int MAX_PATH = 260; public static final int MA_NOACTIVATE = 0x3; public static final int MB_ABORTRETRYIGNORE = 0x2; @@ -2172,6 +2181,11 @@ public static final int SendMessage (int hWnd, int Msg, int wParam, int lParam) return SendMessageA (hWnd, Msg, wParam, lParam); } +public static final int SendMessage (int hWnd, int Msg, int wParam, LITEM lParam) { + if (IsUnicode) return SendMessageW (hWnd, Msg, wParam, lParam); + return SendMessageA (hWnd, Msg, wParam, lParam); +} + public static final int SendMessage (int hWnd, int Msg, int wParam, LVCOLUMN lParam) { if (IsUnicode) return SendMessageW (hWnd, Msg, wParam, lParam); return SendMessageA (hWnd, Msg, wParam, lParam); @@ -2741,6 +2755,7 @@ public static final native void MoveMemory (NMLVDISPINFO Destination, int Source public static final native void MoveMemory (NMTVDISPINFO Destination, int Source, int Length); public static final native void MoveMemory (NMLVFINDITEM Destination, int Source, int Length); public static final native void MoveMemory (NMHEADER Destination, int Source, int Length); +public static final native void MoveMemory (NMLINK Destination, int Source, int Length); public static final native void MoveMemory (NMLISTVIEW Destination, int Source, int Length); public static final native void MoveMemory (NMREBARCHILDSIZE Destination, int Source, int Length); public static final native void MoveMemory (NMREBARCHEVRON Destination, int Source, int Length); @@ -2841,6 +2856,7 @@ public static final native int SendMessageW (int hWnd, int Msg, int wParam, shor public static final native int SendMessageW (int hWnd, int Msg, int wParam, int lParam); public static final native int SendMessageW (int hWnd, int Msg, int wParam, LVCOLUMN lParam); public static final native int SendMessageW (int hWnd, int Msg, int wParam, LVHITTESTINFO lParam); +public static final native int SendMessageW (int hWnd, int Msg, int wParam, LITEM lParam); public static final native int SendMessageW (int hWnd, int Msg, int wParam, LVITEM lParam); public static final native int SendMessageW (int hWnd, int Msg, int wParam, MARGINS lParam); public static final native int SendMessageW (int hWnd, int Msg, int wParam, REBARBANDINFO lParam); @@ -2865,6 +2881,7 @@ public static final native int SendMessageA (int hWnd, int Msg, int wParam, shor public static final native int SendMessageA (int hWnd, int Msg, int wParam, int lParam); public static final native int SendMessageA (int hWnd, int Msg, int wParam, LVCOLUMN lParam); public static final native int SendMessageA (int hWnd, int Msg, int wParam, LVHITTESTINFO lParam); +public static final native int SendMessageA (int hWnd, int Msg, int wParam, LITEM lParam); public static final native int SendMessageA (int hWnd, int Msg, int wParam, LVITEM lParam); public static final native int SendMessageA (int hWnd, int Msg, int wParam, MARGINS lParam); public static final native int SendMessageA (int hWnd, int Msg, int wParam, REBARBANDINFO lParam); |