From 29fbfb5a072545d38a4d9b014f2dea4c4553d774 Mon Sep 17 00:00:00 2001 From: Vadim Lopatin Date: Mon, 18 Jan 2016 13:13:51 +0300 Subject: [PATCH] Highlight startup project in project tree - close #81 --- dub.json | 2 +- src/dlangide/ui/frame.d | 2 ++ src/dlangide/ui/wspanel.d | 17 +++++++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/dub.json b/dub.json index 8cb8337..2f0d005 100644 --- a/dub.json +++ b/dub.json @@ -12,7 +12,7 @@ "stringImportPaths": ["views", "views/res", "views/res/i18n", "views/res/mdpi", "views/res/hdpi"], "dependencies": { - "dlangui": "~>0.7.40", + "dlangui": "~>0.7.41", "dcd": "~>0.7.5" }, diff --git a/src/dlangide/ui/frame.d b/src/dlangide/ui/frame.d index 22d412b..16def5d 100644 --- a/src/dlangide/ui/frame.d +++ b/src/dlangide/ui/frame.d @@ -1107,6 +1107,8 @@ class IDEFrame : AppFrame, ProgramExecutionStatusListener, BreakpointListChangeL if (!project) return; currentWorkspace.startupProject = project; + if (_wsPanel) + _wsPanel.updateDefault(); } void showProjectSettings(Project project) { diff --git a/src/dlangide/ui/wspanel.d b/src/dlangide/ui/wspanel.d index 7fb9685..df18880 100644 --- a/src/dlangide/ui/wspanel.d +++ b/src/dlangide/ui/wspanel.d @@ -170,17 +170,33 @@ class WorkspacePanel : DockWindow { } } + void updateDefault() { + TreeItem defaultItem = null; + if (_workspace && _tree.items.childCount && _workspace.startupProject) { + for (int i = 0; i < _tree.items.child(0).childCount; i++) { + TreeItem p = _tree.items.child(0).child(i); + if (p.objectParam is _workspace.startupProject) + defaultItem = p; + } + } + _tree.items.setDefaultItem(defaultItem); + } + void reloadItems() { _tree.clearAllItems(); if (_workspace) { + TreeItem defaultItem = null; TreeItem root = _tree.items.newChild(_workspace.filename, _workspace.name, "project-development"); root.intParam = ProjectItemType.Workspace; foreach(project; _workspace.projects) { TreeItem p = root.newChild(project.filename, project.name, project.isDependency ? "project-d-dependency" : "project-d"); p.intParam = ProjectItemType.Project; p.objectParam = project; + if (project && _workspace.startupProject is project) + defaultItem = p; addProjectItems(p, project.items); } + _tree.items.setDefaultItem(defaultItem); } else { _tree.items.newChild("none", "No workspace"d, "project-development"); } @@ -197,6 +213,7 @@ class WorkspacePanel : DockWindow { } } } + updateDefault(); } @property void workspace(Workspace w) {