Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/src/macosx/native_NOTIOS/sun/awt/CWrapper.m
38829 views
1
/*
2
* Copyright (c) 2011, 2014, 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 <JavaNativeFoundation/JavaNativeFoundation.h>
27
#import "ThreadUtilities.h"
28
#import "sun_lwawt_macosx_CWrapper_NSWindow.h"
29
30
/*
31
* Class: sun_lwawt_macosx_CWrapper$NSWindow
32
* Method: makeKeyAndOrderFront
33
* Signature: (J)V
34
*/
35
JNIEXPORT void JNICALL
36
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_makeKeyAndOrderFront
37
(JNIEnv *env, jclass cls, jlong windowPtr)
38
{
39
JNF_COCOA_ENTER(env);
40
41
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
42
[ThreadUtilities performOnMainThread:@selector(makeKeyAndOrderFront:)
43
on:window
44
withObject:nil
45
waitUntilDone:NO];
46
47
JNF_COCOA_EXIT(env);
48
}
49
50
/*
51
* Class: sun_lwawt_macosx_CWrapper$NSWindow
52
* Method: makeKeyWindow
53
* Signature: (J)V
54
*/
55
JNIEXPORT void JNICALL
56
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_makeKeyWindow
57
(JNIEnv *env, jclass cls, jlong windowPtr)
58
{
59
JNF_COCOA_ENTER(env);
60
61
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
62
[ThreadUtilities performOnMainThread:@selector(makeKeyWindow)
63
on:window
64
withObject:nil
65
waitUntilDone:NO];
66
67
JNF_COCOA_EXIT(env);
68
}
69
70
/*
71
* Class: sun_lwawt_macosx_CWrapper$NSWindow
72
* Method: makeMainWindow
73
* Signature: (J)V
74
*/
75
JNIEXPORT void JNICALL
76
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_makeMainWindow
77
(JNIEnv *env, jclass cls, jlong windowPtr)
78
{
79
JNF_COCOA_ENTER(env);
80
81
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
82
[ThreadUtilities performOnMainThread:@selector(makeMainWindow)
83
on:window
84
withObject:nil
85
waitUntilDone:NO];
86
87
JNF_COCOA_EXIT(env);
88
}
89
90
/*
91
* Class: sun_lwawt_macosx_CWrapper$NSWindow
92
* Method: canBecomeMainWindow
93
* Signature: (J)V
94
*/
95
JNIEXPORT jboolean JNICALL
96
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_canBecomeMainWindow
97
(JNIEnv *env, jclass cls, jlong windowPtr)
98
{
99
__block jboolean canBecomeMainWindow = JNI_FALSE;
100
101
JNF_COCOA_ENTER(env);
102
103
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
104
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
105
canBecomeMainWindow = [window canBecomeMainWindow];
106
}];
107
108
JNF_COCOA_EXIT(env);
109
110
return canBecomeMainWindow;
111
}
112
113
/*
114
* Class: sun_lwawt_macosx_CWrapper$NSWindow
115
* Method: isKeyWindow
116
* Signature: (J)Z
117
*/
118
JNIEXPORT jboolean JNICALL
119
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_isKeyWindow
120
(JNIEnv *env, jclass cls, jlong windowPtr)
121
{
122
__block jboolean isKeyWindow = JNI_FALSE;
123
124
JNF_COCOA_ENTER(env);
125
126
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
127
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
128
isKeyWindow = [window isKeyWindow];
129
}];
130
131
JNF_COCOA_EXIT(env);
132
133
return isKeyWindow;
134
}
135
136
/*
137
* Class: sun_lwawt_macosx_CWrapper$NSWindow
138
* Method: orderFront
139
* Signature: (J)V
140
*/
141
JNIEXPORT void JNICALL
142
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_orderFront
143
(JNIEnv *env, jclass cls, jlong windowPtr)
144
{
145
JNF_COCOA_ENTER(env);
146
147
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
148
[ThreadUtilities performOnMainThread:@selector(orderFront:)
149
on:window
150
withObject:window
151
waitUntilDone:NO];
152
153
JNF_COCOA_EXIT(env);
154
}
155
156
/*
157
* Class: sun_lwawt_macosx_CWrapper$NSWindow
158
* Method: orderOut
159
* Signature: (J)V
160
*/
161
JNIEXPORT void JNICALL
162
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_orderOut
163
(JNIEnv *env, jclass cls, jlong windowPtr)
164
{
165
JNF_COCOA_ENTER(env);
166
167
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
168
[ThreadUtilities performOnMainThread:@selector(orderOut:)
169
on:window
170
withObject:window
171
waitUntilDone:NO];
172
173
JNF_COCOA_EXIT(env);
174
}
175
176
/*
177
* Class: sun_lwawt_macosx_CWrapper$NSWindow
178
* Method: close
179
* Signature: (J)V
180
*/
181
JNIEXPORT void JNICALL
182
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_close
183
(JNIEnv *env, jclass cls, jlong windowPtr)
184
{
185
JNF_COCOA_ENTER(env);
186
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
187
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
188
[window close];
189
}];
190
JNF_COCOA_EXIT(env);
191
}
192
193
/*
194
* Class: sun_lwawt_macosx_CWrapper$NSWindow
195
* Method: orderFrontRegardless
196
* Signature: (J)V
197
*/
198
JNIEXPORT void JNICALL
199
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_orderFrontRegardless
200
(JNIEnv *env, jclass cls, jlong windowPtr)
201
{
202
JNF_COCOA_ENTER(env);
203
204
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
205
[ThreadUtilities performOnMainThread:@selector(orderFrontRegardless)
206
on:window
207
withObject:nil
208
waitUntilDone:NO];
209
210
JNF_COCOA_EXIT(env);
211
}
212
213
/*
214
* Class: sun_lwawt_macosx_CWrapper$NSWindow
215
* Method: orderWindow
216
* Signature: (JIJ)V
217
*/
218
JNIEXPORT void JNICALL
219
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_orderWindow
220
(JNIEnv *env, jclass cls, jlong windowPtr, jint order, jlong relativeToPtr)
221
{
222
JNF_COCOA_ENTER(env);
223
224
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
225
NSWindow *relativeTo = (NSWindow *)jlong_to_ptr(relativeToPtr);
226
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
227
[window orderWindow:(NSWindowOrderingMode)order relativeTo:[relativeTo windowNumber]];
228
}];
229
230
JNF_COCOA_EXIT(env);
231
}
232
233
// Used for CWrapper.NSWindow.setLevel() (and level() which isn't implemented yet)
234
static NSInteger LEVELS[sun_lwawt_macosx_CWrapper_NSWindow_MAX_WINDOW_LEVELS];
235
static void initLevels()
236
{
237
static dispatch_once_t pred;
238
239
dispatch_once(&pred, ^{
240
LEVELS[sun_lwawt_macosx_CWrapper_NSWindow_NSNormalWindowLevel] = NSNormalWindowLevel;
241
LEVELS[sun_lwawt_macosx_CWrapper_NSWindow_NSFloatingWindowLevel] = NSFloatingWindowLevel;
242
LEVELS[sun_lwawt_macosx_CWrapper_NSWindow_NSPopUpMenuWindowLevel] = NSPopUpMenuWindowLevel;
243
});
244
}
245
246
/*
247
* Class: sun_lwawt_macosx_CWrapper$NSWindow
248
* Method: setLevel
249
* Signature: (JI)V
250
*/
251
JNIEXPORT void JNICALL
252
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_setLevel
253
(JNIEnv *env, jclass cls, jlong windowPtr, jint level)
254
{
255
JNF_COCOA_ENTER(env);
256
257
if (level >= 0 && level < sun_lwawt_macosx_CWrapper_NSWindow_MAX_WINDOW_LEVELS) {
258
initLevels();
259
260
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
261
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
262
[window setLevel: LEVELS[level]];
263
}];
264
} else {
265
[JNFException raise:env as:kIllegalArgumentException reason:"unknown level"];
266
}
267
268
JNF_COCOA_EXIT(env);
269
}
270
271
/*
272
* Class: sun_lwawt_macosx_CWrapper$NSWindow
273
* Method: addChildWindow
274
* Signature: (JJI)V
275
*/
276
JNIEXPORT void JNICALL
277
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_addChildWindow
278
(JNIEnv *env, jclass cls, jlong parentPtr, jlong childPtr, jint order)
279
{
280
JNF_COCOA_ENTER(env);
281
282
NSWindow *parent = (NSWindow *)jlong_to_ptr(parentPtr);
283
NSWindow *child = (NSWindow *)jlong_to_ptr(childPtr);
284
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
285
[parent addChildWindow:child ordered:order];
286
}];
287
288
JNF_COCOA_EXIT(env);
289
}
290
291
/*
292
* Class: sun_lwawt_macosx_CWrapper$NSWindow
293
* Method: removeChildWindow
294
* Signature: (JJ)V
295
*/
296
JNIEXPORT void JNICALL
297
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_removeChildWindow
298
(JNIEnv *env, jclass cls, jlong parentPtr, jlong childPtr)
299
{
300
JNF_COCOA_ENTER(env);
301
302
NSWindow *parent = (NSWindow *)jlong_to_ptr(parentPtr);
303
NSWindow *child = (NSWindow *)jlong_to_ptr(childPtr);
304
[ThreadUtilities performOnMainThread:@selector(removeChildWindow:)
305
on:parent
306
withObject:child
307
waitUntilDone:NO];
308
309
JNF_COCOA_EXIT(env);
310
}
311
312
/*
313
* Class: sun_lwawt_macosx_CWrapper$NSWindow
314
* Method: setAlphaValue
315
* Signature: (JF)V
316
*/
317
JNIEXPORT void JNICALL
318
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_setAlphaValue
319
(JNIEnv *env, jclass cls, jlong windowPtr, jfloat alpha)
320
{
321
JNF_COCOA_ENTER(env);
322
323
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
324
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
325
[window setAlphaValue:(CGFloat)alpha];
326
}];
327
328
JNF_COCOA_EXIT(env);
329
}
330
331
/*
332
* Class: sun_lwawt_macosx_CWrapper$NSWindow
333
* Method: setOpaque
334
* Signature: (Z)V
335
*/
336
JNIEXPORT void JNICALL
337
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_setOpaque
338
(JNIEnv *env, jclass cls, jlong windowPtr, jboolean opaque)
339
{
340
JNF_COCOA_ENTER(env);
341
342
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
343
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
344
[window setOpaque:(BOOL)opaque];
345
}];
346
347
JNF_COCOA_EXIT(env);
348
}
349
350
/*
351
* Class: sun_lwawt_macosx_CWrapper$NSWindow
352
* Method: setBackgroundColor
353
* Signature: (J)V
354
*/
355
JNIEXPORT void JNICALL
356
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_setBackgroundColor
357
(JNIEnv *env, jclass cls, jlong windowPtr, jint rgb)
358
{
359
JNF_COCOA_ENTER(env);
360
361
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
362
CGFloat alpha = (((rgb >> 24) & 0xff) / 255.0);
363
CGFloat red = (((rgb >> 16) & 0xff) / 255.0);
364
CGFloat green = (((rgb >> 8) & 0xff) / 255.0);
365
CGFloat blue = (((rgb >> 0) & 0xff) / 255.0);
366
NSColor *color = [NSColor colorWithCalibratedRed:red green:green blue:blue
367
alpha:alpha];
368
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
369
[window setBackgroundColor:color];
370
}];
371
372
JNF_COCOA_EXIT(env);
373
}
374
375
/*
376
* Class: sun_lwawt_macosx_CWrapper$NSWindow
377
* Method: miniaturize
378
* Signature: (J)V
379
*/
380
JNIEXPORT void JNICALL
381
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_miniaturize
382
(JNIEnv *env, jclass cls, jlong windowPtr)
383
{
384
JNF_COCOA_ENTER(env);
385
386
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
387
[ThreadUtilities performOnMainThread:@selector(miniaturize:)
388
on:window
389
withObject:nil
390
waitUntilDone:NO];
391
392
JNF_COCOA_EXIT(env);
393
}
394
395
/*
396
* Class: sun_lwawt_macosx_CWrapper$NSWindow
397
* Method: deminiaturize
398
* Signature: (J)V
399
*/
400
JNIEXPORT void JNICALL
401
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_deminiaturize
402
(JNIEnv *env, jclass cls, jlong windowPtr)
403
{
404
JNF_COCOA_ENTER(env);
405
406
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
407
[ThreadUtilities performOnMainThread:@selector(deminiaturize:)
408
on:window
409
withObject:nil
410
waitUntilDone:NO];
411
412
JNF_COCOA_EXIT(env);
413
}
414
415
/*
416
* Class: sun_lwawt_macosx_CWrapper$NSWindow
417
* Method: isZoomed
418
* Signature: (J)Z
419
*/
420
JNIEXPORT jboolean JNICALL
421
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_isZoomed
422
(JNIEnv *env, jclass cls, jlong windowPtr)
423
{
424
__block jboolean isZoomed = JNI_FALSE;
425
426
JNF_COCOA_ENTER(env);
427
428
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
429
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
430
isZoomed = [window isZoomed];
431
}];
432
433
JNF_COCOA_EXIT(env);
434
435
return isZoomed;
436
}
437
438
/*
439
* Class: sun_lwawt_macosx_CWrapper$NSWindow
440
* Method: zoom
441
* Signature: (J)V
442
*/
443
JNIEXPORT void JNICALL
444
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_zoom
445
(JNIEnv *env, jclass cls, jlong windowPtr)
446
{
447
JNF_COCOA_ENTER(env);
448
449
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
450
[ThreadUtilities performOnMainThread:@selector(zoom:)
451
on:window
452
withObject:nil
453
waitUntilDone:NO];
454
455
JNF_COCOA_EXIT(env);
456
}
457
458
/*
459
* Class: sun_lwawt_macosx_CWrapper$NSWindow
460
* Method: makeFirstResponder
461
* Signature: (JJ)V
462
*/
463
JNIEXPORT void JNICALL
464
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_makeFirstResponder
465
(JNIEnv *env, jclass cls, jlong windowPtr, jlong responderPtr)
466
{
467
JNF_COCOA_ENTER(env);
468
469
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
470
NSResponder *responder = (NSResponder *)jlong_to_ptr(responderPtr);
471
[ThreadUtilities performOnMainThread:@selector(makeFirstResponder:)
472
on:window
473
withObject:responder
474
waitUntilDone:NO];
475
476
JNF_COCOA_EXIT(env);
477
}
478
479
/*
480
* Class: sun_lwawt_macosx_CWrapper$NSView
481
* Method: addSubview
482
* Signature: (JJ)V
483
*/
484
JNIEXPORT void JNICALL
485
Java_sun_lwawt_macosx_CWrapper_00024NSView_addSubview
486
(JNIEnv *env, jclass cls, jlong viewPtr, jlong subviewPtr)
487
{
488
JNF_COCOA_ENTER(env);
489
490
NSView *view = (NSView *)jlong_to_ptr(viewPtr);
491
NSView *subview = (NSView *)jlong_to_ptr(subviewPtr);
492
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
493
[view addSubview:subview];
494
}];
495
496
JNF_COCOA_EXIT(env);
497
}
498
499
/*
500
* Class: sun_lwawt_macosx_CWrapper$NSView
501
* Method: removeFromSuperview
502
* Signature: (J)V
503
*/
504
JNIEXPORT void JNICALL
505
Java_sun_lwawt_macosx_CWrapper_00024NSView_removeFromSuperview
506
(JNIEnv *env, jclass cls, jlong viewPtr)
507
{
508
JNF_COCOA_ENTER(env);
509
510
NSView *view = (NSView *)jlong_to_ptr(viewPtr);
511
[ThreadUtilities performOnMainThread:@selector(removeFromSuperview)
512
on:view
513
withObject:nil
514
waitUntilDone:NO];
515
516
JNF_COCOA_EXIT(env);
517
}
518
519
/*
520
* Class: sun_lwawt_macosx_CWrapper$NSView
521
* Method: setFrame
522
* Signature: (JIIII)V
523
*/
524
JNIEXPORT void JNICALL
525
Java_sun_lwawt_macosx_CWrapper_00024NSView_setFrame
526
(JNIEnv *env, jclass cls, jlong viewPtr, jint x, jint y, jint w, jint h)
527
{
528
JNF_COCOA_ENTER(env);
529
530
NSView *view = (NSView *)jlong_to_ptr(viewPtr);
531
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
532
[view setFrame:NSMakeRect(x, y, w, h)];
533
}];
534
535
JNF_COCOA_EXIT(env);
536
}
537
538
/*
539
* Class: sun_lwawt_macosx_CWrapper$NSView
540
* Method: window
541
* Signature: (J)J
542
*/
543
JNIEXPORT jlong JNICALL
544
Java_sun_lwawt_macosx_CWrapper_00024NSView_window
545
(JNIEnv *env, jclass cls, jlong viewPtr)
546
{
547
__block jlong windowPtr = 0L;
548
549
JNF_COCOA_ENTER(env);
550
551
NSView *view = (NSView *)jlong_to_ptr(viewPtr);
552
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
553
windowPtr = ptr_to_jlong([view window]);
554
}];
555
556
JNF_COCOA_EXIT(env);
557
558
return windowPtr;
559
}
560
561
/*
562
* Class: sun_lwawt_macosx_CWrapper$NSView
563
* Method: setHidden
564
* Signature: (JZ)V
565
*/
566
JNIEXPORT void JNICALL
567
Java_sun_lwawt_macosx_CWrapper_00024NSView_setHidden
568
(JNIEnv *env, jclass cls, jlong viewPtr, jboolean toHide)
569
{
570
JNF_COCOA_ENTER(env);
571
572
NSView *view = (NSView *)jlong_to_ptr(viewPtr);
573
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
574
[view setHidden:(BOOL)toHide];
575
}];
576
577
JNF_COCOA_EXIT(env);
578
}
579
580
/*
581
* Class: sun_lwawt_macosx_CWrapper$NSView
582
* Method: setToolTip
583
* Signature: (JLjava/lang/String;)V
584
*/
585
JNIEXPORT void JNICALL
586
Java_sun_lwawt_macosx_CWrapper_00024NSView_setToolTip
587
(JNIEnv *env, jclass cls, jlong viewPtr, jstring msg)
588
{
589
590
JNF_COCOA_ENTER(env);
591
592
NSView *view = (NSView *)jlong_to_ptr(viewPtr);
593
NSString* s = JNFJavaToNSString(env, msg);
594
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
595
[view setToolTip: s];
596
}];
597
598
JNF_COCOA_EXIT(env);
599
}
600
601