diff --git a/Source/Editor/Surface/ContextMenu/VisjectCM.cs b/Source/Editor/Surface/ContextMenu/VisjectCM.cs
index 0d4a35e51..67148a5a4 100644
--- a/Source/Editor/Surface/ContextMenu/VisjectCM.cs
+++ b/Source/Editor/Surface/ContextMenu/VisjectCM.cs
@@ -161,6 +161,7 @@ namespace FlaxEditor.Surface.ContextMenu
X = Width * 0.5f,
Parent = headerPanel,
Text = "Context Sensitive",
+ TooltipText = "Should the nodes be filtered to only show those that can be connected in the current context?",
HorizontalAlignment = TextAlignment.Far,
Font = titleFontReference,
};
@@ -276,11 +277,6 @@ namespace FlaxEditor.Surface.ContextMenu
}
}
- private void OnContextSensitiveToggleStateChanged(CheckBox checkBox)
- {
- _contextSensitiveSearchEnabled = checkBox.Checked;
- }
-
///
/// Adds the group archetype to add to the menu.
///
@@ -318,7 +314,7 @@ namespace FlaxEditor.Surface.ContextMenu
OnSearchFilterChanged();
}
}
- else
+ else if(_contextSensitiveSearchEnabled)
{
group.EvaluateVisibilityWithBox(_selectedBox);
}
@@ -355,7 +351,8 @@ namespace FlaxEditor.Surface.ContextMenu
Parent = group
};
}
- group.EvaluateVisibilityWithBox(_selectedBox);
+ if(_contextSensitiveSearchEnabled)
+ group.EvaluateVisibilityWithBox(_selectedBox);
group.SortChildren();
group.Parent = _groupsPanel;
_groups.Add(group);
@@ -465,7 +462,7 @@ namespace FlaxEditor.Surface.ContextMenu
LockChildrenRecursive();
for (int i = 0; i < _groups.Count; i++)
{
- _groups[i].UpdateFilter(_searchBox.Text, _selectedBox);
+ _groups[i].UpdateFilter(_searchBox.Text, _contextSensitiveSearchEnabled ? _selectedBox : null);
_groups[i].UpdateItemSort(_selectedBox);
}
SortGroups();
@@ -484,6 +481,30 @@ namespace FlaxEditor.Surface.ContextMenu
Profiler.EndEvent();
}
+ private void OnContextSensitiveToggleStateChanged(CheckBox checkBox)
+ {
+ Profiler.BeginEvent("VisjectCM.OnContextSensitiveToggleStateChanged");
+ _contextSensitiveSearchEnabled = checkBox.Checked;
+
+ LockChildrenRecursive();
+ for (int i = 0; i < _groups.Count; i++)
+ {
+ _groups[i].UpdateFilter(_searchBox.Text, _contextSensitiveSearchEnabled ? _selectedBox : null);
+ }
+ SortGroups();
+ UnlockChildrenRecursive();
+
+ Profiler.BeginEvent("VisjectCM.Layout");
+ if (SelectedItem == null || !SelectedItem.VisibleInHierarchy)
+ SelectedItem = _groups.Find(g => g.Visible)?.Children.Find(c => c.Visible && c is VisjectCMItem) as VisjectCMItem;
+ PerformLayout();
+ if (SelectedItem != null)
+ _panel1.ScrollViewTo(SelectedItem);
+ Profiler.EndEvent();
+
+ Profiler.EndEvent();
+ }
+
///
/// Sort the groups and keeps in sync
///
@@ -540,7 +561,8 @@ namespace FlaxEditor.Surface.ContextMenu
for (int i = 0; i < _groups.Count; i++)
{
_groups[i].ResetView();
- _groups[i].EvaluateVisibilityWithBox(_selectedBox);
+ if(_contextSensitiveSearchEnabled)
+ _groups[i].EvaluateVisibilityWithBox(_selectedBox);
}
UnlockChildrenRecursive();
diff --git a/Source/Editor/Surface/ContextMenu/VisjectCMGroup.cs b/Source/Editor/Surface/ContextMenu/VisjectCMGroup.cs
index 9560aecbb..d11d51223 100644
--- a/Source/Editor/Surface/ContextMenu/VisjectCMGroup.cs
+++ b/Source/Editor/Surface/ContextMenu/VisjectCMGroup.cs
@@ -132,6 +132,13 @@ namespace FlaxEditor.Surface.ContextMenu
{
if (selectedBox == null)
{
+ for (int i = 0; i < _children.Count; i++)
+ {
+ if (_children[i] is VisjectCMItem item)
+ {
+ item.CanConnectTo(null);
+ }
+ }
Visible = true;
return;
}
diff --git a/Source/Editor/Surface/ContextMenu/VisjectCMItem.cs b/Source/Editor/Surface/ContextMenu/VisjectCMItem.cs
index be69d675c..4aa5c6ce8 100644
--- a/Source/Editor/Surface/ContextMenu/VisjectCMItem.cs
+++ b/Source/Editor/Surface/ContextMenu/VisjectCMItem.cs
@@ -309,11 +309,14 @@ namespace FlaxEditor.Surface.ContextMenu
if (selectedBox != null)
{
if (!CanConnectTo(selectedBox))
+ {
+ _highlights?.Clear();
return;
+ }
}
_isStartsWithMatch = _isFullMatch = false;
- if (filterText == null)
+ if (string.IsNullOrEmpty(filterText))
{
// Clear filter
_highlights?.Clear();