Skip to content

Honor scrollbar thumb hover, active, and minimum extent in retained scenes #785

Description

@wieslawsoltes

Parent: #235. Paint owner: #241. Performance owner: #243.

Proven Code OSS gap

Current WebScene already recognizes the base WebKit scrollbar pseudos, paints authored base thumb/track colors and radii, applies base width/height, supports base display:none, approximates transparent content-box borders, and routes primary-button thumb dragging through the retained overlay geometry. That baseline must be preserved.

The remaining unchanged Code OSS surface is narrower:

  • ::-webkit-scrollbar-thumb:hover and :active do not parse as retained pseudo state and cannot change thumb paint;
  • authored thumb min-height is ignored in favor of a fixed 18 px minimum;
  • Code OSS corner rules request display:none; WebScene already emits no native corner command, so no new corner representation is required.

The pinned checkout contains 39 thumb occurrences across source and generated CSS. Automation dialogs, Issue Reporter, Image Carousel, and Prompt Timeline author theme/custom-property base, hover, and active colors. Automation dialogs, Issue Reporter, and Prompt Timeline also author minimum thumb height.

Focused implementation

  • Parse thumb :hover and :active as retained scrollbar-part state without materializing pseudo DOM nodes.
  • Admit each state selector only while the existing native thumb hit/drag state is active, then fold it into the thumb's single cascade so specificity, source order, layers, variables, rollback, and !important remain shared with base rules.
  • Retain authored pixel min-height in the existing lazy scrollbar style and consume the same value in scene geometry and hit testing.
  • Update only the previous/new scroller on pointer transitions; add no document scan, timer, animation frame, or platform widget.
  • Preserve existing base styling, transparent border inset, absent-corner behavior, scroll geometry, client dimensions, and dragging.

Quality and performance gates

  • Portable compiler protection/restoration retains thumb :hover and :active; native selector payloads retain dedicated kinds and a common host origin.
  • Retained-scene contracts cover normal, hover, active, authored 28 px minimum, transparent inset, hidden-corner absence, drag geometry, and scroll event count.
  • The focused interaction gate requires unchanged layout-pass and animation-frame counts.
  • A 4,096-node / 100 hover-exit-cycle gate bounds runtime to five seconds and at most one scene publication per transition while preserving zero layout and frame demand.
  • Final unchanged Code OSS regional comparisons cover Prompt Timeline, Automation dialog, Issue Reporter, and Image Carousel in light/dark themes plus repeated lifecycle and memory return.

No VS Code source changes and no Electron, Chromium, CEF, or WebView dependency. Authored gates remain unexecuted under the active implementation-throughput direction; no result is claimed.

Activity

  1. changed the title [-]Style retained scrollbar thumb, track, and corner pseudos for Code OSS[/-] [+]Honor scrollbar thumb hover, active, and minimum extent in retained scenes[/+] on Sep 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    vscode-oss/plannedPlanned for the AppScene/WebScene VS Code OSS integration

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions