From 45ead7e02d1b860c56546f26ef3ba779e562e49e Mon Sep 17 00:00:00 2001 From: Christophe Cornu Date: Wed, 26 Jan 2005 20:01:01 +0000 Subject: 18699 --- .../org.eclipse.swt.internal.win32.OS.properties | 32 +++++++++++ .../Eclipse SWT PI/win32/library/os.c | 64 ++++++++++++++++++++++ .../Eclipse SWT PI/win32/library/os.h | 13 ++--- .../Eclipse SWT PI/win32/library/os_stats.c | 8 ++- .../Eclipse SWT PI/win32/library/os_stats.h | 4 ++ .../Eclipse SWT PI/win32/library/os_structs.c | 46 ++++++++++++++++ .../Eclipse SWT PI/win32/library/os_structs.h | 12 ++++ .../swt/internal/win32/BUTTON_IMAGELIST.java | 21 +++++++ .../win32/org/eclipse/swt/internal/win32/OS.java | 21 +++++++ 9 files changed, 210 insertions(+), 11 deletions(-) create mode 100644 bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/BUTTON_IMAGELIST.java 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 11a12b09f4..183c235e87 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 @@ -45,6 +45,14 @@ BROWSEINFO_lpfn=cast=(BFFCALLBACK) BROWSEINFO_lParam= BROWSEINFO_iImage= +org_eclipse_swt_internal_win32_BUTTON_1IMAGELIST= +BUTTON_IMAGELIST_himl=cast=HIMAGELIST +BUTTON_IMAGELIST_margin_left=accessor=margin.left,cast=LONG +BUTTON_IMAGELIST_margin_top=accessor=margin.top,cast=LONG +BUTTON_IMAGELIST_margin_right=accessor=margin.right,cast=LONG +BUTTON_IMAGELIST_margin_bottom=accessor=margin.bottom,cast=LONG +BUTTON_IMAGELIST_uAlign=cast=UINT + org_eclipse_swt_internal_win32_CHOOSECOLOR= CHOOSECOLOR_lStructSize= CHOOSECOLOR_hwndOwner=cast=(HWND) @@ -2976,6 +2984,12 @@ OS_SendMessageA__IIII_1= OS_SendMessageA__IIII_2=cast=(WPARAM) OS_SendMessageA__IIII_3=cast=(LPARAM) +OS_SendMessageA__IIILorg_eclipse_swt_internal_win32_BUTTON_1IMAGELIST_2= +OS_SendMessageA__IIILorg_eclipse_swt_internal_win32_BUTTON_1IMAGELIST_2_0=cast=HWND +OS_SendMessageA__IIILorg_eclipse_swt_internal_win32_BUTTON_1IMAGELIST_2_1= +OS_SendMessageA__IIILorg_eclipse_swt_internal_win32_BUTTON_1IMAGELIST_2_2=cast=WPARAM +OS_SendMessageA__IIILorg_eclipse_swt_internal_win32_BUTTON_1IMAGELIST_2_3=cast=LPARAM + OS_SendMessageA__IIILorg_eclipse_swt_internal_win32_HDITEM_2= OS_SendMessageA__IIILorg_eclipse_swt_internal_win32_HDITEM_2_0=cast=HWND OS_SendMessageA__IIILorg_eclipse_swt_internal_win32_HDITEM_2_1= @@ -3024,6 +3038,12 @@ OS_SendMessageA__IIILorg_eclipse_swt_internal_win32_RECT_2_1= OS_SendMessageA__IIILorg_eclipse_swt_internal_win32_RECT_2_2=cast=(WPARAM) OS_SendMessageA__IIILorg_eclipse_swt_internal_win32_RECT_2_3=cast=(LPARAM) +OS_SendMessageA__IIILorg_eclipse_swt_internal_win32_SIZE_2= +OS_SendMessageA__IIILorg_eclipse_swt_internal_win32_SIZE_2_0=cast=HWND +OS_SendMessageA__IIILorg_eclipse_swt_internal_win32_SIZE_2_1= +OS_SendMessageA__IIILorg_eclipse_swt_internal_win32_SIZE_2_2=cast=WPARAM +OS_SendMessageA__IIILorg_eclipse_swt_internal_win32_SIZE_2_3=cast=LPARAM + OS_SendMessageA__IIILorg_eclipse_swt_internal_win32_TBBUTTONINFO_2= OS_SendMessageA__IIILorg_eclipse_swt_internal_win32_TBBUTTONINFO_2_0=cast=(HWND) OS_SendMessageA__IIILorg_eclipse_swt_internal_win32_TBBUTTONINFO_2_1= @@ -3108,6 +3128,12 @@ OS_SendMessageW__IIII_1= OS_SendMessageW__IIII_2=cast=(WPARAM) OS_SendMessageW__IIII_3=cast=(LPARAM) +OS_SendMessageW__IIILorg_eclipse_swt_internal_win32_BUTTON_1IMAGELIST_2= +OS_SendMessageW__IIILorg_eclipse_swt_internal_win32_BUTTON_1IMAGELIST_2_0=cast=HWND +OS_SendMessageW__IIILorg_eclipse_swt_internal_win32_BUTTON_1IMAGELIST_2_1= +OS_SendMessageW__IIILorg_eclipse_swt_internal_win32_BUTTON_1IMAGELIST_2_2=cast=WPARAM +OS_SendMessageW__IIILorg_eclipse_swt_internal_win32_BUTTON_1IMAGELIST_2_3=cast=LPARAM + OS_SendMessageW__IIILorg_eclipse_swt_internal_win32_HDITEM_2= OS_SendMessageW__IIILorg_eclipse_swt_internal_win32_HDITEM_2_0=cast=HWND OS_SendMessageW__IIILorg_eclipse_swt_internal_win32_HDITEM_2_1= @@ -3156,6 +3182,12 @@ OS_SendMessageW__IIILorg_eclipse_swt_internal_win32_RECT_2_1= OS_SendMessageW__IIILorg_eclipse_swt_internal_win32_RECT_2_2=cast=(WPARAM) OS_SendMessageW__IIILorg_eclipse_swt_internal_win32_RECT_2_3=cast=(LPARAM) +OS_SendMessageW__IIILorg_eclipse_swt_internal_win32_SIZE_2= +OS_SendMessageW__IIILorg_eclipse_swt_internal_win32_SIZE_2_0=cast=HWND +OS_SendMessageW__IIILorg_eclipse_swt_internal_win32_SIZE_2_1= +OS_SendMessageW__IIILorg_eclipse_swt_internal_win32_SIZE_2_2=cast=WPARAM +OS_SendMessageW__IIILorg_eclipse_swt_internal_win32_SIZE_2_3=cast=LPARAM + OS_SendMessageW__IIILorg_eclipse_swt_internal_win32_TBBUTTONINFO_2= OS_SendMessageW__IIILorg_eclipse_swt_internal_win32_TBBUTTONINFO_2_0=cast=(HWND) OS_SendMessageW__IIILorg_eclipse_swt_internal_win32_TBBUTTONINFO_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 fb0b80d987..de2b91720e 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 @@ -7872,6 +7872,22 @@ JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__IIII) } #endif +#ifndef NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_BUTTON_1IMAGELIST_2 +JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__IIILorg_eclipse_swt_internal_win32_BUTTON_1IMAGELIST_2) + (JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3) +{ + BUTTON_IMAGELIST _arg3, *lparg3=NULL; + jint rc = 0; + OS_NATIVE_ENTER(env, that, SendMessageA__IIILorg_eclipse_swt_internal_win32_BUTTON_1IMAGELIST_2_FUNC); + if (arg3) if ((lparg3 = getBUTTON_IMAGELISTFields(env, arg3, &_arg3)) == NULL) goto fail; + rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3); +fail: + if (arg3 && lparg3) setBUTTON_IMAGELISTFields(env, arg3, lparg3); + OS_NATIVE_EXIT(env, that, SendMessageA__IIILorg_eclipse_swt_internal_win32_BUTTON_1IMAGELIST_2_FUNC); + return rc; +} +#endif + #ifndef NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_HDITEM_2 JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__IIILorg_eclipse_swt_internal_win32_HDITEM_2) (JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3) @@ -8000,6 +8016,22 @@ fail: } #endif +#ifndef NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_SIZE_2 +JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__IIILorg_eclipse_swt_internal_win32_SIZE_2) + (JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3) +{ + SIZE _arg3, *lparg3=NULL; + jint rc = 0; + OS_NATIVE_ENTER(env, that, SendMessageA__IIILorg_eclipse_swt_internal_win32_SIZE_2_FUNC); + if (arg3) if ((lparg3 = getSIZEFields(env, arg3, &_arg3)) == NULL) goto fail; + rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3); +fail: + if (arg3 && lparg3) setSIZEFields(env, arg3, lparg3); + OS_NATIVE_EXIT(env, that, SendMessageA__IIILorg_eclipse_swt_internal_win32_SIZE_2_FUNC); + return rc; +} +#endif + #ifndef NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TBBUTTONINFO_2 JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__IIILorg_eclipse_swt_internal_win32_TBBUTTONINFO_2) (JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3) @@ -8223,6 +8255,22 @@ JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__IIII) } #endif +#ifndef NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_BUTTON_1IMAGELIST_2 +JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__IIILorg_eclipse_swt_internal_win32_BUTTON_1IMAGELIST_2) + (JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3) +{ + BUTTON_IMAGELIST _arg3, *lparg3=NULL; + jint rc = 0; + OS_NATIVE_ENTER(env, that, SendMessageW__IIILorg_eclipse_swt_internal_win32_BUTTON_1IMAGELIST_2_FUNC); + if (arg3) if ((lparg3 = getBUTTON_IMAGELISTFields(env, arg3, &_arg3)) == NULL) goto fail; + rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3); +fail: + if (arg3 && lparg3) setBUTTON_IMAGELISTFields(env, arg3, lparg3); + OS_NATIVE_EXIT(env, that, SendMessageW__IIILorg_eclipse_swt_internal_win32_BUTTON_1IMAGELIST_2_FUNC); + return rc; +} +#endif + #ifndef NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_HDITEM_2 JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__IIILorg_eclipse_swt_internal_win32_HDITEM_2) (JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3) @@ -8351,6 +8399,22 @@ fail: } #endif +#ifndef NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_SIZE_2 +JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__IIILorg_eclipse_swt_internal_win32_SIZE_2) + (JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3) +{ + SIZE _arg3, *lparg3=NULL; + jint rc = 0; + OS_NATIVE_ENTER(env, that, SendMessageW__IIILorg_eclipse_swt_internal_win32_SIZE_2_FUNC); + if (arg3) if ((lparg3 = getSIZEFields(env, arg3, &_arg3)) == NULL) goto fail; + rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3); +fail: + if (arg3 && lparg3) setSIZEFields(env, arg3, lparg3); + OS_NATIVE_EXIT(env, that, SendMessageW__IIILorg_eclipse_swt_internal_win32_SIZE_2_FUNC); + return rc; +} +#endif + #ifndef NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_TBBUTTONINFO_2 JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__IIILorg_eclipse_swt_internal_win32_TBBUTTONINFO_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 f391ddc25a..bee4053a95 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 @@ -12,15 +12,6 @@ #ifndef INC_os_H #define INC_os_H -#define WINVER 0x0500 -#define _WIN32_IE 0x0500 - -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 - -#define VC_EXTRALEAN - #include #include #include @@ -55,6 +46,7 @@ /* Structs excludes */ #ifdef _WIN32_WCE #define NO_BROWSEINFO +#define NO_BUTTON_IMAGELIST #define NO_CHOOSEFONT #define NO_COMBOBOXINFO #define NO_DOCINFO @@ -315,6 +307,7 @@ #define NO_SHBrowseForFolderW #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_TVITEM_2 #define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TVINSERTSTRUCT_2 #define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TVHITTESTINFO_2 @@ -331,12 +324,14 @@ #define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_UDACCEL_2 #define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_HDITEM_2 #define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_HDLAYOUT_2 +#define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_SIZE_2 #define NO_SendMessageA__IIII #define NO_SendMessageA__III_3S #define NO_SendMessageA__III_3I #define NO_SendMessageA__III_3B #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_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 79690ab6a9..0f48d7b65e 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 = 623; -int OS_nativeFunctionCallCount[623]; +int OS_nativeFunctionCount = 627; +int OS_nativeFunctionCallCount[627]; char * OS_nativeFunctionNames[] = { "AbortDoc", "ActivateKeyboardLayout", @@ -505,6 +505,7 @@ char * OS_nativeFunctionNames[] = { "SelectPalette", "SendInput", "SendMessageA__IIII", + "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_LVCOLUMN_2", @@ -513,6 +514,7 @@ char * OS_nativeFunctionNames[] = { "SendMessageA__IIILorg_eclipse_swt_internal_win32_MARGINS_2", "SendMessageA__IIILorg_eclipse_swt_internal_win32_REBARBANDINFO_2", "SendMessageA__IIILorg_eclipse_swt_internal_win32_RECT_2", + "SendMessageA__IIILorg_eclipse_swt_internal_win32_SIZE_2", "SendMessageA__IIILorg_eclipse_swt_internal_win32_TBBUTTONINFO_2", "SendMessageA__IIILorg_eclipse_swt_internal_win32_TBBUTTON_2", "SendMessageA__IIILorg_eclipse_swt_internal_win32_TCITEM_2", @@ -527,6 +529,7 @@ char * OS_nativeFunctionNames[] = { "SendMessageA__II_3II", "SendMessageA__II_3I_3I", "SendMessageW__IIII", + "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_LVCOLUMN_2", @@ -535,6 +538,7 @@ char * OS_nativeFunctionNames[] = { "SendMessageW__IIILorg_eclipse_swt_internal_win32_MARGINS_2", "SendMessageW__IIILorg_eclipse_swt_internal_win32_REBARBANDINFO_2", "SendMessageW__IIILorg_eclipse_swt_internal_win32_RECT_2", + "SendMessageW__IIILorg_eclipse_swt_internal_win32_SIZE_2", "SendMessageW__IIILorg_eclipse_swt_internal_win32_TBBUTTONINFO_2", "SendMessageW__IIILorg_eclipse_swt_internal_win32_TBBUTTON_2", "SendMessageW__IIILorg_eclipse_swt_internal_win32_TCITEM_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 bdea5757df..ffc855a4cc 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 @@ -509,6 +509,7 @@ typedef enum { SelectPalette_FUNC, SendInput_FUNC, SendMessageA__IIII_FUNC, + 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_LVCOLUMN_2_FUNC, @@ -517,6 +518,7 @@ typedef enum { SendMessageA__IIILorg_eclipse_swt_internal_win32_MARGINS_2_FUNC, SendMessageA__IIILorg_eclipse_swt_internal_win32_REBARBANDINFO_2_FUNC, SendMessageA__IIILorg_eclipse_swt_internal_win32_RECT_2_FUNC, + SendMessageA__IIILorg_eclipse_swt_internal_win32_SIZE_2_FUNC, SendMessageA__IIILorg_eclipse_swt_internal_win32_TBBUTTONINFO_2_FUNC, SendMessageA__IIILorg_eclipse_swt_internal_win32_TBBUTTON_2_FUNC, SendMessageA__IIILorg_eclipse_swt_internal_win32_TCITEM_2_FUNC, @@ -531,6 +533,7 @@ typedef enum { SendMessageA__II_3II_FUNC, SendMessageA__II_3I_3I_FUNC, SendMessageW__IIII_FUNC, + 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_LVCOLUMN_2_FUNC, @@ -539,6 +542,7 @@ typedef enum { SendMessageW__IIILorg_eclipse_swt_internal_win32_MARGINS_2_FUNC, SendMessageW__IIILorg_eclipse_swt_internal_win32_REBARBANDINFO_2_FUNC, SendMessageW__IIILorg_eclipse_swt_internal_win32_RECT_2_FUNC, + SendMessageW__IIILorg_eclipse_swt_internal_win32_SIZE_2_FUNC, SendMessageW__IIILorg_eclipse_swt_internal_win32_TBBUTTONINFO_2_FUNC, SendMessageW__IIILorg_eclipse_swt_internal_win32_TBBUTTON_2_FUNC, SendMessageW__IIILorg_eclipse_swt_internal_win32_TCITEM_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 b47a5da9e3..1a669ac0a4 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 @@ -211,6 +211,52 @@ void setBROWSEINFOFields(JNIEnv *env, jobject lpObject, BROWSEINFO *lpStruct) } #endif +#ifndef NO_BUTTON_IMAGELIST +typedef struct BUTTON_IMAGELIST_FID_CACHE { + int cached; + jclass clazz; + jfieldID himl, margin_left, margin_top, margin_right, margin_bottom, uAlign; +} BUTTON_IMAGELIST_FID_CACHE; + +BUTTON_IMAGELIST_FID_CACHE BUTTON_IMAGELISTFc; + +void cacheBUTTON_IMAGELISTFields(JNIEnv *env, jobject lpObject) +{ + if (BUTTON_IMAGELISTFc.cached) return; + BUTTON_IMAGELISTFc.clazz = (*env)->GetObjectClass(env, lpObject); + BUTTON_IMAGELISTFc.himl = (*env)->GetFieldID(env, BUTTON_IMAGELISTFc.clazz, "himl", "I"); + BUTTON_IMAGELISTFc.margin_left = (*env)->GetFieldID(env, BUTTON_IMAGELISTFc.clazz, "margin_left", "I"); + BUTTON_IMAGELISTFc.margin_top = (*env)->GetFieldID(env, BUTTON_IMAGELISTFc.clazz, "margin_top", "I"); + BUTTON_IMAGELISTFc.margin_right = (*env)->GetFieldID(env, BUTTON_IMAGELISTFc.clazz, "margin_right", "I"); + BUTTON_IMAGELISTFc.margin_bottom = (*env)->GetFieldID(env, BUTTON_IMAGELISTFc.clazz, "margin_bottom", "I"); + BUTTON_IMAGELISTFc.uAlign = (*env)->GetFieldID(env, BUTTON_IMAGELISTFc.clazz, "uAlign", "I"); + BUTTON_IMAGELISTFc.cached = 1; +} + +BUTTON_IMAGELIST *getBUTTON_IMAGELISTFields(JNIEnv *env, jobject lpObject, BUTTON_IMAGELIST *lpStruct) +{ + if (!BUTTON_IMAGELISTFc.cached) cacheBUTTON_IMAGELISTFields(env, lpObject); + lpStruct->himl = (HIMAGELIST)(*env)->GetIntField(env, lpObject, BUTTON_IMAGELISTFc.himl); + lpStruct->margin.left = (LONG)(*env)->GetIntField(env, lpObject, BUTTON_IMAGELISTFc.margin_left); + lpStruct->margin.top = (LONG)(*env)->GetIntField(env, lpObject, BUTTON_IMAGELISTFc.margin_top); + lpStruct->margin.right = (LONG)(*env)->GetIntField(env, lpObject, BUTTON_IMAGELISTFc.margin_right); + lpStruct->margin.bottom = (LONG)(*env)->GetIntField(env, lpObject, BUTTON_IMAGELISTFc.margin_bottom); + lpStruct->uAlign = (UINT)(*env)->GetIntField(env, lpObject, BUTTON_IMAGELISTFc.uAlign); + return lpStruct; +} + +void setBUTTON_IMAGELISTFields(JNIEnv *env, jobject lpObject, BUTTON_IMAGELIST *lpStruct) +{ + if (!BUTTON_IMAGELISTFc.cached) cacheBUTTON_IMAGELISTFields(env, lpObject); + (*env)->SetIntField(env, lpObject, BUTTON_IMAGELISTFc.himl, (jint)lpStruct->himl); + (*env)->SetIntField(env, lpObject, BUTTON_IMAGELISTFc.margin_left, (jint)lpStruct->margin.left); + (*env)->SetIntField(env, lpObject, BUTTON_IMAGELISTFc.margin_top, (jint)lpStruct->margin.top); + (*env)->SetIntField(env, lpObject, BUTTON_IMAGELISTFc.margin_right, (jint)lpStruct->margin.right); + (*env)->SetIntField(env, lpObject, BUTTON_IMAGELISTFc.margin_bottom, (jint)lpStruct->margin.bottom); + (*env)->SetIntField(env, lpObject, BUTTON_IMAGELISTFc.uAlign, (jint)lpStruct->uAlign); +} +#endif + #ifndef NO_CHOOSECOLOR typedef struct CHOOSECOLOR_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 9d68de78ba..a30bc3f630 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 @@ -59,6 +59,18 @@ void setBROWSEINFOFields(JNIEnv *env, jobject lpObject, BROWSEINFO *lpStruct); #define BROWSEINFO_sizeof() 0 #endif +#ifndef NO_BUTTON_IMAGELIST +void cacheBUTTON_IMAGELISTFields(JNIEnv *env, jobject lpObject); +BUTTON_IMAGELIST *getBUTTON_IMAGELISTFields(JNIEnv *env, jobject lpObject, BUTTON_IMAGELIST *lpStruct); +void setBUTTON_IMAGELISTFields(JNIEnv *env, jobject lpObject, BUTTON_IMAGELIST *lpStruct); +#define BUTTON_IMAGELIST_sizeof() sizeof(BUTTON_IMAGELIST) +#else +#define cacheBUTTON_IMAGELISTFields(a,b) +#define getBUTTON_IMAGELISTFields(a,b,c) NULL +#define setBUTTON_IMAGELISTFields(a,b,c) +#define BUTTON_IMAGELIST_sizeof() 0 +#endif + #ifndef NO_CHOOSECOLOR void cacheCHOOSECOLORFields(JNIEnv *env, jobject lpObject); CHOOSECOLOR *getCHOOSECOLORFields(JNIEnv *env, jobject lpObject, CHOOSECOLOR *lpStruct); diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/BUTTON_IMAGELIST.java b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/BUTTON_IMAGELIST.java new file mode 100644 index 0000000000..1814a15805 --- /dev/null +++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/BUTTON_IMAGELIST.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 BUTTON_IMAGELIST { + public int himl; + public int margin_left; + public int margin_top; + public int margin_right; + public int margin_bottom; + public int uAlign; + public static final int sizeof = 24; +} 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 e2ca8f82b3..b327e0b1f4 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 @@ -165,6 +165,13 @@ public class OS extends Platform { public static final int BI_BITFIELDS = 3; public static final int BI_RGB = 0; public static final int BLACKNESS = 0x42; + public static final int BCM_FIRST = 0x1600; + public static final int BCM_GETIDEALSIZE = BCM_FIRST + 0x1; + public static final int BCM_GETIMAGELIST = BCM_FIRST + 0x3; + public static final int BCM_SETIMAGELIST = BCM_FIRST + 0x2; + public static final int BUTTON_IMAGELIST_ALIGN_LEFT = 0; + public static final int BUTTON_IMAGELIST_ALIGN_RIGHT = 1; + public static final int BUTTON_IMAGELIST_ALIGN_CENTER = 4; public static final int BM_CLICK = 0xf5; public static final int BM_GETCHECK = 0xf0; public static final int BM_SETCHECK = 0xf1; @@ -2110,6 +2117,11 @@ public static final int SendMessage (int hWnd, int Msg, int [] wParam, int [] lP return SendMessageA (hWnd, Msg, wParam, lParam); } +public static final int SendMessage (int hWnd, int Msg, int wParam, SIZE 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, int lParam) { if (IsUnicode) return SendMessageW (hWnd, Msg, wParam, lParam); return SendMessageA (hWnd, Msg, wParam, lParam); @@ -2210,6 +2222,11 @@ public static final int SendMessage (int hWnd, int Msg, int wParam, HDLAYOUT lPa return SendMessageA (hWnd, Msg, wParam, lParam); } +public static final int SendMessage (int hWnd, int Msg, int wParam, BUTTON_IMAGELIST lParam) { + if (IsUnicode) return SendMessageW (hWnd, Msg, wParam, lParam); + return SendMessageA (hWnd, Msg, wParam, lParam); +} + public static final boolean SetMenuItemInfo (int hMenu, int uItem, boolean fByPosition, MENUITEMINFO lpmii) { if (IsUnicode) return SetMenuItemInfoW (hMenu, uItem, fByPosition, lpmii); return SetMenuItemInfoA (hMenu, uItem, fByPosition, lpmii); @@ -2806,6 +2823,8 @@ public static final native int SendMessageW (int hWnd, int Msg, int wParam, TVIT public static final native int SendMessageW (int hWnd, int Msg, int wParam, UDACCEL lParam); public static final native int SendMessageW (int hWnd, int Msg, int wParam, HDITEM lParam); public static final native int SendMessageW (int hWnd, int Msg, int wParam, HDLAYOUT lParam); +public static final native int SendMessageW (int hWnd, int Msg, int wParam, BUTTON_IMAGELIST lParam); +public static final native int SendMessageW (int hWnd, int Msg, int wParam, SIZE lParam); 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, int lParam); public static final native int SendMessageA (int hWnd, int Msg, int wParam, byte [] lParam); @@ -2828,6 +2847,8 @@ public static final native int SendMessageA (int hWnd, int Msg, int wParam, TVIT public static final native int SendMessageA (int hWnd, int Msg, int wParam, UDACCEL lParam); public static final native int SendMessageA (int hWnd, int Msg, int wParam, HDITEM lParam); public static final native int SendMessageA (int hWnd, int Msg, int wParam, HDLAYOUT lParam); +public static final native int SendMessageA (int hWnd, int Msg, int wParam, BUTTON_IMAGELIST lParam); +public static final native int SendMessageA (int hWnd, int Msg, int wParam, SIZE lParam); public static final native int SetActiveWindow (int hWnd); public static final native int SetBkColor (int hdc, int colorRef); public static final native int SetBkMode (int hdc, int mode); -- cgit v1.2.3