diff --git a/src/core/OSTreeTUI.cpp b/src/core/OSTreeTUI.cpp index 1b5c5ea..6f2e7aa 100644 --- a/src/core/OSTreeTUI.cpp +++ b/src/core/OSTreeTUI.cpp @@ -94,15 +94,9 @@ OSTreeTUI::OSTreeTUI(const std::string& repo, const std::vector sta // filter filterManager = - std::unique_ptr(new BranchBoxManager(ostreeRepo, visibleBranches)); + std::unique_ptr(new BranchBoxManager(*this, ostreeRepo, visibleBranches)); filterView = Renderer(filterManager->branchBoxes, [&] { return filterManager->branchBoxRender(); }); - filterView = CatchEvent(filterView, [&](Event event) { - if (event.is_mouse() && event.mouse().button == Mouse::Button::Left) { - refresh_commitListComoponent(); - } - return false; - }); // interchangeable view (composed) manager = std::unique_ptr(new Manager(*this, infoView, filterView)); @@ -201,6 +195,8 @@ void OSTreeTUI::refresh_commitComponents() { void OSTreeTUI::refresh_commitListComoponent() { using namespace ftxui; + visibleCommitViewMap = parseVisibleCommitMap(ostreeRepo, visibleBranches); + commitListComponent->DetachAllChildren(); refresh_commitComponents(); Component tmp = Container::Horizontal({tree, commitList}); diff --git a/src/core/manager.cpp b/src/core/manager.cpp index 876ed40..81d8387 100644 --- a/src/core/manager.cpp +++ b/src/core/manager.cpp @@ -48,13 +48,19 @@ const int& Manager::getTabIndex() const { // BranchBoxManager -BranchBoxManager::BranchBoxManager(cpplibostree::OSTreeRepo& repo, +BranchBoxManager::BranchBoxManager(OSTreeTUI& ostreetui, cpplibostree::OSTreeRepo& repo, std::unordered_map& visibleBranches) { using namespace ftxui; + CheckboxOption cboption = { + .on_change = [&] { + ostreetui.refresh_commitListComoponent(); + } + }; + // branch visibility for (const auto& branch : repo.getBranches()) { - branchBoxes->Add(Checkbox(branch, &(visibleBranches.at(branch)))); + branchBoxes->Add(Checkbox(branch, &(visibleBranches.at(branch)), cboption)); } } diff --git a/src/core/manager.hpp b/src/core/manager.hpp index 8719e8c..e8ef31d 100644 --- a/src/core/manager.hpp +++ b/src/core/manager.hpp @@ -56,7 +56,7 @@ class BranchBoxManager { ftxui::Component branchBoxes = ftxui::Container::Vertical({}); public: - BranchBoxManager(cpplibostree::OSTreeRepo& repo, + BranchBoxManager(OSTreeTUI& ostreetui, cpplibostree::OSTreeRepo& repo, std::unordered_map& visibleBranches); /**