dotnet / dotnet/winforms

Research continuous SplitContainer repainting and derive the implementation approach

Open
#14,932 0 comments 0 reactions 0 assignees View on GitHub
rendering-or-artifacts-issues
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.