mirror of
https://github.com/openjdk/jdk.git
synced 2026-05-24 12:28:12 +00:00
8042465: Applet menus not rendering when browser is full screen on Mac
Reviewed-by: anthony, pchelko
This commit is contained in:
parent
19759f801c
commit
b57d6c9a4f
@ -119,6 +119,7 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
|
||||
static final int NONACTIVATING = 1 << 24;
|
||||
static final int IS_DIALOG = 1 << 25;
|
||||
static final int IS_MODAL = 1 << 26;
|
||||
static final int IS_POPUP = 1 << 27;
|
||||
|
||||
static final int _STYLE_PROP_BITMASK = DECORATED | TEXTURED | UNIFIED | UTILITY | HUD | SHEET | CLOSEABLE | MINIMIZABLE | RESIZABLE;
|
||||
|
||||
@ -318,6 +319,7 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
|
||||
styleBits = SET(styleBits, TEXTURED, false);
|
||||
// Popups in applets don't activate applet's process
|
||||
styleBits = SET(styleBits, NONACTIVATING, true);
|
||||
styleBits = SET(styleBits, IS_POPUP, true);
|
||||
}
|
||||
|
||||
if (Window.Type.UTILITY.equals(target.getType())) {
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -252,6 +252,10 @@ AWT_ASSERT_APPKIT_THREAD;
|
||||
self.ownerWindow = owner;
|
||||
[self setPropertiesForStyleBits:styleBits mask:MASK(_METHOD_PROP_BITMASK)];
|
||||
|
||||
if (IS(self.styleBits, IS_POPUP)) {
|
||||
[self.nsWindow setCollectionBehavior:(1 << 8) /*NSWindowCollectionBehaviorFullScreenAuxiliary*/];
|
||||
}
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
|
||||
@ -25,10 +25,14 @@
|
||||
|
||||
package javax.swing;
|
||||
|
||||
import sun.awt.EmbeddedFrame;
|
||||
import sun.awt.OSInfo;
|
||||
|
||||
import java.applet.Applet;
|
||||
import java.awt.*;
|
||||
import java.awt.event.WindowAdapter;
|
||||
import java.awt.event.WindowEvent;
|
||||
import java.security.AccessController;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
@ -226,7 +230,12 @@ public class PopupFactory {
|
||||
case MEDIUM_WEIGHT_POPUP:
|
||||
return getMediumWeightPopup(owner, contents, ownerX, ownerY);
|
||||
case HEAVY_WEIGHT_POPUP:
|
||||
return getHeavyWeightPopup(owner, contents, ownerX, ownerY);
|
||||
Popup popup = getHeavyWeightPopup(owner, contents, ownerX, ownerY);
|
||||
if ((AccessController.doPrivileged(OSInfo.getOSTypeAction()) ==
|
||||
OSInfo.OSType.MACOSX) && (EmbeddedFrame.getAppletIfAncestorOf(owner) != null)) {
|
||||
((HeavyWeightPopup)popup).setCacheEnabled(false);
|
||||
}
|
||||
return popup;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@ -294,6 +303,8 @@ public class PopupFactory {
|
||||
private static final Object heavyWeightPopupCacheKey =
|
||||
new StringBuffer("PopupFactory.heavyWeightPopupCache");
|
||||
|
||||
private volatile boolean isCacheEnabled = true;
|
||||
|
||||
/**
|
||||
* Returns either a new or recycled <code>Popup</code> containing
|
||||
* the specified children.
|
||||
@ -448,12 +459,23 @@ public class PopupFactory {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Enables or disables cache for current object.
|
||||
*/
|
||||
void setCacheEnabled(boolean enable) {
|
||||
isCacheEnabled = enable;
|
||||
}
|
||||
|
||||
//
|
||||
// Popup methods
|
||||
//
|
||||
public void hide() {
|
||||
super.hide();
|
||||
recycleHeavyWeightPopup(this);
|
||||
if (isCacheEnabled) {
|
||||
recycleHeavyWeightPopup(this);
|
||||
} else {
|
||||
this._dispose();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user