diff --git a/app/panel/project/project.cpp b/app/panel/project/project.cpp index 07c0ba40e..4d42cc6ec 100644 --- a/app/panel/project/project.cpp +++ b/app/panel/project/project.cpp @@ -103,9 +103,9 @@ void ProjectPanel::set_project(Project* p) } } -QModelIndex ProjectPanel::get_root_index() const +Folder *ProjectPanel::get_root() const { - return explorer_->get_root_index(); + return explorer_->get_root(); } void ProjectPanel::set_root(Folder *item) @@ -170,7 +170,7 @@ void ProjectPanel::Edit(Node* item) void ProjectPanel::Retranslate() { - if (explorer_->get_root_index().isValid()) { + if (project() && explorer_->get_root() != project()->root()) { SetTitle(tr("Folder")); } else { SetTitle(tr("Project")); @@ -207,10 +207,10 @@ void ProjectPanel::UpdateSubtitle() if (project()) { QString project_title = QStringLiteral("[*]%1").arg(project()->name()); - if (explorer_->get_root_index().isValid()) { + if (explorer_->get_root() != project()->root()) { QString folder_path; - Folder* item = static_cast(explorer_->get_root_index().internalPointer()); + Folder* item = explorer_->get_root(); do { folder_path.prepend(QStringLiteral("/%1").arg(item->GetLabel())); diff --git a/app/panel/project/project.h b/app/panel/project/project.h index ce527fef1..69ae6daf4 100644 --- a/app/panel/project/project.h +++ b/app/panel/project/project.h @@ -40,7 +40,7 @@ public: Project* project() const; void set_project(Project* p); - QModelIndex get_root_index() const; + Folder *get_root() const; void set_root(Folder* item); diff --git a/app/widget/projectexplorer/projectexplorer.cpp b/app/widget/projectexplorer/projectexplorer.cpp index ce09ca4db..51dc0e11f 100644 --- a/app/widget/projectexplorer/projectexplorer.cpp +++ b/app/widget/projectexplorer/projectexplorer.cpp @@ -511,9 +511,15 @@ void ProjectExplorer::set_project(Project *p) model_.set_project(p); } -QModelIndex ProjectExplorer::get_root_index() const +Folder *ProjectExplorer::get_root() const { - return tree_view_->rootIndex(); + QModelIndex root_index = sort_model_.mapToSource(tree_view_->rootIndex()); + + if (!root_index.isValid()) { + return project()->root(); + } + + return static_cast(root_index.internalPointer()); } void ProjectExplorer::set_root(Folder *item) diff --git a/app/widget/projectexplorer/projectexplorer.h b/app/widget/projectexplorer/projectexplorer.h index 274afd887..9c70ac07b 100644 --- a/app/widget/projectexplorer/projectexplorer.h +++ b/app/widget/projectexplorer/projectexplorer.h @@ -55,8 +55,7 @@ public: Project* project() const; void set_project(Project* p); - QModelIndex get_root_index() const; - + Folder *get_root() const; void set_root(Folder *item); QVector SelectedItems() const; diff --git a/app/window/mainwindow/mainwindow.cpp b/app/window/mainwindow/mainwindow.cpp index 53c1c5ece..54bd69b4a 100644 --- a/app/window/mainwindow/mainwindow.cpp +++ b/app/window/mainwindow/mainwindow.cpp @@ -154,7 +154,7 @@ MainWindowLayoutInfo MainWindow::SaveLayout() const foreach (ProjectPanel* panel, folder_panels_) { if (panel->project()) { - info.add_folder(static_cast(panel->get_root_index().internalPointer())); + info.add_folder(panel->get_root()); } }