diff --git a/Source/Editor/Content/Tree/ContentTreeNode.cs b/Source/Editor/Content/Tree/ContentTreeNode.cs
index 0c0fc6a51..f13aec2d4 100644
--- a/Source/Editor/Content/Tree/ContentTreeNode.cs
+++ b/Source/Editor/Content/Tree/ContentTreeNode.cs
@@ -24,6 +24,11 @@ namespace FlaxEditor.Content
///
protected ContentFolder _folder;
+ ///
+ /// Whether this node can be deleted.
+ ///
+ protected virtual bool _canDelete => true;
+
///
/// Gets the content folder item.
///
@@ -301,7 +306,7 @@ namespace FlaxEditor.Content
StartRenaming();
return true;
case KeyboardKeys.Delete:
- if (Folder.Exists)
+ if (Folder.Exists && _canDelete)
Editor.Instance.Windows.ContentWin.Delete(Folder);
return true;
}
diff --git a/Source/Editor/Content/Tree/MainContentTreeNode.cs b/Source/Editor/Content/Tree/MainContentTreeNode.cs
index def873622..23895a669 100644
--- a/Source/Editor/Content/Tree/MainContentTreeNode.cs
+++ b/Source/Editor/Content/Tree/MainContentTreeNode.cs
@@ -12,6 +12,9 @@ namespace FlaxEditor.Content
{
private FileSystemWatcher _watcher;
+ ///
+ protected override bool _canDelete => false;
+
///
/// Initializes a new instance of the class.
///
diff --git a/Source/Editor/Windows/ContentWindow.ContextMenu.cs b/Source/Editor/Windows/ContentWindow.ContextMenu.cs
index 168067977..a36c862bd 100644
--- a/Source/Editor/Windows/ContentWindow.ContextMenu.cs
+++ b/Source/Editor/Windows/ContentWindow.ContextMenu.cs
@@ -114,18 +114,28 @@ namespace FlaxEditor.Windows
}
}
- cm.AddButton("Delete", () => Delete(item));
+ if (isFolder && folder.Node is not MainContentTreeNode)
+ {
+ cm.AddButton("Delete", () => Delete(item));
- cm.AddSeparator();
+ cm.AddSeparator();
- cm.AddButton("Duplicate", _view.Duplicate);
+ cm.AddButton("Duplicate", _view.Duplicate);
- cm.AddButton("Copy", _view.Copy);
+ cm.AddButton("Copy", _view.Copy);
+ }
+ else
+ {
+ cm.AddSeparator();
+ }
b = cm.AddButton("Paste", _view.Paste);
b.Enabled = _view.CanPaste();
- cm.AddButton("Rename", () => Rename(item));
+ if (isFolder && folder.Node is not MainContentTreeNode)
+ {
+ cm.AddButton("Rename", () => Rename(item));
+ }
// Custom options
ContextMenuShow?.Invoke(cm, item);