src/macosx/classes/sun/lwawt/LWWindowPeer.java

Print this page

        

*** 41,51 **** public class LWWindowPeer extends LWContainerPeer<Window, JComponent> implements FramePeer, DialogPeer, FullScreenCapable, DisplayChangedListener, PlatformEventNotifier { ! public static enum PeerType { SIMPLEWINDOW, FRAME, DIALOG, EMBEDDED_FRAME, VIEW_EMBEDDED_FRAME, --- 41,51 ---- public class LWWindowPeer extends LWContainerPeer<Window, JComponent> implements FramePeer, DialogPeer, FullScreenCapable, DisplayChangedListener, PlatformEventNotifier { ! public enum PeerType { SIMPLEWINDOW, FRAME, DIALOG, EMBEDDED_FRAME, VIEW_EMBEDDED_FRAME,
*** 81,99 **** // check that the mouse is over the window private volatile boolean isMouseOver = false; // A peer where the last mouse event came to. Used by cursor manager to // find the component under cursor ! private static volatile LWComponentPeer lastCommonMouseEventPeer = null; // A peer where the last mouse event came to. Used to generate // MOUSE_ENTERED/EXITED notifications ! private volatile LWComponentPeer lastMouseEventPeer; // Peers where all dragged/released events should come to, // depending on what mouse button is being dragged according to Cocoa ! private static LWComponentPeer mouseDownTarget[] = new LWComponentPeer[3]; // A bitmask that indicates what mouse buttons produce MOUSE_CLICKED events // on MOUSE_RELEASE. Click events are only generated if there were no drag // events between MOUSE_PRESSED and MOUSE_RELEASED for particular button private static int mouseClickButtons = 0; --- 81,99 ---- // check that the mouse is over the window private volatile boolean isMouseOver = false; // A peer where the last mouse event came to. Used by cursor manager to // find the component under cursor ! private static volatile LWComponentPeer<?, ?> lastCommonMouseEventPeer; // A peer where the last mouse event came to. Used to generate // MOUSE_ENTERED/EXITED notifications ! private volatile LWComponentPeer<?, ?> lastMouseEventPeer; // Peers where all dragged/released events should come to, // depending on what mouse button is being dragged according to Cocoa ! private static final LWComponentPeer<?, ?>[] mouseDownTarget = new LWComponentPeer<?, ?>[3]; // A bitmask that indicates what mouse buttons produce MOUSE_CLICKED events // on MOUSE_RELEASE. Click events are only generated if there were no drag // events between MOUSE_PRESSED and MOUSE_RELEASED for particular button private static int mouseClickButtons = 0;
*** 127,137 **** super(target, platformComponent); this.platformWindow = platformWindow; this.peerType = peerType; Window owner = target.getOwner(); ! LWWindowPeer ownerPeer = (owner != null) ? (LWWindowPeer)owner.getPeer() : null; PlatformWindow ownerDelegate = (ownerPeer != null) ? ownerPeer.getPlatformWindow() : null; // The delegate.initialize() needs a non-null GC on X11. GraphicsConfiguration gc = getTarget().getGraphicsConfiguration(); synchronized (getStateLock()) { --- 127,138 ---- super(target, platformComponent); this.platformWindow = platformWindow; this.peerType = peerType; Window owner = target.getOwner(); ! LWWindowPeer ownerPeer = (owner != null) ? (LWWindowPeer) AWTAccessor ! .getComponentAccessor().getPeer(owner) : null; PlatformWindow ownerDelegate = (ownerPeer != null) ? ownerPeer.getPlatformWindow() : null; // The delegate.initialize() needs a non-null GC on X11. GraphicsConfiguration gc = getTarget().getGraphicsConfiguration(); synchronized (getStateLock()) {
*** 161,174 **** platformWindow.initialize(target, this, ownerDelegate); // Init warning window(for applets) SecurityWarningWindow warn = null; ! if (((Window)target).getWarningString() != null) { // accessSystemTray permission allows to display TrayIcon, TrayIcon tooltip // and TrayIcon balloon windows without a warning window. ! if (!AWTAccessor.getWindowAccessor().isTrayIconWindow((Window)target)) { LWToolkit toolkit = (LWToolkit)Toolkit.getDefaultToolkit(); warn = toolkit.createSecurityWarning(target, this); } } --- 162,175 ---- platformWindow.initialize(target, this, ownerDelegate); // Init warning window(for applets) SecurityWarningWindow warn = null; ! if (target.getWarningString() != null) { // accessSystemTray permission allows to display TrayIcon, TrayIcon tooltip // and TrayIcon balloon windows without a warning window. ! if (!AWTAccessor.getWindowAccessor().isTrayIconWindow(target)) { LWToolkit toolkit = (LWToolkit)Toolkit.getDefaultToolkit(); warn = toolkit.createSecurityWarning(target, this); } }
*** 208,217 **** --- 209,219 ---- } activateDisplayListener(); } // Just a helper method + @Override public PlatformWindow getPlatformWindow() { return platformWindow; } @Override
*** 389,399 **** } @Override public void setModalBlocked(Dialog blocker, boolean blocked) { synchronized (getPeerTreeLock()) { ! this.blocker = blocked ? (LWWindowPeer)blocker.getPeer() : null; } platformWindow.setModalBlocked(blocked); } --- 391,402 ---- } @Override public void setModalBlocked(Dialog blocker, boolean blocked) { synchronized (getPeerTreeLock()) { ! this.blocker = blocked ? (LWWindowPeer) AWTAccessor ! .getComponentAccessor().getPeer(blocker) : null; } platformWindow.setModalBlocked(blocked); }
*** 456,465 **** --- 459,469 ---- public final void setTextured(final boolean isTextured) { textured = isTextured; } + @Override public final boolean isTranslucent() { synchronized (getStateLock()) { /* * Textured window is a special case of translucent window. * The difference is only in nswindow background. So when we set
*** 535,545 **** @Override public void blockWindows(List<Window> windows) { //TODO: LWX will probably need some collectJavaToplevels to speed this up for (Window w : windows) { ! WindowPeer wp = (WindowPeer)w.getPeer(); if (wp != null) { wp.setModalBlocked((Dialog)getTarget(), true); } } } --- 539,550 ---- @Override public void blockWindows(List<Window> windows) { //TODO: LWX will probably need some collectJavaToplevels to speed this up for (Window w : windows) { ! WindowPeer wp = ! (WindowPeer) AWTAccessor.getComponentAccessor().getPeer(w); if (wp != null) { wp.setModalBlocked((Dialog)getTarget(), true); } } }
*** 692,702 **** byte[] bdata) { // TODO: fill "bdata" member of AWTEvent Rectangle r = getBounds(); // findPeerAt() expects parent coordinates ! LWComponentPeer targetPeer = findPeerAt(r.x + x, r.y + y); if (id == MouseEvent.MOUSE_EXITED) { isMouseOver = false; if (lastMouseEventPeer != null) { if (lastMouseEventPeer.isEnabled()) { --- 697,707 ---- byte[] bdata) { // TODO: fill "bdata" member of AWTEvent Rectangle r = getBounds(); // findPeerAt() expects parent coordinates ! LWComponentPeer<?, ?> targetPeer = findPeerAt(r.x + x, r.y + y); if (id == MouseEvent.MOUSE_EXITED) { isMouseOver = false; if (lastMouseEventPeer != null) { if (lastMouseEventPeer.isEnabled()) {
*** 741,751 **** if (topmostWindowPeer == this || topmostWindowPeer == null) { generateMouseEnterExitEventsForComponents(when, button, x, y, screenX, screenY, modifiers, clickCount, popupTrigger, targetPeer); } else { ! LWComponentPeer topmostTargetPeer = topmostWindowPeer != null ? topmostWindowPeer.findPeerAt(r.x + x, r.y + y) : null; topmostWindowPeer.generateMouseEnterExitEventsForComponents(when, button, x, y, screenX, screenY, modifiers, clickCount, popupTrigger, topmostTargetPeer); } --- 746,756 ---- if (topmostWindowPeer == this || topmostWindowPeer == null) { generateMouseEnterExitEventsForComponents(when, button, x, y, screenX, screenY, modifiers, clickCount, popupTrigger, targetPeer); } else { ! LWComponentPeer<?, ?> topmostTargetPeer = topmostWindowPeer != null ? topmostWindowPeer.findPeerAt(r.x + x, r.y + y) : null; topmostWindowPeer.generateMouseEnterExitEventsForComponents(when, button, x, y, screenX, screenY, modifiers, clickCount, popupTrigger, topmostTargetPeer); }
*** 838,848 **** } private void generateMouseEnterExitEventsForComponents(long when, int button, int x, int y, int screenX, int screenY, int modifiers, int clickCount, boolean popupTrigger, ! LWComponentPeer targetPeer) { if (!isMouseOver || targetPeer == lastMouseEventPeer) { return; } --- 843,853 ---- } private void generateMouseEnterExitEventsForComponents(long when, int button, int x, int y, int screenX, int screenY, int modifiers, int clickCount, boolean popupTrigger, ! final LWComponentPeer<?, ?> targetPeer) { if (!isMouseOver || targetPeer == lastMouseEventPeer) { return; }
*** 897,907 **** byte[] bdata) { // TODO: could we just use the last mouse event target here? Rectangle r = getBounds(); // findPeerAt() expects parent coordinates ! final LWComponentPeer targetPeer = findPeerAt(r.x + x, r.y + y); if (targetPeer == null || !targetPeer.isEnabled()) { return; } Point lp = targetPeer.windowToLocal(x, y, this); --- 902,912 ---- byte[] bdata) { // TODO: could we just use the last mouse event target here? Rectangle r = getBounds(); // findPeerAt() expects parent coordinates ! final LWComponentPeer<?, ?> targetPeer = findPeerAt(r.x + x, r.y + y); if (targetPeer == null || !targetPeer.isEnabled()) { return; } Point lp = targetPeer.windowToLocal(x, y, this);
*** 1156,1166 **** if (owner != null && !owner.platformWindow.isActive()) { if (focusLog.isLoggable(PlatformLogger.Level.FINE)) { focusLog.fine("requesting native focus to the owner " + owner); } LWWindowPeer currentActivePeer = (currentActive != null ? ! (LWWindowPeer)currentActive.getPeer() : null); // Ensure the opposite is natively active and suppress sending events. if (currentActivePeer != null && currentActivePeer.platformWindow.isActive()) { if (focusLog.isLoggable(PlatformLogger.Level.FINE)) { focusLog.fine("the opposite is " + currentActivePeer); --- 1161,1172 ---- if (owner != null && !owner.platformWindow.isActive()) { if (focusLog.isLoggable(PlatformLogger.Level.FINE)) { focusLog.fine("requesting native focus to the owner " + owner); } LWWindowPeer currentActivePeer = (currentActive != null ? ! (LWWindowPeer) AWTAccessor ! .getComponentAccessor().getPeer(currentActive) : null); // Ensure the opposite is natively active and suppress sending events. if (currentActivePeer != null && currentActivePeer.platformWindow.isActive()) { if (focusLog.isLoggable(PlatformLogger.Level.FINE)) { focusLog.fine("the opposite is " + currentActivePeer);
*** 1268,1278 **** static LWWindowPeer getOwnerFrameDialog(LWWindowPeer peer) { Window owner = (peer != null ? peer.getTarget().getOwner() : null); while (owner != null && !(owner instanceof Frame || owner instanceof Dialog)) { owner = owner.getOwner(); } ! return owner != null ? (LWWindowPeer)owner.getPeer() : null; } /** * Returns the foremost modal blocker of this window, or null. */ --- 1274,1285 ---- static LWWindowPeer getOwnerFrameDialog(LWWindowPeer peer) { Window owner = (peer != null ? peer.getTarget().getOwner() : null); while (owner != null && !(owner instanceof Frame || owner instanceof Dialog)) { owner = owner.getOwner(); } ! return owner != null ? (LWWindowPeer) AWTAccessor.getComponentAccessor() ! .getPeer(owner) : null; } /** * Returns the foremost modal blocker of this window, or null. */
*** 1287,1301 **** --- 1294,1310 ---- } return blocker; } } + @Override public void enterFullScreenMode() { platformWindow.enterFullScreenMode(); updateSecurityWarningVisibility(); } + @Override public void exitFullScreenMode() { platformWindow.exitFullScreenMode(); updateSecurityWarningVisibility(); }