diff options
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT Browser')
5 files changed, 68 insertions, 3 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/VisibilityAdapter.java b/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/VisibilityAdapter.java index fb4e9f1c8d..5b685ac7ee 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/VisibilityAdapter.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/VisibilityAdapter.java @@ -47,6 +47,8 @@ public void hide(VisibilityEvent event) { * <p> * * @param event.widget the browser to display + * @param event.location if not null, the requested location for the Shell hosting the browser + * @param event.size if not null, the requested size for the Shell hosting the browser * * @see VisibilityEvent * diff --git a/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/VisibilityEvent.java b/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/VisibilityEvent.java index 43d9a78345..70358b2b9d 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/VisibilityEvent.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/VisibilityEvent.java @@ -12,6 +12,7 @@ package org.eclipse.swt.browser; import org.eclipse.swt.widgets.*; import org.eclipse.swt.events.*; +import org.eclipse.swt.graphics.*; /** * This event is sent to VisibilityListeners when the Browser @@ -28,6 +29,18 @@ import org.eclipse.swt.events.*; */ public class VisibilityEvent extends TypedEvent { + /** + * Requested location for the Shell hosting the Browser. Null if no location + * has been requested. + */ + public Point location; + + /** + * Requested size for the Shell hosting the Browser. Null if no size has been + * requested. + */ + public Point size; + VisibilityEvent(Widget w) { super(w); } diff --git a/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/VisibilityListener.java b/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/VisibilityListener.java index 75c940261d..e892266668 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/VisibilityListener.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/VisibilityListener.java @@ -46,6 +46,8 @@ public void hide(VisibilityEvent event); * <p> * * @param event.widget the browser to display + * @param event.location if not null, the requested location for the Shell hosting the browser + * @param event.size if not null, the requested size for the Shell hosting the browser * * @see VisibilityEvent * diff --git a/bundles/org.eclipse.swt/Eclipse SWT Browser/mozilla/org/eclipse/swt/browser/Browser.java b/bundles/org.eclipse.swt/Eclipse SWT Browser/mozilla/org/eclipse/swt/browser/Browser.java index 58edfc8826..5294c631d2 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Browser/mozilla/org/eclipse/swt/browser/Browser.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Browser/mozilla/org/eclipse/swt/browser/Browser.java @@ -53,6 +53,8 @@ public class Browser extends Composite { int refCount = 0; int request; String html; + Point location; + Point size; /* External Listener management */ CloseWindowListener[] closeWindowListeners = new CloseWindowListener[0]; @@ -1564,6 +1566,7 @@ int DestroyBrowserWindow() { } int SizeBrowserTo(int aCX, int aCY) { + size = new Point(aCX, aCY); return XPCOM.NS_OK; } @@ -1584,6 +1587,7 @@ int ExitModalEventLoop(int aStatus) { /* nsIEmbeddingSiteWindow */ int SetDimensions(int flags, int x, int y, int cx, int cy) { + if (flags == nsIEmbeddingSiteWindow.DIM_FLAGS_POSITION) location = new Point(x, y); return XPCOM.NS_OK; } @@ -1604,8 +1608,12 @@ int SetVisibility(int value) { event.display = getDisplay(); event.widget = this; if (value == 1) { + event.location = location; + event.size = size; for (int i = 0; i < visibilityListeners.length; i++) visibilityListeners[i].show(event); + location = null; + size = null; } else { for (int i = 0; i < visibilityListeners.length; i++) visibilityListeners[i].hide(event); diff --git a/bundles/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser/Browser.java b/bundles/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser/Browser.java index c2a2bb6abd..aa999242ac 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser/Browser.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser/Browser.java @@ -11,6 +11,7 @@ package org.eclipse.swt.browser; import org.eclipse.swt.*; +import org.eclipse.swt.graphics.*; import org.eclipse.swt.internal.ole.win32.*; import org.eclipse.swt.internal.win32.*; import org.eclipse.swt.ole.win32.*; @@ -42,6 +43,8 @@ public class Browser extends Composite { boolean backwardEnabled; boolean forwardEnabled; + Point location; + Point size; String html; @@ -62,7 +65,11 @@ public class Browser extends Composite { static final int RegisterAsBrowser = 0x228; static final int StatusTextChange = 0x66; static final int WindowClosing = 0x107; - + static final int WindowSetHeight = 0x10b; + static final int WindowSetLeft = 0x108; + static final int WindowSetTop = 0x109; + static final int WindowSetWidth = 0x10a; + static final short CSC_UPDATECOMMANDS = -1; static final short CSC_NAVIGATEFORWARD = 1; static final short CSC_NAVIGATEBACK = 2; @@ -278,8 +285,13 @@ public Browser(Composite parent, int style) { newEvent.display = getDisplay(); newEvent.widget = Browser.this; if (visible) { - for (int i = 0; i < visibilityListeners.length; i++) + for (int i = 0; i < visibilityListeners.length; i++) { + newEvent.location = location; + newEvent.size = size; visibilityListeners[i].show(newEvent); + location = null; + size = null; + } } else { for (int i = 0; i < visibilityListeners.length; i++) visibilityListeners[i].hide(newEvent); @@ -327,6 +339,30 @@ public Browser(Composite parent, int style) { dispose(); break; } + case WindowSetHeight : { + if (size == null) size = new Point(0, 0); + Variant arg1 = event.arguments[0]; + size.y = arg1.getInt(); + break; + } + case WindowSetLeft : { + if (location == null) location = new Point(0, 0); + Variant arg1 = event.arguments[0]; + location.x = arg1.getInt(); + break; + } + case WindowSetTop : { + if (location == null) location = new Point(0, 0); + Variant arg1 = event.arguments[0]; + location.y = arg1.getInt(); + break; + } + case WindowSetWidth : { + if (size == null) size = new Point(0, 0); + Variant arg1 = event.arguments[0]; + size.x = arg1.getInt(); + break; + } } /* @@ -346,7 +382,11 @@ public Browser(Composite parent, int style) { site.addEventListener(ProgressChange, listener); site.addEventListener(StatusTextChange, listener); site.addEventListener(WindowClosing, listener); - + site.addEventListener(WindowSetHeight, listener); + site.addEventListener(WindowSetLeft, listener); + site.addEventListener(WindowSetTop, listener); + site.addEventListener(WindowSetWidth, listener); + Variant variant = new Variant(true); auto.setProperty(RegisterAsBrowser, variant); variant.dispose(); |