summaryrefslogtreecommitdiffstats
path: root/bundles/org.eclipse.swt/Eclipse SWT Mozilla/gtk/org/eclipse/swt/browser/MozillaDelegate.java
diff options
context:
space:
mode:
authorFelipe Heidrich <fheidric>2009-06-30 22:00:12 +0000
committerFelipe Heidrich <fheidric>2009-06-30 22:00:12 +0000
commitf664d297f7bb009784868bf3fcf0b3e3bb9a646b (patch)
tree54012fe4929893eef4891c88cbbf5841272ff433 /bundles/org.eclipse.swt/Eclipse SWT Mozilla/gtk/org/eclipse/swt/browser/MozillaDelegate.java
parentbc18a5e014088ce811f09c603b88361094486062 (diff)
downloadeclipse.platform.swt-f664d297f7bb009784868bf3fcf0b3e3bb9a646b.tar.gz
eclipse.platform.swt-f664d297f7bb009784868bf3fcf0b3e3bb9a646b.tar.xz
eclipse.platform.swt-f664d297f7bb009784868bf3fcf0b3e3bb9a646b.zip
*** empty log message ***
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT Mozilla/gtk/org/eclipse/swt/browser/MozillaDelegate.java')
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/gtk/org/eclipse/swt/browser/MozillaDelegate.java207
1 files changed, 0 insertions, 207 deletions
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
deleted file mode 100644
index 57bd6b7c5e..0000000000
--- a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/gtk/org/eclipse/swt/browser/MozillaDelegate.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.swt.browser;
-
-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 {
- Browser browser;
- int /*long*/ mozillaHandle, embedHandle;
- boolean hasFocus;
- Listener listener;
- static Callback eventCallback;
- static int /*long*/ eventProc;
- static final int STOP_PROPOGATE = 1;
-
-MozillaDelegate (Browser browser) {
- super ();
- this.browser = browser;
-}
-
-static int /*long*/ eventProc (int /*long*/ handle, int /*long*/ gdkEvent, int /*long*/ pointer) {
- int /*long*/ parent = OS.gtk_widget_get_parent (handle);
- parent = OS.gtk_widget_get_parent (parent);
- if (parent == 0) return 0;
- Widget widget = Display.getCurrent ().findWidget (parent);
- if (widget != null && widget instanceof Browser) {
- return ((Mozilla)((Browser)widget).webBrowser).delegate.gtk_event (handle, gdkEvent, pointer);
- }
- return 0;
-}
-
-static Browser findBrowser (int /*long*/ handle) {
- /*
- * Note. On GTK, Mozilla is embedded into a GtkHBox handle
- * and not directly into the parent Composite handle.
- */
- int /*long*/ parent = OS.gtk_widget_get_parent (handle);
- Display display = Display.getCurrent ();
- return (Browser)display.findWidget (parent);
-}
-
-static char[] mbcsToWcs (String codePage, byte [] buffer) {
- return Converter.mbcsToWcs (codePage, buffer);
-}
-
-static byte[] wcsToMbcs (String codePage, String string, boolean terminate) {
- return Converter.wcsToMbcs (codePage, string, terminate);
-}
-
-void addWindowSubclass () {
-}
-
-int createBaseWindow (nsIBaseWindow baseWindow) {
- return baseWindow.Create ();
-}
-
-int /*long*/ getHandle () {
- /*
- * Bug in Mozilla Linux GTK. Embedding Mozilla into a GtkFixed
- * handle causes problems with some Mozilla plug-ins. For some
- * reason, the Flash plug-in causes the child of the GtkFixed
- * handle to be resized to 1 when the Flash document is loaded.
- * That could be due to gtk_container_resize_children being called
- * by Mozilla - or one of its plug-ins - on the GtkFixed handle,
- * causing the child of the GtkFixed handle to be resized to 1.
- * The workaround is to embed Mozilla into a GtkHBox handle.
- */
- embedHandle = OS.gtk_hbox_new (false, 0);
- OS.gtk_container_add (browser.handle, embedHandle);
- OS.gtk_widget_show (embedHandle);
- return embedHandle;
-}
-
-String getJSLibraryName () {
- return "libmozjs.so"; //$NON-NLS-1$
-}
-
-String getLibraryName () {
- return "libxpcom.so"; //$NON-NLS-1$
-}
-
-String getSWTInitLibraryName () {
- return "swt-xpcominit"; //$NON-NLS-1$
-}
-
-int /*long*/ gtk_event (int /*long*/ handle, int /*long*/ gdkEvent, int /*long*/ pointer) {
- GdkEvent event = new GdkEvent ();
- OS.memmove (event, gdkEvent, GdkEvent.sizeof);
- if (event.type == OS.GDK_BUTTON_PRESS) {
- if (!hasFocus) browser.setFocus ();
- }
-
- /*
- * Stop the propagation of events that are not consumed by Mozilla, before
- * they reach the parent embedder. These event have already been received.
- */
- if (pointer == STOP_PROPOGATE) return 1;
- return 0;
-}
-
-void handleFocus () {
- if (hasFocus) return;
- hasFocus = true;
- listener = new Listener () {
- public void handleEvent (Event event) {
- if (event.widget == browser) return;
- ((Mozilla)browser.webBrowser).Deactivate ();
- hasFocus = false;
- browser.getDisplay ().removeFilter (SWT.FocusIn, this);
- browser.getShell ().removeListener (SWT.Deactivate, this);
- listener = null;
- }
- };
- browser.getDisplay ().addFilter (SWT.FocusIn, listener);
- browser.getShell ().addListener (SWT.Deactivate, listener);
-}
-
-void handleMouseDown () {
- int shellStyle = browser.getShell ().getStyle ();
- if ((shellStyle & SWT.ON_TOP) != 0 && (((shellStyle & SWT.NO_FOCUS) == 0) || ((browser.getStyle () & SWT.NO_FOCUS) == 0))) {
- browser.getDisplay ().asyncExec (new Runnable () {
- public void run () {
- if (browser == null || browser.isDisposed ()) return;
- ((Mozilla)browser.webBrowser).Activate ();
- }
- });
- }
-}
-
-boolean hookEnterExit () {
- return false;
-}
-
-void init () {
- if (eventCallback == null) {
- eventCallback = new Callback (getClass (), "eventProc", 3); //$NON-NLS-1$
- eventProc = eventCallback.getAddress ();
- if (eventProc == 0) {
- browser.dispose ();
- Mozilla.error (SWT.ERROR_NO_MORE_CALLBACKS);
- }
- }
-
- /*
- * Feature in Mozilla. GtkEvents such as key down, key pressed may be consumed
- * by Mozilla and never be received by the parent embedder. The workaround
- * is to find the top Mozilla gtk widget that receives all the Mozilla GtkEvents,
- * i.e. the first child of the parent embedder. Then hook event callbacks and
- * forward the event to the parent embedder before Mozilla received and consumed
- * them.
- */
- int /*long*/ list = OS.gtk_container_get_children (embedHandle);
- if (list != 0) {
- mozillaHandle = OS.g_list_data (list);
- OS.g_list_free (list);
-
- if (mozillaHandle != 0) {
- /* Note. Callback to get events before Mozilla receives and consumes them. */
- OS.g_signal_connect (mozillaHandle, OS.event, eventProc, 0);
-
- /*
- * Note. Callback to get the events not consumed by Mozilla - and to block
- * them so that they don't get propagated to the parent handle twice.
- * This hook is set after Mozilla and is therefore called after Mozilla's
- * handler because GTK dispatches events in their order of registration.
- */
- OS.g_signal_connect (mozillaHandle, OS.key_press_event, eventProc, STOP_PROPOGATE);
- OS.g_signal_connect (mozillaHandle, OS.key_release_event, eventProc, STOP_PROPOGATE);
- OS.g_signal_connect (mozillaHandle, OS.button_press_event, eventProc, STOP_PROPOGATE);
- }
- }
-}
-
-boolean needsSpinup () {
- return true;
-}
-
-void onDispose (int /*long*/ embedHandle) {
- if (listener != null) {
- browser.getDisplay ().removeFilter (SWT.FocusIn, listener);
- browser.getShell ().removeListener (SWT.Deactivate, listener);
- listener = null;
- }
- browser = null;
-}
-
-void removeWindowSubclass () {
-}
-
-void setSize (int /*long*/ embedHandle, int width, int height) {
- OS.gtk_widget_set_size_request (embedHandle, width, height);
-}
-
-}