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.

Activity

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

    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