Skip to content

Research continuous SplitContainer repainting and derive the implementation approach #14932

Description

@KlausLoeffelmann

Objective

Research the SplitContainer splitter-movement, layout, invalidation, and painting paths and derive a concrete implementation approach for continuous Panel1 and Panel2 repainting in VisualStylesMode.Net11 and later.

Work

  • Reproduce and characterize the failure with representative content in both panels.
  • Trace mouse and keyboard splitter movement through SplitContainer, Splitter, layout, invalidation, buffering, and paint paths.
  • Compare Classic mode with VisualStylesMode.Net11 and later to identify the behavioral divergence.
  • Determine whether the defect is caused by invalidation scope/timing, layout suspension, buffering, native window behavior, rendering-mode logic, or a combination.
  • Review existing WinForms patterns and tests before introducing new helpers or behavior.
  • Evaluate candidate approaches for correctness, flicker, re-entrancy, layout frequency, CPU cost, handle churn, and compatibility.
  • Identify the narrowest mode-gated implementation that keeps both panels visually current.
  • Define the code-generation/prompting approach if Copilot is used: relevant files and symbols, invariants, prohibited shortcuts, tests to create first, and validation requirements.

Deliverables

  • A concise root-cause analysis.
  • Recommended implementation approach and rejected alternatives with rationale.
  • Expected files and code paths to change.
  • Risks and mitigations, including accessibility, performance, flicker, layout recursion, and compatibility.
  • A test plan that the implementation and test tasks can follow.

Completion criteria

  • The issue reproduces reliably.
  • The relevant call paths and mode-specific divergence are documented.
  • The proposed approach explains why both panels repaint continuously.
  • Performance, accessibility, and compatibility risks are addressed.
  • The implementation or code-generation prompt is specific enough to execute without architectural guesswork.

Metadata

Metadata

Assignees

No one assigned

    Labels

    rendering-or-artifacts-issuesControls paint themselves, sometimes "outside their borders." Primarily looks, not function.

    Type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions