提交 be8c2d4b 编写于 作者: A ant

7145827: [macosx] JCK failure in b11: FocusableWindow3

Summary: forward posrt from 7u4
Reviewed-by: art
上级 b158d152
...@@ -101,8 +101,6 @@ public class LWWindowPeer ...@@ -101,8 +101,6 @@ public class LWWindowPeer
// events between MOUSE_PRESSED and MOUSE_RELEASED for particular button // events between MOUSE_PRESSED and MOUSE_RELEASED for particular button
private static int mouseClickButtons = 0; private static int mouseClickButtons = 0;
private volatile boolean cachedFocusableWindow;
private volatile boolean isOpaque = true; private volatile boolean isOpaque = true;
private static final Font DEFAULT_FONT = new Font("Lucida Grande", Font.PLAIN, 13); private static final Font DEFAULT_FONT = new Font("Lucida Grande", Font.PLAIN, 13);
...@@ -172,8 +170,6 @@ public class LWWindowPeer ...@@ -172,8 +170,6 @@ public class LWWindowPeer
setAlwaysOnTop(getTarget().isAlwaysOnTop()); setAlwaysOnTop(getTarget().isAlwaysOnTop());
updateMinimumSize(); updateMinimumSize();
cachedFocusableWindow = getTarget().isFocusableWindow();
setOpacity(getTarget().getOpacity()); setOpacity(getTarget().getOpacity());
setOpaque(getTarget().isOpaque()); setOpaque(getTarget().isOpaque());
...@@ -402,7 +398,6 @@ public class LWWindowPeer ...@@ -402,7 +398,6 @@ public class LWWindowPeer
@Override @Override
public void updateFocusableWindowState() { public void updateFocusableWindowState() {
cachedFocusableWindow = getTarget().isFocusableWindow();
platformWindow.updateFocusableWindowState(); platformWindow.updateFocusableWindowState();
} }
...@@ -1130,7 +1125,19 @@ public class LWWindowPeer ...@@ -1130,7 +1125,19 @@ public class LWWindowPeer
private boolean focusAllowedFor() { private boolean focusAllowedFor() {
Window window = getTarget(); Window window = getTarget();
// TODO: check if modal blocked // TODO: check if modal blocked
return window.isVisible() && window.isEnabled() && window.isFocusableWindow(); 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() { public boolean isSimpleWindow() {
...@@ -1150,8 +1157,8 @@ public class LWWindowPeer ...@@ -1150,8 +1157,8 @@ public class LWWindowPeer
skipNextFocusChange = false; skipNextFocusChange = false;
return; return;
} }
if (!isFocusableWindow() && becomesFocused) {
if (!cachedFocusableWindow) { focusLog.fine("the window is not focusable");
return; return;
} }
if (becomesFocused) { if (becomesFocused) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册