diff --git a/apps/opencs/view/tools/searchbox.cpp b/apps/opencs/view/tools/searchbox.cpp index e670b6f893..f2207f00d1 100644 --- a/apps/opencs/view/tools/searchbox.cpp +++ b/apps/opencs/view/tools/searchbox.cpp @@ -39,7 +39,7 @@ void CSVTools::SearchBox::updateSearchButtons() mText.setStyleSheet(style); mSearch.setEnabled(canSearch); - mReplace.setEnabled(mAllowReplace); + mReplace.setEnabled(mAllowReplace && mSearchResultCount > 0); } CSVTools::SearchBox::SearchBox(QWidget* parent) @@ -114,6 +114,12 @@ void CSVTools::SearchBox::setSearchMode(bool enabled) updateSearchButtons(); } +void CSVTools::SearchBox::setSearchResultCount(int resultCount) +{ + mSearchResultCount = resultCount; + updateSearchButtons(); +} + CSMTools::Search CSVTools::SearchBox::getSearch() const { CSMTools::Search::Type type = static_cast(mMode.currentIndex()); diff --git a/apps/opencs/view/tools/searchbox.hpp b/apps/opencs/view/tools/searchbox.hpp index d4f518122e..69490f34bd 100644 --- a/apps/opencs/view/tools/searchbox.hpp +++ b/apps/opencs/view/tools/searchbox.hpp @@ -37,6 +37,8 @@ namespace CSVTools QPushButton mReplace; private: + int mSearchResultCount = 0; + void updateSearchButtons(); public: @@ -46,6 +48,8 @@ namespace CSVTools void setSearchMode(bool enabled); + void setSearchResultCount(int resultCount); + CSMTools::Search getSearch() const; std::string getReplaceText() const; diff --git a/apps/opencs/view/tools/searchsubview.cpp b/apps/opencs/view/tools/searchsubview.cpp index 15d2e34083..d76165e1b8 100644 --- a/apps/opencs/view/tools/searchsubview.cpp +++ b/apps/opencs/view/tools/searchsubview.cpp @@ -113,9 +113,8 @@ CSVTools::SearchSubView::SearchSubView(const CSMWorld::UniversalId& id, CSMDoc:: void CSVTools::SearchSubView::setEditLock(bool locked) { - int reportSize = mDocument.getReport(getUniversalId())->rowCount(); - mAllowReplace = !(locked || reportSize == 0); - mSearchBox.setEditLock(locked || reportSize == 0); + mAllowReplace = !locked; + mSearchBox.setEditLock(locked); } void CSVTools::SearchSubView::setStatusBar(bool show) @@ -156,8 +155,11 @@ void CSVTools::SearchSubView::tableSizeUpdate() void CSVTools::SearchSubView::operationDone(int type, bool failed) { - if (type == CSMDoc::State_Searching && !failed && !mDocument.getReport(getUniversalId())->rowCount()) + if (type == CSMDoc::State_Searching) { - mBottom->setStatusMessage("No Results"); + int resultCount = mDocument.getReport(getUniversalId())->rowCount(); + if (!failed && !resultCount) + mBottom->setStatusMessage("No Results"); + mSearchBox.setSearchResultCount(resultCount); } }