From a63368efdd562d057d596e2c3e37e1760a2defd1 Mon Sep 17 00:00:00 2001 From: Mathias Hasselmann Date: Sat, 6 Jan 2024 16:44:13 +0100 Subject: [PATCH] Markdown: Use regular text editor's toolbar This allows to have custom toolbar actions while preserving the regular text editor actions. Fixes: QTCREATORBUG-30166 Change-Id: I4a22f415d05d80355cfdbe4a2c61501af2292e85 Reviewed-by: David Schulz --- src/plugins/texteditor/markdowneditor.cpp | 39 ++++++++++------------- 1 file changed, 16 insertions(+), 23 deletions(-) diff --git a/src/plugins/texteditor/markdowneditor.cpp b/src/plugins/texteditor/markdowneditor.cpp index b4f82200666..a4e4de3b5a2 100644 --- a/src/plugins/texteditor/markdowneditor.cpp +++ b/src/plugins/texteditor/markdowneditor.cpp @@ -15,6 +15,7 @@ #include #include +#include #include #include #include @@ -26,6 +27,7 @@ #include #include #include +#include #include #include @@ -98,7 +100,6 @@ public: context->setWidget(m_textEditorWidget); context->setContext(Context(MARKDOWNVIEWER_TEXT_CONTEXT)); ICore::addContextObject(context); - m_lineColumnButton = new LineColumnButton(m_textEditorWidget); m_splitter->addWidget(m_textEditorWidget); // sets splitter->focusWidget() on non-Windows m_splitter->addWidget(m_previewWidget); @@ -131,7 +132,6 @@ public: m_toggleEditorVisible->setCheckable(true); m_toggleEditorVisible->setChecked(showEditor); m_textEditorWidget->setVisible(showEditor); - m_lineColumnButton->setVisible(showEditor); auto button = new CommandButton(EMPHASIS_ACTION); button->setText("i"); @@ -157,21 +157,16 @@ public: button->setVisible(false); } + for (auto button : m_markDownButtons | Utils::views::reverse) + m_textEditorWidget->insertExtraToolBarWidget(TextEditorWidget::Left, button); + m_swapViews = new CommandButton(SWAPVIEWS_ACTION); m_swapViews->setText(m_swapViews->toolTipBase()); m_swapViews->setEnabled(showEditor && showPreview); - m_toolbarLayout = new QHBoxLayout(&m_toolbar); - m_toolbarLayout->setSpacing(0); - m_toolbarLayout->setContentsMargins(0, 0, 0, 0); - for (auto button : m_markDownButtons) - m_toolbarLayout->addWidget(button); - m_toolbarLayout->addStretch(); - m_toolbarLayout->addWidget(m_lineColumnButton); - m_toolbarLayout->addWidget(m_togglePreviewVisible); - m_toolbarLayout->addWidget(m_toggleEditorVisible); - m_toolbarLayout->addWidget(m_swapViews); - + m_swapViewsAction = m_textEditorWidget->insertExtraToolBarWidget(TextEditorWidget::Right, m_swapViews); + m_toggleEditorVisibleAction = m_textEditorWidget->insertExtraToolBarWidget(TextEditorWidget::Right, m_toggleEditorVisible); + m_togglePreviewVisibleAction = m_textEditorWidget->insertExtraToolBarWidget(TextEditorWidget::Right, m_togglePreviewVisible); setWidgetOrder(textEditorRight); connect(m_document.data(), @@ -248,7 +243,6 @@ public: m_togglePreviewVisible); for (auto button : m_markDownButtons) button->setVisible(visible); - m_lineColumnButton->setVisible(visible); saveViewSettings(); }); connect(m_togglePreviewVisible, @@ -351,14 +345,13 @@ public: m_splitter->insertWidget(0, left); m_splitter->insertWidget(1, right); // buttons - QWidget *leftButton = textEditorRight ? m_togglePreviewVisible : m_toggleEditorVisible; - QWidget *rightButton = textEditorRight ? m_toggleEditorVisible : m_togglePreviewVisible; - const int rightIndex = m_toolbarLayout->count() - 2; - m_toolbarLayout->insertWidget(rightIndex, leftButton); - m_toolbarLayout->insertWidget(rightIndex, rightButton); + const auto leftAction = textEditorRight ? m_togglePreviewVisibleAction : m_toggleEditorVisibleAction; + const auto rightAction = textEditorRight ? m_toggleEditorVisibleAction : m_togglePreviewVisibleAction; + m_textEditorWidget->toolBar()->insertAction(m_swapViewsAction, leftAction); + m_textEditorWidget->toolBar()->insertAction(m_swapViewsAction, rightAction); } - QWidget *toolBar() override { return &m_toolbar; } + QWidget *toolBar() override { return m_textEditorWidget->toolBarWidget(); } IDocument *document() const override { return m_document.data(); } TextEditorWidget *textEditorWidget() const { return m_textEditorWidget; } @@ -479,13 +472,13 @@ private: QTextBrowser *m_previewWidget; TextEditorWidget *m_textEditorWidget; TextDocumentPtr m_document; - QWidget m_toolbar; - QHBoxLayout *m_toolbarLayout; QList m_markDownButtons; - LineColumnButton *m_lineColumnButton; CommandButton *m_toggleEditorVisible; CommandButton *m_togglePreviewVisible; CommandButton *m_swapViews; + QAction *m_toggleEditorVisibleAction; + QAction *m_togglePreviewVisibleAction; + QAction *m_swapViewsAction; std::optional m_previewRestoreScrollPosition; };