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