diff --git a/src/plugins/widget/EditorWidget/src/editorwidget.cpp b/src/plugins/widget/EditorWidget/src/editorwidget.cpp index 46e2356a2d..2e9fd9b3d8 100644 --- a/src/plugins/widget/EditorWidget/src/editorwidget.cpp +++ b/src/plugins/widget/EditorWidget/src/editorwidget.cpp @@ -58,7 +58,7 @@ EditorWidget::EditorWidget(const QString &pContents, bool pReadOnly, mSeparator = Core::newLineWidget(this); mFindReplace = new EditorWidgetFindReplaceWidget(this); - mEditor = new EditorWidgetEditorWidget(pLexer, this, mFindReplace, this); + mEditor = new EditorWidgetEditorWidget(pLexer, mFindReplace, this); // Set our contents and our read-only state @@ -87,11 +87,6 @@ EditorWidget::EditorWidget(const QString &pContents, bool pReadOnly, connect(mEditor, SIGNAL(canSelectAll(bool)), this, SIGNAL(canSelectAll(bool))); - // Keep track of whenever a key is being pressed in our find/replace widget - - connect(mFindReplace, &EditorWidgetFindReplaceWidget::keyPressed, - this, &EditorWidget::findReplaceKeyPressed); - // Keep track of whenever the find text changes connect(mFindReplace, &EditorWidgetFindReplaceWidget::findTextChanged, @@ -607,42 +602,6 @@ bool EditorWidget::findPrevious() //============================================================================== -void EditorWidget::findReplaceKeyPressed(QKeyEvent *pEvent, bool &pHandled) -{ - // Some key combinations from our find/replace widget - - if ( !(pEvent->modifiers() & Qt::ShiftModifier) - && !(pEvent->modifiers() & Qt::ControlModifier) - && !(pEvent->modifiers() & Qt::AltModifier) - && !(pEvent->modifiers() & Qt::MetaModifier) - && (pEvent->key() == Qt::Key_Escape)) { - hideFindReplace(); - - pHandled = true; - } else if ( !(pEvent->modifiers() & Qt::ShiftModifier) - && !(pEvent->modifiers() & Qt::ControlModifier) - && !(pEvent->modifiers() & Qt::AltModifier) - && !(pEvent->modifiers() & Qt::MetaModifier) - && ( (pEvent->key() == Qt::Key_Return) - || (pEvent->key() == Qt::Key_Enter))) { - if (mFindReplace->findEditHasFocus()) { - mEditor->findNext(); - - pHandled = true; - } else if (mFindReplace->replaceEditHasFocus()) { - mEditor->replaceAndFind(); - - pHandled = true; - } else { - pHandled = false; - } - } else { - pHandled = false; - } -} - -//============================================================================== - void EditorWidget::hideFindReplace() { // Hide our find/replace widget diff --git a/src/plugins/widget/EditorWidget/src/editorwidget.h b/src/plugins/widget/EditorWidget/src/editorwidget.h index b2e876b0af..e041c0fb6f 100644 --- a/src/plugins/widget/EditorWidget/src/editorwidget.h +++ b/src/plugins/widget/EditorWidget/src/editorwidget.h @@ -148,9 +148,7 @@ class EDITORWIDGET_EXPORT EditorWidget : public Core::Widget void canSelectAll(bool pCanSelectAll); -private slots: - void findReplaceKeyPressed(QKeyEvent *pEvent, bool &pHandled); - +public slots: void hideFindReplace(); }; diff --git a/src/plugins/widget/EditorWidget/src/editorwidgeteditorwidget.cpp b/src/plugins/widget/EditorWidget/src/editorwidgeteditorwidget.cpp index ab0960c060..783807efd9 100644 --- a/src/plugins/widget/EditorWidget/src/editorwidgeteditorwidget.cpp +++ b/src/plugins/widget/EditorWidget/src/editorwidgeteditorwidget.cpp @@ -40,11 +40,10 @@ namespace EditorWidget { //============================================================================== EditorWidgetEditorWidget::EditorWidgetEditorWidget(QsciLexer *pLexer, - EditorWidget *pOwner, EditorWidgetFindReplaceWidget *pFindReplace, - QWidget *pParent) : + EditorWidget *pParent) : QScintillaSupport::QScintillaWidget(pLexer, pParent), - mOwner(pOwner), + mOwner(pParent), mFindReplace(pFindReplace), mReadOnlyStyles(QIntList()), mHighlightedLines(QIntList()) diff --git a/src/plugins/widget/EditorWidget/src/editorwidgeteditorwidget.h b/src/plugins/widget/EditorWidget/src/editorwidgeteditorwidget.h index c9e646e1b0..289a739f30 100644 --- a/src/plugins/widget/EditorWidget/src/editorwidgeteditorwidget.h +++ b/src/plugins/widget/EditorWidget/src/editorwidgeteditorwidget.h @@ -47,9 +47,9 @@ class EDITORWIDGET_EXPORT EditorWidgetEditorWidget : public QScintillaSupport::Q Q_OBJECT public: - explicit EditorWidgetEditorWidget(QsciLexer *pLexer, EditorWidget *pOwner, + explicit EditorWidgetEditorWidget(QsciLexer *pLexer, EditorWidgetFindReplaceWidget *pFindReplace, - QWidget *pParent); + EditorWidget *pParent); void setReadOnly(bool pReadOnly) override; diff --git a/src/plugins/widget/EditorWidget/src/editorwidgetfindreplacewidget.cpp b/src/plugins/widget/EditorWidget/src/editorwidgetfindreplacewidget.cpp index 8e14f76aee..6f2fe21f70 100644 --- a/src/plugins/widget/EditorWidget/src/editorwidgetfindreplacewidget.cpp +++ b/src/plugins/widget/EditorWidget/src/editorwidgetfindreplacewidget.cpp @@ -22,6 +22,8 @@ along with this program. If not, see . //============================================================================== #include "coreguiutils.h" +#include "editorwidget.h" +#include "editorwidgeteditorwidget.h" #include "editorwidgetfindreplacewidget.h" #include "i18ninterface.h" @@ -50,9 +52,10 @@ namespace EditorWidget { //============================================================================== -EditorWidgetFindReplaceWidget::EditorWidgetFindReplaceWidget(QWidget *pParent) : +EditorWidgetFindReplaceWidget::EditorWidgetFindReplaceWidget(EditorWidget *pParent) : Core::Widget(pParent), mGui(new Ui::EditorWidgetFindReplaceWidget), + mOwner(pParent), mActive(false) { // Set up the GUI @@ -297,24 +300,6 @@ QString EditorWidgetFindReplaceWidget::replaceText() const //============================================================================== -bool EditorWidgetFindReplaceWidget::findEditHasFocus() const -{ - // Return whether our find edit has the focus - - return mGui->findEdit->hasFocus(); -} - -//============================================================================== - -bool EditorWidgetFindReplaceWidget::replaceEditHasFocus() const -{ - // Return whether our replace edit has the focus - - return mGui->replaceEdit->hasFocus(); -} - -//============================================================================== - bool EditorWidgetFindReplaceWidget::isActive() const { // Return whether we are active @@ -415,18 +400,40 @@ void EditorWidgetFindReplaceWidget::changeEvent(QEvent *pEvent) void EditorWidgetFindReplaceWidget::keyPressEvent(QKeyEvent *pEvent) { - // Let people know that a key has been pressed - - bool handled = false; + // Some key combinations from our find/replace widget - emit keyPressed(pEvent, handled); + if ( !(pEvent->modifiers() & Qt::ShiftModifier) + && !(pEvent->modifiers() & Qt::ControlModifier) + && !(pEvent->modifiers() & Qt::AltModifier) + && !(pEvent->modifiers() & Qt::MetaModifier) + && (pEvent->key() == Qt::Key_Escape)) { + mOwner->hideFindReplace(); - // Accept the event or carry on as normal, if the event wasn't handled - - if (handled) pEvent->accept(); - else + } else if ( !(pEvent->modifiers() & Qt::ShiftModifier) + && !(pEvent->modifiers() & Qt::ControlModifier) + && !(pEvent->modifiers() & Qt::AltModifier) + && !(pEvent->modifiers() & Qt::MetaModifier) + && ( (pEvent->key() == Qt::Key_Return) + || (pEvent->key() == Qt::Key_Enter))) { + if (mGui->findEdit->hasFocus()) { + mOwner->editor()->findNext(); + + pEvent->accept(); + } else if (mGui->replaceEdit->hasFocus()) { + mOwner->editor()->replaceAndFind(); + + pEvent->accept(); + } else { + // Default handling of the event + + Core::Widget::keyPressEvent(pEvent); + } + } else { + // Default handling of the event + Core::Widget::keyPressEvent(pEvent); + } } //============================================================================== diff --git a/src/plugins/widget/EditorWidget/src/editorwidgetfindreplacewidget.h b/src/plugins/widget/EditorWidget/src/editorwidgetfindreplacewidget.h index f0282ad299..d5fe1bbc4d 100644 --- a/src/plugins/widget/EditorWidget/src/editorwidgetfindreplacewidget.h +++ b/src/plugins/widget/EditorWidget/src/editorwidgetfindreplacewidget.h @@ -50,12 +50,16 @@ namespace EditorWidget { //============================================================================== +class EditorWidget; + +//============================================================================== + class EditorWidgetFindReplaceWidget : public Core::Widget { Q_OBJECT public: - explicit EditorWidgetFindReplaceWidget(QWidget *pParent); + explicit EditorWidgetFindReplaceWidget(EditorWidget *pParent); ~EditorWidgetFindReplaceWidget() override; void retranslateUi() override; @@ -77,9 +81,6 @@ class EditorWidgetFindReplaceWidget : public Core::Widget QString replaceText() const; - bool findEditHasFocus() const; - bool replaceEditHasFocus() const; - bool isActive() const; void setActive(bool pActive); @@ -91,6 +92,8 @@ class EditorWidgetFindReplaceWidget : public Core::Widget private: Ui::EditorWidgetFindReplaceWidget *mGui; + EditorWidget *mOwner; + QAction *mDropDownAction; QAction *mCaseSensitiveAction; @@ -106,8 +109,6 @@ class EditorWidgetFindReplaceWidget : public Core::Widget void updateStyleSheet(); signals: - void keyPressed(QKeyEvent *pEvent, bool &pHandled); - void findTextChanged(const QString &pText); void canFindReplace(bool pCanFindReplace);