841 execute(ptr -> {
842 if (CWrapper.NSWindow.canBecomeMainWindow(ptr)) {
843 CWrapper.NSWindow.makeMainWindow(ptr);
844 }
845 CWrapper.NSWindow.makeKeyAndOrderFront(ptr);
846 });
847 return true;
848 }
849
850 @Override
851 public boolean isActive() {
852 AtomicBoolean ref = new AtomicBoolean();
853 execute(ptr -> {
854 ref.set(CWrapper.NSWindow.isKeyWindow(ptr));
855 });
856 return ref.get();
857 }
858
859 @Override
860 public void updateFocusableWindowState() {
861 final boolean isFocusable = isNativelyFocusableWindow();
862 setStyleBits(SHOULD_BECOME_KEY | SHOULD_BECOME_MAIN | RESIZABLE, isFocusable); // set bits at once
863 }
864
865 @Override
866 public void setAlwaysOnTop(boolean isAlwaysOnTop) {
867 setStyleBits(ALWAYS_ON_TOP, isAlwaysOnTop);
868 }
869
870 @Override
871 public void setOpacity(float opacity) {
872 execute(ptr -> CWrapper.NSWindow.setAlphaValue(ptr, opacity));
873 }
874
875 @Override
876 public void setOpaque(boolean isOpaque) {
877 execute(ptr -> CWrapper.NSWindow.setOpaque(ptr, isOpaque));
878 boolean isTextured = (peer == null) ? false : peer.isTextured();
879 if (!isTextured) {
880 if (!isOpaque) {
881 execute(ptr -> CWrapper.NSWindow.setBackgroundColor(ptr, 0));
1259 // visible children.
1260 if (!iconified) {
1261 childWindows.addAll(Arrays.asList(windowAccessor.getOwnedWindows(w)));
1262 }
1263 }
1264 // If some windows, which have just been ordered, have any child windows, let's start new iteration
1265 // and order these child windows.
1266 if (!childWindows.isEmpty()) {
1267 orderAboveSiblingsImpl(childWindows.toArray(new Window[0]));
1268 }
1269 }
1270
1271 protected void applyWindowLevel(Window target) {
1272 if (target.isAlwaysOnTop() && target.getType() != Window.Type.POPUP) {
1273 execute(ptr->CWrapper.NSWindow.setLevel(ptr, CWrapper.NSWindow.NSFloatingWindowLevel));
1274 } else if (target.getType() == Window.Type.POPUP) {
1275 execute(ptr->CWrapper.NSWindow.setLevel(ptr, CWrapper.NSWindow.NSPopUpMenuWindowLevel));
1276 }
1277 }
1278
1279 // ----------------------------------------------------------------------
1280 // NATIVE CALLBACKS
1281 // ----------------------------------------------------------------------
1282
1283 private void windowWillMiniaturize() {
1284 isIconifyAnimationActive = true;
1285 }
1286
1287 private void windowDidBecomeMain() {
1288 lastBecomeMainTime = System.currentTimeMillis();
1289 if (checkBlockingAndOrder()) return;
1290 // If it's not blocked, make sure it's above its siblings
1291 orderAboveSiblings();
1292 }
1293
1294 private void windowWillEnterFullScreen() {
1295 isFullScreenAnimationOn = true;
1296 }
1297
1298 private void windowDidEnterFullScreen() {
|
841 execute(ptr -> {
842 if (CWrapper.NSWindow.canBecomeMainWindow(ptr)) {
843 CWrapper.NSWindow.makeMainWindow(ptr);
844 }
845 CWrapper.NSWindow.makeKeyAndOrderFront(ptr);
846 });
847 return true;
848 }
849
850 @Override
851 public boolean isActive() {
852 AtomicBoolean ref = new AtomicBoolean();
853 execute(ptr -> {
854 ref.set(CWrapper.NSWindow.isKeyWindow(ptr));
855 });
856 return ref.get();
857 }
858
859 @Override
860 public void updateFocusableWindowState() {
861 final boolean isFocusable = isNativelyFocusableWindow() || (getOwnerFrameOrDialog(target) instanceof CEmbeddedFrame);
862 setStyleBits(SHOULD_BECOME_KEY | SHOULD_BECOME_MAIN | RESIZABLE, isFocusable); // set bits at once
863 }
864
865 @Override
866 public void setAlwaysOnTop(boolean isAlwaysOnTop) {
867 setStyleBits(ALWAYS_ON_TOP, isAlwaysOnTop);
868 }
869
870 @Override
871 public void setOpacity(float opacity) {
872 execute(ptr -> CWrapper.NSWindow.setAlphaValue(ptr, opacity));
873 }
874
875 @Override
876 public void setOpaque(boolean isOpaque) {
877 execute(ptr -> CWrapper.NSWindow.setOpaque(ptr, isOpaque));
878 boolean isTextured = (peer == null) ? false : peer.isTextured();
879 if (!isTextured) {
880 if (!isOpaque) {
881 execute(ptr -> CWrapper.NSWindow.setBackgroundColor(ptr, 0));
1259 // visible children.
1260 if (!iconified) {
1261 childWindows.addAll(Arrays.asList(windowAccessor.getOwnedWindows(w)));
1262 }
1263 }
1264 // If some windows, which have just been ordered, have any child windows, let's start new iteration
1265 // and order these child windows.
1266 if (!childWindows.isEmpty()) {
1267 orderAboveSiblingsImpl(childWindows.toArray(new Window[0]));
1268 }
1269 }
1270
1271 protected void applyWindowLevel(Window target) {
1272 if (target.isAlwaysOnTop() && target.getType() != Window.Type.POPUP) {
1273 execute(ptr->CWrapper.NSWindow.setLevel(ptr, CWrapper.NSWindow.NSFloatingWindowLevel));
1274 } else if (target.getType() == Window.Type.POPUP) {
1275 execute(ptr->CWrapper.NSWindow.setLevel(ptr, CWrapper.NSWindow.NSPopUpMenuWindowLevel));
1276 }
1277 }
1278
1279 private Window getOwnerFrameOrDialog(Window window) {
1280 Window owner = window.getOwner();
1281 while(owner != null && !(owner instanceof Frame || owner instanceof Dialog)) {
1282 owner = owner.getOwner();
1283 }
1284 return owner;
1285 }
1286
1287 // ----------------------------------------------------------------------
1288 // NATIVE CALLBACKS
1289 // ----------------------------------------------------------------------
1290
1291 private void windowWillMiniaturize() {
1292 isIconifyAnimationActive = true;
1293 }
1294
1295 private void windowDidBecomeMain() {
1296 lastBecomeMainTime = System.currentTimeMillis();
1297 if (checkBlockingAndOrder()) return;
1298 // If it's not blocked, make sure it's above its siblings
1299 orderAboveSiblings();
1300 }
1301
1302 private void windowWillEnterFullScreen() {
1303 isFullScreenAnimationOn = true;
1304 }
1305
1306 private void windowDidEnterFullScreen() {
|