Skip to content

Pointing-hand cursor over task checkboxes (and hover in inactive windows) - #134

Closed
dylandeheer wants to merge 2 commits into
nodes-app:mainfrom
GetWeeve:feature/checkbox-pointer-cursor
Closed

Pointing-hand cursor over task checkboxes (and hover in inactive windows)#134
dylandeheer wants to merge 2 commits into
nodes-app:mainfrom
GetWeeve:feature/checkbox-pointer-cursor

Conversation

@dylandeheer

Copy link
Copy Markdown

What

The drawn task checkbox toggles on click but showed the plain arrow on hover. It now shows the pointing hand in edit mode — it is a button-like control, matching links. An extra tracking area also keeps hover cursors responsive while the editor's window isn't key.

How

  • The two isOverTaskCheckboxBox branches in NativeTextView+CursorRects.swift set NSCursor.pointingHand instead of .arrow (same shared taskCheckboxHit geometry as the click path; the flicker-avoidance structure — skipping super — is unchanged).
  • updateTrackingAreas installs one .activeInActiveApp + .inVisibleRect + .mouseMoved/.mouseEnteredAndExited tracking area, because NSTextView's own cursor tracking goes quiet while the window isn't key, freezing hover cursors on inactive editor panels. The handlers are idempotent, so overlapping with the system areas in a key window is harmless.

Defaults

Read-only mode is unchanged (checkbox toggling is blocked by shouldChangeText there, so the arrow stays honest). No configuration surface added.

Tests

CheckboxCursorTrackingTests: the tracking area is installed with the right options and replaced (not stacked) on repeated updateTrackingAreas calls. The cursor set itself is exercised manually — NSCursor state isn't observable headless.

Made with Cursor

dylandeheer and others added 2 commits August 3, 2026 22:59
The theme can recolor every element except heading text (it inherits
bodyText), and the heading config covers every metric except the face —
so an embedder that wants serif display headings over a sans body has
to fork. HeadingStyle.fontName picks a PostScript face for headings,
honored exactly so the chosen weight survives; an unresolvable name
falls back to the stock bold base font, like TaskCheckboxStyle's symbol
fallback. MarkdownEditorTheme.headingText colors heading text while the
`#` glyphs stay on headingMarker and inline constructs inside a heading
keep their own ink. Emphasis inside a heading still composes on top of
the configured face (traits added, family and per-level size kept).
Both knobs default to nil, which keeps styling identical to before.

Co-authored-by: Cursor <cursoragent@cursor.com>
The drawn checkbox toggles on click, so it reads as a button — show the
pointing hand over its hit zone in edit mode (shared taskCheckboxHit
geometry) instead of the plain arrow. NSTextView's own cursor tracking
goes quiet while the window isn't key, freezing hover cursors on
inactive editor panels; one extra .activeInActiveApp tracking area keeps
mouseMoved/mouseEntered flowing app-wide (the handlers are idempotent,
so overlap with the system areas in a key window is harmless).

Co-authored-by: Cursor <cursoragent@cursor.com>
@nodes-app nodes-app locked and limited conversation to collaborators Aug 6, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants