From d01627bb01907011df4da6c9849b9f29e141ddc1 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Thu, 21 Jan 2016 12:24:52 +0200 Subject: [PATCH] TextEditor: Disable Search & Replace buttons when folder doesn't exist In case of searching in scope: "Files on File System" when specified directory does not exist, "Search" and "Search & Replace" buttons should be disabled. Task-number: QTCREATORBUG-5959 Change-Id: I1905cbea08aa07d72b96e9ad893ef3928d633c4f Reviewed-by: Robert Loehning --- src/plugins/coreplugin/find/findtoolwindow.cpp | 5 +++-- src/plugins/coreplugin/find/ifindfilter.h | 1 + src/plugins/texteditor/findinfiles.cpp | 5 +++++ src/plugins/texteditor/findinfiles.h | 1 + 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/plugins/coreplugin/find/findtoolwindow.cpp b/src/plugins/coreplugin/find/findtoolwindow.cpp index 5cd840476ec..649eaf522e3 100644 --- a/src/plugins/coreplugin/find/findtoolwindow.cpp +++ b/src/plugins/coreplugin/find/findtoolwindow.cpp @@ -92,7 +92,8 @@ bool FindToolWindow::event(QEvent *event) if ((ke->key() == Qt::Key_Return || ke->key() == Qt::Key_Enter) && (ke->modifiers() == Qt::NoModifier || ke->modifiers() == Qt::KeypadModifier)) { ke->accept(); - search(); + if (m_ui.searchButton->isEnabled()) + search(); return true; } } @@ -115,7 +116,7 @@ bool FindToolWindow::eventFilter(QObject *obj, QEvent *event) void FindToolWindow::updateButtonStates() { bool filterEnabled = m_currentFilter && m_currentFilter->isEnabled(); - bool enabled = !m_ui.searchTerm->text().isEmpty() && filterEnabled; + bool enabled = !m_ui.searchTerm->text().isEmpty() && filterEnabled && m_currentFilter->isValid(); m_ui.searchButton->setEnabled(enabled); m_ui.replaceButton->setEnabled(m_currentFilter && m_currentFilter->isReplaceSupported() && enabled); diff --git a/src/plugins/coreplugin/find/ifindfilter.h b/src/plugins/coreplugin/find/ifindfilter.h index ae86b3024ee..bf1cd751be2 100644 --- a/src/plugins/coreplugin/find/ifindfilter.h +++ b/src/plugins/coreplugin/find/ifindfilter.h @@ -48,6 +48,7 @@ public: virtual QString displayName() const = 0; /// virtual bool isEnabled() const = 0; + virtual bool isValid() const { return true; } virtual QKeySequence defaultShortcut() const; virtual bool isReplaceSupported() const { return false; } virtual FindFlags supportedFindFlags() const; diff --git a/src/plugins/texteditor/findinfiles.cpp b/src/plugins/texteditor/findinfiles.cpp index b1770b5b5ac..34510fb44d2 100644 --- a/src/plugins/texteditor/findinfiles.cpp +++ b/src/plugins/texteditor/findinfiles.cpp @@ -62,6 +62,11 @@ FindInFiles::~FindInFiles() { } +bool FindInFiles::isValid() const +{ + return m_directory->isValid(); +} + QString FindInFiles::id() const { return QLatin1String("Files on Disk"); diff --git a/src/plugins/texteditor/findinfiles.h b/src/plugins/texteditor/findinfiles.h index 24e0890fc2f..e0bd247ac1f 100644 --- a/src/plugins/texteditor/findinfiles.h +++ b/src/plugins/texteditor/findinfiles.h @@ -52,6 +52,7 @@ public: QWidget *createConfigWidget(); void writeSettings(QSettings *settings); void readSettings(QSettings *settings); + bool isValid() const; void setDirectory(const Utils::FileName &directory); static void findOnFileSystem(const QString &path);