From 1edacbf50818aef9aa3570bde23eae3cb05418ae Mon Sep 17 00:00:00 2001 From: Pieter Hijma Date: Fri, 12 Sep 2025 10:29:07 +0200 Subject: [PATCH] Gui: Small refactor of Tree.cpp selecting docs Based on review comment, a small refactoring of code that was duplicated when adding functionality to select documents. The duplication has been removed in this commit. --- src/Gui/Tree.cpp | 44 ++++++++++++++++++++++++-------------------- src/Gui/Tree.h | 1 + 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/src/Gui/Tree.cpp b/src/Gui/Tree.cpp index 93321f06b6..c218cc9435 100644 --- a/src/Gui/Tree.cpp +++ b/src/Gui/Tree.cpp @@ -1512,8 +1512,8 @@ void TreeWidget::setupResizableColumn(TreeWidget *tree) { } } -std::vector TreeWidget::getSelectedDocuments() { - std::vector ret; +TreeWidget* TreeWidget::getTreeForSelection() +{ TreeWidget* tree = instance(); if (!tree || !tree->isSelectionAttached()) { for (auto pTree : Instances) @@ -1522,13 +1522,28 @@ std::vector TreeWidget::getSelectedDocuments() { break; } } - if (!tree) - return ret; + if (!tree) { + return nullptr; + } - if (tree->selectTimer->isActive()) + if (tree->selectTimer->isActive()) { tree->onSelectTimer(); - else + } + else { tree->_updateStatus(false); + } + + return tree; +} + +std::vector TreeWidget::getSelectedDocuments() +{ + std::vector ret; + TreeWidget* tree = getTreeForSelection(); + + if (!tree) { + return ret; + } const auto items = tree->selectedItems(); for (auto ti : items) { @@ -1548,22 +1563,11 @@ std::vector TreeWidget::getSelectedDocuments() { std::vector TreeWidget::getSelection(App::Document* doc) { std::vector ret; + TreeWidget* tree = getTreeForSelection(); - TreeWidget* tree = instance(); - if (!tree || !tree->isSelectionAttached()) { - for (auto pTree : Instances) - if (pTree->isSelectionAttached()) { - tree = pTree; - break; - } - } - if (!tree) + if (!tree) { return ret; - - if (tree->selectTimer->isActive()) - tree->onSelectTimer(); - else - tree->_updateStatus(false); + } const auto items = tree->selectedItems(); for (auto ti : items) { diff --git a/src/Gui/Tree.h b/src/Gui/Tree.h index 9555d1254f..dbcf0da88e 100644 --- a/src/Gui/Tree.h +++ b/src/Gui/Tree.h @@ -228,6 +228,7 @@ private: bool CheckForDependents(); void addDependentToSelection(App::Document* doc, App::DocumentObject* docObject); + static TreeWidget* getTreeForSelection(); private: QAction* createGroupAction;