From 6df79e48cbca3d1c610b970d921fc609a572a55c Mon Sep 17 00:00:00 2001 From: johnny-keker Date: Mon, 20 Feb 2023 18:50:52 +0100 Subject: [PATCH 1/2] made name column non-frozen when whole table area is too narrow for it --- VSRAD.Package/DebugVisualizer/VisualizerTable.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/VSRAD.Package/DebugVisualizer/VisualizerTable.cs b/VSRAD.Package/DebugVisualizer/VisualizerTable.cs index 8ffcd8697..07ad46913 100644 --- a/VSRAD.Package/DebugVisualizer/VisualizerTable.cs +++ b/VSRAD.Package/DebugVisualizer/VisualizerTable.cs @@ -501,6 +501,12 @@ private bool HandleEscape() #region Standard functions overriding + protected override void OnResize(EventArgs e) + { + base.OnResize(e); + Columns[NameColumnIndex].Frozen = Width > Columns[NameColumnIndex].Width + RowHeadersWidth; + } + protected override void OnMouseUp(MouseEventArgs e) { if (_state.ScalingMode == ScalingMode.ResizeColumn From eb77ce2ceb3019a448cb8b0e441ecf19b1708ce0 Mon Sep 17 00:00:00 2001 From: johnny-keker Date: Mon, 20 Feb 2023 19:20:18 +0100 Subject: [PATCH 2/2] added optional autofit name column width property --- VSRAD.Package/DebugVisualizer/TableState.cs | 5 +++++ VSRAD.Package/DebugVisualizer/VisualizerControl.xaml.cs | 4 ++++ VSRAD.Package/DebugVisualizer/VisualizerTable.cs | 2 ++ VSRAD.Package/Options/VisualizerAppearance.cs | 7 +++++++ VSRAD.Package/ToolWindows/OptionsControl.xaml | 4 ++++ 5 files changed, 22 insertions(+) diff --git a/VSRAD.Package/DebugVisualizer/TableState.cs b/VSRAD.Package/DebugVisualizer/TableState.cs index 8f3a03424..3cc080494 100644 --- a/VSRAD.Package/DebugVisualizer/TableState.cs +++ b/VSRAD.Package/DebugVisualizer/TableState.cs @@ -16,6 +16,7 @@ public sealed class TableState public ScalingMode ScalingMode { get; set; } = ScalingMode.ResizeColumn; public bool NameColumnScalingEnabled { get; set; } public int NameColumnIndex { get; } + public bool AutoscaleName { get; set; } private readonly List _dataColumns = new List(); @@ -197,6 +198,10 @@ public void FitWidth(int clickedColumnIndex) var n = CountVisibleDataColumns(clickedColumnIndex, false); var newScrollOffset = Math.Max(0, (n - 1) * (preferredWidth - ColumnWidth) + GetCurrentScroll()); + if (AutoscaleName) + Table.Columns[NameColumnIndex].Width + = Table.Columns[NameColumnIndex].GetPreferredWidth(DataGridViewAutoSizeColumnMode.AllCells, true); + SetWidthAndScroll(preferredWidth, newScrollOffset); } } diff --git a/VSRAD.Package/DebugVisualizer/VisualizerControl.xaml.cs b/VSRAD.Package/DebugVisualizer/VisualizerControl.xaml.cs index 9fe159fbf..902311d64 100644 --- a/VSRAD.Package/DebugVisualizer/VisualizerControl.xaml.cs +++ b/VSRAD.Package/DebugVisualizer/VisualizerControl.xaml.cs @@ -117,6 +117,7 @@ private void RestoreSavedState() _context.Options.VisualizerAppearance.DataColumnAlignment, _context.Options.VisualizerAppearance.HeadersAlignment ); + _table.SetAutoscaleName(_context.Options.VisualizerAppearance.AutoscaleNameColumn); foreach (var watch in _context.Options.DebuggerOptions.Watches) _table.AppendVariableRow(watch); _table.PrepareNewWatchRow(); @@ -145,6 +146,9 @@ private void OptionsChanged(object sender, PropertyChangedEventArgs e) case nameof(Options.VisualizerAppearance.DarkenAlternatingRowsBy): RefreshDataStyling(); break; + case nameof(Options.VisualizerAppearance.AutoscaleNameColumn): + _table.SetAutoscaleName(_context.Options.VisualizerAppearance.AutoscaleNameColumn); + break; case nameof(Options.DebuggerOptions.WaveSize): RefreshDataStyling(); _wavemap.View = _context.BreakData?.GetWavemapView(); diff --git a/VSRAD.Package/DebugVisualizer/VisualizerTable.cs b/VSRAD.Package/DebugVisualizer/VisualizerTable.cs index 07ad46913..a19b8e8ba 100644 --- a/VSRAD.Package/DebugVisualizer/VisualizerTable.cs +++ b/VSRAD.Package/DebugVisualizer/VisualizerTable.cs @@ -102,6 +102,8 @@ public VisualizerTable(ProjectOptions options, FontAndColorProvider fontAndColor _selectionController = new SelectionController(this); } + public void SetAutoscaleName(bool value) => _state.AutoscaleName = value; + public void AddWatch(string watchName) { RemoveNewWatchRow(); diff --git a/VSRAD.Package/Options/VisualizerAppearance.cs b/VSRAD.Package/Options/VisualizerAppearance.cs index d80f43ad2..40948fbe9 100644 --- a/VSRAD.Package/Options/VisualizerAppearance.cs +++ b/VSRAD.Package/Options/VisualizerAppearance.cs @@ -66,6 +66,13 @@ public ScalingMode ScalingMode set => SetField(ref _scalingMode, value); } + private bool _autoscaleNameColumn = false; + public bool AutoscaleNameColumn + { + get => _autoscaleNameColumn; + set => SetField(ref _autoscaleNameColumn, value); + } + private int _darkenAlternatingRowsBy = 0; public int DarkenAlternatingRowsBy { get => _darkenAlternatingRowsBy; set => SetField(ref _darkenAlternatingRowsBy, value); } } diff --git a/VSRAD.Package/ToolWindows/OptionsControl.xaml b/VSRAD.Package/ToolWindows/OptionsControl.xaml index 6c618bfd1..dd26ef8db 100644 --- a/VSRAD.Package/ToolWindows/OptionsControl.xaml +++ b/VSRAD.Package/ToolWindows/OptionsControl.xaml @@ -184,6 +184,10 @@ Value="{Binding Options.VisualizerOptions.WavemapElementSize, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> + + +