提交 a1a31b7e 编写于 作者: A anthony

6982279: java/awt/FullScreen/TranslucentWindow/TranslucentWindow.java failed due to NPE

Summary: Rely on the WWindowPeer.getTranslucentGraphics()'s return value
Reviewed-by: art, dcherepanov
上级 e249ba9a
...@@ -556,24 +556,26 @@ public abstract class WComponentPeer extends WObjectPeer ...@@ -556,24 +556,26 @@ public abstract class WComponentPeer extends WObjectPeer
Component target = (Component)getTarget(); Component target = (Component)getTarget();
Window window = SunToolkit.getContainingWindow(target); Window window = SunToolkit.getContainingWindow(target);
if (window != null && !window.isOpaque()) { if (window != null) {
// Non-opaque windows do not support heavyweight children.
// Redirect all painting to the Window's Graphics instead.
// The caller is responsible for calling the
// WindowPeer.updateWindow() after painting has finished.
int x = 0, y = 0;
for (Component c = target; c != window; c = c.getParent()) {
x += c.getX();
y += c.getY();
}
Graphics g = Graphics g =
((WWindowPeer)window.getPeer()).getTranslucentGraphics(); ((WWindowPeer)window.getPeer()).getTranslucentGraphics();
// getTranslucentGraphics() returns non-null value for non-opaque windows only
if (g != null) {
// Non-opaque windows do not support heavyweight children.
// Redirect all painting to the Window's Graphics instead.
// The caller is responsible for calling the
// WindowPeer.updateWindow() after painting has finished.
int x = 0, y = 0;
for (Component c = target; c != window; c = c.getParent()) {
x += c.getX();
y += c.getY();
}
g.translate(x, y); g.translate(x, y);
g.clipRect(0, 0, target.getWidth(), target.getHeight()); g.clipRect(0, 0, target.getWidth(), target.getHeight());
return g; return g;
}
} }
SurfaceData surfaceData = this.surfaceData; SurfaceData surfaceData = this.surfaceData;
......
...@@ -594,16 +594,6 @@ public class WWindowPeer extends WPanelPeer implements WindowPeer, ...@@ -594,16 +594,6 @@ public class WWindowPeer extends WPanelPeer implements WindowPeer,
} }
} }
@Override
public Graphics getGraphics() {
synchronized (getStateLock()) {
if (!isOpaque) {
return getTranslucentGraphics();
}
}
return super.getGraphics();
}
@Override @Override
public void setBackground(Color c) { public void setBackground(Color c) {
super.setBackground(c); super.setBackground(c);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册