Skip to content
Commits on Source (3)
......@@ -14,7 +14,7 @@
<parent>
<artifactId>eclipse.platform.swt.localbuild</artifactId>
<groupId>eclipse.platform.swt</groupId>
<version>4.10.0-SNAPSHOT</version>
<version>4.11.0-SNAPSHOT</version>
<relativePath>../../local-build/local-build-parent/</relativePath>
</parent>
<groupId>org.eclipse.swt</groupId>
......
......@@ -14,7 +14,7 @@
<parent>
<artifactId>eclipse.platform.swt.localbuild</artifactId>
<groupId>eclipse.platform.swt</groupId>
<version>4.10.0-SNAPSHOT</version>
<version>4.11.0-SNAPSHOT</version>
<relativePath>../../local-build/local-build-parent/</relativePath>
</parent>
<groupId>org.eclipse.swt</groupId>
......
/*******************************************************************************
* Copyright (c) 2004, 2017 IBM Corporation and others.
* Copyright (c) 2004, 2019 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
......@@ -12,6 +12,7 @@
* IBM Corporation - initial API and implementation
* Red Hat Inc. - stop generating pre 1.2 JNI code
* Martin Oberhuber (WindRiver) - [515610] Fix incorrect code for memmove()
* Thomas Wolf <thomas.wolf@paranor.ch> [534923] Fix incorrect casts
*******************************************************************************/
package org.eclipse.swt.tools.internal;
......@@ -275,7 +276,7 @@ boolean generateGetParameter(JNIMethod method, JNIParameter param, boolean criti
// Keep diagnostic code (commented-out) below for diagnosing these.
output("if (!arg");
output(iStr);
output(") goto fail;\n");
outputln(") goto fail;");
//output(") {fprintf(stderr,\"fail: method=");
//output(method.getName());
//output(", arg");
......@@ -793,12 +794,14 @@ void generateFunctionCall(JNIMethod method, JNIParameter[] params, JNIType retur
if (method.getFlag(Flags.FLAG_CAST)) {
output("((");
String returnCast = returnType.getTypeSignature2(!returnType.equals(returnType64));
if (name.equals("objc_msgSend_bool") && returnCast.equals("jboolean")) {
if ((name.equals("objc_msgSend_bool") || name.equals("objc_msgSendSuper_bool")) && returnCast.equals("jboolean")) {
returnCast = "BOOL";
}
output(returnCast);
output(" (*)(");
for (int i = 0; i < params.length; i++) {
int fixedargs = getNumberOfFixedArguments(method);
int n = fixedargs > 0 ? fixedargs : params.length;
for (int i = 0; i < n; i++) {
if (i != 0) output(", ");
JNIParameter param = params[i];
String cast = param.getCast();
......@@ -816,6 +819,9 @@ void generateFunctionCall(JNIMethod method, JNIParameter[] params, JNIType retur
output(paramType.getTypeSignature4(!paramType.equals(paramType64), param.getFlag(FLAG_STRUCT)));
}
}
if (fixedargs > 0) {
output(", ...");
}
output("))");
}
String accessor = method.getAccessor();
......@@ -875,7 +881,8 @@ void generate_objc_msgSend_stret (JNIParameter[] params, String func) {
JNIType paramType = params[0].getType(), paramType64 = params[0].getType64();
output(paramType.getTypeSignature4(!paramType.equals(paramType64), true));
output(" (*)(");
for (int i = 1; i < params.length; i++) {
// Only the fixed arguments
for (int i = 1; i <= 2; i++) {
if (i != 1) output(", ");
JNIParameter param = params[i];
String cast = param.getCast();
......@@ -893,11 +900,33 @@ void generate_objc_msgSend_stret (JNIParameter[] params, String func) {
output(paramType.getTypeSignature4(!paramType.equals(paramType64), param.getFlag(FLAG_STRUCT)));
}
}
output(", ...");
output("))");
output(func);
output(")");
}
/**
* Determines whether the {@code method} has variadic arguments. If so, returns
* the number of fixed parameters (always {@code > 0}). Otherwise returns zero,
* which indicates that all parameters are fixed.
*
* @param method to examine
* @return the number of fixed parameters, or zero if all parameters are fixed
* (the method has no varargs)
*/
int getNumberOfFixedArguments(JNIMethod method) {
Object param = method.getParam("fixedargs");
if (param == null) {
return 0;
}
String number = param.toString();
if (number.isEmpty()) {
return 0;
}
return Integer.parseInt(number);
}
void generateReturn(JNIType returnType, boolean needsReturn) {
if (needsReturn && !returnType.isType("void")) {
outputln("\treturn rc;");
......
......@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-SymbolicName: org.eclipse.swt.tools; singleton:=true
Bundle-Version: 3.107.200.qualifier
Bundle-Version: 3.107.300.qualifier
Bundle-Activator: org.eclipse.swt.tools.Activator
Bundle-ManifestVersion: 2
Export-Package: org.eclipse.swt.tools,
......
/*******************************************************************************
* Copyright (c) 2008, 2017 IBM Corporation and others.
* Copyright (c) 2008, 2019 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
......@@ -10,6 +10,7 @@
*
* Contributors:
* IBM Corporation - initial API and implementation
* Thomas Wolf <thomas.wolf@paranor.ch> [534923] Annotate sends "fixedargs=2"
*******************************************************************************/
package org.eclipse.swt.tools.internal;
......@@ -1742,7 +1743,7 @@ void generateSends(boolean superCall) {
outln();
out(" *");
}
out(" @method flags=cast");
out(" @method flags=cast,fixedargs=2");
if (tags.size() > 0) outln();
for (String tag : tags) {
out(tag);
......
......@@ -14,11 +14,11 @@
<parent>
<artifactId>eclipse.platform.swt.localbuild</artifactId>
<groupId>eclipse.platform.swt</groupId>
<version>4.10.0-SNAPSHOT</version>
<version>4.11.0-SNAPSHOT</version>
<relativePath>../../local-build/local-build-parent/</relativePath>
</parent>
<groupId>org.eclipse.swt</groupId>
<artifactId>org.eclipse.swt.tools</artifactId>
<version>3.107.200-SNAPSHOT</version>
<version>3.107.300-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
Instructions to build the update site:
1) Import projects
ssh://<user>@git.eclipse.org/gitroot/platform/eclipse.platform.swt/bundles/org.eclipse.swt.tools
ssh://<user>@git.eclipse.org/gitroot/platform/eclipse.platform.swt/bundles/org.eclipse.swt.tools/feature
ssh://<user>@git.eclipse.org/gitroot/www.eclipse.org/swt
2) Select org.eclipse.swt.tools.feature in Package Explorer
3) Popup menu on Package Explorer and select "Export"
4) Choose "Deployable features" and click "Next"
5) Check "Directory" and enter the path to "<git>/www.eclipse.org/swt/updates/<current_version>"
6) Click "Finish"
7) Refresh <git>/www.eclipse.org/swt and commit changes
8) Wait the changes to be mirrored to the www.eclipse.org/swt to check for updates
\ No newline at end of file
/*******************************************************************************
* Copyright (c) 2000, 2018 IBM Corporation and others.
* Copyright (c) 2000, 2019 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
......@@ -188,7 +188,7 @@ public static Frame new_Frame (final Composite parent) {
Shell shell = parent.getShell();
long /*int*/ awtHandle = getAWTHandle(window);
if (awtHandle == 0) return;
long /*int*/ xWindow = GDK.gdk_x11_window_get_xid (GTK.gtk_widget_get_window (shell.handle));
long /*int*/ xWindow = GDK.gdk_x11_window_get_xid (GTK.gtk_widget_get_window (GTK.gtk_widget_get_toplevel (shell.handle)));
OS.XSetTransientForHint(GDK.gdk_x11_display_get_xdisplay(GDK.gdk_display_get_default()), awtHandle, xWindow);
});
}
......
......@@ -368,10 +368,10 @@ public class ACC {
/**
* Send when an object's state has changed, for example enabled/disabled, pressed/released, or checked/unchecked.
* <p>
* The eventData object is an array of 2 ints specifying the following:<ul>
* The eventData object is an array of 2 ints specifying the following:</p><ul>
* <li>state - the STATE_* constant identifying the state that changed</li>
* <li>newValue - either 1 or 0, indicating whether the state has changed to true or false</li>
* </ul></p>
* </ul>
*
* @since 3.6
*/
......@@ -404,10 +404,11 @@ public class ACC {
/**
* Send when an object's value has changed.
* <p>
* The eventData object is an array of 2 Numbers specifying the following:<ul>
* The eventData object is an array of 2 Numbers specifying the following:</p>
* <ul>
* <li>oldValue - the object's old value</li>
* <li>newValue - the object's new value</li>
* </ul></p>
* </ul>
*
* @since 3.6
*/
......@@ -543,13 +544,14 @@ public class ACC {
/**
* Send when a table's data has changed.
* <p>
* The eventData object is an array of 5 ints specifying the following:<ul>
* The eventData object is an array of 5 ints specifying the following:</p>
* <ul>
* <li>type - {@link ACC#INSERT} or {@link ACC#DELETE} - the type of change</li>
* <li>rowStart - the index of the first row that changed</li>
* <li>rowCount - the number of contiguous rows that changed, or 0 if no rows changed</li>
* <li>columnStart - the index of the first column that changed</li>
* <li>columnCount - the number of contiguous columns that changed, or 0 if no columns changed</li>
* </ul></p>
* </ul>
*
* @since 3.6
*/
......@@ -602,12 +604,13 @@ public class ACC {
/**
* Send when text was inserted or deleted.
* <p>
* The eventData object is an array of 4 objects specifying the following:<ul>
* The eventData object is an array of 4 objects specifying the following:</p>
* <ul>
* <li>type - {@link ACC#INSERT} or {@link ACC#DELETE} - the type of change</li>
* <li>start - the index of the first character that changed</li>
* <li>end - the index of the last character that changed</li>
* <li>text - the text string that was inserted or deleted</li>
* </ul></p>
* </ul>
*
* @since 3.6
*/
......
......@@ -88,13 +88,14 @@ public abstract class AccessibleControlAdapter implements AccessibleControlListe
* for a child of the control by index or childID, or when a client
* requests the index of an accessible object in its parent.
* <p>
* The childID field in the event object can be one of the following:<ul>
* The childID field in the event object can be one of the following:</p>
* <ul>
* <li>an integer child ID - return the accessible object for the specified child ID,
* or null if the specified child does not have its own accessible</li>
* <li>{@link ACC#CHILDID_CHILD_AT_INDEX} - return the accessible child object at the specified index,
* or null if this object has no children</li>
* <li>{@link ACC#CHILDID_CHILD_INDEX} - return the index of this accessible in its parent</li>
* </ul></p>
* </ul>
*
* @param e an event object containing the following fields:<ul>
* <li>childID [IN] - an identifier specifying a child of the control, or one of the predefined CHILDID constants</li>
......
......@@ -14,7 +14,7 @@
package org.eclipse.swt.accessibility;
import org.eclipse.swt.internal.SWTEventListener;
import org.eclipse.swt.internal.*;
/**
* Classes that implement this interface provide methods
......@@ -85,13 +85,14 @@ public interface AccessibleControlListener extends SWTEventListener {
* for a child of the control by index or childID, or when a client
* requests the index of an accessible object in its parent.
* <p>
* The childID field in the event object can be one of the following:<ul>
* The childID field in the event object can be one of the following:</p>
* <ul>
* <li>an integer child ID - return the accessible object for the specified child ID,
* or null if the specified child does not have its own accessible</li>
* <li>{@link ACC#CHILDID_CHILD_AT_INDEX} - return the accessible child object at the specified index,
* or null if this object has no children</li>
* <li>{@link ACC#CHILDID_CHILD_INDEX} - return the index of this accessible in its parent</li>
* </ul></p>
* </ul>
*
* @param e an event object containing the following fields:<ul>
* <li>childID [IN] - an identifier specifying a child of the control, or one of the predefined CHILDID constants</li>
......
......@@ -177,7 +177,7 @@ public class AccessibleTextExtendedAdapter extends AccessibleTextAdapter impleme
* <li>[in,out] start - the 0 based offset of first character of the substring</li>
* <li>[in,out] end - the 0 based offset after the last character of the substring</li>
* <li>[in,out] count - the number of boundary type units to move to find the substring:<ul>
* <li>in - look count units before start if count < 0, or after end if count > 0. Look at start if count == 0</li>
* <li>in - look count units before start if count &lt; 0, or after end if count &gt; 0. Look at start if count == 0</li>
* <li>out - the actual number of boundary type units that were moved. This may be fewer than the input count</li>
* </ul></li>
* <li>[out] result - the requested substring. This may be empty or null
......
......@@ -169,7 +169,7 @@ public interface AccessibleTextExtendedListener extends AccessibleTextListener {
* <li>[in,out] start - the 0 based offset of first character of the substring</li>
* <li>[in,out] end - the 0 based offset after the last character of the substring</li>
* <li>[in,out] count - the number of boundary type units to move to find the substring:<ul>
* <li>in - look count units before start if count < 0, or after end if count > 0. Look at start if count == 0</li>
* <li>in - look count units before start if count &lt; 0, or after end if count &gt; 0. Look at start if count == 0</li>
* <li>out - the actual number of boundary type units that were moved. This may be fewer than the input count</li>
* </ul></li>
* <li>[out] result - the requested substring. This may be empty or null
......
......@@ -405,113 +405,6 @@ class AccessibleObject {
return 0;
}
/**
* Gets the position of component in the form of a point specifying
* component's top-left corner.
*
* This is the implementation of an ATK function which
* queries the Accessible listeners at the Java level. On GTK3 the ATK
* interfaces are implemented in os_custom.c and access this method via
* JNI.
*
* @param atkObject a pointer to the current AtkObject
* @param x memory address of gint to put x coordinate
* @param y memory address of gint to put y coordinate
* @param coord_type specifies whether the coordinates are relative to
* the screen or to the components top level window
*
* @return 0 (this is a void function at the native level)
*/
static long /*int*/ atkComponent_get_position (long /*int*/ atkObject, long /*int*/ x,
long /*int*/ y, long /*int*/ coord_type) {
AccessibleObject object = getAccessibleObject (atkObject);
C.memmove (x, new int[] {0}, 4);
C.memmove (y, new int[] {0}, 4);
AtkComponentIface iface = getParentComponentIface (atkObject);
if (iface != null && iface.get_position != 0) {
OS.call (iface.get_position, atkObject, x, y, coord_type);
}
if (object != null) {
Accessible accessible = object.accessible;
List<AccessibleControlListener> listeners = accessible.accessibleControlListeners;
int length = size(listeners);
if (length > 0) {
int[] parentX = new int [1], parentY = new int [1];
C.memmove (parentX, x, 4);
C.memmove (parentY, y, 4);
AccessibleControlEvent event = new AccessibleControlEvent (accessible);
event.childID = object.id;
event.x = parentX [0]; event.y = parentY [0];
int[] topWindowX = new int [1], topWindowY = new int [1];
if (coord_type == ATK.ATK_XY_WINDOW) {
windowPoint (object, topWindowX, topWindowY);
event.x += topWindowX [0];
event.y += topWindowY [0];
}
for (int i = 0; i < length; i++) {
AccessibleControlListener listener = listeners.get (i);
listener.getLocation (event);
}
if (coord_type == ATK.ATK_XY_WINDOW) {
event.x -= topWindowX [0];
event.y -= topWindowY [0];
}
C.memmove (x, new int[] {event.x}, 4);
C.memmove (y, new int[] {event.y}, 4);
}
}
return 0;
}
/**
* Gets the size of the component in terms of width and height.
*
* This is the implementation of an ATK function which
* queries the Accessible listeners at the Java level. On GTK3 the ATK
* interfaces are implemented in os_custom.c and access this method via
* JNI.
*
* @param atkObject a pointer to the current AtkObject
* @param width memory address of gint to put x coordinate
* @param height memory address of gint to put y coordinate
* @param coord_type specifies whether the coordinates are relative to
* the screen or to the components top level window (this parameter is always 0
* on GTK3)
*
* @return 0 (this is a void function at the native level)
*/
static long /*int*/ atkComponent_get_size (long /*int*/ atkObject, long /*int*/ width,
long /*int*/ height, long /*int*/ coord_type) {
AccessibleObject object = getAccessibleObject (atkObject);
C.memmove (width, new int[] {0}, 4);
C.memmove (height, new int[] {0}, 4);
AtkComponentIface iface = getParentComponentIface (atkObject);
if (iface != null && iface.get_size != 0) {
// ATK with GTK3 doesn't have the coord_type parameter
ATK.call (iface.get_size, atkObject, width, height);
}
if (object != null) {
Accessible accessible = object.accessible;
List<AccessibleControlListener> listeners = accessible.accessibleControlListeners;
int length = size(listeners);
if (length > 0) {
int[] parentWidth = new int [1], parentHeight = new int [1];
C.memmove (parentWidth, width, 4);
C.memmove (parentHeight, height, 4);
AccessibleControlEvent event = new AccessibleControlEvent (accessible);
event.childID = object.id;
event.width = parentWidth [0]; event.height = parentHeight [0];
for (int i = 0; i < length; i++) {
AccessibleControlListener listener = listeners.get (i);
listener.getLocation (event);
}
C.memmove (width, new int[] {event.width}, 4);
C.memmove (height, new int[] {event.height}, 4);
}
}
return 0;
}
/**
* Gets a reference to the accessible child, if one exists,
* at the coordinate point specified by x and y.
......@@ -4618,6 +4511,35 @@ class AccessibleObject {
return 0;
}
/**
* Static toDisplay implementation for accessibility purposes. This function
* is called from os_custom.c via JNI.
*
* @param gdkResource the GdkWindow (GTK3) or GdkSurface (GTK4)
* @param x a pointer to an integer which represents the x coordinate
* @param y a pointer to an integer which represents the y coordinate
* @return 0
*/
static long /*int*/ toDisplay (long /*int*/ gdkResource, long /*int*/ x, long /*int*/ y) {
int [] origin_x = new int [1], origin_y = new int [1];
if (gdkResource == 0) {
// memmove anyways to prevent garbage data in the pointers
C.memmove (x, new int[] {0}, 4);
C.memmove (y, new int[] {0}, 4);
return 0;
}
if (GTK.GTK4) {
GDK.gdk_surface_get_origin (gdkResource, origin_x, origin_y);
} else {
GDK.gdk_window_get_origin (gdkResource, origin_x, origin_y);
}
int scaledX = DPIUtil.autoScaleDown (origin_x [0]);
int scaledY = DPIUtil.autoScaleDown (origin_y [0]);
C.memmove (x, new int[] {scaledX}, 4);
C.memmove (y, new int[] {scaledY}, 4);
return 0;
}
static void windowPoint (AccessibleObject object, int [] x, int [] y) {
long /*int*/ widget = GTK.gtk_accessible_get_widget(object.atkHandle);
while (widget == 0 && object.parent != null) {
......@@ -4626,9 +4548,14 @@ class AccessibleObject {
}
if (widget == 0) return;
long /*int*/ topLevel = GTK.gtk_widget_get_toplevel (widget);
if (GTK.GTK4) {
long /*int*/ surface = GTK.gtk_widget_get_surface (topLevel);
GDK.gdk_surface_get_origin (surface, x, y);
} else {
long /*int*/ window = GTK.gtk_widget_get_window (topLevel);
GDK.gdk_window_get_origin (window, x, y);
}
}
static int nextIndexOfChar (String string, String searchChars, int startIndex) {
int result = string.length ();
......
......@@ -39,9 +39,9 @@ public interface AuthenticationListener extends SWTEventListener {
* be shown to the user. Otherwise, setting the event's <code>doit</code>
* field to <code>false</code> cancels the authentication challenge, and
* the page will not be loaded.
* <p>
* </p>
*
* <p>The following fields in the <code>AuthenticationEvent</code> apply:
* <p>The following fields in the <code>AuthenticationEvent</code> apply:</p>
* <ul>
* <li>(in) widget the <code>Browser</code> that is attempting to show the
* page that requires authentication
......
......@@ -592,13 +592,13 @@ public boolean close () {
* </p><p>
* If the script returns a value with a supported type then a java
* representation of the value is returned. The supported
* javascript -> java mappings are:
* javascript -&gt; java mappings are:
* <ul>
* <li>javascript null or undefined -> <code>null</code></li>
* <li>javascript number -> <code>java.lang.Double</code></li>
* <li>javascript string -> <code>java.lang.String</code></li>
* <li>javascript boolean -> <code>java.lang.Boolean</code></li>
* <li>javascript array whose elements are all of supported types -> <code>java.lang.Object[]</code></li>
* <li>javascript null or undefined -&gt; <code>null</code></li>
* <li>javascript number -&gt; <code>java.lang.Double</code></li>
* <li>javascript string -&gt; <code>java.lang.String</code></li>
* <li>javascript boolean -&gt; <code>java.lang.Boolean</code></li>
* <li>javascript array whose elements are all of supported types -&gt; <code>java.lang.Object[]</code></li>
* </ul>
*
* An <code>SWTException</code> is thrown if the return value has an
......@@ -645,22 +645,22 @@ public Object evaluate (String script) throws SWTException {
* </p><p>
* If the script returns a value with a supported type then a java
* representation of the value is returned. The supported
* javascript -> java mappings are:
* javascript -&gt; java mappings are:
* <ul>
* <li>javascript null or undefined -> <code>null</code></li>
* <li>javascript number -> <code>java.lang.Double</code></li>
* <li>javascript string -> <code>java.lang.String</code></li>
* <li>javascript boolean -> <code>java.lang.Boolean</code></li>
* <li>javascript array whose elements are all of supported types -> <code>java.lang.Object[]</code></li>
* <li>javascript null or undefined -&gt; <code>null</code></li>
* <li>javascript number -&gt; <code>java.lang.Double</code></li>
* <li>javascript string -&gt; <code>java.lang.String</code></li>
* <li>javascript boolean -&gt; <code>java.lang.Boolean</code></li>
* <li>javascript array whose elements are all of supported types -&gt; <code>java.lang.Object[]</code></li>
* </ul>
* An <code>SWTException</code> is thrown if the return value has an
* unsupported type, or if evaluating the script causes a javascript
* error to be thrown.
* </p><p>
* <p>
* Note: Chrome security context is applicable only to Browsers with style <code>SWT.Mozilla</code>.
* </p>
* @param script the script with javascript commands
* @param trusted <code>true> or <code>false</code> depending on the security context to be used
* @param trusted <code>true</code> or <code>false</code> depending on the security context to be used
*
* @return the return value, if any, of executing the script
*
......
......@@ -153,7 +153,7 @@ BrowserFunction (Browser browser, String name, boolean top, String[] frameNames,
/**
* Disposes of the resources associated with this BrowserFunction.
* Applications must dispose of all BrowserFunctions that they create.
* </p><p>
* <p>
* Note that disposing a Browser automatically disposes all
* BrowserFunctions associated with it.
* </p>
......@@ -177,11 +177,11 @@ void dispose (boolean remove) {
* supported types then this method is invoked with the argument values
* converted as follows:
*
* javascript null or undefined -> <code>null</code>
* javascript number -> <code>java.lang.Double</code>
* javascript string -> <code>java.lang.String</code>
* javascript boolean -> <code>java.lang.Boolean</code>
* javascript array whose elements are all of supported types -> <code>java.lang.Object[]</code>
* javascript null or undefined -&gt; <code>null</code>
* javascript number -&gt; <code>java.lang.Double</code>
* javascript string -&gt; <code>java.lang.String</code>
* javascript boolean -&gt; <code>java.lang.Boolean</code>
* javascript array whose elements are all of supported types -&gt; <code>java.lang.Object[]</code>
*
* If any of the javascript arguments are of unsupported types then the
* function invocation will fail and this method will not be called.
......
......@@ -37,10 +37,10 @@ public interface CloseWindowListener extends SWTEventListener {
* hosts the <code>Browser</code>. The <code>Browser</code> is disposed after this
* notification.
*
* <p>The following fields in the <code>WindowEvent</code> apply:
* <p>The following fields in the <code>WindowEvent</code> apply:</p>
* <ul>
* <li>(in) widget the <code>Browser</code> that is going to be disposed
* </ul></p>
* </ul>
*
* @param event the <code>WindowEvent</code> that specifies the <code>Browser</code>
* that is going to be disposed
......
......@@ -32,9 +32,8 @@ public interface LocationListener extends SWTEventListener {
/**
* This method is called when the current location is about to be changed.
* <p>
*
* <p>The following fields in the <code>LocationEvent</code> apply:
* <p>The following fields in the <code>LocationEvent</code> apply:</p>
* <ul>
* <li>(in) location the location to be loaded
* <li>(in) widget the <code>Browser</code> whose location is changing
......@@ -51,9 +50,8 @@ public void changing(LocationEvent event);
/**
* This method is called when the current location is changed.
* <p>
*
* <p>The following fields in the <code>LocationEvent</code> apply:
* <p>The following fields in the <code>LocationEvent</code> apply:</p>
* <ul>
* <li>(in) location the current location
* <li>(in) top <code>true</code> if the location opens in the top frame or
......
......@@ -43,9 +43,8 @@ public interface OpenWindowListener extends SWTEventListener {
* new window requests.
* <p>
* The navigation is cancelled if the event.required field is set to
* <code>true</code> and the event.browser field is left <code>null</code>.
* <p>
* <p>The following fields in the <code>WindowEvent</code> apply:
* <code>true</code> and the event.browser field is left <code>null</code>.</p>
* <p>The following fields in the <code>WindowEvent</code> apply:</p>
* <ul>
* <li>(in/out) {@link WindowEvent#required}: true if the platform requires the user to provide a
* <code>Browser</code> to handle the new window or false otherwise.
......