summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/VisibilityAdapter.java2
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/VisibilityEvent.java13
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/VisibilityListener.java2
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Browser/mozilla/org/eclipse/swt/browser/Browser.java8
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser/Browser.java46
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();