mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-26 07:47:54 +01:00
Fixes bugs where unnecessary Draw operations were happening in LayoutAndDraw. In some cases causing everything to always be drawn.
Refactored `NeedsDraw` logic into a modular implementation in `View.NeedsDraw.cs`, introducing methods to manage drawing states more effectively. Updated `Menus.cs` event handlers to include null checks for robustness. Improved margin drawing logic in `Margin.cs` with better performance and debugging assertions. Added comprehensive unit tests in `NeedsDrawTests.cs` and `StaticDrawTests.cs` to validate the new drawing logic, including edge cases and static `View.Draw` behavior. Removed redundant tests from `ViewDrawingFlowTests.cs`. Refactored diagnostic flags handling in `UICatalogRunnable.cs` for clarity. Performed general code cleanup, leveraging modern C# features and improving maintainability.
This commit is contained in:
@@ -253,7 +253,13 @@ public class Menus : Scenario
|
||||
|
||||
// The source of truth is our status CB; any time it changes, update the menu item
|
||||
var enableOverwriteMenuItemCb = menuBar.GetMenuItemsWithTitle ("Overwrite").FirstOrDefault ()?.CommandView as CheckBox;
|
||||
enableOverwriteStatusCb.CheckedStateChanged += (_, _) => enableOverwriteMenuItemCb!.CheckedState = enableOverwriteStatusCb.CheckedState;
|
||||
enableOverwriteStatusCb.CheckedStateChanged += (_, _) =>
|
||||
{
|
||||
if (enableOverwriteMenuItemCb is { })
|
||||
{
|
||||
enableOverwriteMenuItemCb.CheckedState = enableOverwriteStatusCb.CheckedState;
|
||||
}
|
||||
};
|
||||
|
||||
menuBar.Accepted += (o, args) =>
|
||||
{
|
||||
@@ -298,7 +304,13 @@ public class Menus : Scenario
|
||||
|
||||
// The source of truth is our status CB; any time it changes, update the menu item
|
||||
var editModeMenuItemCb = menuBar.GetMenuItemsWithTitle ("EditMode").FirstOrDefault ()?.CommandView as CheckBox;
|
||||
editModeStatusCb.CheckedStateChanged += (_, _) => editModeMenuItemCb!.CheckedState = editModeStatusCb.CheckedState;
|
||||
editModeStatusCb.CheckedStateChanged += (_, _) =>
|
||||
{
|
||||
if (editModeMenuItemCb is { })
|
||||
{
|
||||
editModeMenuItemCb.CheckedState = editModeStatusCb.CheckedState;
|
||||
}
|
||||
};
|
||||
|
||||
menuBar.Accepted += (o, args) =>
|
||||
{
|
||||
|
||||
@@ -289,24 +289,31 @@ public class UICatalogRunnable : Runnable
|
||||
_diagnosticFlagsSelector = new ()
|
||||
{
|
||||
Styles = SelectorStyles.ShowNoneFlag,
|
||||
CanFocus = true
|
||||
CanFocus =true
|
||||
|
||||
};
|
||||
_diagnosticFlagsSelector.UsedHotKeys.Add (Key.D);
|
||||
_diagnosticFlagsSelector.AssignHotKeys = true;
|
||||
_diagnosticFlagsSelector.Value = Diagnostics;
|
||||
_diagnosticFlagsSelector.ValueChanged += (sender, args) =>
|
||||
{
|
||||
_diagnosticFlags = (ViewDiagnosticFlags)_diagnosticFlagsSelector.Value;
|
||||
Diagnostics = _diagnosticFlags;
|
||||
};
|
||||
_diagnosticFlagsSelector.Selecting += (sender, args) =>
|
||||
{
|
||||
_diagnosticFlags = (ViewDiagnosticFlags)((int)args.Context!.Source!.Data!);// (ViewDiagnosticFlags)_diagnosticFlagsSelector.Value;
|
||||
Diagnostics = _diagnosticFlags;
|
||||
};
|
||||
|
||||
menuItems.Add (
|
||||
new MenuItem
|
||||
{
|
||||
CommandView = _diagnosticFlagsSelector,
|
||||
HelpText = "View Diagnostics"
|
||||
});
|
||||
MenuItem diagFlagMenuItem = new MenuItem ()
|
||||
{
|
||||
CommandView = _diagnosticFlagsSelector,
|
||||
HelpText = "View Diagnostics"
|
||||
};
|
||||
diagFlagMenuItem.Accepting += (sender, args) =>
|
||||
{
|
||||
//_diagnosticFlags = (ViewDiagnosticFlags)_diagnosticFlagsSelector.Value;
|
||||
//Diagnostics = _diagnosticFlags;
|
||||
//args.Handled = true;
|
||||
};
|
||||
|
||||
menuItems.Add (diagFlagMenuItem);
|
||||
|
||||
menuItems.Add (new Line ());
|
||||
|
||||
|
||||
Reference in New Issue
Block a user