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: