Research continuous SplitContainer repainting and derive the implementation approach
- Dominant language
- C#
- Stars
- 4.9k
- Forks
- 1.1k
- Avg merge
- 1d 13m
- Merged PRs (30d)
- 85
Description
## 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.
Contributor guide
Research direction
Start by reproducing the SplitContainer repainting failure with representative content in both panels, then trace splitter movement through SplitContainer, Splitter, layout, invalidation, buffering, and paint paths. Compare Classic mode with VisualStylesMode.Net11 and later, and review existing WinForms patterns and tests. Done means a documented root cause, mode-gated implementation approach, rejected alternatives, risks, expected code paths, and a follow-up test plan.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- desktop
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100