mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-21 11:34:38 +02:00
Merge
This commit is contained in:
commit
0767c39799
9 changed files with 91 additions and 30 deletions
|
@ -6665,6 +6665,9 @@ public abstract class Component implements ImageObserver, MenuContainer,
|
||||||
Container parent = this.parent;
|
Container parent = this.parent;
|
||||||
if (parent != null && parent.peer instanceof LightweightPeer) {
|
if (parent != null && parent.peer instanceof LightweightPeer) {
|
||||||
relocateComponent();
|
relocateComponent();
|
||||||
|
if (!isRecursivelyVisible()) {
|
||||||
|
peer.setVisible(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
invalidate();
|
invalidate();
|
||||||
|
@ -9572,6 +9575,13 @@ public abstract class Component implements ImageObserver, MenuContainer,
|
||||||
return comp.getPeer();
|
return comp.getPeer();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// traversing the hierarchy up to the closest HW container;
|
||||||
|
// further traversing may return a component that is not actually
|
||||||
|
// a native sibling of this component and this kind of z-order
|
||||||
|
// request may not be allowed by the underlying system (6852051).
|
||||||
|
if (!cont.isLightweight()) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
indexAbove = cont.getSiblingIndexAbove();
|
indexAbove = cont.getSiblingIndexAbove();
|
||||||
cont = cont.getContainer();
|
cont = cont.getContainer();
|
||||||
|
|
|
@ -71,8 +71,8 @@ public abstract class XErrorHandler {
|
||||||
return super.handleError(display, err);
|
return super.handleError(display, err);
|
||||||
}
|
}
|
||||||
// Shared instance
|
// Shared instance
|
||||||
private static IgnoreBadWindowHandler theInstance = new IgnoreBadWindowHandler();
|
private static VerifyChangePropertyHandler theInstance = new VerifyChangePropertyHandler();
|
||||||
public static IgnoreBadWindowHandler getInstance() {
|
public static VerifyChangePropertyHandler getInstance() {
|
||||||
return theInstance;
|
return theInstance;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -354,6 +354,7 @@ public class XKeysym {
|
||||||
keysym2UCSHash.put( (long)0xFFB7, (char)0x0037); // XK_KP_7 --> DIGIT SEVEN
|
keysym2UCSHash.put( (long)0xFFB7, (char)0x0037); // XK_KP_7 --> DIGIT SEVEN
|
||||||
keysym2UCSHash.put( (long)0xFFB8, (char)0x0038); // XK_KP_8 --> DIGIT EIGHT
|
keysym2UCSHash.put( (long)0xFFB8, (char)0x0038); // XK_KP_8 --> DIGIT EIGHT
|
||||||
keysym2UCSHash.put( (long)0xFFB9, (char)0x0039); // XK_KP_9 --> DIGIT NINE
|
keysym2UCSHash.put( (long)0xFFB9, (char)0x0039); // XK_KP_9 --> DIGIT NINE
|
||||||
|
keysym2UCSHash.put( (long)0xFE20, (char)0x0009); // XK_ISO_Left_Tab --> <control>
|
||||||
keysym2UCSHash.put( (long)0x1a1, (char)0x0104); // XK_Aogonek --> LATIN CAPITAL LETTER A WITH OGONEK
|
keysym2UCSHash.put( (long)0x1a1, (char)0x0104); // XK_Aogonek --> LATIN CAPITAL LETTER A WITH OGONEK
|
||||||
keysym2UCSHash.put( (long)0x1a2, (char)0x02d8); // XK_breve --> BREVE
|
keysym2UCSHash.put( (long)0x1a2, (char)0x02d8); // XK_breve --> BREVE
|
||||||
keysym2UCSHash.put( (long)0x1a3, (char)0x0141); // XK_Lstroke --> LATIN CAPITAL LETTER L WITH STROKE
|
keysym2UCSHash.put( (long)0x1a3, (char)0x0141); // XK_Lstroke --> LATIN CAPITAL LETTER L WITH STROKE
|
||||||
|
|
|
@ -166,6 +166,9 @@ public final class XToolkit extends UNIXToolkit implements Runnable {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void RESTORE_XERROR_HANDLER() {
|
public static void RESTORE_XERROR_HANDLER() {
|
||||||
|
// wait until all requests are processed by the X server
|
||||||
|
// and only then uninstall the error handler
|
||||||
|
XSync();
|
||||||
current_error_handler = null;
|
current_error_handler = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -649,7 +649,7 @@ SOFTWARE.
|
||||||
0x0000 #define XK_ISO_Last_Group 0xFE0E
|
0x0000 #define XK_ISO_Last_Group 0xFE0E
|
||||||
0x0000 #define XK_ISO_Last_Group_Lock 0xFE0F
|
0x0000 #define XK_ISO_Last_Group_Lock 0xFE0F
|
||||||
|
|
||||||
0x0000 #define XK_ISO_Left_Tab 0xFE20
|
0x0009 #define XK_ISO_Left_Tab 0xFE20
|
||||||
0x0000 #define XK_ISO_Move_Line_Up 0xFE21
|
0x0000 #define XK_ISO_Move_Line_Up 0xFE21
|
||||||
0x0000 #define XK_ISO_Move_Line_Down 0xFE22
|
0x0000 #define XK_ISO_Move_Line_Down 0xFE22
|
||||||
0x0000 #define XK_ISO_Partial_Line_Up 0xFE23
|
0x0000 #define XK_ISO_Partial_Line_Up 0xFE23
|
||||||
|
|
|
@ -364,6 +364,7 @@ void AwtDialog::Show()
|
||||||
if (locationByPlatform) {
|
if (locationByPlatform) {
|
||||||
moveToDefaultLocation();
|
moveToDefaultLocation();
|
||||||
}
|
}
|
||||||
|
EnableTranslucency(TRUE);
|
||||||
if (IsFocusableWindow() && (IsAutoRequestFocus() || IsFocusedWindowModalBlocker())) {
|
if (IsFocusableWindow() && (IsAutoRequestFocus() || IsFocusedWindowModalBlocker())) {
|
||||||
::ShowWindow(GetHWnd(), SW_SHOW);
|
::ShowWindow(GetHWnd(), SW_SHOW);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -690,6 +690,8 @@ AwtFrame::Show()
|
||||||
if (locationByPlatform) {
|
if (locationByPlatform) {
|
||||||
moveToDefaultLocation();
|
moveToDefaultLocation();
|
||||||
}
|
}
|
||||||
|
EnableTranslucency(TRUE);
|
||||||
|
|
||||||
BOOL autoRequestFocus = IsAutoRequestFocus();
|
BOOL autoRequestFocus = IsAutoRequestFocus();
|
||||||
|
|
||||||
if (m_iconic) {
|
if (m_iconic) {
|
||||||
|
|
|
@ -218,12 +218,7 @@ AwtWindow::~AwtWindow()
|
||||||
if (warningString != NULL) {
|
if (warningString != NULL) {
|
||||||
delete [] warningString;
|
delete [] warningString;
|
||||||
}
|
}
|
||||||
::EnterCriticalSection(&contentBitmapCS);
|
DeleteContentBitmap();
|
||||||
if (hContentBitmap != NULL) {
|
|
||||||
::DeleteObject(hContentBitmap);
|
|
||||||
hContentBitmap = NULL;
|
|
||||||
}
|
|
||||||
::LeaveCriticalSection(&contentBitmapCS);
|
|
||||||
::DeleteCriticalSection(&contentBitmapCS);
|
::DeleteCriticalSection(&contentBitmapCS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -372,6 +367,10 @@ MsgRouting AwtWindow::WmWindowPosChanged(LPARAM windowPos) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (wp->flags & SWP_HIDEWINDOW) {
|
||||||
|
EnableTranslucency(FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
return mrDoDefault;
|
return mrDoDefault;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1130,6 +1129,8 @@ void AwtWindow::Show()
|
||||||
moveToDefaultLocation();
|
moveToDefaultLocation();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EnableTranslucency(TRUE);
|
||||||
|
|
||||||
// The following block exists to support Menu/Tooltip animation for
|
// The following block exists to support Menu/Tooltip animation for
|
||||||
// Swing programs in a way which avoids introducing any new public api into
|
// Swing programs in a way which avoids introducing any new public api into
|
||||||
// AWT or Swing.
|
// AWT or Swing.
|
||||||
|
@ -2494,27 +2495,73 @@ void AwtWindow::RedrawWindow()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AwtWindow::SetTranslucency(BYTE opacity, BOOL opaque)
|
// Deletes the hContentBitmap if it is non-null
|
||||||
|
void AwtWindow::DeleteContentBitmap()
|
||||||
{
|
{
|
||||||
BYTE old_opacity = getOpacity();
|
|
||||||
BOOL old_opaque = isOpaque();
|
|
||||||
|
|
||||||
if (opacity == old_opacity && opaque == old_opaque) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
setOpacity(opacity);
|
|
||||||
setOpaque(opaque);
|
|
||||||
|
|
||||||
HWND hwnd = GetHWnd();
|
|
||||||
|
|
||||||
if (opaque != old_opaque) {
|
|
||||||
::EnterCriticalSection(&contentBitmapCS);
|
::EnterCriticalSection(&contentBitmapCS);
|
||||||
if (hContentBitmap != NULL) {
|
if (hContentBitmap != NULL) {
|
||||||
::DeleteObject(hContentBitmap);
|
::DeleteObject(hContentBitmap);
|
||||||
hContentBitmap = NULL;
|
hContentBitmap = NULL;
|
||||||
}
|
}
|
||||||
::LeaveCriticalSection(&contentBitmapCS);
|
::LeaveCriticalSection(&contentBitmapCS);
|
||||||
|
}
|
||||||
|
|
||||||
|
// The effects are enabled only upon showing the window.
|
||||||
|
// See 6780496 for details.
|
||||||
|
void AwtWindow::EnableTranslucency(BOOL enable)
|
||||||
|
{
|
||||||
|
if (enable) {
|
||||||
|
SetTranslucency(getOpacity(), isOpaque(), FALSE, TRUE);
|
||||||
|
} else {
|
||||||
|
SetTranslucency(0xFF, TRUE, FALSE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the translucency effects.
|
||||||
|
*
|
||||||
|
* This method is used to:
|
||||||
|
*
|
||||||
|
* 1. Apply the translucency effects upon showing the window
|
||||||
|
* (setValues == FALSE, useDefaultForOldValues == TRUE);
|
||||||
|
* 2. Turn off the effects upon hiding the window
|
||||||
|
* (setValues == FALSE, useDefaultForOldValues == FALSE);
|
||||||
|
* 3. Set the effects per user's request
|
||||||
|
* (setValues == TRUE, useDefaultForOldValues == FALSE);
|
||||||
|
*
|
||||||
|
* In case #3 the effects may or may not be applied immediately depending on
|
||||||
|
* the current visibility status of the window.
|
||||||
|
*
|
||||||
|
* The setValues argument indicates if we need to preserve the passed values
|
||||||
|
* in local fields for further use.
|
||||||
|
* The useDefaultForOldValues argument indicates whether we should consider
|
||||||
|
* the window as if it has not any effects applied at the moment.
|
||||||
|
*/
|
||||||
|
void AwtWindow::SetTranslucency(BYTE opacity, BOOL opaque, BOOL setValues,
|
||||||
|
BOOL useDefaultForOldValues)
|
||||||
|
{
|
||||||
|
BYTE old_opacity = useDefaultForOldValues ? 0xFF : getOpacity();
|
||||||
|
BOOL old_opaque = useDefaultForOldValues ? TRUE : isOpaque();
|
||||||
|
|
||||||
|
if (opacity == old_opacity && opaque == old_opaque) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (setValues) {
|
||||||
|
m_opacity = opacity;
|
||||||
|
m_opaque = opaque;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If we're invisible and are storing the values, return
|
||||||
|
// Otherwise, apply the effects immediately
|
||||||
|
if (!IsVisible() && setValues) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
HWND hwnd = GetHWnd();
|
||||||
|
|
||||||
|
if (opaque != old_opaque) {
|
||||||
|
DeleteContentBitmap();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (opaque && opacity == 0xff) {
|
if (opaque && opacity == 0xff) {
|
||||||
|
@ -2634,9 +2681,7 @@ void AwtWindow::UpdateWindow(JNIEnv* env, jintArray data, int width, int height,
|
||||||
}
|
}
|
||||||
|
|
||||||
::EnterCriticalSection(&contentBitmapCS);
|
::EnterCriticalSection(&contentBitmapCS);
|
||||||
if (hContentBitmap != NULL) {
|
DeleteContentBitmap();
|
||||||
::DeleteObject(hContentBitmap);
|
|
||||||
}
|
|
||||||
hContentBitmap = hBitmap;
|
hContentBitmap = hBitmap;
|
||||||
contentWidth = width;
|
contentWidth = width;
|
||||||
contentHeight = height;
|
contentHeight = height;
|
||||||
|
|
|
@ -262,32 +262,29 @@ private:
|
||||||
// from its hierarchy when shown. Currently applied to instances of
|
// from its hierarchy when shown. Currently applied to instances of
|
||||||
// javax/swing/Popup$HeavyWeightWindow class.
|
// javax/swing/Popup$HeavyWeightWindow class.
|
||||||
|
|
||||||
|
// SetTranslucency() is the setter for the following two fields
|
||||||
BYTE m_opacity; // The opacity level. == 0xff by default (when opacity mode is disabled)
|
BYTE m_opacity; // The opacity level. == 0xff by default (when opacity mode is disabled)
|
||||||
BOOL m_opaque; // Whether the window uses the perpixel translucency (false), or not (true).
|
BOOL m_opaque; // Whether the window uses the perpixel translucency (false), or not (true).
|
||||||
|
|
||||||
inline BYTE getOpacity() {
|
inline BYTE getOpacity() {
|
||||||
return m_opacity;
|
return m_opacity;
|
||||||
}
|
}
|
||||||
inline void setOpacity(BYTE opacity) {
|
|
||||||
m_opacity = opacity;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline BOOL isOpaque() {
|
inline BOOL isOpaque() {
|
||||||
return m_opaque;
|
return m_opaque;
|
||||||
}
|
}
|
||||||
inline void setOpaque(BOOL opaque) {
|
|
||||||
m_opaque = opaque;
|
|
||||||
}
|
|
||||||
|
|
||||||
CRITICAL_SECTION contentBitmapCS;
|
CRITICAL_SECTION contentBitmapCS;
|
||||||
HBITMAP hContentBitmap;
|
HBITMAP hContentBitmap;
|
||||||
UINT contentWidth;
|
UINT contentWidth;
|
||||||
UINT contentHeight;
|
UINT contentHeight;
|
||||||
|
|
||||||
void SetTranslucency(BYTE opacity, BOOL opaque);
|
void SetTranslucency(BYTE opacity, BOOL opaque, BOOL setValues = TRUE,
|
||||||
|
BOOL useDefaultForOldValues = FALSE);
|
||||||
void UpdateWindow(int width, int height, HBITMAP hBitmap);
|
void UpdateWindow(int width, int height, HBITMAP hBitmap);
|
||||||
void UpdateWindowImpl(int width, int height, HBITMAP hBitmap);
|
void UpdateWindowImpl(int width, int height, HBITMAP hBitmap);
|
||||||
void RedrawWindow();
|
void RedrawWindow();
|
||||||
|
void DeleteContentBitmap();
|
||||||
|
|
||||||
static UINT untrustedWindowsCounter;
|
static UINT untrustedWindowsCounter;
|
||||||
|
|
||||||
|
@ -352,6 +349,8 @@ protected:
|
||||||
|
|
||||||
UINT currentWmSizeState;
|
UINT currentWmSizeState;
|
||||||
|
|
||||||
|
void EnableTranslucency(BOOL enable);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int m_screenNum;
|
int m_screenNum;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue