< prev index next >


Print this page
rev 60071 : 8211999: Window positioning bugs due to overlapping GraphicsDevice bounds (Windows/HiDPI)
Reviewed-by: XXX

@@ -1,7 +1,7 @@
- * Copyright (c) 1996, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2020, Oracle and/or its affiliates. All rights reserved.
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.  Oracle designates this

@@ -55,16 +55,10 @@
     static jfieldID screenID; /* screen number passed over from WindowPeer */
     static jfieldID autoRequestFocusID;
     static jfieldID securityWarningWidthID;
     static jfieldID securityWarningHeightID;
-    // The coordinates at the peer.
-    static jfieldID sysXID;
-    static jfieldID sysYID;
-    static jfieldID sysWID;
-    static jfieldID sysHID;
     static jfieldID windowTypeID;
     static jmethodID getWarningStringMID;
     static jmethodID calculateSecurityWarningPositionMID;
     static jmethodID windowTypeNameMID;

@@ -124,18 +118,19 @@
     INLINE virtual BOOL IsFocusedWindowModalBlocker() {
         return FALSE;
+    virtual void Reshape(int x, int y, int w, int h);
     virtual void Invalidate(RECT* r);
     virtual void Show();
     virtual void SetResizable(BOOL isResizable);
     BOOL IsResizable();
     virtual void RecalcNonClient();
     virtual void RedrawNonClient();
     virtual int  GetScreenImOn();
-    virtual void CheckIfOnNewScreen();
+    virtual void CheckIfOnNewScreen(BOOL force);
     virtual void Grab();
     virtual void Ungrab();
     virtual void Ungrab(BOOL doPost);
     virtual void SetIconData(JNIEnv* env, jintArray iconData, jint w, jint h,
                              jintArray smallIconData, jint smw, jint smh);

@@ -242,11 +237,10 @@
     static void _SetOpaque(void* param);
     static void _UpdateWindow(void* param);
     static void _RepositionSecurityWarning(void* param);
     static void _SetFullScreenExclusiveModeState(void* param);
     static void _GetNativeWindowSize(void* param);
-    static void _WindowDPIChange(void* param);
     static void _OverrideHandle(void *param);
     inline static BOOL IsResizing() {
         return sm_resizing;

@@ -403,12 +397,11 @@
     BOOL m_winSizeMove;
     ScaleRec prevScaleRec;
     void InitOwner(AwtWindow *owner);
     void CheckWindowDPIChange();
-    void WindowDPIChange(int prevScreen, float prevScaleX, float prevScaleY,
-                         int newScreen, float scaleX, float scaleY);
+    void WmDPIChanged(const LPARAM &lParam);
     Type m_windowType;
     void InitType(JNIEnv *env, jobject peer);
     // Tweak the style according to the type of the window
< prev index next >