diff --git a/Source/Editor/Content/Tree/ContentTreeNode.cs b/Source/Editor/Content/Tree/ContentTreeNode.cs
index 0c0fc6a51..e2cd1e771 100644
--- a/Source/Editor/Content/Tree/ContentTreeNode.cs
+++ b/Source/Editor/Content/Tree/ContentTreeNode.cs
@@ -24,6 +24,16 @@ namespace FlaxEditor.Content
///
protected ContentFolder _folder;
+ ///
+ /// Whether this node can be deleted.
+ ///
+ public virtual bool CanDelete => true;
+
+ ///
+ /// Whether this node can be duplicated.
+ ///
+ public virtual bool CanDuplicate => true;
+
///
/// Gets the content folder item.
///
@@ -301,7 +311,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;
}
@@ -310,7 +320,7 @@ namespace FlaxEditor.Content
switch (key)
{
case KeyboardKeys.D:
- if (Folder.Exists)
+ if (Folder.Exists && CanDuplicate)
Editor.Instance.Windows.ContentWin.Duplicate(Folder);
return true;
}
diff --git a/Source/Editor/Content/Tree/MainContentTreeNode.cs b/Source/Editor/Content/Tree/MainContentTreeNode.cs
index def873622..a4f24f4ab 100644
--- a/Source/Editor/Content/Tree/MainContentTreeNode.cs
+++ b/Source/Editor/Content/Tree/MainContentTreeNode.cs
@@ -12,6 +12,12 @@ namespace FlaxEditor.Content
{
private FileSystemWatcher _watcher;
+ ///
+ public override bool CanDelete => false;
+
+ ///
+ public override bool CanDuplicate => 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..dda812f84 100644
--- a/Source/Editor/Windows/ContentWindow.ContextMenu.cs
+++ b/Source/Editor/Windows/ContentWindow.ContextMenu.cs
@@ -114,18 +114,32 @@ namespace FlaxEditor.Windows
}
}
- cm.AddButton("Delete", () => Delete(item));
+ if (isFolder && folder.Node is MainContentTreeNode)
+ {
+ cm.AddSeparator();
+ }
+ else
+ {
+ 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);
+ }
b = cm.AddButton("Paste", _view.Paste);
b.Enabled = _view.CanPaste();
- cm.AddButton("Rename", () => Rename(item));
+ if (isFolder && folder.Node is MainContentTreeNode)
+ {
+ // Do nothing
+ }
+ else
+ {
+ cm.AddButton("Rename", () => Rename(item));
+ }
// Custom options
ContextMenuShow?.Invoke(cm, item);