*** empty log message ***
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 132e86d..d6935e6 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
@@ -2261,6 +2261,21 @@
}
#endif
+#ifndef NO_GetMenuItemRect
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetMenuItemRect)
+ (JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)
+{
+ RECT _arg3, *lparg3=NULL;
+ jboolean rc;
+ NATIVE_ENTER(env, that, "GetMenuItemRect\n")
+ if (arg3) lparg3 = getRECTFields(env, arg3, &_arg3);
+ rc = (jboolean)GetMenuItemRect((HWND)arg0, (HMENU)arg1, arg2, lparg3);
+ if (arg3) setRECTFields(env, arg3, lparg3);
+ NATIVE_EXIT(env, that, "GetMenuItemRect\n")
+ return rc;
+}
+#endif
+
#ifndef NO_GetMessageA
JNIEXPORT jboolean JNICALL OS_NATIVE(GetMessageA)
(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2, jint arg3)
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_custom.c b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_custom.c
index 306b1ca..6c46398 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_custom.c
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_custom.c
@@ -191,6 +191,34 @@
}
#endif
+#ifndef NO_GetMenuBarInfo
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetMenuBarInfo)
+ (JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)
+{
+ MENUBARINFO _arg3, *lparg3=NULL;
+ jboolean rc;
+ NATIVE_ENTER(env, that, "GetMenuBarInfo\n")
+ if (arg3) lparg3 = getMENUBARINFOFields(env, arg3, &_arg3);
+ //rc = (jboolean)GetMenuBarInfo((HWND)arg0, arg1, arg2, lparg3);
+ {
+ /*
+ * GetMenuBarInfo is a Win2000 and Win98 specific call
+ * If you link it into swt.dll a system modal entry point not found dialog will
+ * appear as soon as swt.dll is loaded. Here we check for the entry point and
+ * only do the call if it exists.
+ */
+ HMODULE hm;
+ FARPROC fp;
+ if ((hm=GetModuleHandle("user32.dll")) && (fp=GetProcAddress(hm, "GetMenuBarInfo"))) {
+ rc = (jboolean)(fp)((HWND)arg0, arg1, arg2, lparg3);
+ }
+ }
+ if (arg3) setMENUBARINFOFields(env, arg3, lparg3);
+ NATIVE_EXIT(env, that, "GetMenuBarInfo\n")
+ return rc;
+}
+#endif
+
#ifndef NO_GetMenuInfo
JNIEXPORT jboolean JNICALL OS_NATIVE(GetMenuInfo)
(JNIEnv *env, jclass that, jint arg0, jobject arg1)
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 c2edf97..cb765b2 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
@@ -1566,6 +1566,61 @@
}
#endif
+#ifndef NO_MENUBARINFO
+typedef struct MENUBARINFO_FID_CACHE {
+ int cached;
+ jclass clazz;
+ jfieldID cbSize, left, top, right, bottom, hMenu, hwndMenu, fBarFocused, fFocused;
+} MENUBARINFO_FID_CACHE;
+
+MENUBARINFO_FID_CACHE MENUBARINFOFc;
+
+void cacheMENUBARINFOFields(JNIEnv *env, jobject lpObject)
+{
+ if (MENUBARINFOFc.cached) return;
+ MENUBARINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
+ MENUBARINFOFc.cbSize = (*env)->GetFieldID(env, MENUBARINFOFc.clazz, "cbSize", "I");
+ MENUBARINFOFc.left = (*env)->GetFieldID(env, MENUBARINFOFc.clazz, "left", "I");
+ MENUBARINFOFc.top = (*env)->GetFieldID(env, MENUBARINFOFc.clazz, "top", "I");
+ MENUBARINFOFc.right = (*env)->GetFieldID(env, MENUBARINFOFc.clazz, "right", "I");
+ MENUBARINFOFc.bottom = (*env)->GetFieldID(env, MENUBARINFOFc.clazz, "bottom", "I");
+ MENUBARINFOFc.hMenu = (*env)->GetFieldID(env, MENUBARINFOFc.clazz, "hMenu", "I");
+ MENUBARINFOFc.hwndMenu = (*env)->GetFieldID(env, MENUBARINFOFc.clazz, "hwndMenu", "I");
+ MENUBARINFOFc.fBarFocused = (*env)->GetFieldID(env, MENUBARINFOFc.clazz, "fBarFocused", "Z");
+ MENUBARINFOFc.fFocused = (*env)->GetFieldID(env, MENUBARINFOFc.clazz, "fFocused", "Z");
+ MENUBARINFOFc.cached = 1;
+}
+
+MENUBARINFO *getMENUBARINFOFields(JNIEnv *env, jobject lpObject, MENUBARINFO *lpStruct)
+{
+ if (!MENUBARINFOFc.cached) cacheMENUBARINFOFields(env, lpObject);
+ lpStruct->cbSize = (*env)->GetIntField(env, lpObject, MENUBARINFOFc.cbSize);
+ lpStruct->rcBar.left = (*env)->GetIntField(env, lpObject, MENUBARINFOFc.left);
+ lpStruct->rcBar.top = (*env)->GetIntField(env, lpObject, MENUBARINFOFc.top);
+ lpStruct->rcBar.right = (*env)->GetIntField(env, lpObject, MENUBARINFOFc.right);
+ lpStruct->rcBar.bottom = (*env)->GetIntField(env, lpObject, MENUBARINFOFc.bottom);
+ lpStruct->hMenu = (HMENU)(*env)->GetIntField(env, lpObject, MENUBARINFOFc.hMenu);
+ lpStruct->hwndMenu = (HWND)(*env)->GetIntField(env, lpObject, MENUBARINFOFc.hwndMenu);
+ lpStruct->fBarFocused = (*env)->GetBooleanField(env, lpObject, MENUBARINFOFc.fBarFocused);
+ lpStruct->fFocused = (*env)->GetBooleanField(env, lpObject, MENUBARINFOFc.fFocused);
+ return lpStruct;
+}
+
+void setMENUBARINFOFields(JNIEnv *env, jobject lpObject, MENUBARINFO *lpStruct)
+{
+ if (!MENUBARINFOFc.cached) cacheMENUBARINFOFields(env, lpObject);
+ (*env)->SetIntField(env, lpObject, MENUBARINFOFc.cbSize, (jint)lpStruct->cbSize);
+ (*env)->SetIntField(env, lpObject, MENUBARINFOFc.left, (jint)lpStruct->rcBar.left);
+ (*env)->SetIntField(env, lpObject, MENUBARINFOFc.top, (jint)lpStruct->rcBar.top);
+ (*env)->SetIntField(env, lpObject, MENUBARINFOFc.right, (jint)lpStruct->rcBar.right);
+ (*env)->SetIntField(env, lpObject, MENUBARINFOFc.bottom, (jint)lpStruct->rcBar.bottom);
+ (*env)->SetIntField(env, lpObject, MENUBARINFOFc.hMenu, (jint)lpStruct->hMenu);
+ (*env)->SetIntField(env, lpObject, MENUBARINFOFc.hwndMenu, (jint)lpStruct->hwndMenu);
+ (*env)->SetBooleanField(env, lpObject, MENUBARINFOFc.fBarFocused, (jboolean)lpStruct->fBarFocused);
+ (*env)->SetBooleanField(env, lpObject, MENUBARINFOFc.fFocused, (jboolean)lpStruct->fFocused);
+}
+#endif
+
#ifndef NO_MENUINFO
typedef struct MENUINFO_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 b0e66c9..16dda2a 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
@@ -251,6 +251,14 @@
#define setMEASUREITEMSTRUCTFields(a,b,c)
#endif
+#ifndef NO_MENUBARINFO
+MENUBARINFO *getMENUBARINFOFields(JNIEnv *env, jobject lpObject, MENUBARINFO *lpStruct);
+void setMENUBARINFOFields(JNIEnv *env, jobject lpObject, MENUBARINFO *lpStruct);
+#else
+#define getMENUBARINFOFields(a,b,c) NULL
+#define setMENUBARINFOFields(a,b,c)
+#endif
+
#ifndef NO_MENUINFO
MENUINFO *getMENUINFOFields(JNIEnv *env, jobject lpObject, MENUINFO *lpStruct);
void setMENUINFOFields(JNIEnv *env, jobject lpObject, MENUINFO *lpStruct);