From 93fe64e78914b7d13b6b30093955f0a998c43b21 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Fri, 3 Feb 2017 11:38:15 +0100 Subject: [PATCH] CppEditor: Fix highlight of '#' Button for duplication case Change-Id: Ib97f31912c9b2d619e3b92287ca8b192604f3831 Reviewed-by: David Schulz --- src/plugins/cppeditor/cppeditor.cpp | 17 +++++++++++++++-- src/plugins/cppeditor/cppeditor.h | 3 +++ src/plugins/cppeditor/cppparsecontext.cpp | 4 +++- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp index 54b3d5fa3ef..f12d92fbdd4 100644 --- a/src/plugins/cppeditor/cppeditor.cpp +++ b/src/plugins/cppeditor/cppeditor.cpp @@ -203,8 +203,7 @@ void CppEditorWidget::finalizeInitialization() connect(cppEditorDocument(), &CppEditorDocument::preprocessorSettingsChanged, this, [this](bool customSettings) { - d->m_preprocessorButton->setProperty("highlightWidget", customSettings); - d->m_preprocessorButton->update(); + updateWidgetHighlighting(d->m_preprocessorButton, customSettings); }); // set up function declaration - definition link @@ -267,6 +266,9 @@ void CppEditorWidget::finalizeInitializationAfterDuplication(TextEditorWidget *o const Id selectionKind = CodeWarningsSelection; setExtraSelections(selectionKind, cppEditorWidget->extraSelections(selectionKind)); + if (isWidgetHighlighted(cppEditorWidget->d->m_preprocessorButton)) + updateWidgetHighlighting(d->m_preprocessorButton, true); + d->m_parseContextWidget->syncToModel(); d->m_parseContextAction->setVisible( d->m_cppEditorDocument->parseContextModel().areMultipleAvailable()); @@ -418,6 +420,17 @@ bool CppEditorWidget::selectBlockDown() return changed; } +void CppEditorWidget::updateWidgetHighlighting(QWidget *widget, bool highlight) +{ + widget->setProperty("highlightWidget", highlight); + widget->update(); +} + +bool CppEditorWidget::isWidgetHighlighted(QWidget *widget) +{ + return widget->property("highlightWidget").toBool(); +} + void CppEditorWidget::renameSymbolUnderCursor() { if (refactoringEngine()) diff --git a/src/plugins/cppeditor/cppeditor.h b/src/plugins/cppeditor/cppeditor.h index afedecbf458..90ad0e603ca 100644 --- a/src/plugins/cppeditor/cppeditor.h +++ b/src/plugins/cppeditor/cppeditor.h @@ -95,6 +95,9 @@ public: bool selectBlockUp() override; bool selectBlockDown() override; + static void updateWidgetHighlighting(QWidget *widget, bool highlight); + static bool isWidgetHighlighted(QWidget *widget); + protected: bool event(QEvent *e) override; void contextMenuEvent(QContextMenuEvent *) override; diff --git a/src/plugins/cppeditor/cppparsecontext.cpp b/src/plugins/cppeditor/cppparsecontext.cpp index 7be8b5beb10..1519f0e71af 100644 --- a/src/plugins/cppeditor/cppparsecontext.cpp +++ b/src/plugins/cppeditor/cppparsecontext.cpp @@ -25,6 +25,8 @@ #include "cppparsecontext.h" +#include "cppeditor.h" + #include #include #include @@ -165,7 +167,7 @@ void ParseContextWidget::syncToModel() const bool isPreferred = m_parseContextModel.isCurrentPreferred(); m_clearPreferredAction->setEnabled(isPreferred); - QComboBox::setProperty("highlightWidget", isPreferred); + CppEditorWidget::updateWidgetHighlighting(this, isPreferred); } } // namespace Internal