summaryrefslogtreecommitdiffstats
path: root/bundles/org.eclipse.swt/Eclipse SWT Mozilla
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT Mozilla')
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/carbon/org/eclipse/swt/browser/MozillaDelegate.java16
-rwxr-xr-xbundles/org.eclipse.swt/Eclipse SWT Mozilla/cocoa/org/eclipse/swt/browser/MozillaDelegate.java17
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Mozilla.java2
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/gtk/org/eclipse/swt/browser/MozillaDelegate.java5
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/motif/org/eclipse/swt/browser/MozillaDelegate.java5
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/win32/org/eclipse/swt/browser/MozillaDelegate.java5
6 files changed, 49 insertions, 1 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/carbon/org/eclipse/swt/browser/MozillaDelegate.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/carbon/org/eclipse/swt/browser/MozillaDelegate.java
index d09dfe4592..072bb137bd 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/carbon/org/eclipse/swt/browser/MozillaDelegate.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/carbon/org/eclipse/swt/browser/MozillaDelegate.java
@@ -17,6 +17,7 @@ import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.internal.*;
import org.eclipse.swt.internal.carbon.*;
import org.eclipse.swt.internal.cocoa.*;
+import org.eclipse.swt.internal.mozilla.*;
import org.eclipse.swt.widgets.*;
class MozillaDelegate {
@@ -107,6 +108,21 @@ static int eventProc3 (int nextHandler, int theEvent, int userData) {
void addWindowSubclass () {
}
+int createBaseWindow (nsIBaseWindow baseWindow) {
+ /*
+ * Feature of Mozilla on OSX. Mozilla replaces the OSX application menu whenever
+ * a browser's base window is created. The workaround is to restore the previous
+ * menu after creating the base window.
+ */
+ int application = Cocoa.objc_msgSend (Cocoa.C_NSApplication, Cocoa.S_sharedApplication);
+ int mainMenu = Cocoa.objc_msgSend (application, Cocoa.S_mainMenu);
+ Cocoa.objc_msgSend (mainMenu, Cocoa.S_retain);
+ int rc = baseWindow.Create ();
+ Cocoa.objc_msgSend (application, Cocoa.S_setMainMenu, mainMenu);
+ Cocoa.objc_msgSend (mainMenu, Cocoa.S_release);
+ return rc;
+}
+
int getHandle () {
int embedHandle = Cocoa.objc_msgSend (Cocoa.C_NSImageView, Cocoa.S_alloc);
if (embedHandle == 0) {
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/cocoa/org/eclipse/swt/browser/MozillaDelegate.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/cocoa/org/eclipse/swt/browser/MozillaDelegate.java
index 034f64ecc7..748753d0fd 100755
--- a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/cocoa/org/eclipse/swt/browser/MozillaDelegate.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/cocoa/org/eclipse/swt/browser/MozillaDelegate.java
@@ -13,6 +13,8 @@ package org.eclipse.swt.browser;
import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
+import org.eclipse.swt.internal.cocoa.*;
+import org.eclipse.swt.internal.mozilla.*;
import org.eclipse.swt.widgets.*;
class MozillaDelegate {
@@ -75,6 +77,21 @@ static byte[] wcsToMbcs (String codePage, String string, boolean terminate) {
void addWindowSubclass () {
}
+int createBaseWindow (nsIBaseWindow baseWindow) {
+ /*
+ * Feature of Mozilla on OSX. Mozilla replaces the OSX application menu whenever
+ * a browser's base window is created. The workaround is to restore the previous
+ * menu after creating the base window.
+ */
+ NSApplication application = NSApplication.sharedApplication ();
+ NSMenu mainMenu = application.mainMenu ();
+ mainMenu.retain ();
+ int rc = baseWindow.Create ();
+ application.setMainMenu (mainMenu);
+ mainMenu.release ();
+ return rc;
+}
+
int /*long*/ getHandle () {
return browser.view.id;
}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Mozilla.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Mozilla.java
index a6b2f38935..e9418071e1 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Mozilla.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Mozilla.java
@@ -1314,7 +1314,7 @@ public void create (Composite parent, int style) {
browser.dispose ();
error (XPCOM.NS_ERROR_FAILURE);
}
- rc = baseWindow.Create ();
+ rc = delegate.createBaseWindow (baseWindow);
if (rc != XPCOM.NS_OK) {
browser.dispose ();
error (XPCOM.NS_ERROR_FAILURE);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/gtk/org/eclipse/swt/browser/MozillaDelegate.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/gtk/org/eclipse/swt/browser/MozillaDelegate.java
index 5f84c50620..e7479455c4 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/gtk/org/eclipse/swt/browser/MozillaDelegate.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/gtk/org/eclipse/swt/browser/MozillaDelegate.java
@@ -14,6 +14,7 @@ import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.internal.*;
import org.eclipse.swt.internal.gtk.*;
+import org.eclipse.swt.internal.mozilla.*;
import org.eclipse.swt.widgets.*;
class MozillaDelegate {
@@ -73,6 +74,10 @@ static byte[] wcsToMbcs (String codePage, String string, boolean terminate) {
void addWindowSubclass () {
}
+int createBaseWindow (nsIBaseWindow baseWindow) {
+ return baseWindow.Create ();
+}
+
int /*long*/ getHandle () {
/*
* Bug in Mozilla Linux GTK. Embedding Mozilla into a GtkFixed
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/motif/org/eclipse/swt/browser/MozillaDelegate.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/motif/org/eclipse/swt/browser/MozillaDelegate.java
index aac50746da..377f61c2df 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/motif/org/eclipse/swt/browser/MozillaDelegate.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/motif/org/eclipse/swt/browser/MozillaDelegate.java
@@ -13,6 +13,7 @@ package org.eclipse.swt.browser;
import org.eclipse.swt.SWT;
import org.eclipse.swt.internal.*;
import org.eclipse.swt.internal.gtk.GTK;
+import org.eclipse.swt.internal.mozilla.*;
import org.eclipse.swt.widgets.*;
class MozillaDelegate {
@@ -87,6 +88,10 @@ static byte[] wcsToMbcs (String codePage, String string, boolean terminate) {
void addWindowSubclass () {
}
+int createBaseWindow (nsIBaseWindow baseWindow) {
+ return baseWindow.Create ();
+}
+
int getHandle() {
if (Mozilla.BrowserCount == 1) {
GTK.gtk_init_check (new int[1], null);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/win32/org/eclipse/swt/browser/MozillaDelegate.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/win32/org/eclipse/swt/browser/MozillaDelegate.java
index 96937a1096..3f44646d9d 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/win32/org/eclipse/swt/browser/MozillaDelegate.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/win32/org/eclipse/swt/browser/MozillaDelegate.java
@@ -12,6 +12,7 @@ package org.eclipse.swt.browser;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.internal.Callback;
+import org.eclipse.swt.internal.mozilla.*;
import org.eclipse.swt.internal.win32.*;
import org.eclipse.swt.widgets.*;
@@ -77,6 +78,10 @@ void addWindowSubclass () {
OS.SetWindowLongPtr (hwndChild, OS.GWL_WNDPROC, SubclassProc.getAddress ());
}
+int createBaseWindow (nsIBaseWindow baseWindow) {
+ return baseWindow.Create ();
+}
+
int /*long*/ getHandle () {
return browser.handle;
}