From 8a769464fb3fd7ca97c9acabfa7c49e4650e34ab Mon Sep 17 00:00:00 2001 From: Aussiemon <1407091-Aussiemon@users.noreply.gitlab.com> Date: Sun, 25 Jan 2026 13:35:15 -0700 Subject: [PATCH] Lock replace button when no search results --- apps/opencs/view/tools/searchsubview.cpp | 10 ++++++---- apps/opencs/view/tools/searchsubview.hpp | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/apps/opencs/view/tools/searchsubview.cpp b/apps/opencs/view/tools/searchsubview.cpp index 573545016a..15d2e34083 100644 --- a/apps/opencs/view/tools/searchsubview.cpp +++ b/apps/opencs/view/tools/searchsubview.cpp @@ -22,10 +22,12 @@ void CSVTools::SearchSubView::replace(bool selection) { - if (mLocked) + if (!mAllowReplace) return; std::vector indices = mTable->getReplaceIndices(selection); + if (indices.empty()) + return; std::string replace = mSearchBox.getReplaceText(); @@ -74,7 +76,6 @@ void CSVTools::SearchSubView::showEvent(QShowEvent* event) CSVTools::SearchSubView::SearchSubView(const CSMWorld::UniversalId& id, CSMDoc::Document& document) : CSVDoc::SubView(id) , mDocument(document) - , mLocked(false) { QVBoxLayout* layout = new QVBoxLayout; @@ -112,8 +113,9 @@ CSVTools::SearchSubView::SearchSubView(const CSMWorld::UniversalId& id, CSMDoc:: void CSVTools::SearchSubView::setEditLock(bool locked) { - mLocked = locked; - mSearchBox.setEditLock(locked); + int reportSize = mDocument.getReport(getUniversalId())->rowCount(); + mAllowReplace = !(locked || reportSize == 0); + mSearchBox.setEditLock(locked || reportSize == 0); } void CSVTools::SearchSubView::setStatusBar(bool show) diff --git a/apps/opencs/view/tools/searchsubview.hpp b/apps/opencs/view/tools/searchsubview.hpp index 270706d7aa..86017ba3c1 100644 --- a/apps/opencs/view/tools/searchsubview.hpp +++ b/apps/opencs/view/tools/searchsubview.hpp @@ -31,7 +31,7 @@ namespace CSVTools SearchBox mSearchBox; CSMDoc::Document& mDocument; CSMTools::Search mSearch; - bool mLocked; + bool mAllowReplace{ false }; CSVWorld::TableBottomBox* mBottom; private: