Part of #4511, plan viewer parity with PerformanceStudio (PS). The viewer control is shared by the Darling Viewer and Lite, so each change lands in both.
PS (erikdarlingdata/PerformanceStudio@e156e56) added a TextBox under the panel header that filters every row's label+value case-insensitively; a section with no matching rows hides, a section whose title matches keeps all its rows, Esc clears while focused, text is sticky across node selection. PM's PlanViewerControl.Properties.cs builds a flat tree of Grids per row with no row/section model and no filter box (verified end-to-end, no Filter/TextChanged hits). Port needs PS's row-tracking model first (see 435e12d below) since there's nothing to hide yet. Add a PropertiesFilterBox in PlanViewerControl.xaml, wire TextChanged/Esc, and an ApplyPropertiesFilter() walking _propertySections. Depends on 435e12d landing first (shared file/model).
PS (@217c580) replaced the default TextBox right-click menu (greyed-out Cut/Copy, live Paste on read-only data) with "Copy value" / "Copy name and value" / "Copy all properties", shared by label+value controls, clearing any theme ContextFlyout. "Copy all properties" renders from the row model, not the visual tree, so code values paste verbatim. PM's AddPropertyRow (Properties.cs L916-948) still uses a plain read-only TextBox, giving it the WPF stock context menu — no ContextMenu assignment found anywhere in the file. PM has no clipboard helper equivalent to PS's retry-guarded SetClipboardTextAsync; would use Clipboard.SetText with a try/catch. Needs 435e12d's row model to build "Copy all". Lite/Darling Viewer inherit automatically (shared control).
PS (@b5ba82e) stopped resetting _propertiesColumn.Width to a hard 320 on every node selection; width is set only on the hidden→visible transition, remembered statically for the session (default 380, clamped 280-800 while open, bounds cleared on close so MinWidth doesn't hold a strip open). PM's PlanViewerControl.Properties.cs (bottom of ShowPropertiesPanel) unconditionally does PropertiesColumn.Width = new GridLength(320); on every call — confirmed, no width-remembering field exists, no MinWidth/MaxWidth bounds in PlanViewerControl.xaml (PropertiesColumn at L149 is just Width="0"). Port: add a static _propertiesPanelWidth field, gate the width assignment on Visibility != Visible, add Min/MaxWidth to the XAML column, clear them on close. Splitter grab-area/hover cosmetic bit is optional. Lite/Darling Viewer share the fix automatically.
At 08f3e3c4e. PS reference: its dev branch at 85492a1.
Part of #4511, plan viewer parity with PerformanceStudio (PS). The viewer control is shared by the Darling Viewer and Lite, so each change lands in both.
PS (erikdarlingdata/PerformanceStudio@e156e56) added a TextBox under the panel header that filters every row's label+value case-insensitively; a section with no matching rows hides, a section whose title matches keeps all its rows, Esc clears while focused, text is sticky across node selection. PM's
PlanViewerControl.Properties.csbuilds a flat tree of Grids per row with no row/section model and no filter box (verified end-to-end, noFilter/TextChangedhits). Port needs PS's row-tracking model first (see 435e12d below) since there's nothing to hide yet. Add aPropertiesFilterBoxinPlanViewerControl.xaml, wireTextChanged/Esc, and anApplyPropertiesFilter()walking_propertySections. Depends on 435e12d landing first (shared file/model).PS (@217c580) replaced the default TextBox right-click menu (greyed-out Cut/Copy, live Paste on read-only data) with "Copy value" / "Copy name and value" / "Copy all properties", shared by label+value controls, clearing any theme
ContextFlyout. "Copy all properties" renders from the row model, not the visual tree, so code values paste verbatim. PM'sAddPropertyRow(Properties.cs L916-948) still uses a plain read-onlyTextBox, giving it the WPF stock context menu — noContextMenuassignment found anywhere in the file. PM has no clipboard helper equivalent to PS's retry-guardedSetClipboardTextAsync; would useClipboard.SetTextwith a try/catch. Needs 435e12d's row model to build "Copy all". Lite/Darling Viewer inherit automatically (shared control).PS (@b5ba82e) stopped resetting
_propertiesColumn.Widthto a hard 320 on every node selection; width is set only on the hidden→visible transition, remembered statically for the session (default 380, clamped 280-800 while open, bounds cleared on close so MinWidth doesn't hold a strip open). PM'sPlanViewerControl.Properties.cs(bottom ofShowPropertiesPanel) unconditionally doesPropertiesColumn.Width = new GridLength(320);on every call — confirmed, no width-remembering field exists, no MinWidth/MaxWidth bounds inPlanViewerControl.xaml(PropertiesColumnat L149 is justWidth="0"). Port: add a static_propertiesPanelWidthfield, gate the width assignment onVisibility != Visible, add Min/MaxWidth to the XAML column, clear them on close. Splitter grab-area/hover cosmetic bit is optional. Lite/Darling Viewer share the fix automatically.At
08f3e3c4e. PS reference: itsdevbranch at85492a1.