[Controls] Extract RectangleSelectionMarquee control with per-theme colours - #607
Merged
Xavier Fortin (xfortin-devolutions) merged 2 commits intoJul 29, 2026
Conversation
…evExpress/Yaru and macOS themes.
Copilot started reviewing on behalf of
Xavier Fortin (xfortin-devolutions)
July 29, 2026 15:16
View session
Contributor
There was a problem hiding this comment.
Pull request overview
Extracts the drag-selection marquee into a reusable themed control.
Changes:
- Adds
RectangleSelectionMarqueeand its default template. - Adds DevExpress, Linux, and macOS theme brushes.
- Updates
GroupedTileListBoxto use the new control.
Reviewed changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
MacOS ThemeResources.axaml |
Adds light/dark neutral brushes. |
Linux ThemeResources.axaml |
Adds accent-based brushes. |
DevExpress ThemeResources.axaml |
Adds accent-based brushes. |
DefaultControlTemplates.axaml |
Registers the control theme. |
RectangleSelectionMarquee.axaml.cs |
Defines the control type. |
RectangleSelectionMarquee.axaml |
Defines its visual template. |
GroupedTileListBox.axaml.cs |
Updates the template-part type. |
GroupedTileListBox.axaml |
Replaces the inline border. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Copilot started reviewing on behalf of
Xavier Fortin (xfortin-devolutions)
July 29, 2026 15:41
View session
Contributor
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 9 out of 9 changed files in this pull request and generated 1 comment.
Comments suppressed due to low confidence (1)
src/Devolutions.AvaloniaControls/Controls/RectangleSelectionMarquee.axaml:9
- These two keys are only defined by the custom theme packages, but
DefaultControlTemplates.axamlis also loaded directly by SampleApp's Fluent and Simple themes (samples/SampleApp/App.axaml:33-45). In those supported configurations both dynamic lookups are unresolved, so the marquee has neither fill nor border and drag selection becomes visually invisible. Please provide fallback brushes inDevolutions.AvaloniaControlswhile allowing each custom theme to override them.
<Setter Property="Background" Value="{DynamicResource RectangleSelectionMarqueeFill}" />
<Setter Property="BorderBrush" Value="{DynamicResource RectangleSelectionMarqueeBorderBrush}" />
There was a problem hiding this comment.
🤖 Pull request was approved automatically: the AI review is complete and all its review threads are resolved. 🎉
Integration Details
{
"deliveryId": "73a41680-8b64-11f1-917a-506cc72d4ac6",
"headSha": "6f743ce80f563460899e8f5e4fff41556ec64137",
"reviewer": "copilot-pull-request-reviewer[bot]"
}
Xavier Fortin (xfortin-devolutions)
deleted the
create-MarqueeSelectionRectangle-control
branch
July 29, 2026 15:45
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Extracts the
GroupedTileListBoxdrag-to-select rubber-band into a dedicated, reusableRectangleSelectionMarqueetemplated control, and gives each theme control over the marquee's fill and border colours.Previously the marquee was an inline
Borderin theGroupedTileListBoxtemplate, tinted withSystemAccentColorvia brushes defined locally inGroupedTileListBox.axaml. This meant the marquee looked identical across all themes and couldn't be restyled independently. This PR:RectangleSelectionMarquee(TemplatedControl) with its ownControlThemeinDevolutions.AvaloniaControls, registered throughDefaultControlTemplates.axaml.BorderinGroupedTileListBoxwith the new control (template part type updated accordingly).RectangleSelectionMarqueeFill/RectangleSelectionMarqueeBorderBrushresources per theme:SystemAccentColor), matching the previous Explorer-style rubber-band.Builds on the drag-to-select marquee introduced in #602.
Changes
RectangleSelectionMarquee.axaml/.axaml.cs— new control + default templateGroupedTileListBox.axaml/.axaml.cs— use the new control; drop local brush definitionsDefaultControlTemplates.axaml— register the new control themeThemeResources.axaml(DevExpress, Linux, macOS) — per-theme marquee brushes