mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2026-02-10 22:17:13 -06:00
Native window decorations (Windows 10/11 only): fixed rendering artifacts on HiDPI screens when dragging window partly offscreen and back into screen bounds (issue #477)
This commit is contained in:
@@ -88,6 +88,8 @@ FlatWndProc::FlatWndProc() {
|
||||
defaultWndProc = NULL;
|
||||
wmSizeWParam = -1;
|
||||
background = NULL;
|
||||
isMovingOrSizing = false;
|
||||
isMoving = false;
|
||||
}
|
||||
|
||||
HWND FlatWndProc::install( JNIEnv *env, jobject obj, jobject window ) {
|
||||
@@ -250,7 +252,27 @@ LRESULT CALLBACK FlatWndProc::WindowProc( HWND hwnd, UINT uMsg, WPARAM wParam, L
|
||||
wParam = wmSizeWParam;
|
||||
break;
|
||||
|
||||
case WM_ENTERSIZEMOVE:
|
||||
isMovingOrSizing = true;
|
||||
break;
|
||||
|
||||
case WM_EXITSIZEMOVE:
|
||||
isMovingOrSizing = isMoving = false;
|
||||
break;
|
||||
|
||||
case WM_MOVE:
|
||||
case WM_MOVING:
|
||||
if( isMovingOrSizing )
|
||||
isMoving = true;
|
||||
break;
|
||||
|
||||
case WM_ERASEBKGND:
|
||||
// do not erase background while the user is moving the window,
|
||||
// otherwise there may be rendering artifacts on HiDPI screens with Java 9+
|
||||
// when dragging the window partly offscreen and back into the screen bounds
|
||||
if( isMoving )
|
||||
return FALSE;
|
||||
|
||||
return WmEraseBkgnd( hwnd, uMsg, wParam, lParam );
|
||||
|
||||
case WM_DESTROY:
|
||||
|
||||
@@ -43,6 +43,8 @@ private:
|
||||
WNDPROC defaultWndProc;
|
||||
int wmSizeWParam;
|
||||
HBRUSH background;
|
||||
bool isMovingOrSizing;
|
||||
bool isMoving;
|
||||
|
||||
FlatWndProc();
|
||||
static void initIDs( JNIEnv *env, jobject obj );
|
||||
|
||||
Reference in New Issue
Block a user