From c66ae7521e1381c30ddd2f2a98ab5049e79ff241 Mon Sep 17 00:00:00 2001 From: Vadim Lopatin Date: Fri, 8 Sep 2017 15:22:07 +0300 Subject: [PATCH] fix #257 - new file from menu --- src/dlangide/ui/frame.d | 7 +++++-- src/dlangide/ui/wspanel.d | 11 +++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/dlangide/ui/frame.d b/src/dlangide/ui/frame.d index 66efa96..6ae9f7c 100644 --- a/src/dlangide/ui/frame.d +++ b/src/dlangide/ui/frame.d @@ -1119,7 +1119,7 @@ class IDEFrame : AppFrame, ProgramExecutionStatusListener, BreakpointListChangeL createNewProject(false); return true; case IDEActions.FileNew: - addProjectItem(a.objectParam); + addProjectItem(cast(Object)a.objectParam); return true; case IDEActions.ProjectFolderRemoveItem: removeProjectItem(a.objectParam); @@ -1233,9 +1233,12 @@ class IDEFrame : AppFrame, ProgramExecutionStatusListener, BreakpointListChangeL } - void addProjectItem(const Object obj) { + void addProjectItem(Object obj) { if (currentWorkspace is null) return; + if (obj is null && _wsPanel !is null) { + obj = _wsPanel.selectedProjectItem; + } Project project; ProjectFolder folder; if (cast(Project)obj) { diff --git a/src/dlangide/ui/wspanel.d b/src/dlangide/ui/wspanel.d index 958daea..5c5e59e 100644 --- a/src/dlangide/ui/wspanel.d +++ b/src/dlangide/ui/wspanel.d @@ -149,6 +149,17 @@ class WorkspacePanel : DockWindow { return _workspace; } + /// returns currently selected project item + @property ProjectItem selectedProjectItem() { + TreeItem ti = _tree.items.selectedItem; + if (!ti) + return null; + Object obj = ti.objectParam; + if (!obj) + return null; + return cast(ProjectItem)obj; + } + ProjectSourceFile findSourceFileItem(string filename, bool fullFileName=true) { if (_workspace) return _workspace.findSourceFileItem(filename, fullFileName);