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

Print this page

        

*** 99,110 **** // 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; - private volatile boolean cachedFocusableWindow; - private volatile boolean isOpaque = true; private static final Font DEFAULT_FONT = new Font("Lucida Grande", Font.PLAIN, 13); private static LWWindowPeer grabbingWindow; --- 99,108 ----
*** 174,185 **** } setAlwaysOnTop(getTarget().isAlwaysOnTop()); updateMinimumSize(); - cachedFocusableWindow = getTarget().isFocusableWindow(); - setOpacity(getTarget().getOpacity()); setOpaque(getTarget().isOpaque()); // Create surface data and back buffer replaceSurfaceData(1, null); --- 172,181 ----
*** 246,256 **** if (isSimpleWindow()) { LWKeyboardFocusManagerPeer manager = LWKeyboardFocusManagerPeer. getInstance(getAppContext()); if (visible) { - updateFocusableWindowState(); changeFocusedWindow(true, true); // Focus the owner in case this window is focused. } else if (manager.getCurrentFocusedWindow() == getTarget()) { LWWindowPeer owner = getOwnerFrameDialog(LWWindowPeer.this); --- 242,251 ----
*** 401,411 **** platformWindow.setAlwaysOnTop(value); } @Override public void updateFocusableWindowState() { - cachedFocusableWindow = getTarget().isFocusableWindow(); platformWindow.updateFocusableWindowState(); } @Override public void setModalBlocked(Dialog blocker, boolean blocked) { --- 396,405 ----
*** 1118,1128 **** } private boolean focusAllowedFor() { Window window = getTarget(); // TODO: check if modal blocked ! return window.isVisible() && window.isEnabled() && window.isFocusableWindow(); } public boolean isSimpleWindow() { Window window = getTarget(); return !(window instanceof Dialog || window instanceof Frame); --- 1112,1134 ---- } private boolean focusAllowedFor() { Window window = getTarget(); // TODO: check if modal blocked ! return window.isVisible() && window.isEnabled() && isFocusableWindow(); ! } ! ! private boolean isFocusableWindow() { ! boolean focusable = getTarget().isFocusableWindow(); ! if (isSimpleWindow()) { ! LWWindowPeer ownerPeer = getOwnerFrameDialog(this); ! if (ownerPeer == null) { ! return false; ! } ! return focusable && ownerPeer.getTarget().isFocusableWindow(); ! } ! return focusable; } public boolean isSimpleWindow() { Window window = getTarget(); return !(window instanceof Dialog || window instanceof Frame);
*** 1138,1149 **** if (isShowing && !getTarget().isAutoRequestFocus() || skipNextFocusChange) { focusLog.fine("skipping focus change"); skipNextFocusChange = false; return; } ! ! if (!cachedFocusableWindow) { return; } if (becomesFocused) { synchronized (getPeerTreeLock()) { if (blocker != null) { --- 1144,1155 ---- if (isShowing && !getTarget().isAutoRequestFocus() || skipNextFocusChange) { focusLog.fine("skipping focus change"); skipNextFocusChange = false; return; } ! if (!isFocusableWindow() && becomesFocused) { ! focusLog.fine("the window is not focusable"); return; } if (becomesFocused) { synchronized (getPeerTreeLock()) { if (blocker != null) {