From aaa1376576ec3a87fd2e9b94c5c0a543b0f8819a Mon Sep 17 00:00:00 2001 From: David Schulz Date: Wed, 17 Jun 2020 10:28:27 +0200 Subject: [PATCH] Editor: Allow setting the optional action mask per editor Instead of just enable actions that were disabled from the beginning you can no disable optional actions. Change-Id: I986b8a72523a8aeec9f4ccf76cd4921018ffc003 Reviewed-by: Eike Ziller --- src/plugins/texteditor/texteditor.cpp | 14 +++++++++++--- src/plugins/texteditor/texteditor.h | 5 +++-- src/plugins/texteditor/texteditoractionhandler.cpp | 10 +++++++--- src/plugins/texteditor/texteditoractionhandler.h | 1 + 4 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp index 8b363a08488..7dea27a544f 100644 --- a/src/plugins/texteditor/texteditor.cpp +++ b/src/plugins/texteditor/texteditor.cpp @@ -7828,17 +7828,24 @@ void TextEditorWidget::appendStandardContextMenuActions(QMenu *menu) } } -uint TextEditorWidget::optionalActionMask() +uint TextEditorWidget::optionalActions() { return d->m_optionalActionMask; } -void TextEditorWidget::addOptionalActions(uint optionalActionMask) +void TextEditorWidget::setOptionalActions(uint optionalActionMask) { - d->m_optionalActionMask |= optionalActionMask; + if (d->m_optionalActionMask == optionalActionMask) + return; + d->m_optionalActionMask = optionalActionMask; emit optionalActionMaskChanged(); } +void TextEditorWidget::addOptionalActions( uint optionalActionMask) +{ + setOptionalActions(d->m_optionalActionMask | optionalActionMask); +} + BaseTextEditor::BaseTextEditor() : d(new BaseTextEditorPrivate) { @@ -8734,6 +8741,7 @@ BaseTextEditor *TextEditorFactoryPrivate::createEditorHelper(const TextDocumentP textEditorWidget->setMarksVisible(m_marksVisible); textEditorWidget->setParenthesesMatchingEnabled(m_paranthesesMatchinEnabled); textEditorWidget->setCodeFoldingSupported(m_codeFoldingSupported); + textEditorWidget->setOptionalActions(m_textEditorActionHandler->optionalActions()); BaseTextEditor *editor = m_editorCreator(); editor->setDuplicateSupported(m_duplicatedSupported); diff --git a/src/plugins/texteditor/texteditor.h b/src/plugins/texteditor/texteditor.h index b2fb6110aab..599671003b4 100644 --- a/src/plugins/texteditor/texteditor.h +++ b/src/plugins/texteditor/texteditor.h @@ -204,8 +204,9 @@ public: void appendStandardContextMenuActions(QMenu *menu); - uint optionalActionMask(); - void addOptionalActions(uint optionalActionMask); + uint optionalActions(); + void setOptionalActions(uint optionalActions); + void addOptionalActions(uint optionalActions); void setAutoCompleter(AutoCompleter *autoCompleter); AutoCompleter *autoCompleter() const; diff --git a/src/plugins/texteditor/texteditoractionhandler.cpp b/src/plugins/texteditor/texteditoractionhandler.cpp index 23f0c640e98..e1c037fa1e6 100644 --- a/src/plugins/texteditor/texteditoractionhandler.cpp +++ b/src/plugins/texteditor/texteditoractionhandler.cpp @@ -543,9 +543,8 @@ void TextEditorActionHandlerPrivate::updateActions() void TextEditorActionHandlerPrivate::updateOptionalActions() { - uint optionalActions = m_optionalActions; - if (m_currentEditorWidget) - optionalActions |= m_currentEditorWidget->optionalActionMask(); + const uint optionalActions = m_currentEditorWidget ? m_currentEditorWidget->optionalActions() + : m_optionalActions; m_followSymbolAction->setEnabled( optionalActions & TextEditorActionHandler::FollowSymbolUnderCursor); m_followSymbolInNextSplitAction->setEnabled( @@ -622,6 +621,11 @@ TextEditorActionHandler::TextEditorActionHandler(Core::Id editorId, d->m_findTextWidget = TextEditorWidget::fromEditor; } +uint TextEditorActionHandler::optionalActions() const +{ + return d->m_optionalActions; +} + TextEditorActionHandler::~TextEditorActionHandler() { delete d; diff --git a/src/plugins/texteditor/texteditoractionhandler.h b/src/plugins/texteditor/texteditoractionhandler.h index cfa684a13d6..3e58f729523 100644 --- a/src/plugins/texteditor/texteditoractionhandler.h +++ b/src/plugins/texteditor/texteditoractionhandler.h @@ -65,6 +65,7 @@ public: uint optionalActions = None, const TextEditorWidgetResolver &resolver = {}); + uint optionalActions() const; ~TextEditorActionHandler(); private: