From 71f9e536c51818e0850b78ff2b62446339fa8c01 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Wed, 19 Apr 2023 15:09:49 +0200 Subject: [PATCH] Markdown: Fix that text editing actions were not available Add the TextEditorActionHandler and point it to the text editor. Change-Id: I2c84d6b0160c7402ea32d56ed4dbc72d512072a1 Reviewed-by: David Schulz Reviewed-by: --- src/plugins/texteditor/markdowneditor.cpp | 43 +++++++++++++++++------ src/plugins/texteditor/markdowneditor.h | 5 +++ 2 files changed, 37 insertions(+), 11 deletions(-) diff --git a/src/plugins/texteditor/markdowneditor.cpp b/src/plugins/texteditor/markdowneditor.cpp index c04dcf0942d..94ccde4b3ae 100644 --- a/src/plugins/texteditor/markdowneditor.cpp +++ b/src/plugins/texteditor/markdowneditor.cpp @@ -21,6 +21,7 @@ namespace TextEditor::Internal { const char MARKDOWNVIEWER_ID[] = "Editors.MarkdownViewer"; +const char MARKDOWNVIEWER_TEXT_CONTEXT[] = "Editors.MarkdownViewer.Text"; const char MARKDOWNVIEWER_MIME_TYPE[] = "text/markdown"; class MarkdownEditor : public Core::IEditor @@ -38,10 +39,14 @@ public: new Utils::MarkdownHighlighter(browser->document()); // Right side (hidable) - auto editor = new TextEditorWidget(&m_widget); - editor->setTextDocument(m_document); - editor->setupGenericHighlighter(); - editor->setMarksVisible(false); + m_textEditorWidget = new TextEditorWidget(&m_widget); + m_textEditorWidget->setTextDocument(m_document); + m_textEditorWidget->setupGenericHighlighter(); + m_textEditorWidget->setMarksVisible(false); + auto context = new Core::IContext(this); + context->setWidget(m_textEditorWidget); + context->setContext(Core::Context(MARKDOWNVIEWER_TEXT_CONTEXT)); + Core::ICore::addContextObject(context); setContext(Core::Context(MARKDOWNVIEWER_ID)); setWidget(&m_widget); @@ -60,13 +65,21 @@ public: connect(m_document.data(), &TextDocument::mimeTypeChanged, m_document.data(), &TextDocument::changed); - connect(toggleEditorVisible, &QToolButton::toggled, - editor, [editor, toggleEditorVisible](bool editorVisible) { - if (editor->isVisible() == editorVisible) - return; - editor->setVisible(editorVisible); - toggleEditorVisible->setText(editorVisible ? Tr::tr("Hide Editor") : Tr::tr("Show Editor")); - }); + connect(toggleEditorVisible, + &QToolButton::toggled, + m_textEditorWidget, + [this, browser, toggleEditorVisible](bool editorVisible) { + if (m_textEditorWidget->isVisible() == editorVisible) + return; + m_textEditorWidget->setVisible(editorVisible); + if (editorVisible) + m_textEditorWidget->setFocus(); + else + browser->setFocus(); + + toggleEditorVisible->setText(editorVisible ? Tr::tr("Hide Editor") + : Tr::tr("Show Editor")); + }); connect(m_document->document(), &QTextDocument::contentsChanged, this, [this, browser] { QHash positions; @@ -87,14 +100,22 @@ public: QWidget *toolBar() override { return &m_toolbar; } Core::IDocument *document() const override { return m_document.data(); } + TextEditorWidget *textEditorWidget() const { return m_textEditorWidget; } private: Core::MiniSplitter m_widget; + TextEditorWidget *m_textEditorWidget; TextDocumentPtr m_document; QWidget m_toolbar; }; MarkdownEditorFactory::MarkdownEditorFactory() + : m_actionHandler(MARKDOWNVIEWER_ID, + MARKDOWNVIEWER_TEXT_CONTEXT, + TextEditor::TextEditorActionHandler::None, + [](Core::IEditor *editor) { + return static_cast(editor)->textEditorWidget(); + }) { setId(MARKDOWNVIEWER_ID); setDisplayName(::Core::Tr::tr("Markdown Viewer")); diff --git a/src/plugins/texteditor/markdowneditor.h b/src/plugins/texteditor/markdowneditor.h index 21944657bc4..de87c558e1b 100644 --- a/src/plugins/texteditor/markdowneditor.h +++ b/src/plugins/texteditor/markdowneditor.h @@ -5,12 +5,17 @@ #include +#include + namespace TextEditor::Internal { class MarkdownEditorFactory final : public Core::IEditorFactory { public: MarkdownEditorFactory(); + +private: + TextEditor::TextEditorActionHandler m_actionHandler; }; } // TextEditor::Internal