diff options
author | Eike Ziller <eike.ziller@qt.io> | 2023-05-09 09:13:32 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2023-05-09 11:31:19 +0000 |
commit | c68b01c4788957becdf480cee6d81b525fccf255 (patch) | |
tree | fa97359ffa58aaa776c78918c5141b50ad4e15b5 | |
parent | b509e5aef99a76d213bfee2150c32cd06ac42ebf (diff) |
Markdown: Support bookmarks and jumping to search results
Redirect the currentLine/Column and gotoLine functions to the text
editor and ensure that it is visible for gotoLine.
Change-Id: I546e2cb1761363e3a75f9adeebcba195e312f00b
Reviewed-by: David Schulz <david.schulz@qt.io>
-rw-r--r-- | src/plugins/bookmarks/bookmarksplugin.cpp | 10 | ||||
-rw-r--r-- | src/plugins/texteditor/markdowneditor.cpp | 39 |
2 files changed, 36 insertions, 13 deletions
diff --git a/src/plugins/bookmarks/bookmarksplugin.cpp b/src/plugins/bookmarks/bookmarksplugin.cpp index 2f25571b53..7473876ec6 100644 --- a/src/plugins/bookmarks/bookmarksplugin.cpp +++ b/src/plugins/bookmarks/bookmarksplugin.cpp @@ -128,14 +128,16 @@ BookmarksPluginPrivate::BookmarksPluginPrivate() mbm->addAction(cmd); connect(&m_toggleAction, &QAction::triggered, this, [this] { - BaseTextEditor *editor = BaseTextEditor::currentTextEditor(); - if (editor && !editor->document()->isTemporary()) + IEditor *editor = EditorManager::currentEditor(); + auto widget = TextEditorWidget::fromEditor(editor); + if (widget && editor && !editor->document()->isTemporary()) m_bookmarkManager.toggleBookmark(editor->document()->filePath(), editor->currentLine()); }); connect(&m_editAction, &QAction::triggered, this, [this] { - BaseTextEditor *editor = BaseTextEditor::currentTextEditor(); - if (editor && !editor->document()->isTemporary()) { + IEditor *editor = EditorManager::currentEditor(); + auto widget = TextEditorWidget::fromEditor(editor); + if (widget && editor && !editor->document()->isTemporary()) { const FilePath filePath = editor->document()->filePath(); const int line = editor->currentLine(); if (!m_bookmarkManager.hasBookmarkInPosition(filePath, line)) diff --git a/src/plugins/texteditor/markdowneditor.cpp b/src/plugins/texteditor/markdowneditor.cpp index 3cd1dfb789..0e76c89331 100644 --- a/src/plugins/texteditor/markdowneditor.cpp +++ b/src/plugins/texteditor/markdowneditor.cpp @@ -7,6 +7,7 @@ #include "texteditor.h" #include "texteditortr.h" +#include <aggregation/aggregate.h> #include <coreplugin/coreconstants.h> #include <coreplugin/coreplugintr.h> #include <coreplugin/icore.h> @@ -74,16 +75,23 @@ public: layout->addWidget(m_splitter); setWidget(widget); m_widget->installEventFilter(this); + using namespace Aggregation; + Aggregate *agg = Aggregate::parentAggregate(m_textEditorWidget); + if (!agg) { + agg = new Aggregate; + agg->add(m_textEditorWidget); + } + agg->add(m_widget.get()); auto togglePreviewVisible = new QToolButton; togglePreviewVisible->setText(Tr::tr("Show Preview")); togglePreviewVisible->setCheckable(true); togglePreviewVisible->setChecked(true); - auto toggleEditorVisible = new QToolButton; - toggleEditorVisible->setText(Tr::tr("Show Editor")); - toggleEditorVisible->setCheckable(true); - toggleEditorVisible->setChecked(true); + m_toggleEditorVisible = new QToolButton; + m_toggleEditorVisible->setText(Tr::tr("Show Editor")); + m_toggleEditorVisible->setCheckable(true); + m_toggleEditorVisible->setChecked(true); auto swapViews = new QToolButton; swapViews->setText(Tr::tr("Swap Views")); @@ -94,9 +102,9 @@ public: toolbarLayout->addStretch(); if (textEditorRight) { toolbarLayout->addWidget(togglePreviewVisible); - toolbarLayout->addWidget(toggleEditorVisible); + toolbarLayout->addWidget(m_toggleEditorVisible); } else { - toolbarLayout->addWidget(toggleEditorVisible); + toolbarLayout->addWidget(m_toggleEditorVisible); toolbarLayout->addWidget(togglePreviewVisible); } toolbarLayout->addWidget(swapViews); @@ -137,7 +145,7 @@ public: swapViews->setEnabled(view->isVisible() && otherView->isVisible()); }; - connect(toggleEditorVisible, + connect(m_toggleEditorVisible, &QToolButton::toggled, this, [this, browser, togglePreviewVisible, viewToggled](bool visible) { @@ -146,8 +154,8 @@ public: connect(togglePreviewVisible, &QToolButton::toggled, this, - [this, browser, toggleEditorVisible, viewToggled, updatePreview](bool visible) { - viewToggled(browser, visible, m_textEditorWidget, toggleEditorVisible); + [this, browser, viewToggled, updatePreview](bool visible) { + viewToggled(browser, visible, m_textEditorWidget, m_toggleEditorVisible); if (visible && m_performDelayedUpdate) { m_performDelayedUpdate = false; updatePreview(); @@ -193,6 +201,18 @@ public: Core::IDocument *document() const override { return m_document.data(); } TextEditorWidget *textEditorWidget() const { return m_textEditorWidget; } + int currentLine() const override { return textEditorWidget()->textCursor().blockNumber() + 1; }; + int currentColumn() const override + { + QTextCursor cursor = textEditorWidget()->textCursor(); + return cursor.position() - cursor.block().position() + 1; + } + void gotoLine(int line, int column, bool centerLine) override + { + if (!m_toggleEditorVisible->isChecked()) + m_toggleEditorVisible->toggle(); + textEditorWidget()->gotoLine(line, column, centerLine); + } bool eventFilter(QObject *obj, QEvent *ev) override { @@ -213,6 +233,7 @@ private: TextEditorWidget *m_textEditorWidget; TextDocumentPtr m_document; QWidget m_toolbar; + QToolButton *m_toggleEditorVisible; }; MarkdownEditorFactory::MarkdownEditorFactory() |