aboutsummaryrefslogtreecommitdiffhomepage
path: root/win32/PlatWin.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'win32/PlatWin.cxx')
-rw-r--r--win32/PlatWin.cxx13
1 files changed, 10 insertions, 3 deletions
diff --git a/win32/PlatWin.cxx b/win32/PlatWin.cxx
index 91194c4c5..c3c6b609a 100644
--- a/win32/PlatWin.cxx
+++ b/win32/PlatWin.cxx
@@ -2782,7 +2782,7 @@ void Window::InvalidateRectangle(PRectangle rc) {
::InvalidateRect(HwndFromWindowID(wid), &rcw, FALSE);
}
-HCURSOR LoadReverseArrowCursor(UINT dpi) noexcept {
+HCURSOR LoadReverseArrowCursor(UINT dpi, int cursorBaseSize) noexcept {
class CursorHelper {
public:
ICONINFO info{};
@@ -2848,8 +2848,15 @@ HCURSOR LoadReverseArrowCursor(UINT dpi) noexcept {
HCURSOR reverseArrowCursor {};
- const int width = SystemMetricsForDpi(SM_CXCURSOR, dpi);
- const int height = SystemMetricsForDpi(SM_CYCURSOR, dpi);
+ int width;
+ int height;
+ if (cursorBaseSize > defaultCursorBaseSize) {
+ width = ::MulDiv(cursorBaseSize, dpi, USER_DEFAULT_SCREEN_DPI);
+ height = width;
+ } else {
+ width = SystemMetricsForDpi(SM_CXCURSOR, dpi);
+ height = SystemMetricsForDpi(SM_CYCURSOR, dpi);
+ }
DPI_AWARENESS_CONTEXT oldContext = nullptr;
if (fnAreDpiAwarenessContextsEqual && fnAreDpiAwarenessContextsEqual(fnGetThreadDpiAwarenessContext(), DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED)) {