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);