From 37fbc7600e828bffe8a4a9e874e2780e363c0b27 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Sat, 23 Jul 2022 10:51:38 +0200 Subject: [PATCH] Add don't auto-closing `View -> View Flags` menu to improve debug testing workflow in Editor viewport --- Source/Editor/GUI/ContextMenu/ContextMenuButton.cs | 14 ++++++++++---- Source/Editor/Viewport/EditorViewport.cs | 7 ++++++- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/Source/Editor/GUI/ContextMenu/ContextMenuButton.cs b/Source/Editor/GUI/ContextMenu/ContextMenuButton.cs index fee2332c4..680895d18 100644 --- a/Source/Editor/GUI/ContextMenu/ContextMenuButton.cs +++ b/Source/Editor/GUI/ContextMenu/ContextMenuButton.cs @@ -50,6 +50,11 @@ namespace FlaxEditor.GUI.ContextMenu /// public bool AutoCheck; + /// + /// Closes the context menu after clicking the button, otherwise menu will stay open. + /// + public bool CloseMenuOnClick = true; + /// /// Initializes a new instance of the class. /// @@ -90,14 +95,15 @@ namespace FlaxEditor.GUI.ContextMenu /// public void Click() { - // Close topmost context menu - ParentContextMenu?.TopmostCM.Hide(); + if (CloseMenuOnClick) + { + // Close topmost context menu + ParentContextMenu?.TopmostCM.Hide(); + } // Auto check logic if (AutoCheck) - { Checked = !Checked; - } // Fire event Clicked?.Invoke(); diff --git a/Source/Editor/Viewport/EditorViewport.cs b/Source/Editor/Viewport/EditorViewport.cs index 97a58e3de..108f7903f 100644 --- a/Source/Editor/Viewport/EditorViewport.cs +++ b/Source/Editor/Viewport/EditorViewport.cs @@ -491,12 +491,17 @@ namespace FlaxEditor.Viewport { var v = EditorViewportViewFlagsValues[i]; var button = viewFlags.AddButton(v.Name); + button.CloseMenuOnClick = false; button.Tag = v.Mode; } viewFlags.ButtonClicked += button => { if (button.Tag != null) - Task.ViewFlags ^= (ViewFlags)button.Tag; + { + var v = (ViewFlags)button.Tag; + Task.ViewFlags ^= v; + button.Icon = (Task.View.Flags & v) != 0 ? Style.Current.CheckBoxTick : SpriteHandle.Invalid; + } }; viewFlags.VisibleChanged += WidgetViewFlagsShowHide; }