author | dcherepanov |
Wed, 21 Mar 2012 15:25:12 +0400 | |
changeset 12177 | 7b84ed7d0efa |
parent 12047 | 320a714614e9 |
child 14753 | a56a685d137f |
permissions | -rw-r--r-- |
12047 | 1 |
/* |
2 |
* Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. |
|
3 |
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
|
4 |
* |
|
5 |
* This code is free software; you can redistribute it and/or modify it |
|
6 |
* under the terms of the GNU General Public License version 2 only, as |
|
7 |
* published by the Free Software Foundation. Oracle designates this |
|
8 |
* particular file as subject to the "Classpath" exception as provided |
|
9 |
* by Oracle in the LICENSE file that accompanied this code. |
|
10 |
* |
|
11 |
* This code is distributed in the hope that it will be useful, but WITHOUT |
|
12 |
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
13 |
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
14 |
* version 2 for more details (a copy is included in the LICENSE file that |
|
15 |
* accompanied this code). |
|
16 |
* |
|
17 |
* You should have received a copy of the GNU General Public License version |
|
18 |
* 2 along with this work; if not, write to the Free Software Foundation, |
|
19 |
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
|
20 |
* |
|
21 |
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
|
22 |
* or visit www.oracle.com if you need additional information or have any |
|
23 |
* questions. |
|
24 |
*/ |
|
25 |
||
26 |
#import "CWrapper.h" |
|
27 |
||
28 |
#import <JavaNativeFoundation/JavaNativeFoundation.h> |
|
29 |
||
30 |
#import "AWTWindow.h" |
|
31 |
#import "LWCToolkit.h" |
|
32 |
#import "GeomUtilities.h" |
|
33 |
#import "ThreadUtilities.h" |
|
34 |
||
35 |
#import "sun_lwawt_macosx_CWrapper_NSWindow.h" |
|
36 |
||
37 |
/* |
|
38 |
* Class: sun_lwawt_macosx_CWrapper$NSObject |
|
39 |
* Method: release |
|
40 |
* Signature: (J)V |
|
41 |
*/ |
|
42 |
JNIEXPORT void JNICALL |
|
43 |
Java_sun_lwawt_macosx_CWrapper_00024NSObject_release |
|
44 |
(JNIEnv *env, jclass cls, jlong objectPtr) |
|
45 |
{ |
|
46 |
JNF_COCOA_ENTER(env); |
|
47 |
||
48 |
id obj = (id)jlong_to_ptr(objectPtr); |
|
49 |
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ |
|
50 |
CFRelease(obj); |
|
51 |
}]; |
|
52 |
||
53 |
JNF_COCOA_EXIT(env); |
|
54 |
} |
|
55 |
||
56 |
||
57 |
/* |
|
58 |
* Class: sun_lwawt_macosx_CWrapper$NSWindow |
|
59 |
* Method: makeKeyAndOrderFront |
|
60 |
* Signature: (J)V |
|
61 |
*/ |
|
62 |
JNIEXPORT void JNICALL |
|
63 |
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_makeKeyAndOrderFront |
|
64 |
(JNIEnv *env, jclass cls, jlong windowPtr) |
|
65 |
{ |
|
66 |
JNF_COCOA_ENTER(env); |
|
67 |
||
68 |
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr); |
|
69 |
[JNFRunLoop performOnMainThread:@selector(makeKeyAndOrderFront:) |
|
70 |
on:window |
|
71 |
withObject:nil |
|
72 |
waitUntilDone:NO]; |
|
73 |
||
74 |
JNF_COCOA_EXIT(env); |
|
75 |
} |
|
76 |
||
77 |
/* |
|
78 |
* Class: sun_lwawt_macosx_CWrapper$NSWindow |
|
12177
7b84ed7d0efa
7150349: [macosx] Applets attempting to show popup menus activate the applet process
dcherepanov
parents:
12047
diff
changeset
|
79 |
* Method: makeKeyWindow |
7b84ed7d0efa
7150349: [macosx] Applets attempting to show popup menus activate the applet process
dcherepanov
parents:
12047
diff
changeset
|
80 |
* Signature: (J)V |
7b84ed7d0efa
7150349: [macosx] Applets attempting to show popup menus activate the applet process
dcherepanov
parents:
12047
diff
changeset
|
81 |
*/ |
7b84ed7d0efa
7150349: [macosx] Applets attempting to show popup menus activate the applet process
dcherepanov
parents:
12047
diff
changeset
|
82 |
JNIEXPORT void JNICALL |
7b84ed7d0efa
7150349: [macosx] Applets attempting to show popup menus activate the applet process
dcherepanov
parents:
12047
diff
changeset
|
83 |
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_makeKeyWindow |
7b84ed7d0efa
7150349: [macosx] Applets attempting to show popup menus activate the applet process
dcherepanov
parents:
12047
diff
changeset
|
84 |
(JNIEnv *env, jclass cls, jlong windowPtr) |
7b84ed7d0efa
7150349: [macosx] Applets attempting to show popup menus activate the applet process
dcherepanov
parents:
12047
diff
changeset
|
85 |
{ |
7b84ed7d0efa
7150349: [macosx] Applets attempting to show popup menus activate the applet process
dcherepanov
parents:
12047
diff
changeset
|
86 |
JNF_COCOA_ENTER(env); |
7b84ed7d0efa
7150349: [macosx] Applets attempting to show popup menus activate the applet process
dcherepanov
parents:
12047
diff
changeset
|
87 |
|
7b84ed7d0efa
7150349: [macosx] Applets attempting to show popup menus activate the applet process
dcherepanov
parents:
12047
diff
changeset
|
88 |
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr); |
7b84ed7d0efa
7150349: [macosx] Applets attempting to show popup menus activate the applet process
dcherepanov
parents:
12047
diff
changeset
|
89 |
[JNFRunLoop performOnMainThread:@selector(makeKeyWindow) |
7b84ed7d0efa
7150349: [macosx] Applets attempting to show popup menus activate the applet process
dcherepanov
parents:
12047
diff
changeset
|
90 |
on:window |
7b84ed7d0efa
7150349: [macosx] Applets attempting to show popup menus activate the applet process
dcherepanov
parents:
12047
diff
changeset
|
91 |
withObject:nil |
7b84ed7d0efa
7150349: [macosx] Applets attempting to show popup menus activate the applet process
dcherepanov
parents:
12047
diff
changeset
|
92 |
waitUntilDone:NO]; |
7b84ed7d0efa
7150349: [macosx] Applets attempting to show popup menus activate the applet process
dcherepanov
parents:
12047
diff
changeset
|
93 |
|
7b84ed7d0efa
7150349: [macosx] Applets attempting to show popup menus activate the applet process
dcherepanov
parents:
12047
diff
changeset
|
94 |
JNF_COCOA_EXIT(env); |
7b84ed7d0efa
7150349: [macosx] Applets attempting to show popup menus activate the applet process
dcherepanov
parents:
12047
diff
changeset
|
95 |
} |
7b84ed7d0efa
7150349: [macosx] Applets attempting to show popup menus activate the applet process
dcherepanov
parents:
12047
diff
changeset
|
96 |
|
7b84ed7d0efa
7150349: [macosx] Applets attempting to show popup menus activate the applet process
dcherepanov
parents:
12047
diff
changeset
|
97 |
/* |
7b84ed7d0efa
7150349: [macosx] Applets attempting to show popup menus activate the applet process
dcherepanov
parents:
12047
diff
changeset
|
98 |
* Class: sun_lwawt_macosx_CWrapper$NSWindow |
12047 | 99 |
* Method: makeMainWindow |
100 |
* Signature: (J)V |
|
101 |
*/ |
|
102 |
JNIEXPORT void JNICALL |
|
103 |
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_makeMainWindow |
|
104 |
(JNIEnv *env, jclass cls, jlong windowPtr) |
|
105 |
{ |
|
106 |
JNF_COCOA_ENTER(env); |
|
107 |
||
108 |
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr); |
|
109 |
[JNFRunLoop performOnMainThread:@selector(makeMainWindow) |
|
110 |
on:window |
|
111 |
withObject:nil |
|
112 |
waitUntilDone:NO]; |
|
113 |
||
114 |
JNF_COCOA_EXIT(env); |
|
115 |
} |
|
116 |
||
117 |
/* |
|
118 |
* Class: sun_lwawt_macosx_CWrapper$NSWindow |
|
119 |
* Method: canBecomeMainWindow |
|
120 |
* Signature: (J)V |
|
121 |
*/ |
|
122 |
JNIEXPORT jboolean JNICALL |
|
123 |
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_canBecomeMainWindow |
|
124 |
(JNIEnv *env, jclass cls, jlong windowPtr) |
|
125 |
{ |
|
126 |
__block jboolean canBecomeMainWindow = JNI_FALSE; |
|
127 |
||
128 |
JNF_COCOA_ENTER(env); |
|
129 |
||
130 |
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr); |
|
131 |
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ |
|
132 |
canBecomeMainWindow = [window canBecomeMainWindow]; |
|
133 |
}]; |
|
134 |
||
135 |
JNF_COCOA_EXIT(env); |
|
136 |
||
137 |
return canBecomeMainWindow; |
|
138 |
} |
|
139 |
||
140 |
/* |
|
141 |
* Class: sun_lwawt_macosx_CWrapper$NSWindow |
|
142 |
* Method: isKeyWindow |
|
143 |
* Signature: (J)Z |
|
144 |
*/ |
|
145 |
JNIEXPORT jboolean JNICALL |
|
146 |
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_isKeyWindow |
|
147 |
(JNIEnv *env, jclass cls, jlong windowPtr) |
|
148 |
{ |
|
149 |
__block jboolean isKeyWindow = JNI_FALSE; |
|
150 |
||
151 |
JNF_COCOA_ENTER(env); |
|
152 |
||
153 |
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr); |
|
154 |
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ |
|
155 |
isKeyWindow = [window isKeyWindow]; |
|
156 |
}]; |
|
157 |
||
158 |
JNF_COCOA_EXIT(env); |
|
159 |
||
160 |
return isKeyWindow; |
|
161 |
} |
|
162 |
||
163 |
/* |
|
164 |
* Class: sun_lwawt_macosx_CWrapper$NSWindow |
|
165 |
* Method: orderFront |
|
166 |
* Signature: (J)V |
|
167 |
*/ |
|
168 |
JNIEXPORT void JNICALL |
|
169 |
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_orderFront |
|
170 |
(JNIEnv *env, jclass cls, jlong windowPtr) |
|
171 |
{ |
|
172 |
JNF_COCOA_ENTER(env); |
|
173 |
||
174 |
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr); |
|
175 |
[JNFRunLoop performOnMainThread:@selector(orderFront:) |
|
176 |
on:window |
|
177 |
withObject:window |
|
178 |
waitUntilDone:NO]; |
|
179 |
||
180 |
JNF_COCOA_EXIT(env); |
|
181 |
} |
|
182 |
||
183 |
/* |
|
184 |
* Class: sun_lwawt_macosx_CWrapper$NSWindow |
|
185 |
* Method: orderOut |
|
186 |
* Signature: (J)V |
|
187 |
*/ |
|
188 |
JNIEXPORT void JNICALL |
|
189 |
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_orderOut |
|
190 |
(JNIEnv *env, jclass cls, jlong windowPtr) |
|
191 |
{ |
|
192 |
JNF_COCOA_ENTER(env); |
|
193 |
||
194 |
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr); |
|
195 |
[JNFRunLoop performOnMainThread:@selector(orderOut:) |
|
196 |
on:window |
|
197 |
withObject:window |
|
198 |
waitUntilDone:NO]; |
|
199 |
||
200 |
JNF_COCOA_EXIT(env); |
|
201 |
} |
|
202 |
||
203 |
/* |
|
204 |
* Class: sun_lwawt_macosx_CWrapper$NSWindow |
|
205 |
* Method: orderFrontRegardless |
|
206 |
* Signature: (J)V |
|
207 |
*/ |
|
208 |
JNIEXPORT void JNICALL |
|
209 |
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_orderFrontRegardless |
|
210 |
(JNIEnv *env, jclass cls, jlong windowPtr) |
|
211 |
{ |
|
212 |
JNF_COCOA_ENTER(env); |
|
213 |
||
214 |
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr); |
|
215 |
[JNFRunLoop performOnMainThread:@selector(orderFrontRegardless) |
|
216 |
on:window |
|
217 |
withObject:nil |
|
218 |
waitUntilDone:NO]; |
|
219 |
||
220 |
JNF_COCOA_EXIT(env); |
|
221 |
} |
|
222 |
||
223 |
/* |
|
224 |
* Class: sun_lwawt_macosx_CWrapper$NSWindow |
|
225 |
* Method: orderWindow |
|
226 |
* Signature: (JIJ)V |
|
227 |
*/ |
|
228 |
JNIEXPORT void JNICALL |
|
229 |
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_orderWindow |
|
230 |
(JNIEnv *env, jclass cls, jlong windowPtr, jint order, jlong relativeToPtr) |
|
231 |
{ |
|
232 |
JNF_COCOA_ENTER(env); |
|
233 |
||
234 |
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr); |
|
235 |
NSWindow *relativeTo = (NSWindow *)jlong_to_ptr(relativeToPtr); |
|
236 |
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ |
|
237 |
[window orderWindow:(NSWindowOrderingMode)order relativeTo:[relativeTo windowNumber]]; |
|
238 |
}]; |
|
239 |
||
240 |
JNF_COCOA_EXIT(env); |
|
241 |
} |
|
242 |
||
243 |
// Used for CWrapper.NSWindow.setLevel() (and level() which isn't implemented yet) |
|
244 |
static NSInteger LEVELS[sun_lwawt_macosx_CWrapper_NSWindow_MAX_WINDOW_LEVELS]; |
|
245 |
static void initLevels() |
|
246 |
{ |
|
247 |
static dispatch_once_t pred; |
|
248 |
||
249 |
dispatch_once(&pred, ^{ |
|
250 |
LEVELS[sun_lwawt_macosx_CWrapper_NSWindow_NSNormalWindowLevel] = NSNormalWindowLevel; |
|
251 |
LEVELS[sun_lwawt_macosx_CWrapper_NSWindow_NSFloatingWindowLevel] = NSFloatingWindowLevel; |
|
252 |
}); |
|
253 |
} |
|
254 |
||
255 |
/* |
|
256 |
* Class: sun_lwawt_macosx_CWrapper$NSWindow |
|
257 |
* Method: setLevel |
|
258 |
* Signature: (JI)V |
|
259 |
*/ |
|
260 |
JNIEXPORT void JNICALL |
|
261 |
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_setLevel |
|
262 |
(JNIEnv *env, jclass cls, jlong windowPtr, jint level) |
|
263 |
{ |
|
264 |
JNF_COCOA_ENTER(env); |
|
265 |
||
266 |
if (level >= 0 && level < sun_lwawt_macosx_CWrapper_NSWindow_MAX_WINDOW_LEVELS) { |
|
267 |
initLevels(); |
|
268 |
||
269 |
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr); |
|
270 |
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ |
|
271 |
[window setLevel: LEVELS[level]]; |
|
272 |
}]; |
|
273 |
} else { |
|
274 |
[JNFException raise:env as:kIllegalArgumentException reason:"unknown level"]; |
|
275 |
} |
|
276 |
||
277 |
JNF_COCOA_EXIT(env); |
|
278 |
} |
|
279 |
||
280 |
/* |
|
281 |
* Class: sun_lwawt_macosx_CWrapper$NSWindow |
|
282 |
* Method: addChildWindow |
|
283 |
* Signature: (JJI)V |
|
284 |
*/ |
|
285 |
JNIEXPORT void JNICALL |
|
286 |
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_addChildWindow |
|
287 |
(JNIEnv *env, jclass cls, jlong parentPtr, jlong childPtr, jint order) |
|
288 |
{ |
|
289 |
JNF_COCOA_ENTER(env); |
|
290 |
||
291 |
NSWindow *parent = (NSWindow *)jlong_to_ptr(parentPtr); |
|
292 |
NSWindow *child = (NSWindow *)jlong_to_ptr(childPtr); |
|
293 |
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ |
|
294 |
[parent addChildWindow:child ordered:order]; |
|
295 |
}]; |
|
296 |
||
297 |
JNF_COCOA_EXIT(env); |
|
298 |
} |
|
299 |
||
300 |
/* |
|
301 |
* Class: sun_lwawt_macosx_CWrapper$NSWindow |
|
302 |
* Method: removeChildWindow |
|
303 |
* Signature: (JJ)V |
|
304 |
*/ |
|
305 |
JNIEXPORT void JNICALL |
|
306 |
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_removeChildWindow |
|
307 |
(JNIEnv *env, jclass cls, jlong parentPtr, jlong childPtr) |
|
308 |
{ |
|
309 |
JNF_COCOA_ENTER(env); |
|
310 |
||
311 |
AWTWindow *parent = (AWTWindow *)jlong_to_ptr(parentPtr); |
|
312 |
AWTWindow *child = (AWTWindow *)jlong_to_ptr(childPtr); |
|
313 |
[JNFRunLoop performOnMainThread:@selector(removeChildWindow:) |
|
314 |
on:parent |
|
315 |
withObject:child |
|
316 |
waitUntilDone:NO]; |
|
317 |
||
318 |
JNF_COCOA_EXIT(env); |
|
319 |
} |
|
320 |
||
321 |
/* |
|
322 |
* Class: sun_lwawt_macosx_CWrapper$NSWindow |
|
323 |
* Method: setFrame |
|
324 |
* Signature: (JIIIIZ)V |
|
325 |
*/ |
|
326 |
JNIEXPORT void JNICALL |
|
327 |
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_setFrame |
|
328 |
(JNIEnv *env, jclass cls, jlong windowPtr, jint x, jint y, jint w, jint h, jboolean display) |
|
329 |
{ |
|
330 |
JNF_COCOA_ENTER(env); |
|
331 |
||
332 |
AWTWindow *window = (AWTWindow *)jlong_to_ptr(windowPtr); |
|
333 |
NSRect frame = NSMakeRect(x, y, w, h); |
|
334 |
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ |
|
335 |
[window setFrame:frame display:display]; |
|
336 |
}]; |
|
337 |
||
338 |
JNF_COCOA_EXIT(env); |
|
339 |
} |
|
340 |
||
341 |
/* |
|
342 |
* Class: sun_lwawt_macosx_CWrapper$NSWindow |
|
343 |
* Method: setAlphaValue |
|
344 |
* Signature: (JF)V |
|
345 |
*/ |
|
346 |
JNIEXPORT void JNICALL |
|
347 |
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_setAlphaValue |
|
348 |
(JNIEnv *env, jclass cls, jlong windowPtr, jfloat alpha) |
|
349 |
{ |
|
350 |
JNF_COCOA_ENTER(env); |
|
351 |
||
352 |
AWTWindow *window = (AWTWindow *)jlong_to_ptr(windowPtr); |
|
353 |
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ |
|
354 |
[window setAlphaValue:(CGFloat)alpha]; |
|
355 |
}]; |
|
356 |
||
357 |
JNF_COCOA_EXIT(env); |
|
358 |
} |
|
359 |
||
360 |
/* |
|
361 |
* Class: sun_lwawt_macosx_CWrapper$NSWindow |
|
362 |
* Method: setOpaque |
|
363 |
* Signature: (Z)V |
|
364 |
*/ |
|
365 |
JNIEXPORT void JNICALL |
|
366 |
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_setOpaque |
|
367 |
(JNIEnv *env, jclass cls, jlong windowPtr, jboolean opaque) |
|
368 |
{ |
|
369 |
JNF_COCOA_ENTER(env); |
|
370 |
||
371 |
AWTWindow *window = (AWTWindow *)jlong_to_ptr(windowPtr); |
|
372 |
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ |
|
373 |
[window setOpaque:(BOOL)opaque]; |
|
374 |
}]; |
|
375 |
||
376 |
JNF_COCOA_EXIT(env); |
|
377 |
} |
|
378 |
||
379 |
/* |
|
380 |
* Class: sun_lwawt_macosx_CWrapper$NSWindow |
|
381 |
* Method: setBackgroundColor |
|
382 |
* Signature: (J)V |
|
383 |
*/ |
|
384 |
JNIEXPORT void JNICALL |
|
385 |
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_setBackgroundColor |
|
386 |
(JNIEnv *env, jclass cls, jlong windowPtr, jlong colorPtr) |
|
387 |
{ |
|
388 |
JNF_COCOA_ENTER(env); |
|
389 |
||
390 |
AWTWindow *window = (AWTWindow *)jlong_to_ptr(windowPtr); |
|
391 |
NSColor *color = (NSColor *)jlong_to_ptr(colorPtr); |
|
392 |
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ |
|
393 |
[window setBackgroundColor:color]; |
|
394 |
}]; |
|
395 |
||
396 |
JNF_COCOA_EXIT(env); |
|
397 |
} |
|
398 |
||
399 |
/* |
|
400 |
* Class: sun_lwawt_macosx_CWrapper$NSWindow |
|
401 |
* Method: screen |
|
402 |
* Signature: (J)J |
|
403 |
*/ |
|
404 |
JNIEXPORT jlong JNICALL |
|
405 |
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_screen |
|
406 |
(JNIEnv *env, jclass cls, jlong windowPtr) |
|
407 |
{ |
|
408 |
__block jlong screenPtr = 0L; |
|
409 |
||
410 |
JNF_COCOA_ENTER(env); |
|
411 |
||
412 |
AWTWindow *window = (AWTWindow *)jlong_to_ptr(windowPtr); |
|
413 |
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ |
|
414 |
const NSScreen *screen = [window screen]; |
|
415 |
CFRetain(screen); // GC |
|
416 |
screenPtr = ptr_to_jlong(screen); |
|
417 |
}]; |
|
418 |
||
419 |
JNF_COCOA_EXIT(env); |
|
420 |
||
421 |
return screenPtr; |
|
422 |
} |
|
423 |
||
424 |
/* |
|
425 |
* Method: miniaturize |
|
426 |
* Signature: (J)V |
|
427 |
*/ |
|
428 |
JNIEXPORT void JNICALL |
|
429 |
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_miniaturize |
|
430 |
(JNIEnv *env, jclass cls, jlong windowPtr) |
|
431 |
{ |
|
432 |
JNF_COCOA_ENTER(env); |
|
433 |
||
434 |
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr); |
|
435 |
[JNFRunLoop performOnMainThread:@selector(miniaturize:) |
|
436 |
on:window |
|
437 |
withObject:nil |
|
438 |
waitUntilDone:NO]; |
|
439 |
||
440 |
JNF_COCOA_EXIT(env); |
|
441 |
} |
|
442 |
||
443 |
/* |
|
444 |
* Class: sun_lwawt_macosx_CWrapper$NSWindow |
|
445 |
* Method: deminiaturize |
|
446 |
* Signature: (J)V |
|
447 |
*/ |
|
448 |
JNIEXPORT void JNICALL |
|
449 |
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_deminiaturize |
|
450 |
(JNIEnv *env, jclass cls, jlong windowPtr) |
|
451 |
{ |
|
452 |
JNF_COCOA_ENTER(env); |
|
453 |
||
454 |
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr); |
|
455 |
[JNFRunLoop performOnMainThread:@selector(deminiaturize:) |
|
456 |
on:window |
|
457 |
withObject:nil |
|
458 |
waitUntilDone:NO]; |
|
459 |
||
460 |
JNF_COCOA_EXIT(env); |
|
461 |
} |
|
462 |
||
463 |
/* |
|
464 |
* Class: sun_lwawt_macosx_CWrapper$NSWindow |
|
465 |
* Method: zoom |
|
466 |
* Signature: (J)V |
|
467 |
*/ |
|
468 |
JNIEXPORT void JNICALL |
|
469 |
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_zoom |
|
470 |
(JNIEnv *env, jclass cls, jlong windowPtr) |
|
471 |
{ |
|
472 |
JNF_COCOA_ENTER(env); |
|
473 |
||
474 |
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr); |
|
475 |
[JNFRunLoop performOnMainThread:@selector(zoom:) |
|
476 |
on:window |
|
477 |
withObject:nil |
|
478 |
waitUntilDone:NO]; |
|
479 |
||
480 |
JNF_COCOA_EXIT(env); |
|
481 |
} |
|
482 |
||
483 |
/* |
|
484 |
* Class: sun_lwawt_macosx_CWrapper$NSWindow |
|
485 |
* Method: makeFirstResponder |
|
486 |
* Signature: (JJ)V |
|
487 |
*/ |
|
488 |
JNIEXPORT void JNICALL |
|
489 |
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_makeFirstResponder |
|
490 |
(JNIEnv *env, jclass cls, jlong windowPtr, jlong responderPtr) |
|
491 |
{ |
|
492 |
JNF_COCOA_ENTER(env); |
|
493 |
||
494 |
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr); |
|
495 |
NSResponder *responder = (NSResponder *)jlong_to_ptr(responderPtr); |
|
496 |
[JNFRunLoop performOnMainThread:@selector(makeFirstResponder:) |
|
497 |
on:window |
|
498 |
withObject:responder |
|
499 |
waitUntilDone:NO]; |
|
500 |
||
501 |
JNF_COCOA_EXIT(env); |
|
502 |
} |
|
503 |
||
504 |
/* |
|
505 |
* Class: sun_lwawt_macosx_CWrapper$NSView |
|
506 |
* Method: addSubview |
|
507 |
* Signature: (JJ)V |
|
508 |
*/ |
|
509 |
JNIEXPORT void JNICALL |
|
510 |
Java_sun_lwawt_macosx_CWrapper_00024NSView_addSubview |
|
511 |
(JNIEnv *env, jclass cls, jlong viewPtr, jlong subviewPtr) |
|
512 |
{ |
|
513 |
JNF_COCOA_ENTER(env); |
|
514 |
||
515 |
NSView *view = (NSView *)jlong_to_ptr(viewPtr); |
|
516 |
NSView *subview = (NSView *)jlong_to_ptr(subviewPtr); |
|
517 |
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ |
|
518 |
[view addSubview:subview]; |
|
519 |
}]; |
|
520 |
||
521 |
JNF_COCOA_EXIT(env); |
|
522 |
} |
|
523 |
||
524 |
/* |
|
525 |
* Class: sun_lwawt_macosx_CWrapper$NSView |
|
526 |
* Method: removeFromSuperview |
|
527 |
* Signature: (J)V |
|
528 |
*/ |
|
529 |
JNIEXPORT void JNICALL |
|
530 |
Java_sun_lwawt_macosx_CWrapper_00024NSView_removeFromSuperview |
|
531 |
(JNIEnv *env, jclass cls, jlong viewPtr) |
|
532 |
{ |
|
533 |
JNF_COCOA_ENTER(env); |
|
534 |
||
535 |
NSView *view = (NSView *)jlong_to_ptr(viewPtr); |
|
536 |
[JNFRunLoop performOnMainThread:@selector(removeFromSuperview) |
|
537 |
on:view |
|
538 |
withObject:nil |
|
539 |
waitUntilDone:NO]; |
|
540 |
||
541 |
JNF_COCOA_EXIT(env); |
|
542 |
} |
|
543 |
||
544 |
/* |
|
545 |
* Class: sun_lwawt_macosx_CWrapper$NSView |
|
546 |
* Method: setFrame |
|
547 |
* Signature: (JIIII)V |
|
548 |
*/ |
|
549 |
JNIEXPORT void JNICALL |
|
550 |
Java_sun_lwawt_macosx_CWrapper_00024NSView_setFrame |
|
551 |
(JNIEnv *env, jclass cls, jlong viewPtr, jint x, jint y, jint w, jint h) |
|
552 |
{ |
|
553 |
JNF_COCOA_ENTER(env); |
|
554 |
||
555 |
NSView *view = (NSView *)jlong_to_ptr(viewPtr); |
|
556 |
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ |
|
557 |
[view setFrame:NSMakeRect(x, y, w, h)]; |
|
558 |
}]; |
|
559 |
||
560 |
JNF_COCOA_EXIT(env); |
|
561 |
} |
|
562 |
||
563 |
/* |
|
564 |
* Class: sun_lwawt_macosx_CWrapper$NSView |
|
565 |
* Method: frame |
|
566 |
* Signature: (J)Ljava/awt/Rectangle; |
|
567 |
*/ |
|
568 |
JNIEXPORT jobject JNICALL |
|
569 |
Java_sun_lwawt_macosx_CWrapper_00024NSView_frame |
|
570 |
(JNIEnv *env, jclass cls, jlong viewPtr) |
|
571 |
{ |
|
572 |
jobject jRect = NULL; |
|
573 |
||
574 |
JNF_COCOA_ENTER(env); |
|
575 |
||
576 |
__block NSRect rect = NSZeroRect; |
|
577 |
||
578 |
NSView *view = (NSView *)jlong_to_ptr(viewPtr); |
|
579 |
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ |
|
580 |
rect = [view frame]; |
|
581 |
}]; |
|
582 |
||
583 |
jRect = NSToJavaRect(env, rect); |
|
584 |
||
585 |
JNF_COCOA_EXIT(env); |
|
586 |
||
587 |
return jRect; |
|
588 |
} |
|
589 |
||
590 |
/* |
|
591 |
* Class: sun_lwawt_macosx_CWrapper$NSView |
|
592 |
* Method: enterFullScreenMode |
|
593 |
* Signature: (J)V |
|
594 |
*/ |
|
595 |
JNIEXPORT void JNICALL |
|
596 |
Java_sun_lwawt_macosx_CWrapper_00024NSView_enterFullScreenMode |
|
597 |
(JNIEnv *env, jclass cls, jlong viewPtr) |
|
598 |
{ |
|
599 |
JNF_COCOA_ENTER(env); |
|
600 |
||
601 |
NSView *view = (NSView *)jlong_to_ptr(viewPtr); |
|
602 |
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ |
|
603 |
NSScreen *screen = [[view window] screen]; |
|
604 |
NSDictionary *opts = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:NO], NSFullScreenModeAllScreens, nil]; |
|
605 |
[view enterFullScreenMode:screen withOptions:opts]; |
|
606 |
}]; |
|
607 |
||
608 |
JNF_COCOA_EXIT(env); |
|
609 |
} |
|
610 |
||
611 |
/* |
|
612 |
* Class: sun_lwawt_macosx_CWrapper$NSView |
|
613 |
* Method: exitFullScreenMode |
|
614 |
* Signature: (J)V |
|
615 |
*/ |
|
616 |
JNIEXPORT void JNICALL |
|
617 |
Java_sun_lwawt_macosx_CWrapper_00024NSView_exitFullScreenMode |
|
618 |
(JNIEnv *env, jclass cls, jlong viewPtr) |
|
619 |
{ |
|
620 |
JNF_COCOA_ENTER(env); |
|
621 |
||
622 |
NSView *view = (NSView *)jlong_to_ptr(viewPtr); |
|
623 |
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ |
|
624 |
[view exitFullScreenModeWithOptions:nil]; |
|
625 |
}]; |
|
626 |
||
627 |
JNF_COCOA_EXIT(env); |
|
628 |
} |
|
629 |
||
630 |
/* |
|
631 |
* Class: sun_lwawt_macosx_CWrapper$NSView |
|
632 |
* Method: window |
|
633 |
* Signature: (J)J |
|
634 |
*/ |
|
635 |
JNIEXPORT jlong JNICALL |
|
636 |
Java_sun_lwawt_macosx_CWrapper_00024NSView_window |
|
637 |
(JNIEnv *env, jclass cls, jlong viewPtr) |
|
638 |
{ |
|
639 |
__block jlong windowPtr = 0L; |
|
640 |
||
641 |
JNF_COCOA_ENTER(env); |
|
642 |
||
643 |
NSView *view = (NSView *)jlong_to_ptr(viewPtr); |
|
644 |
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ |
|
645 |
windowPtr = ptr_to_jlong([view window]); |
|
646 |
}]; |
|
647 |
||
648 |
JNF_COCOA_EXIT(env); |
|
649 |
||
650 |
return windowPtr; |
|
651 |
} |
|
652 |
||
653 |
/* |
|
654 |
* Class: sun_lwawt_macosx_CWrapper$NSScreen |
|
655 |
* Method: frame |
|
656 |
* Signature: (J)Ljava/awt/Rectangle; |
|
657 |
*/ |
|
658 |
JNIEXPORT jobject JNICALL |
|
659 |
Java_sun_lwawt_macosx_CWrapper_00024NSScreen_frame |
|
660 |
(JNIEnv *env, jclass cls, jlong screenPtr) |
|
661 |
{ |
|
662 |
jobject jRect = NULL; |
|
663 |
||
664 |
JNF_COCOA_ENTER(env); |
|
665 |
||
666 |
__block NSRect rect = NSZeroRect; |
|
667 |
||
668 |
NSScreen *screen = (NSScreen *)jlong_to_ptr(screenPtr); |
|
669 |
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ |
|
670 |
rect = [screen frame]; |
|
671 |
}]; |
|
672 |
||
673 |
jRect = NSToJavaRect(env, rect); |
|
674 |
||
675 |
JNF_COCOA_EXIT(env); |
|
676 |
||
677 |
return jRect; |
|
678 |
} |
|
679 |
||
680 |
/* |
|
681 |
* Class: sun_lwawt_macosx_CWrapper_NSScreen |
|
682 |
* Method: visibleFrame |
|
683 |
* Signature: (J)Ljava/awt/geom/Rectangle2D; |
|
684 |
*/ |
|
685 |
JNIEXPORT jobject JNICALL |
|
686 |
Java_sun_lwawt_macosx_CWrapper_00024NSScreen_visibleFrame |
|
687 |
(JNIEnv *env, jclass cls, jlong screenPtr) |
|
688 |
{ |
|
689 |
jobject jRect = NULL; |
|
690 |
||
691 |
JNF_COCOA_ENTER(env); |
|
692 |
||
693 |
__block NSRect rect = NSZeroRect; |
|
694 |
||
695 |
NSScreen *screen = (NSScreen *)jlong_to_ptr(screenPtr); |
|
696 |
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ |
|
697 |
rect = [screen visibleFrame]; |
|
698 |
}]; |
|
699 |
||
700 |
jRect = NSToJavaRect(env, rect); |
|
701 |
||
702 |
JNF_COCOA_EXIT(env); |
|
703 |
||
704 |
return jRect; |
|
705 |
} |
|
706 |
||
707 |
/* |
|
708 |
* Class: sun_lwawt_macosx_CWrapper_NSScreen |
|
709 |
* Method: screenByDisplayId |
|
710 |
* Signature: (J)J |
|
711 |
*/ |
|
712 |
JNIEXPORT jlong JNICALL |
|
713 |
Java_sun_lwawt_macosx_CWrapper_00024NSScreen_screenByDisplayId |
|
714 |
(JNIEnv *env, jclass cls, jint displayID) |
|
715 |
{ |
|
716 |
__block jlong screenPtr = 0L; |
|
717 |
||
718 |
JNF_COCOA_ENTER(env); |
|
719 |
||
720 |
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ |
|
721 |
NSArray *screens = [NSScreen screens]; |
|
722 |
for (NSScreen *screen in screens) { |
|
723 |
NSDictionary *screenInfo = [screen deviceDescription]; |
|
724 |
NSNumber *screenID = [screenInfo objectForKey:@"NSScreenNumber"]; |
|
725 |
if ([screenID intValue] == displayID){ |
|
726 |
CFRetain(screen); // GC |
|
727 |
screenPtr = ptr_to_jlong(screen); |
|
728 |
break; |
|
729 |
} |
|
730 |
} |
|
731 |
}]; |
|
732 |
||
733 |
JNF_COCOA_EXIT(env); |
|
734 |
||
735 |
return screenPtr; |
|
736 |
} |
|
737 |
||
738 |
/* |
|
739 |
* Class: sun_lwawt_macosx_CWrapper$NSColor |
|
740 |
* Method: clearColor |
|
741 |
* Signature: ()J |
|
742 |
*/ |
|
743 |
JNIEXPORT jlong JNICALL |
|
744 |
Java_sun_lwawt_macosx_CWrapper_00024NSColor_clearColor |
|
745 |
(JNIEnv *env, jclass cls) |
|
746 |
{ |
|
747 |
__block jlong clearColorPtr = 0L; |
|
748 |
||
749 |
JNF_COCOA_ENTER(env); |
|
750 |
||
751 |
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ |
|
752 |
clearColorPtr = ptr_to_jlong([NSColor clearColor]); |
|
753 |
}]; |
|
754 |
||
755 |
JNF_COCOA_EXIT(env); |
|
756 |
||
757 |
return clearColorPtr; |
|
758 |
} |
|
759 |