aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2020-02-05 17:51:41 +0100
committerhjk <hjk@qt.io>2020-02-10 13:54:39 +0000
commit9c934ed44cd107adcef85898393ffc02e0f29e5d (patch)
treec1219b52429e61fac27c1acc4422c91799c492ad
parente12ba2d68312434f50437c3b01f12834926eeb3b (diff)
TextEditor: De-QObject-ify TextEditorActionHandler
Change-Id: I8c4919b89ce35d421edd4a21a650d5e0df4a7ead Reviewed-by: David Schulz <david.schulz@qt.io>
-rw-r--r--src/plugins/android/androidmanifesteditorfactory.cpp10
-rw-r--r--src/plugins/android/androidmanifesteditorfactory.h5
-rw-r--r--src/plugins/diffeditor/diffeditorfactory.cpp50
-rw-r--r--src/plugins/diffeditor/diffeditorfactory.h8
-rw-r--r--src/plugins/texteditor/texteditor.cpp3
-rw-r--r--src/plugins/texteditor/texteditoractionhandler.cpp28
-rw-r--r--src/plugins/texteditor/texteditoractionhandler.h15
7 files changed, 65 insertions, 54 deletions
diff --git a/src/plugins/android/androidmanifesteditorfactory.cpp b/src/plugins/android/androidmanifesteditorfactory.cpp
index 1a412bac49..347ee6cac8 100644
--- a/src/plugins/android/androidmanifesteditorfactory.cpp
+++ b/src/plugins/android/androidmanifesteditorfactory.cpp
@@ -29,22 +29,20 @@
#include "androidmanifesteditor.h"
#include <coreplugin/id.h>
-#include <texteditor/texteditoractionhandler.h>
#include <texteditor/texteditorsettings.h>
using namespace Android;
using namespace Android::Internal;
AndroidManifestEditorFactory::AndroidManifestEditorFactory()
+ : m_actionHandler(Constants::ANDROID_MANIFEST_EDITOR_ID,
+ Constants::ANDROID_MANIFEST_EDITOR_CONTEXT,
+ TextEditor::TextEditorActionHandler::None,
+ [](Core::IEditor *editor) { return static_cast<AndroidManifestEditor *>(editor)->textEditor(); })
{
setId(Constants::ANDROID_MANIFEST_EDITOR_ID);
setDisplayName(AndroidManifestEditorWidget::tr("Android Manifest editor"));
addMimeType(Constants::ANDROID_MANIFEST_MIME_TYPE);
- auto actionHandler = new TextEditor::TextEditorActionHandler(
- this, id(), Constants::ANDROID_MANIFEST_EDITOR_CONTEXT);
- actionHandler->setTextEditorWidgetResolver([](Core::IEditor *editor) {
- return static_cast<AndroidManifestEditor *>(editor)->textEditor();
- });
setEditorCreator([] {
auto androidManifestEditorWidget = new AndroidManifestEditorWidget;
return androidManifestEditorWidget->editor();
diff --git a/src/plugins/android/androidmanifesteditorfactory.h b/src/plugins/android/androidmanifesteditorfactory.h
index b73eab9ecb..b56951d15e 100644
--- a/src/plugins/android/androidmanifesteditorfactory.h
+++ b/src/plugins/android/androidmanifesteditorfactory.h
@@ -27,6 +27,8 @@
#include <coreplugin/editormanager/ieditorfactory.h>
+#include <texteditor/texteditoractionhandler.h>
+
namespace Android {
namespace Internal {
@@ -34,6 +36,9 @@ class AndroidManifestEditorFactory final : public Core::IEditorFactory
{
public:
AndroidManifestEditorFactory();
+
+private:
+ TextEditor::TextEditorActionHandler m_actionHandler;
};
} // namespace Internal
diff --git a/src/plugins/diffeditor/diffeditorfactory.cpp b/src/plugins/diffeditor/diffeditorfactory.cpp
index 12a1d58ff9..46c79df29d 100644
--- a/src/plugins/diffeditor/diffeditorfactory.cpp
+++ b/src/plugins/diffeditor/diffeditorfactory.cpp
@@ -33,35 +33,41 @@
#include <QCoreApplication>
+using namespace Core;
+using namespace TextEditor;
+
namespace DiffEditor {
namespace Internal {
-DiffEditorFactory::DiffEditorFactory()
+DiffEditorFactory::DiffEditorFactory() :
+ descriptionHandler {
+ Constants::DIFF_EDITOR_ID,
+ Constants::C_DIFF_EDITOR_DESCRIPTION,
+ TextEditorActionHandler::None,
+ [](IEditor *e) { return static_cast<DiffEditor *>(e)->descriptionWidget(); }
+ },
+ unifiedHandler {
+ Constants::DIFF_EDITOR_ID,
+ Constants::UNIFIED_VIEW_ID,
+ TextEditorActionHandler::None,
+ [](IEditor *e) { return static_cast<DiffEditor *>(e)->unifiedEditorWidget(); }
+ },
+ leftHandler {
+ Constants::DIFF_EDITOR_ID,
+ Id(Constants::SIDE_BY_SIDE_VIEW_ID).withSuffix(1),
+ TextEditorActionHandler::None,
+ [](IEditor *e) { return static_cast<DiffEditor *>(e)->leftEditorWidget(); }
+ },
+ rightHandler {
+ Constants::DIFF_EDITOR_ID,
+ Core::Id(Constants::SIDE_BY_SIDE_VIEW_ID).withSuffix(2),
+ TextEditorActionHandler::None,
+ [](Core::IEditor *e) { return static_cast<DiffEditor *>(e)->rightEditorWidget(); }
+ }
{
setId(Constants::DIFF_EDITOR_ID);
setDisplayName(QCoreApplication::translate("DiffEditorFactory", Constants::DIFF_EDITOR_DISPLAY_NAME));
addMimeType(Constants::DIFF_EDITOR_MIMETYPE);
- auto descriptionHandler = new TextEditor::TextEditorActionHandler(
- this, id(), Constants::C_DIFF_EDITOR_DESCRIPTION);
- descriptionHandler->setTextEditorWidgetResolver([](Core::IEditor *e) {
- return static_cast<DiffEditor *>(e)->descriptionWidget();
- });
- auto unifiedHandler = new TextEditor::TextEditorActionHandler(
- this, id(), Constants::UNIFIED_VIEW_ID);
- unifiedHandler->setTextEditorWidgetResolver([](Core::IEditor *e) {
- return static_cast<DiffEditor *>(e)->unifiedEditorWidget();
- });
- auto leftHandler = new TextEditor::TextEditorActionHandler(
- this, id(), Core::Id(Constants::SIDE_BY_SIDE_VIEW_ID).withSuffix(1));
- leftHandler->setTextEditorWidgetResolver([](Core::IEditor *e) {
- return static_cast<DiffEditor *>(e)->leftEditorWidget();
- });
- auto rightHandler = new TextEditor::TextEditorActionHandler(
- this, id(), Core::Id(Constants::SIDE_BY_SIDE_VIEW_ID).withSuffix(2));
- rightHandler->setTextEditorWidgetResolver([](Core::IEditor *e) {
- return static_cast<DiffEditor *>(e)->rightEditorWidget();
- });
-
setEditorCreator([] { return new DiffEditor(new DiffEditorDocument); });
}
diff --git a/src/plugins/diffeditor/diffeditorfactory.h b/src/plugins/diffeditor/diffeditorfactory.h
index 3f9fbfac64..7a4abbab7a 100644
--- a/src/plugins/diffeditor/diffeditorfactory.h
+++ b/src/plugins/diffeditor/diffeditorfactory.h
@@ -27,6 +27,8 @@
#include <coreplugin/editormanager/ieditorfactory.h>
+#include <texteditor/texteditoractionhandler.h>
+
namespace DiffEditor {
namespace Internal {
@@ -34,6 +36,12 @@ class DiffEditorFactory : public Core::IEditorFactory
{
public:
DiffEditorFactory();
+
+private:
+ TextEditor::TextEditorActionHandler descriptionHandler;
+ TextEditor::TextEditorActionHandler unifiedHandler;
+ TextEditor::TextEditorActionHandler leftHandler;
+ TextEditor::TextEditorActionHandler rightHandler;
};
} // namespace Internal
diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp
index de81447629..ae5f5f356e 100644
--- a/src/plugins/texteditor/texteditor.cpp
+++ b/src/plugins/texteditor/texteditor.cpp
@@ -8598,8 +8598,7 @@ void TextEditorFactory::setAutoCompleterCreator(const AutoCompleterCreator &crea
void TextEditorFactory::setEditorActionHandlers(uint optionalActions)
{
- d->m_textEditorActionHandler.reset(
- new TextEditorActionHandler(nullptr, id(), id(), optionalActions));
+ d->m_textEditorActionHandler.reset(new TextEditorActionHandler(id(), id(), optionalActions));
}
void TextEditorFactory::addHoverHandler(BaseHoverHandler *handler)
diff --git a/src/plugins/texteditor/texteditoractionhandler.cpp b/src/plugins/texteditor/texteditoractionhandler.cpp
index 8508f9afd8..4cae664cb4 100644
--- a/src/plugins/texteditor/texteditoractionhandler.cpp
+++ b/src/plugins/texteditor/texteditoractionhandler.cpp
@@ -190,15 +190,9 @@ public:
Core::Id m_contextId;
};
-static TextEditorWidget *castWidgetToTextEditorWidget(Core::IEditor *editor)
-{
- return qobject_cast<TextEditorWidget *>(editor->widget());
-}
-
TextEditorActionHandlerPrivate::TextEditorActionHandlerPrivate
(Core::Id editorId, Core::Id contextId, uint optionalActions)
- : m_findTextWidget(castWidgetToTextEditorWidget)
- , m_optionalActions(optionalActions)
+ : m_optionalActions(optionalActions)
, m_editorId(editorId)
, m_contextId(contextId)
{
@@ -228,7 +222,7 @@ void TextEditorActionHandlerPrivate::createActions()
QString locatorString = TextEditorPlugin::lineNumberFilter()->shortcutString();
locatorString += QLatin1Char(' ');
const int selectionStart = locatorString.size();
- locatorString += TextEditorActionHandler::tr("<line>:<column>");
+ locatorString += tr("<line>:<column>");
Core::LocatorManager::show(locatorString, selectionStart, locatorString.size() - selectionStart);
});
m_printAction = registerAction(PRINT,
@@ -589,11 +583,16 @@ void TextEditorActionHandlerPrivate::updateCurrentEditor(Core::IEditor *editor)
} // namespace Internal
-TextEditorActionHandler::TextEditorActionHandler(QObject *parent, Core::Id editorId,
- Core::Id contextId, uint optionalActions)
- : QObject(parent), d(new Internal::TextEditorActionHandlerPrivate(editorId, contextId,
- optionalActions))
+TextEditorActionHandler::TextEditorActionHandler(Core::Id editorId,
+ Core::Id contextId,
+ uint optionalActions,
+ const TextEditorWidgetResolver &resolver)
+ : d(new Internal::TextEditorActionHandlerPrivate(editorId, contextId, optionalActions))
{
+ if (resolver)
+ d->m_findTextWidget = resolver;
+ else
+ d->m_findTextWidget = [](Core::IEditor *editor) { return qobject_cast<TextEditorWidget *>(editor->widget()); };
}
TextEditorActionHandler::~TextEditorActionHandler()
@@ -601,9 +600,4 @@ TextEditorActionHandler::~TextEditorActionHandler()
delete d;
}
-void TextEditorActionHandler::setTextEditorWidgetResolver(const TextEditorWidgetResolver &resolver)
-{
- d->m_findTextWidget = resolver;
-}
-
} // namespace TextEditor
diff --git a/src/plugins/texteditor/texteditoractionhandler.h b/src/plugins/texteditor/texteditoractionhandler.h
index f542b5d7ce..f91ad7a806 100644
--- a/src/plugins/texteditor/texteditoractionhandler.h
+++ b/src/plugins/texteditor/texteditoractionhandler.h
@@ -43,9 +43,10 @@ namespace Internal { class TextEditorActionHandlerPrivate; }
// Redirects slots from global actions to the respective editor.
-class TEXTEDITOR_EXPORT TextEditorActionHandler : public QObject
+class TEXTEDITOR_EXPORT TextEditorActionHandler final
{
- Q_OBJECT
+ TextEditorActionHandler(const TextEditorActionHandler &) = delete;
+ TextEditorActionHandler &operator=(const TextEditorActionHandler &) = delete;
public:
enum OptionalActionsMask {
@@ -58,14 +59,14 @@ public:
};
using TextEditorWidgetResolver = std::function<TextEditorWidget *(Core::IEditor *)>;
- explicit TextEditorActionHandler(QObject *parent, Core::Id editorId, Core::Id contextId,
- uint optionalActions = None);
- ~TextEditorActionHandler() override;
+ TextEditorActionHandler(Core::Id editorId,
+ Core::Id contextId,
+ uint optionalActions = None,
+ const TextEditorWidgetResolver &resolver = {});
- void setTextEditorWidgetResolver(const TextEditorWidgetResolver &resolver);
+ ~TextEditorActionHandler();
private:
- friend class Internal::TextEditorActionHandlerPrivate;
Internal::TextEditorActionHandlerPrivate *d;
};