summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/org.eclipse.swt.internal.win32.OS.properties33
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os.c46
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os.h5
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_stats.c7
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_stats.h3
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.c119
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.h24
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/LITEM.java21
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/NMLINK.java22
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/OS.java17
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);