summaryrefslogtreecommitdiffstats
path: root/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Shell.java
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Shell.java')
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Shell.java1317
1 files changed, 25 insertions, 1292 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Shell.java b/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Shell.java
index 2cb7fa520c..16a2e4422f 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Shell.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Shell.java
@@ -11,223 +11,27 @@ import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ShellListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.internal.carbon.OS;
-import org.eclipse.swt.internal.carbon.Rect;
-/**
- * Instances of this class represent the "windows"
- * which the desktop or "window manager" is managing.
- * Instances that do not have a parent (that is, they
- * are built using the constructor, which takes a
- * <code>Display</code> as the argument) are described
- * as <em>top level</em> shells. Instances that do have
- * a parent are described as <em>secondary</em> or
- * <em>dialog</em> shells.
- * <p>
- * Instances are always displayed in one of the maximized,
- * minimized or normal states:
- * <ul>
- * <li>
- * When an instance is marked as <em>maximized</em>, the
- * window manager will typically resize it to fill the
- * entire visible area of the display, and the instance
- * is usually put in a state where it can not be resized
- * (even if it has style <code>RESIZE</code>) until it is
- * no longer maximized.
- * </li><li>
- * When an instance is in the <em>normal</em> state (neither
- * maximized or minimized), its appearance is controlled by
- * the style constants which were specified when it was created
- * and the restrictions of the window manager (see below).
- * </li><li>
- * When an instance has been marked as <em>minimized</em>,
- * its contents (client area) will usually not be visible,
- * and depending on the window manager, it may be
- * "iconified" (that is, replaced on the desktop by a small
- * simplified representation of itself), relocated to a
- * distinguished area of the screen, or hidden. Combinations
- * of these changes are also possible.
- * </li>
- * </ul>
- * </p>
- * <p>
- * Note: The styles supported by this class must be treated
- * as <em>HINT</em>s, since the window manager for the
- * desktop on which the instance is visible has ultimate
- * control over the appearance and behavior of decorations
- * and modality. For example, some window managers only
- * support resizable windows and will always assume the
- * RESIZE style, even if it is not set. In addition, if a
- * modality style is not supported, it is "upgraded" to a
- * more restrictive modality style that is supported. For
- * example, if <code>PRIMARY_MODAL</code> is not supported,
- * it would be upgraded to <code>APPLICATION_MODAL</code>.
- * <dl>
- * <dt><b>Styles:</b></dt>
- * <dd>BORDER, CLOSE, MIN, MAX, NO_TRIM, RESIZE, TITLE</dd>
- * <dd>APPLICATION_MODAL, MODELESS, PRIMARY_MODAL, SYSTEM_MODAL</dd>
- * <dt><b>Events:</b></dt>
- * <dd>Activate, Close, Deactivate, Deiconify, Iconify</dd>
- * </dl>
- * Class <code>SWT</code> provides two "convenience constants"
- * for the most commonly required style combinations:
- * <dl>
- * <dt><code>SHELL_TRIM</code></dt>
- * <dd>
- * the result of combining the constants which are required
- * to produce a typical application top level shell: (that
- * is, <code>CLOSE | TITLE | MIN | MAX | RESIZE</code>)
- * </dd>
- * <dt><code>DIALOG_TRIM</code></dt>
- * <dd>
- * the result of combining the constants which are required
- * to produce a typical application dialog shell: (that
- * is, <code>TITLE | CLOSE | BORDER</code>)
- * </dd>
- * </dl>
- * </p>
- * <p>
- * Note: Only one of the styles APPLICATION_MODAL, MODELESS,
- * PRIMARY_MODAL and SYSTEM_MODAL may be specified.
- * </p><p>
- * IMPORTANT: This class is not intended to be subclassed.
- * </p>
- *
- * @see Decorations
- * @see SWT
- */
public /*final*/ class Shell extends Decorations {
Display display;
int shellHandle;
- /* AW
- boolean reparented, realized;
- */
- boolean realized;
-
- int oldX, oldY, oldWidth, oldHeight;
- Control lastActive;
- // AW
- private boolean fIsEnabled= true;
- // AW
-/**
- * Constructs a new instance of this class. This is equivalent
- * to calling <code>Shell((Display) null)</code>.
- *
- * @exception SWTException <ul>
- * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
- * <li>ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass</li>
- * </ul>
- */
public Shell () {
this ((Display) null);
}
-/**
- * Constructs a new instance of this class given only the style
- * value describing its behavior and appearance. This is equivalent
- * to calling <code>Shell((Display) null, style)</code>.
- * <p>
- * The style value is either one of the style constants defined in
- * class <code>SWT</code> which is applicable to instances of this
- * class, or must be built by <em>bitwise OR</em>'ing together
- * (that is, using the <code>int</code> "|" operator) two or more
- * of those <code>SWT</code> style constants. The class description
- * lists the style constants that are applicable to the class.
- * Style bits are also inherited from superclasses.
- * </p>
- *
- * @param style the style of control to construct
- *
- * @exception SWTException <ul>
- * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
- * <li>ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass</li>
- * </ul>
- *
- * @see SWT#BORDER
- * @see SWT#CLOSE
- * @see SWT#MIN
- * @see SWT#MAX
- * @see SWT#RESIZE
- * @see SWT#TITLE
- * @see SWT#NO_TRIM
- * @see SWT#SHELL_TRIM
- * @see SWT#DIALOG_TRIM
- * @see SWT#MODELESS
- * @see SWT#PRIMARY_MODAL
- * @see SWT#APPLICATION_MODAL
- * @see SWT#SYSTEM_MODAL
- */
+
public Shell (int style) {
this ((Display) null, style);
}
-/**
- * Constructs a new instance of this class given only the display
- * to create it on. It is created with style <code>SWT.SHELL_TRIM</code>.
- * <p>
- * Note: Currently, null can be passed in for the display argument.
- * This has the effect of creating the shell on the currently active
- * display if there is one. If there is no current display, the
- * shell is created on a "default" display. <b>Passing in null as
- * the display argument is not considered to be good coding style,
- * and may not be supported in a future release of SWT.</b>
- * </p>
- *
- * @param display the display to create the shell on
- *
- * @exception SWTException <ul>
- * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
- * <li>ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass</li>
- * </ul>
- */
+
public Shell (Display display) {
this (display, SWT.SHELL_TRIM);
}
-/**
- * Constructs a new instance of this class given the display
- * to create it on and a style value describing its behavior
- * and appearance.
- * <p>
- * The style value is either one of the style constants defined in
- * class <code>SWT</code> which is applicable to instances of this
- * class, or must be built by <em>bitwise OR</em>'ing together
- * (that is, using the <code>int</code> "|" operator) two or more
- * of those <code>SWT</code> style constants. The class description
- * lists the style constants that are applicable to the class.
- * Style bits are also inherited from superclasses.
- * </p><p>
- * Note: Currently, null can be passed in for the display argument.
- * This has the effect of creating the shell on the currently active
- * display if there is one. If there is no current display, the
- * shell is created on a "default" display. <b>Passing in null as
- * the display argument is not considered to be good coding style,
- * and may not be supported in a future release of SWT.</b>
- * </p>
- *
- * @param display the display to create the shell on
- * @param style the style of control to construct
- *
- * @exception SWTException <ul>
- * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
- * <li>ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass</li>
- * </ul>
- *
- * @see SWT#BORDER
- * @see SWT#CLOSE
- * @see SWT#MIN
- * @see SWT#MAX
- * @see SWT#RESIZE
- * @see SWT#TITLE
- * @see SWT#NO_TRIM
- * @see SWT#SHELL_TRIM
- * @see SWT#DIALOG_TRIM
- * @see SWT#MODELESS
- * @see SWT#PRIMARY_MODAL
- * @see SWT#APPLICATION_MODAL
- * @see SWT#SYSTEM_MODAL
- */
+
public Shell (Display display, int style) {
this (display, null, style, 0);
}
+
Shell (Display display, Shell parent, int style, int handle) {
super ();
@@ -242,73 +46,11 @@ Shell (Display display, Shell parent, int style, int handle) {
this.handle = handle;
createWidget (0);
}
-/**
- * Constructs a new instance of this class given only its
- * parent. It is created with style <code>SWT.DIALOG_TRIM</code>.
- * <p>
- * Note: Currently, null can be passed in for the parent.
- * This has the effect of creating the shell on the currently active
- * display if there is one. If there is no current display, the
- * shell is created on a "default" display. <b>Passing in null as
- * the parent is not considered to be good coding style,
- * and may not be supported in a future release of SWT.</b>
- * </p>
- *
- * @param parent a shell which will be the parent of the new instance
- *
- * @exception IllegalArgumentException <ul>
- * <li>ERROR_NULL_ARGUMENT - if the parent is null</li>
- * </ul>
- * @exception SWTException <ul>
- * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
- * <li>ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass</li>
- * </ul>
- */
+
public Shell (Shell parent) {
this (parent, SWT.DIALOG_TRIM);
}
-/**
- * Constructs a new instance of this class given its parent
- * and a style value describing its behavior and appearance.
- * <p>
- * The style value is either one of the style constants defined in
- * class <code>SWT</code> which is applicable to instances of this
- * class, or must be built by <em>bitwise OR</em>'ing together
- * (that is, using the <code>int</code> "|" operator) two or more
- * of those <code>SWT</code> style constants. The class description
- * lists the style constants that are applicable to the class.
- * Style bits are also inherited from superclasses.
- * </p><p>
- * Note: Currently, null can be passed in for the parent.
- * This has the effect of creating the shell on the currently active
- * display if there is one. If there is no current display, the
- * shell is created on a "default" display. <b>Passing in null as
- * the parent is not considered to be good coding style,
- * and may not be supported in a future release of SWT.</b>
- * </p>
- *
- * @param parent a shell which will be the parent of the new instance
- * @param style the style of control to construct
- *
- * @exception SWTException <ul>
- * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
- * <li>ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass</li>
- * </ul>
- *
- * @see SWT#BORDER
- * @see SWT#CLOSE
- * @see SWT#MIN
- * @see SWT#MAX
- * @see SWT#RESIZE
- * @see SWT#TITLE
- * @see SWT#NO_TRIM
- * @see SWT#SHELL_TRIM
- * @see SWT#DIALOG_TRIM
- * @see SWT#MODELESS
- * @see SWT#PRIMARY_MODAL
- * @see SWT#APPLICATION_MODAL
- * @see SWT#SYSTEM_MODAL
- */
+
public Shell (Shell parent, int style) {
this (parent != null ? parent.getDisplay () : null, parent, style, 0);
}
@@ -322,30 +64,7 @@ static int checkStyle (int style) {
if ((style & SWT.PRIMARY_MODAL) != 0) return bits | SWT.PRIMARY_MODAL;
return bits;
}
-/* AW
-public static Shell carbon_new (Display display, int handle) {
- return new Shell (display, null, SWT.NO_TRIM, handle);
-}
-*/
-/**
- * Adds the listener to the collection of listeners who will
- * be notified when operations are performed on the receiver,
- * by sending the listener one of the messages defined in the
- * <code>ShellListener</code> interface.
- *
- * @param listener the listener which should be notified
- *
- * @exception IllegalArgumentException <ul>
- * <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
- * </ul>
- * @exception SWTException <ul>
- * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
- * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
- * </ul>
- *
- * @see ShellListener
- * @see #removeShellListener
- */
+
public void addShellListener(ShellListener listener) {
checkWidget();
if (listener == null) error (SWT.ERROR_NULL_ARGUMENT);
@@ -356,466 +75,56 @@ public void addShellListener(ShellListener listener) {
addListener(SWT.Iconify,typedListener);
addListener(SWT.Deiconify,typedListener);
}
-void adjustTrim () {
- /* AW
- if (OS.XtIsSubclass (shellHandle, OS.OverrideShellWidgetClass ())) {
- return;
- }
- */
-
- /* Query the trim insets */
- /* AW
- int shellWindow = OS.XtWindow (shellHandle);
- if (shellWindow == 0) return;
- int xDisplay = OS.XtDisplay (shellHandle);
- if (xDisplay == 0) return;
- */
-
- /* Find the direct child of the root window */
- /* AW
- int [] unused = new int [1];
- int [] rootWindow = new int [1];
- int [] parent = new int [1];
- int [] ptr = new int [1];
- int trimWindow = shellWindow;
- OS.XQueryTree (xDisplay, trimWindow, rootWindow, parent, ptr, unused);
- if (ptr [0] != 0) OS.XFree (ptr [0]);
- if (parent [0] == 0) return;
- while (parent [0] != rootWindow [0]) {
- trimWindow = parent [0];
- OS.XQueryTree (xDisplay, trimWindow, unused, parent, ptr, unused);
- if (ptr [0] != 0) OS.XFree (ptr [0]);
- if (parent [0] == 0) return;
- }
- */
-
- /*
- * Translate the coordinates of the shell window to the
- * coordinates of the direct child of the root window
- */
- /* AW
- if (shellWindow == trimWindow) return;
- */
-
- /* Query the border width of the direct child of the root window */
- /*
- int [] trimBorder = new int [1];
- int [] trimWidth = new int [1];
- int [] trimHeight = new int [1];
- OS.XGetGeometry (xDisplay, trimWindow, unused, unused, unused, trimWidth, trimHeight, trimBorder, unused);
- */
- /* Query the border width of the direct child of the shell window */
- /*
- int [] shellBorder = new int [1];
- int [] shellWidth = new int [1];
- int [] shellHeight = new int [1];
- OS.XGetGeometry (xDisplay, shellWindow, unused, unused, unused, shellWidth, shellHeight, shellBorder, unused);
- */
-
- /* Calculate the trim */
- /*
- int width = (trimWidth [0] + (trimBorder [0] * 2)) - (shellWidth [0] + (shellBorder [0] * 2));
- int height = (trimHeight [0] + (trimBorder [0] * 2)) - (shellHeight [0] + (shellBorder [0] * 2));
- */
-
- /* Update the trim guesses to match the query */
- /*
- boolean hasTitle = false, hasResize = false, hasBorder = false;
- if ((style & SWT.NO_TRIM) == 0) {
- hasTitle = (style & (SWT.MIN | SWT.MAX | SWT.TITLE | SWT.MENU)) != 0;
- hasResize = (style & SWT.RESIZE) != 0;
- hasBorder = (style & SWT.BORDER) != 0;
- }
- if (hasTitle) {
- if (hasResize) {
- display.titleResizeTrimWidth = width;
- display.titleResizeTrimHeight = height;
- return;
- }
- if (hasBorder) {
- display.titleBorderTrimWidth = width;
- display.titleBorderTrimHeight = height;
- return;
- }
- display.titleTrimWidth = width;
- display.titleTrimHeight = height;
- return;
- }
- if (hasResize) {
- display.resizeTrimWidth = width;
- display.resizeTrimHeight = height;
- return;
- }
- if (hasBorder) {
- display.borderTrimWidth = width;
- display.borderTrimHeight = height;
- return;
- }
- */
-}
-/**
- * Requests that the window manager close the receiver in
- * the same way it would be closed when the user clicks on
- * the "close box" or performs some other platform specific
- * key or mouse combination that indicates the window
- * should be removed.
- *
- * @exception SWTException <ul>
- * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
- * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
- * </ul>
- *
- * @see #dispose
- */
public void close () {
checkWidget();
- closeWidget ();
-}
-void closeWidget () {
- //System.out.println("Shell.closeWidget: nyi");
- if (!isEnabled ()) return;
- Control widget = parent;
- while (widget != null && !(widget.getShell ().isModal ())) {
- widget = widget.parent;
- }
- if (widget == null) {
- Shell [] shells = getShells ();
- for (int i=0; i<shells.length; i++) {
- Shell shell = shells [i];
- if (shell != this && shell.isModal () && shell.isVisible ()) {
- shell.bringToTop ();
- return;
- }
- }
- }
- Event event = new Event ();
- sendEvent (SWT.Close, event);
- if (event.doit && !isDisposed ()) dispose ();
-}
-public Rectangle computeTrim (int x, int y, int width, int height) {
- checkWidget();
- Rectangle trim = super.computeTrim (x, y, width, height);
- int trimWidth = trimWidth (), trimHeight = trimHeight ();
- trim.x -= trimWidth / 2; trim.y -= trimHeight - (trimWidth / 2);
- trim.width += trimWidth; trim.height += trimHeight + imeHeight ();
- return trim;
}
+
void createHandle (int index) {
state |= HANDLE | CANVAS;
-
- int windowActivationScope= -1;
-
- int decorations = OS.kWindowCompositingAttribute | OS.kWindowStandardHandlerAttribute;
-
- /* AW
- if ((style & SWT.NO_TRIM) == 0) {
- if ((style & SWT.MIN) != 0) decorations |= NSWindow.MiniaturizableWindowMask;
- if ((style & SWT.MAX) != 0) decorations |= OS.MWM_DECOR_MAXIMIZE;
- if ((style & SWT.RESIZE) != 0) decorations |= NSWindow.ResizableWindowMask;
- if ((style & SWT.BORDER) != 0) decorations |= NSWindow.BorderlessWindowMask;
- if ((style & SWT.MENU) != 0) decorations |= OS.MWM_DECOR_MENU;
- if ((style & SWT.TITLE) != 0) decorations |= NSWindow.TitledWindowMask;
- }
- */
-
- if (style == SWT.NONE) {
- } else if ((style & SWT.NO_TRIM) == 0) {
- if ((style & SWT.CLOSE) != 0) decorations |= OS.kWindowCloseBoxAttribute;
- if ((style & SWT.MIN) != 0) decorations |= OS.kWindowCollapseBoxAttribute;
- if ((style & SWT.MAX) != 0) decorations |= OS.kWindowFullZoomAttribute;
- if ((style & SWT.RESIZE) != 0) decorations |= OS.kWindowResizableAttribute;
- }
-
- // if resizable enable 'live resize'
- if ((decorations & OS.kWindowResizableAttribute) != 0)
- decorations |= OS.kWindowLiveResizeAttribute;
-
- // determine modality
- int inputMode = OS.kWindowModalityNone;
- if ((style & SWT.PRIMARY_MODAL) != 0) inputMode = OS.kWindowModalityWindowModal;
- if ((style & SWT.APPLICATION_MODAL) != 0) inputMode = OS.kWindowModalityAppModal;
- if ((style & SWT.SYSTEM_MODAL) != 0) inputMode = OS.kWindowModalitySystemModal;
-
- /* AW
- int [] argList1 = {
- OS.XmNmwmInputMode, inputMode,
- OS.XmNmwmDecorations, decorations,
- OS.XmNoverrideRedirect, (style & SWT.ON_TOP) != 0 ? 1 : 0,
- OS.XmNtitle, ptr,
- };
- */
-
- int windowClass= 0;
- int themeBrush= OS.kThemeBrushDialogBackgroundActive;
- if (parent == null && (style & SWT.ON_TOP) == 0) {
- if ((style & SWT.NO_TRIM) != 0) {
- windowClass= OS.kSheetWindowClass;
- windowActivationScope= OS.kWindowActivationScopeNone;
- } else {
- windowClass= OS.kDocumentWindowClass;
- //themeBrush= OS.kThemeBrushDocumentWindowBackground;
- }
- } else {
- /* AW
- int parentHandle = display.shellHandle;
- if (parent != null) parentHandle = parent.handle;
- shellHandle = OS.XtCreatePopupShell (appClass, widgetClass, parentHandle, argList1, argList1.length / 2);
- */
- if (style == SWT.NONE) {
- windowClass= OS.kSheetWindowClass;
- windowActivationScope= OS.kWindowActivationScopeNone;
- } else if ((style & SWT.NO_TRIM) != 0 && (style & SWT.ON_TOP) != 0) {
- windowClass= OS.kSheetWindowClass;
- windowActivationScope= OS.kWindowActivationScopeNone;
- } else if ((style & SWT.NO_TRIM) != 0) {
- windowClass= OS.kSheetWindowClass;
- windowActivationScope= OS.kWindowActivationScopeNone;
- } else if (inputMode == OS.kWindowModalityAppModal) {
- windowClass= OS.kMovableModalWindowClass;
- } else if (inputMode == OS.kWindowModalitySystemModal) {
- windowClass= OS.kModalWindowClass;
- } else if ((style & SWT.ON_TOP) != 0) {
- windowClass= OS.kSheetWindowClass;
- windowActivationScope= OS.kWindowActivationScopeNone;
- decorations= 0;
- } else {
- windowClass= OS.kDocumentWindowClass;
- }
- }
-
- // check whether window class supports a given decoration
- int allowedAttr= OS.GetAvailableWindowAttributes(windowClass);
- if (decorations != (decorations & allowedAttr)) {
- System.out.println("Shell.createHandle: some attributes are not supported");
- decorations&= allowedAttr;
- }
-
- int[] wHandle= new int[1];
- Rect bounds= new Rect();
- OS.SetRect(bounds, (short)100, (short)100, (short)200, (short)200);
- int rc= OS.CreateNewWindow(windowClass, decorations, bounds, wHandle);
- if (rc != OS.noErr)
- System.out.println("Shell.createHandle: can't create window: " + rc);
- shellHandle= wHandle[0];
- if (shellHandle == 0) error (SWT.ERROR_NO_HANDLES);
-
- if (windowActivationScope != -1)
- if (OS.SetWindowActivationScope(shellHandle, windowActivationScope) != OS.noErr)
- System.out.println("Shell.createHandle: can't set activation scope");
-
- if (themeBrush != 0)
- OS.SetThemeWindowBackground(shellHandle, (short)themeBrush, false);
-
- // set modality
- if (inputMode != OS.kWindowModalityNone) {
- int parentShellHandle= 0;
- if (parent != null) parentShellHandle = parent.handle;
- //System.out.println("Shell.createHandle: OS.SetWindowModality: " + inputMode);
- OS.SetWindowModality(shellHandle, inputMode, parentShellHandle);
- }
-
- /* Create scrolled handle */
- createScrolledHandle (shellHandle);
}
void deregister () {
super.deregister ();
WidgetTable.remove (shellHandle);
}
-void destroyWidget () {
- /*
- * Hide the shell before calling XtDestroyWidget ()
- * so that the shell will disappear without having
- * to dispatch events. Otherwise, the user will be
- * able to interact with the trimmings between the
- * time that the shell is destroyed and the next
- * event is dispatched.
- */
- /* AW
- if (OS.XtIsRealized (shellHandle)) {
- if (OS.XtIsTopLevelShell (shellHandle)) {
- OS.XtUnmapWidget (shellHandle);
- } else {
- OS.XtPopdown (shellHandle);
- }
- }
- */
- OS.HideWindow(shellHandle);
- super.destroyWidget ();
-}
public void dispose () {
- /*
- * Note: It is valid to attempt to dispose a widget
- * more than once. If this happens, fail silently.
- */
if (isDisposed()) return;
-
- /*
- * This code is intentionally commented. On some
- * platforms, the owner window is repainted right
- * away when the dialog window exits. This behavior
- * is currently unspecified.
- */
-// if (!isValidThread ()) error (SWT.ERROR_THREAD_INVALID_ACCESS);
-// Display oldDisplay = display;
-
- /*
- * Feature in Motif. When an override-redirected shell
- * is disposed, Motif does not assign a new active top
- * level shell. The parent shell appears to be active,
- * but XGetInputFocus returns the root window, not the
- * parent. The fix is to make the parent be the active
- * top level shell when the child shell is disposed.
- */
- /* AW
- Composite parent = this.parent;
- int [] argList = {OS.XmNoverrideRedirect, 0};
- OS.XtGetValues (shellHandle, argList, argList.length / 2);
- */
super.dispose ();
- /* AW
- if (parent != null && argList [1] != 0) {
- Shell shell = parent.getShell ();
- shell.bringToTop ();
- }
- */
-
- /*
- * This code intentionally commented.
- */
-// if (oldDisplay != null) oldDisplay.update ();
-}
-void enableWidget (boolean enabled) {
- super.enableWidget (enabled);
- enableHandle (enabled, shellHandle);
}
-/**
- * Moves the receiver to the top of the drawing order for
- * the display on which it was created (so that all other
- * shells on that display, which are not the receiver's
- * children will be drawn behind it) and forces the window
- * manager to make the shell active.
- *
- * @exception SWTException <ul>
- * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
- * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
- * </ul>
- *
- * @since 2.0
- * @see Control#moveAbove
- * @see Control#setFocus
- * @see Control#setVisible
- * @see Display#getActiveShell
- * @see Decorations#setDefaultButton
- * @see Shell#open
- * @see Shell#setActive
- */
+
public void forceActive () {
checkWidget ();
- OS.SelectWindow(shellHandle);
}
+
public int getBorderWidth () {
checkWidget();
- /* AW
- int [] argList = {OS.XmNborderWidth, 0};
- OS.XtGetValues (scrolledHandle, argList, argList.length / 2);
- return argList [1];
- */
return 0;
}
public Rectangle getBounds () {
checkWidget();
- /* AW
- short [] root_x = new short [1], root_y = new short [1];
- OS.XtTranslateCoords (scrolledHandle, (short) 0, (short) 0, root_x, root_y);
- int [] argList = {OS.XmNwidth, 0, OS.XmNheight, 0, OS.XmNborderWidth, 0};
- OS.XtGetValues (scrolledHandle, argList, argList.length / 2);
- int border = argList [5];
- */
-
- Rect contentBounds= new Rect();
- OS.GetWindowBounds(shellHandle, (short)OS.kWindowContentRgn, contentBounds);
-
- Rect bounds= new Rect();
- OS.GetControlBounds(scrolledHandle, bounds);
- int trimWidth = trimWidth (), trimHeight = trimHeight ();
- int border= 0;
- /* AW
- int width = argList [1] + trimWidth + (border * 2);
- int height = argList [3] + trimHeight + (border * 2);
- return new Rectangle (root_x [0], root_y [0], width, height);
- */
- int width = bounds.right - bounds.left + trimWidth + (border * 2);
- int height = bounds.bottom - bounds.top + trimHeight + (border * 2);
- Rectangle r= new Rectangle (contentBounds.left, contentBounds.top, width, height);
- return r;
-
- /*
- OS.GetWindowBounds(shellHandle, OS.kWindowContentRgn, bounds.getData());
- Rectangle r= bounds.toRectangle();
- System.out.println("Shell.getBounds: fixme " + r); // should be the contentView
- return r;
- */
+ return new Rectangle (0, 0, 0, 0);
}
public Display getDisplay () {
if (display == null) error (SWT.ERROR_WIDGET_DISPOSED);
return display;
}
-// AW
+
public boolean getEnabled () {
checkWidget();
- return fIsEnabled;
-}
-// AW
-/**
- * Returns the receiver's input method editor mode. This
- * will be the result of bitwise OR'ing together one or
- * more of the following constants defined in class
- * <code>SWT</code>:
- * <code>NONE</code>, <code>ROMAN</code>, <code>DBCS</code>,
- * <code>PHONETIC</code>, <code>NATIVE</code>, <code>ALPHA</code>.
- *
- * @return the IME mode
- *
- * @exception SWTException <ul>
- * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
- * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
- * </ul>
- *
- * @see SWT
- */
-public int getImeInputMode () {
- checkWidget();
- return SWT.NONE;
+ return false;
}
+
public Point getLocation () {
checkWidget();
- /* AW
- short [] root_x = new short [1], root_y = new short [1];
- OS.XtTranslateCoords (scrolledHandle, (short) 0, (short) 0, root_x, root_y);
- return new Point (root_x [0], root_y [0]);
- */
- // returns the location of the contentArea
- Rect bounds= new Rect();
- OS.GetWindowBounds(shellHandle, (short)OS.kWindowContentRgn, bounds);
- return new Point(bounds.left, bounds.top);
+ return new Point(0, 0);
}
+
public Shell getShell () {
checkWidget();
return this;
}
-/**
- * Returns an array containing all shells which are
- * descendents of the receiver.
- * <p>
- * @return the dialog shells
- *
- * @exception SWTException <ul>
- * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
- * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
- * </ul>
- */
+
public Shell [] getShells () {
checkWidget();
int count = 0;
@@ -842,347 +151,28 @@ public Shell [] getShells () {
}
public Point getSize () {
checkWidget();
- //System.out.println("Shell.getSize: " + shellHandle);
- /* AW
- int [] argList = {OS.XmNwidth, 0, OS.XmNheight, 0, OS.XmNborderWidth, 0};
- OS.XtGetValues (scrolledHandle, argList, argList.length / 2);
- int border = argList [5];
- */
- Rect bounds= new Rect();
- OS.GetControlBounds(scrolledHandle, bounds);
- int trimWidth = trimWidth (), trimHeight = trimHeight ();
- int border = 0;
- /* AW
- int width = argList [1] + trimWidth + (border * 2);
- int height = argList [3] + trimHeight + (border * 2);
- return new Point (width, height);
- */
- int width = bounds.right - bounds.left + trimWidth + (border * 2);
- int height = bounds.bottom - bounds.top + trimHeight + (border * 2);
- Point p= new Point (width, height);
- //System.out.println(" Shell.getSize: " + p);
- return p;
+ return new Point (0, 0);
}
+
public boolean getVisible () {
checkWidget();
- /* AW
- if (!OS.XtIsRealized (handle)) return false;
- int xDisplay = OS.XtDisplay (handle);
- if (xDisplay == 0) return false;
- int xWindow = OS.XtWindow (handle);
- if (xWindow == 0) return false;
- XWindowAttributes attributes = new XWindowAttributes ();
- OS.XGetWindowAttributes (xDisplay, xWindow, attributes);
- if (attributes.map_state == OS.IsViewable) return true;
- int [] argList = {OS.XmNmappedWhenManaged, 0};
- OS.XtGetValues (shellHandle, argList, argList.length / 2);
- return minimized && attributes.map_state == OS.IsUnviewable && argList [1] != 0;
- */
- return OS.IsWindowVisible(shellHandle);
-}
-void hookEvents () {
- super.hookEvents ();
- /* AW
- int windowProc = display.windowProc;
- OS.XtAddEventHandler (shellHandle, OS.StructureNotifyMask, false, windowProc, SWT.Resize);
- if (OS.XtIsSubclass (shellHandle, OS.OverrideShellWidgetClass ())) return;
- OS.XtAddEventHandler (shellHandle, OS.FocusChangeMask, false, windowProc, SWT.FocusIn);
- int [] argList = {OS.XmNdeleteResponse, OS.XmDO_NOTHING};
- OS.XtSetValues (shellHandle, argList, argList.length / 2);
- int xDisplay = OS.XtDisplay (shellHandle);
- if (xDisplay != 0) {
- int atom = OS.XmInternAtom (xDisplay, WM_DELETE_WINDOW, false);
- OS.XmAddWMProtocolCallback (shellHandle, atom, windowProc, SWT.Dispose);
- }
- */
- Display display= getDisplay();
- int ref= OS.GetWindowEventTarget(shellHandle);
- int[] mask= new int[] {
- OS.kEventClassWindow, OS.kEventWindowActivated,
- OS.kEventClassWindow, OS.kEventWindowDeactivated,
- OS.kEventClassWindow, OS.kEventWindowBoundsChanged,
- OS.kEventClassWindow, OS.kEventWindowClose,
- // the window only tracks the down and mouse wheel events;
- // up, dragged, and move events are handled by the application because
- // we need to get these events even if the mouse is outside of the window.
- OS.kEventClassMouse, OS.kEventMouseDown,
- OS.kEventClassMouse, OS.kEventMouseWheelMoved,
- };
- OS.InstallEventHandler(ref, display.fWindowProc, mask.length / 2, mask, shellHandle, null);
-}
-int imeHeight () {
- /* AW
- if (!IsDBLocale) return 0;
-// realizeWidget ();
- int [] argList1 = {OS.XmNheight, 0};
- OS.XtGetValues (shellHandle, argList1, argList1.length / 2);
- int [] argList2 = {OS.XmNheight, 0};
- OS.XtGetValues (scrolledHandle, argList2, argList2.length / 2);
- return argList1 [1] - argList2 [];
- */
- return 0;
+ return false;
}
+
public boolean isEnabled () {
checkWidget();
return getEnabled ();
}
-boolean isModal () {
- checkWidget();
- /* AW
- int [] argList = {OS.XmNmwmInputMode, 0};
- OS.XtGetValues (shellHandle, argList, argList.length / 2);
- return (argList [1] != -1 && argList [1] != OS.MWM_INPUT_MODELESS);
- */
- int[] modalityKind= new int[1];
- if (OS.GetWindowModality(shellHandle, modalityKind, null) == OS.noErr)
- return modalityKind[0] != OS.kWindowModalityNone;
- return false;
-}
+
public boolean isVisible () {
checkWidget();
return getVisible ();
}
-void manageChildren () {
- /* AW
- OS.XtSetMappedWhenManaged (shellHandle, false);
- */
- super.manageChildren ();
- Rect bounds= new Rect();
- OS.GetAvailableWindowPositioningBounds(OS.GetMainDevice(), bounds);
- int width = (bounds.right - bounds.left) * 5 / 8;
- int height = (bounds.bottom - bounds.top) * 5 / 8;
- OS.SizeWindow(shellHandle, (short)width, (short)height, true);
-}
-/**
- * Moves the receiver to the top of the drawing order for
- * the display on which it was created (so that all other
- * shells on that display, which are not the receiver's
- * children will be drawn behind it), marks it visible,
- * and sets focus to its default button (if it has one)
- * and asks the window manager to make the shell active.
- *
- * @exception SWTException <ul>
- * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
- * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
- * </ul>
- *
- * @see Control#moveAbove
- * @see Control#setFocus
- * @see Control#setVisible
- * @see Display#getActiveShell
- * @see Decorations#setDefaultButton
- * @see Shell#setActive
- * @see Shell#forceActive
- */
+
public void open () {
checkWidget();
- setVisible (true);
}
-int processDispose (Object callData) {
- closeWidget ();
- return 0;
-}
-
-int processResize (Object callData) {
-
- Rect bounds= new Rect();
- // outside bounds and location
- OS.GetWindowBounds(shellHandle, (short)OS.kWindowStructureRgn, bounds);
- int x= bounds.left;
- int y= bounds.top;
-
- // inside bounds and location
- OS.GetWindowBounds(shellHandle, (short)OS.kWindowContentRgn, bounds);
- int w= bounds.right - bounds.left;
- int h= bounds.bottom - bounds.top;
-
- boolean positionChanged= (oldX != x || oldY != y);
- boolean sizeChanged= (oldWidth != w || oldHeight != h);
-
- if (scrolledHandle != 0 && sizeChanged) {
- OS.SetRect(bounds, (short)0, (short)0, (short)w, (short)h);
- handleResize(scrolledHandle, bounds);
- }
-
- if (positionChanged) {
- //System.out.println("Shell.send: SWT.Move");
- sendEvent(SWT.Move);
- }
-
- if (sizeChanged) {
- //System.out.println("Shell.send: SWT.Resize");
- sendEvent (SWT.Resize);
- if (layout != null)
- layout (false);
- }
-
- if (!OS.IsWindowVisible(shellHandle))
- return 0;
-
-
- if (x != 0) oldX = x;
- if (y != 0) oldY = y;
- oldWidth = w;
- oldHeight = h;
-
- /* AW
- XConfigureEvent xEvent = new XConfigureEvent ();
- OS.memmove (xEvent, callData, XConfigureEvent.sizeof);
- switch (xEvent.type) {
- case OS.ReparentNotify: {
- if (reparented) return 0;
- reparented = true;
- short [] root_x = new short [1], root_y = new short [1];
- OS.XtTranslateCoords (scrolledHandle, (short) 0, (short) 0, root_x, root_y);
- int [] argList = {OS.XmNwidth, 0, OS.XmNheight, 0};
- OS.XtGetValues (scrolledHandle, argList, argList.length / 2);
- xEvent.x = root_x [0]; xEvent.y = root_y [0];
- xEvent.width = argList [1]; xEvent.height = argList [3];
- // fall through
- }
- case OS.ConfigureNotify:
- if (!reparented) return 0;
- if (oldX != xEvent.x || oldY != xEvent.y) sendEvent (SWT.Move);
- if (oldWidth != xEvent.width || oldHeight != xEvent.height) {
- sendEvent (SWT.Resize);
- if (layout != null) layout (false);
- }
- if (xEvent.x != 0) oldX = xEvent.x;
- if (xEvent.y != 0) oldY = xEvent.y;
- oldWidth = xEvent.width;
- oldHeight = xEvent.height;
- return 0;
- case OS.UnmapNotify:
- int [] argList = {OS.XmNmappedWhenManaged, 0};
- OS.XtGetValues (shellHandle, argList, argList.length / 2);
- if (argList [1] != 0) {
- minimized = true;
- sendEvent (SWT.Iconify);
- }
- return 0;
- case OS.MapNotify:
- if (minimized) {
- minimized = false;
- sendEvent (SWT.Deiconify);
- }
- return 0;
- }
- */
- return 0;
-}
-
-int processSetFocus (Object callData) {
- /* AW
- XFocusChangeEvent xEvent = new XFocusChangeEvent ();
- OS.memmove (xEvent, callData, XFocusChangeEvent.sizeof);
- int handle = OS.XtWindowToWidget (xEvent.display, xEvent.window);
- */
- int handle = shellHandle; // AW FIXME fake
- if (handle != shellHandle) return super.processSetFocus (callData);
-
- /* AW
- if (xEvent.mode != OS.NotifyNormal) return 0;
- if (xEvent.detail != OS.NotifyNonlinear) return 0;
- switch (xEvent.type) {
- case OS.FocusIn:
- postEvent (SWT.Activate);
- break;
- case OS.FocusOut:
- postEvent (SWT.Deactivate);
- break;
- }
- */
-
- Menu menuBar= getMenuBar();
- Boolean b= (Boolean) callData;
-
- /*
- if (OS.IsWindowActive(shellHandle) != b.booleanValue()) {
- System.out.println("Shell.processSetFocus: " + b);
- return 0;
- }
- */
-
- if (b.booleanValue()) {
- if (menuBar != null) {
- OS.SetRootMenu(menuBar.handle);
- }
- postEvent (SWT.Activate);
- /*
- if (!isDisposed())
- restoreFocus ();
- */
- } else {
- //if (menuBar != null)
- // OS.ReleaseMenu(menuBar.handle);
-
- /*
- setActiveControl (null);
-
- if (isDisposed()) return 0;
- */
- postEvent (SWT.Deactivate);
- /*
- if (!isDisposed())
- saveFocus ();
- */
- }
- return 0;
-}
-void propagateWidget (boolean enabled) {
- super.propagateWidget (enabled);
- propagateHandle (enabled, shellHandle);
-}
-void realizeWidget () {
- if (realized) return;
- /* AW
- OS.XtRealizeWidget (shellHandle);
- */
- realizeChildren ();
- realized = true;
-}
-void register () {
- super.register ();
- WidgetTable.put (shellHandle, this);
-}
-void releaseHandle () {
- super.releaseHandle ();
- shellHandle = 0;
-}
-void releaseShells () {
- Shell [] shells = getShells ();
- for (int i=0; i<shells.length; i++) {
- Shell shell = shells [i];
- if (!shell.isDisposed ()) {
- shell.releaseWidget ();
- shell.releaseHandle ();
- }
- }
-}
-void releaseWidget () {
- releaseShells ();
- super.releaseWidget ();
- display = null;
- lastActive = null;
-}
-/**
- * Removes the listener from the collection of listeners who will
- * be notified when operations are performed on the receiver.
- *
- * @param listener the listener which should no longer be notified
- *
- * @exception IllegalArgumentException <ul>
- * <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
- * </ul>
- * @exception SWTException <ul>
- * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
- * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
- * </ul>
- *
- * @see ShellListener
- * @see #addShellListener
- */
public void removeShellListener(ShellListener listener) {
checkWidget();
if (listener == null) error (SWT.ERROR_NULL_ARGUMENT);
@@ -1193,283 +183,26 @@ public void removeShellListener(ShellListener listener) {
eventTable.unhook(SWT.Iconify,listener);
eventTable.unhook(SWT.Deiconify,listener);
}
-void saveBounds () {
-/*
- MacRect bounds= new MacRect();
-
- // outside bounds and location
- OS.GetWindowBounds(shellHandle, OS.kWindowStructureRgn, bounds.getData());
- oldX = bounds.getX();
- oldY = bounds.getY();
-
- // inside bounds and location
- OS.GetWindowBounds(shellHandle, OS.kWindowContentRgn, bounds.getData());
- oldWidth = bounds.getWidth();
- oldHeight = bounds.getHeight();
-*/
-}
-
-void setActiveControl (Control control) {
- if (control != null && control.isDisposed ()) control = null;
- if (lastActive != null && lastActive.isDisposed ()) lastActive = null;
- if (lastActive == control) return;
-
- /*
- * Compute the list of controls to be activated and
- * deactivated by finding the first common parent
- * control.
- */
- Control [] activate = (control == null) ? new Control[0] : control.getPath ();
- Control [] deactivate = (lastActive == null) ? new Control[0] : lastActive.getPath ();
- lastActive = control;
- int index = 0, length = Math.min (activate.length, deactivate.length);
- while (index < length) {
- if (activate [index] != deactivate [index]) break;
- index++;
- }
-
- /*
- * It is possible (but unlikely), that application
- * code could have destroyed some of the widgets. If
- * this happens, keep processing those widgets that
- * are not disposed.
- */
- for (int i=deactivate.length-1; i>=index; --i) {
- if (!deactivate [i].isDisposed ()) {
- deactivate [i].sendEvent (SWT.Deactivate);
- }
- }
- for (int i=activate.length-1; i>=index; --i) {
- if (!activate [i].isDisposed ()) {
- activate [i].sendEvent (SWT.Activate);
- }
- }
-}
public void setBounds (int x, int y, int width, int height) {
checkWidget();
- /*
- * Feature in Motif. Motif will not allow a window
- * to have a zero width or zero height. The fix is
- * to ensure these values are never zero.
- */
- saveBounds ();
- int newWidth = Math.max (width - trimWidth (), 1);
- int newHeight = Math.max (height - trimHeight (), 1);
-
- boolean isFocus = caret != null && caret.isFocusCaret ();
- if (isFocus) caret.killFocus ();
-
- OS.MoveWindow(shellHandle, (short)x, (short)y, false);
- OS.SizeWindow(shellHandle, (short)newWidth, (short)newHeight, true);
- //processResize (null);
-
- if (isFocus) caret.setFocus ();
-}
-// AW
-public void setEnabled (boolean enabled) {
- fIsEnabled= enabled;
- super.setEnabled(enabled);
-}
-// AW
-/**
- * Sets the input method editor mode to the argument which
- * should be the result of bitwise OR'ing together one or more
- * of the following constants defined in class <code>SWT</code>:
- * <code>NONE</code>, <code>ROMAN</code>, <code>DBCS</code>,
- * <code>PHONETIC</code>, <code>NATIVE</code>, <code>ALPHA</code>.
- *
- * @param mode the new IME mode
- *
- * @exception SWTException <ul>
- * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
- * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
- * </ul>
- *
- * @see SWT
- */
-public void setImeInputMode (int mode) {
- checkWidget();
}
+
public void setLocation (int x, int y) {
checkWidget();
- saveBounds ();
- boolean isFocus = caret != null && caret.isFocusCaret ();
- if (isFocus) caret.killFocus ();
- OS.MoveWindow(shellHandle, (short)x, (short)y, true);
- //processResize(null);
- if (isFocus) caret.setFocus ();
}
+
public void setMinimized (boolean minimized) {
checkWidget();
-
- /*
- * Bug in MOTIF. For some reason, the receiver does not keep the
- * value of the XmNiconic resource up to date when the user minimizes
- * and restores the window. As a result, a window that is minimized
- * by the user and then restored by the programmer is not restored.
- * This happens because the XmNiconic resource is unchanged when the
- * window is minimized by the user and subsequent attempts to set the
- * resource fail because the new value of the resource is the same as
- * the old value. The fix is to force XmNiconic to be up to date
- * before setting the desired value.
- */
- /* AW
- int [] argList = {OS.XmNiconic, 0};
- OS.XtGetValues (shellHandle, argList, argList.length / 2);
- if ((argList [1] != 0) != this.minimized) {
- argList [1] = this.minimized ? 1 : 0;
- OS.XtSetValues (shellHandle, argList, argList.length / 2);
- }
- */
-
- /* Minimize or restore the shell */
- /* AW
- argList [1] = (this.minimized = minimized) ? 1 : 0;
- OS.XtSetValues (shellHandle, argList, argList.length / 2);
- */
-
- /* Force the XWindowAttributes to be up to date */
- /*
- int xDisplay = OS.XtDisplay (handle);
- if (xDisplay != 0) OS.XSync (xDisplay, false);
- */
-
- OS.CollapseWindow(shellHandle, true);
}
public void setSize (int width, int height) {
checkWidget();
- saveBounds ();
- int newWidth = Math.max (width - trimWidth (), 1);
- int newHeight = Math.max (height - trimHeight (), 1);
- boolean isFocus = caret != null && caret.isFocusCaret ();
- if (isFocus) caret.killFocus ();
- OS.SizeWindow(shellHandle, (short)newWidth, (short)newHeight, true);
- //processResize (null);
- if (isFocus) caret.setFocus ();
}
public void setText (String string) {
checkWidget();
- if (string == null) error (SWT.ERROR_NULL_ARGUMENT);
- super.setText (string);
- int sHandle= 0;
- try {
- sHandle= OS.CFStringCreateWithCharacters(string);
- OS.SetWindowTitleWithCFString(shellHandle, sHandle);
- } finally {
- if (sHandle != 0)
- OS.CFRelease(sHandle);
- }
}
public void setVisible (boolean visible) {
checkWidget();
- realizeWidget ();
-
- /* Show the shell */
- if (visible) {
-
- sendEvent (SWT.Show);
- if (isDisposed ()) return;
-
- /* Map the widget */
- /* AW
- OS.XtSetMappedWhenManaged (shellHandle, true);
- if (OS.XtIsTopLevelShell (shellHandle)) {
- OS.XtMapWidget (shellHandle);
- } else {
- OS.XtPopup (shellHandle, OS.XtGrabNone);
- }
- */
- OS.ShowWindow(shellHandle);
- //OS.SelectWindow(shellHandle);
- OS.BringToFront(shellHandle);
-
- processResize (null);
-
- // find focus
- //if (savedFocus == null)
- // setFocus();
-
- /*
- * Force the shell to be fully exposed before returning.
- * This ensures that the shell coordinates are correct
- * when queried directly after showing the shell.
- */
- do {
- display.update ();
- } while (!isVisible ());
-
- //adjustTrim ();
-
- /* Set the saved focus widget */
- /*
- if (savedFocus != null && !savedFocus.isDisposed ()) {
- savedFocus.setFocus ();
- }
- savedFocus = null;
- */
-
- //sendEvent (SWT.Show);
-
- return;
- }
-
- Shell[] shells= getShells();
- for (int i= 0; i < shells.length; i++) {
- Shell shell= shells[i];
- if (shell.isVisible())
- shell.setVisible(false);
- }
-
- /* Hide the shell */
- /* AW
- OS.XtSetMappedWhenManaged (shellHandle, false);
- if (OS.XtIsTopLevelShell (shellHandle)) {
- OS.XtUnmapWidget (shellHandle);
- } else {
- OS.XtPopdown (shellHandle);
- }
- */
- OS.HideWindow(shellHandle);
-
- sendEvent (SWT.Hide);
-}
-int topHandle () {
- return shellHandle;
-}
-int trimHeight () {
- if ((style & SWT.NO_TRIM) != 0) return 0;
- /* AW
- boolean hasTitle = false, hasResize = false, hasBorder = false;
- hasTitle = (style & (SWT.MIN | SWT.MAX | SWT.TITLE | SWT.MENU)) != 0;
- hasResize = (style & SWT.RESIZE) != 0;
- hasBorder = (style & SWT.BORDER) != 0;
- if (hasTitle) {
- if (hasResize) return display.titleResizeTrimHeight;
- if (hasBorder) return display.titleBorderTrimHeight;
- return display.titleTrimHeight;
- }
- if (hasResize) return display.resizeTrimHeight;
- if (hasBorder) return display.borderTrimHeight;
- */
- return 0;
-}
-int trimWidth () {
- if ((style & SWT.NO_TRIM) != 0) return 0;
- /* AW
- boolean hasTitle = false, hasResize = false, hasBorder = false;
- hasTitle = (style & (SWT.MIN | SWT.MAX | SWT.TITLE | SWT.MENU)) != 0;
- hasResize = (style & SWT.RESIZE) != 0;
- hasBorder = (style & SWT.BORDER) != 0;
- if (hasTitle) {
- if (hasResize) return display.titleResizeTrimWidth;
- if (hasBorder) return display.titleBorderTrimWidth;
- return display.titleTrimWidth;
- }
- if (hasResize) return display.resizeTrimWidth;
- if (hasBorder) return display.borderTrimWidth;
- */
- return 0;
}
}