diff --git a/src/plugins/texteditor/findincurrentfile.cpp b/src/plugins/texteditor/findincurrentfile.cpp index 3a397094c1dcb1716d626c8f6d5cb0d13f533dd6..1cdf9fce174a3685553886c8203dba9d2c64610e 100644 --- a/src/plugins/texteditor/findincurrentfile.cpp +++ b/src/plugins/texteditor/findincurrentfile.cpp @@ -43,8 +43,12 @@ using namespace TextEditor::Internal; FindInCurrentFile::FindInCurrentFile(SearchResultWindow *resultWindow) : BaseFileFind(resultWindow), - m_configWidget(0) + m_configWidget(0), + m_currentFile(0) { + connect(Core::ICore::instance()->editorManager(), SIGNAL(currentEditorChanged(Core::IEditor*)), + this, SLOT(handleFileChange(Core::IEditor*))); + handleFileChange(Core::ICore::instance()->editorManager()->currentEditor()); } QString FindInCurrentFile::id() const @@ -65,19 +69,33 @@ QKeySequence FindInCurrentFile::defaultShortcut() const QStringList FindInCurrentFile::files() { QStringList fileList; - if (Core::IEditor *editor = Core::ICore::instance()->editorManager()->currentEditor()) { - if (editor->file() && !editor->file()->fileName().isEmpty()) - fileList << editor->file()->fileName(); - } + if (isEnabled()) + fileList << m_currentFile->fileName(); return fileList; } bool FindInCurrentFile::isEnabled() const { - Core::IEditor *editor = Core::ICore::instance()->editorManager()->currentEditor(); - return editor && editor->file() && !editor->file()->fileName().isEmpty(); + return m_currentFile && !m_currentFile->fileName().isEmpty(); +} + +void FindInCurrentFile::handleFileChange(Core::IEditor *editor) +{ + if (!editor) { + if (m_currentFile) { + m_currentFile = 0; + emit changed(); + } + } else { + Core::IFile *file = editor->file(); + if (file != m_currentFile) { + m_currentFile = file; + emit changed(); + } + } } + QWidget *FindInCurrentFile::createConfigWidget() { if (!m_configWidget) { diff --git a/src/plugins/texteditor/findincurrentfile.h b/src/plugins/texteditor/findincurrentfile.h index cb3eecb428a80ce9d7518b77b61ae34561de81c9..0785f54cc75ad5961649c61c8938f0691c209778 100644 --- a/src/plugins/texteditor/findincurrentfile.h +++ b/src/plugins/texteditor/findincurrentfile.h @@ -32,6 +32,8 @@ #include "basefilefind.h" +#include <coreplugin/ifile.h> +#include <coreplugin/editormanager/ieditor.h> #include <find/ifindfilter.h> #include <find/searchresultwindow.h> @@ -62,8 +64,12 @@ public: protected: QStringList files(); +private slots: + void handleFileChange(Core::IEditor *editor); + private: QPointer<QWidget> m_configWidget; + Core::IFile *m_currentFile; }; } // namespace Internal