31 import sun.java2d.opengl.CGLLayer; |
31 import sun.java2d.opengl.CGLLayer; |
32 import sun.java2d.SurfaceData; |
32 import sun.java2d.SurfaceData; |
33 |
33 |
34 import sun.awt.CGraphicsConfig; |
34 import sun.awt.CGraphicsConfig; |
35 import sun.awt.CGraphicsDevice; |
35 import sun.awt.CGraphicsDevice; |
|
36 import sun.awt.CausedFocusEvent; |
36 |
37 |
37 import java.awt.*; |
38 import java.awt.*; |
38 import java.awt.BufferCapabilities.FlipContents; |
39 import java.awt.BufferCapabilities.FlipContents; |
|
40 |
|
41 import sun.util.logging.PlatformLogger; |
39 |
42 |
40 /* |
43 /* |
41 * Provides a lightweight implementation of the EmbeddedFrame. |
44 * Provides a lightweight implementation of the EmbeddedFrame. |
42 */ |
45 */ |
43 public class CPlatformEmbeddedFrame implements PlatformWindow { |
46 public class CPlatformEmbeddedFrame implements PlatformWindow { |
44 |
47 |
|
48 private static final PlatformLogger focusLogger = PlatformLogger.getLogger("sun.lwawt.macosx.focus.CPlatformEmbeddedFrame"); |
|
49 |
45 private CGLLayer windowLayer; |
50 private CGLLayer windowLayer; |
46 private LWWindowPeer peer; |
51 private LWWindowPeer peer; |
|
52 private CEmbeddedFrame target; |
47 |
53 |
48 private volatile int screenX = 0; |
54 private volatile int screenX = 0; |
49 private volatile int screenY = 0; |
55 private volatile int screenY = 0; |
50 |
56 |
51 @Override // PlatformWindow |
57 @Override // PlatformWindow |
52 public void initialize(Window target, final LWWindowPeer peer, PlatformWindow owner) { |
58 public void initialize(Window target, final LWWindowPeer peer, PlatformWindow owner) { |
53 this.peer = peer; |
59 this.peer = peer; |
54 this.windowLayer = new CGLLayer(peer); |
60 this.windowLayer = new CGLLayer(peer); |
|
61 this.target = (CEmbeddedFrame)target; |
55 } |
62 } |
56 |
63 |
57 @Override |
64 @Override |
58 public LWWindowPeer getPeer() { |
65 public LWWindowPeer getPeer() { |
59 return peer; |
66 return peer; |
147 |
154 |
148 @Override |
155 @Override |
149 public void updateFocusableWindowState() {} |
156 public void updateFocusableWindowState() {} |
150 |
157 |
151 @Override |
158 @Override |
|
159 public boolean rejectFocusRequest(CausedFocusEvent.Cause cause) { |
|
160 // Cross-app activation requests are not allowed. |
|
161 if (cause != CausedFocusEvent.Cause.MOUSE_EVENT && |
|
162 !target.isParentWindowActive()) |
|
163 { |
|
164 focusLogger.fine("the embedder is inactive, so the request is rejected"); |
|
165 return true; |
|
166 } |
|
167 return false; |
|
168 } |
|
169 |
|
170 @Override |
152 public boolean requestWindowFocus() { |
171 public boolean requestWindowFocus() { |
153 return true; |
172 return true; |
154 } |
173 } |
155 |
174 |
156 @Override |
175 @Override |