Win32: no WM_SETCURSOR reaches DefWindowProc, so the borders show no resize cursors #181
Labels
No labels
claude:blocked
claude:done
claude:failed
claude:in-progress
claude:ready
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Catcrafts/Crafter.Graphics#181
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
On Win32 no
WM_SETCURSORreachesDefWindowProc, so the window's borders and corners show no resize cursors, and the class cursor is never applied in the client area. Line numbers refer toimplementations/Crafter.Graphics-Window.cppat852ae8a.The
WM_SETCURSORcase (:331-337) returnsTRUEafterSetCursoronly for the client area with a custom cursor, and otherwisebreaks toreturn 0(:341).DefWindowProcis what sets the resize arrows for the border hit-test codes, and the class cursor (IDC_ARROW,:407) forHTCLIENT.The custom branch never runs either:
SetCursorImagehas no Win32 body (:889-892, "Win32 cursor support is not implemented for the v2 Window"), socursorHandleis never set, and everyWM_SETCURSORtakes thereturn 0path.What it looks like: hovering a border shows no resize arrow, though dragging still resizes, and a pointer coming in from another window keeps that window's cursor (an editor's I-beam, say) until something else changes it.
Found while reviewing
claude/win32-title.Suggested fix
Replace the
breakwithreturn DefWindowProc(hwnd, msg, wParam, lParam);(DefWindowProcWonceclaude/win32-titlelands).SetCursorImageandSetDefaultCursorfor Win32 (CreateIconIndirectfrom the RGBA pixels,DestroyCursoron replacement) are a separate gap; until they exist, the interface could say they are Wayland-only.