Markus Nißl - 5 days ago

Update: Yesterday, I was moving the application between monitors with the shortcut Win+Shift+Left/Right. This triggers the message WM_WINDOWPOSCHANGED.

Alas, when you drag the application with the mouse between monitors, WM_WINDOWPOSCHANGED is not sent.

The change in scale factor when crossing monitor boundaries does trigger WM_PAINT, but also WM_NCPAINT which is sent way less often than WM_PAINT. Hence I suggest to update ScintillaWin::WndProc() by moving the WM_NCPAINT case down to WM_WINDOWPOSCHANGED.

Moreover, the reverseArrowCursor also needs to be invalidated.

        case WM_NCPAINT:
        case WM_WINDOWPOSCHANGED:
#if defined(USE_D2D)
            if (technology != Technology::Default) {
                if (UpdateRenderingParams(false)) {
                    reverseArrowCursor.Invalidate();
                    DropGraphics();
                    Redraw();
                }
            }
#endif