Skip to content

Add factory method for RectangularPushButton with consistent sizing a… - #44

Merged
veillette merged 3 commits into
mainfrom
claude/push-button-factory-method-TPBoh
Feb 23, 2026
Merged

Add factory method for RectangularPushButton with consistent sizing a…#44
veillette merged 3 commits into
mainfrom
claude/push-button-factory-method-TPBoh

Conversation

@veillette

Copy link
Copy Markdown
Collaborator

…nd touch areas

Introduces createTrackLabButton() in TrackLabButton.ts — a single factory that gives every button the same flat appearance, dark base colour, x/y margins, and enlarged touch/mouse target areas without requiring callers to repeat boilerplate.

Key changes:

  • TrackLabConstants.ts: add BUTTON_MIN_CONTENT_SIZE (18 px), TOUCH_AREA_DILATION (5 px) and MOUSE_AREA_DILATION (2 px) constants
  • TrackLabButton.ts (new): factory function + icon helpers
    • sizeContent() wraps every icon in a Node with HStrut/VStrut so all icon buttons share an identical 18×18 content floor; larger content (text labels) simply overflows naturally
    • makeDownloadIcon() replaces the plain ⬇ unicode glyph with a proper Path-based arrow-into-tray icon for cleaner rendering and better recognisability
    • makeUploadIcon() extracted from VideoSourceControlNode for reuse
  • All seven call sites updated to use createTrackLabButton(): VideoSourceControlNode (download + upload), PlaybackControlsNode (rewind), TrackListPanel (add-track + trash), DataTableNode (CSV export), WebcamPanel (record start + stop + use-video)
  • CameraButton in VideoSourceControlNode gets manual touch/mouse dilation to match the factory defaults (CameraButton is not a RectangularPushButton)

https://claude.ai/code/session_01WUtXMUhjfvG784s5q1DXag

claude and others added 2 commits February 23, 2026 09:35
…nd touch areas

Introduces createTrackLabButton() in TrackLabButton.ts — a single factory that
gives every button the same flat appearance, dark base colour, x/y margins, and
enlarged touch/mouse target areas without requiring callers to repeat boilerplate.

Key changes:
- TrackLabConstants.ts: add BUTTON_MIN_CONTENT_SIZE (18 px), TOUCH_AREA_DILATION
  (5 px) and MOUSE_AREA_DILATION (2 px) constants
- TrackLabButton.ts (new): factory function + icon helpers
  - sizeContent() wraps every icon in a Node with HStrut/VStrut so all icon
    buttons share an identical 18×18 content floor; larger content (text labels)
    simply overflows naturally
  - makeDownloadIcon() replaces the plain ⬇ unicode glyph with a proper
    Path-based arrow-into-tray icon for cleaner rendering and better recognisability
  - makeUploadIcon() extracted from VideoSourceControlNode for reuse
- All seven call sites updated to use createTrackLabButton():
  VideoSourceControlNode (download + upload), PlaybackControlsNode (rewind),
  TrackListPanel (add-track + trash), DataTableNode (CSV export),
  WebcamPanel (record start + stop + use-video)
- CameraButton in VideoSourceControlNode gets manual touch/mouse dilation to
  match the factory defaults (CameraButton is not a RectangularPushButton)

https://claude.ai/code/session_01WUtXMUhjfvG784s5q1DXag
@veillette veillette self-assigned this Feb 23, 2026
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@veillette
veillette merged commit 285532d into main Feb 23, 2026
1 check passed
@veillette
veillette deleted the claude/push-button-factory-method-TPBoh branch February 24, 2026 02:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants