diff --git a/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp b/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp index ae2f397a3d16113edb9b777f40f1ddfe697577e2..295b0bf4ceae9fb9d84b1f89154a16920569f780 100644 --- a/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp +++ b/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp @@ -323,7 +323,6 @@ private: CMakeToolItemModel *m_model; QLineEdit *m_displayNameLineEdit; PathChooser *m_binaryChooser; - bool m_autodetected; Core::Id m_id; bool m_loadingItem; }; diff --git a/src/plugins/coreplugin/infobar.cpp b/src/plugins/coreplugin/infobar.cpp index eb982a3a7dbad9a4825bb32bef7cfe24fb590370..1b4fdc9c58b1fd4d49122f16463e4a7b772e5d7a 100644 --- a/src/plugins/coreplugin/infobar.cpp +++ b/src/plugins/coreplugin/infobar.cpp @@ -177,8 +177,8 @@ void InfoBarDisplay::setInfoBar(InfoBar *infoBar) m_infoBar->disconnect(this); m_infoBar = infoBar; if (m_infoBar) { - connect(infoBar, SIGNAL(changed()), SLOT(update())); - connect(infoBar, SIGNAL(destroyed()), SLOT(infoBarDestroyed())); + connect(m_infoBar, SIGNAL(changed()), SLOT(update())); + connect(m_infoBar, SIGNAL(destroyed()), SLOT(infoBarDestroyed())); } update(); } diff --git a/src/plugins/diffeditor/diffeditor.cpp b/src/plugins/diffeditor/diffeditor.cpp index f1d3c86640fa26b821aa110b89bd0ca699d6919b..5a08be7445ca06790c1a2b80e99ae886b48b730c 100644 --- a/src/plugins/diffeditor/diffeditor.cpp +++ b/src/plugins/diffeditor/diffeditor.cpp @@ -215,8 +215,8 @@ void DescriptionEditorWidget::handleCurrentContents() ///////////////////////////////// DiffEditor ////////////////////////////////// -DiffEditor::DiffEditor(const QSharedPointer<DiffEditorDocument> &doc) - : m_document(doc) +DiffEditor::DiffEditor() + : m_document(0) , m_descriptionWidget(0) , m_stackedWidget(0) , m_toolBar(0) @@ -233,10 +233,10 @@ DiffEditor::DiffEditor(const QSharedPointer<DiffEditorDocument> &doc) , m_sync(false) , m_showDescription(true) { - Guard guard(&m_ignoreChanges); - QTC_ASSERT(m_document, return); + // Editor: setDuplicateSupported(true); + // Widget: QSplitter *splitter = new Core::MiniSplitter(Qt::Vertical); m_descriptionWidget = new DescriptionEditorWidget(splitter); @@ -251,67 +251,11 @@ DiffEditor::DiffEditor(const QSharedPointer<DiffEditorDocument> &doc) setWidget(splitter); - connect(m_descriptionWidget, &DescriptionEditorWidget::requestBranchList, - m_document.data(), &DiffEditorDocument::requestMoreInformation); - connect(m_document.data(), &DiffEditorDocument::documentChanged, - this, &DiffEditor::documentHasChanged); - connect(m_document.data(), &DiffEditorDocument::descriptionChanged, - this, &DiffEditor::updateDescription); - connect(m_document.data(), &DiffEditorDocument::aboutToReload, - this, &DiffEditor::prepareForReload); - connect(m_document.data(), &DiffEditorDocument::reloadFinished, - this, &DiffEditor::reloadHasFinished); - - toolBar(); - - loadSettings(); - documentHasChanged(); -} - -DiffEditor::~DiffEditor() -{ - delete m_toolBar; - delete m_widget; -} - -Core::IEditor *DiffEditor::duplicate() -{ - return new DiffEditor(m_document); -} - -bool DiffEditor::open(QString *errorString, - const QString &fileName, - const QString &realFileName) -{ - Q_UNUSED(realFileName) - return m_document->open(errorString, fileName); -} - -Core::IDocument *DiffEditor::document() -{ - return m_document.data(); -} - -static QToolBar *createToolBar(IDiffView *someView) -{ - // Create - QToolBar *toolBar = new QToolBar; - toolBar->setToolButtonStyle(Qt::ToolButtonIconOnly); - const int size = someView->widget()->style()->pixelMetric(QStyle::PM_SmallIconSize); - toolBar->setIconSize(QSize(size, size)); - - return toolBar; -} - -QWidget *DiffEditor::toolBar() -{ - QTC_ASSERT(!m_views.isEmpty(), return 0); - - if (m_toolBar) - return m_toolBar; - - // Create - m_toolBar = createToolBar(m_views.at(0)); + // Toolbar: + m_toolBar = new QToolBar; + m_toolBar->setToolButtonStyle(Qt::ToolButtonIconOnly); + const int size = m_views.at(0)->widget()->style()->pixelMetric(QStyle::PM_SmallIconSize); + m_toolBar->setIconSize(QSize(size, size)); m_entriesComboBox = new QComboBox; m_entriesComboBox->setMinimumContentsLength(20); @@ -331,14 +275,12 @@ QWidget *DiffEditor::toolBar() m_contextSpinBox = new QSpinBox(m_toolBar); m_contextSpinBox->setRange(1, 100); - m_contextSpinBox->setValue(m_document->contextLineCount()); m_contextSpinBox->setFrame(false); m_contextSpinBox->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Expanding); // Mac Qt5 m_toolBar->addWidget(m_contextSpinBox); m_whitespaceButtonAction = m_toolBar->addAction(tr("Ignore Whitespace")); m_whitespaceButtonAction->setCheckable(true); - m_whitespaceButtonAction->setChecked(m_document->ignoreWhitespace()); m_toggleDescriptionAction = m_toolBar->addAction(QIcon(QLatin1String(Constants::ICON_TOP_BAR)), QString()); @@ -347,14 +289,12 @@ QWidget *DiffEditor::toolBar() m_reloadAction = m_toolBar->addAction(QIcon(QLatin1String(Core::Constants::ICON_RELOAD_GRAY)), tr("Reload Diff")); m_reloadAction->setToolTip(tr("Reload Diff")); - documentStateChanged(); m_toggleSyncAction = m_toolBar->addAction(QIcon(QLatin1String(Core::Constants::ICON_LINK)), QString()); m_toggleSyncAction->setCheckable(true); m_viewSwitcherAction = m_toolBar->addAction(QIcon(), QString()); - updateDiffEditorSwitcher(); connect(m_whitespaceButtonAction, &QAction::toggled, this, &DiffEditor::ignoreWhitespaceHasChanged); connect(m_contextSpinBox, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), @@ -362,10 +302,84 @@ QWidget *DiffEditor::toolBar() connect(m_toggleSyncAction, &QAction::toggled, this, &DiffEditor::toggleSync); connect(m_toggleDescriptionAction, &QAction::toggled, this, &DiffEditor::toggleDescription); connect(m_viewSwitcherAction, &QAction::triggered, this, [this]() { showDiffView(nextView()); }); +} + +void DiffEditor::setDocument(QSharedPointer<DiffEditorDocument>(doc)) +{ + QTC_ASSERT(m_document.isNull(), return); + QTC_ASSERT(doc, return); + + m_document = QSharedPointer<DiffEditorDocument>(doc); + + connect(m_descriptionWidget, &DescriptionEditorWidget::requestBranchList, + m_document.data(), &DiffEditorDocument::requestMoreInformation); + connect(m_document.data(), &DiffEditorDocument::documentChanged, + this, &DiffEditor::documentHasChanged); + connect(m_document.data(), &DiffEditorDocument::descriptionChanged, + this, &DiffEditor::updateDescription); + connect(m_document.data(), &DiffEditorDocument::aboutToReload, + this, &DiffEditor::prepareForReload); + connect(m_document.data(), &DiffEditorDocument::reloadFinished, + this, &DiffEditor::reloadHasFinished); + connect(m_reloadAction, &QAction::triggered, this, [this]() { m_document->reload(); }); connect(m_document.data(), &DiffEditorDocument::temporaryStateChanged, this, &DiffEditor::documentStateChanged); + m_contextSpinBox->setValue(m_document->contextLineCount()); + m_whitespaceButtonAction->setChecked(m_document->ignoreWhitespace()); + + documentStateChanged(); + documentHasChanged(); +} + +DiffEditor::DiffEditor(DiffEditorDocument *doc) : DiffEditor() +{ + Guard guard(&m_ignoreChanges); + setDocument(QSharedPointer<DiffEditorDocument>(doc)); + setupView(loadSettings()); +} + +DiffEditor::~DiffEditor() +{ + delete m_toolBar; + delete m_widget; +} + +Core::IEditor *DiffEditor::duplicate() +{ + DiffEditor *editor = new DiffEditor(); + Guard guard(&editor->m_ignoreChanges); + + editor->setDocument(m_document); + editor->m_sync = m_sync; + editor->m_showDescription = m_showDescription; + + Core::Id id = currentView()->id(); + IDiffView *view = Utils::findOr(editor->m_views, editor->m_views.at(0), + [id](IDiffView *v) { return v->id() == id; }); + QTC_ASSERT(view, view = editor->currentView()); + editor->setupView(view); + + return editor; +} + +bool DiffEditor::open(QString *errorString, + const QString &fileName, + const QString &realFileName) +{ + Q_UNUSED(realFileName) + return m_document->open(errorString, fileName); +} + +Core::IDocument *DiffEditor::document() +{ + return m_document.data(); +} + +QWidget *DiffEditor::toolBar() +{ + QTC_ASSERT(m_toolBar, return 0); return m_toolBar; } @@ -573,9 +587,9 @@ void DiffEditor::toggleSync() currentView()->setSync(m_sync); } -void DiffEditor::loadSettings() +IDiffView *DiffEditor::loadSettings() { - QTC_ASSERT(currentView(), return); + QTC_ASSERT(currentView(), return 0); QSettings *s = Core::ICore::settings(); // TODO: Remove in 3.6: Read legacy settings first: @@ -602,9 +616,9 @@ void DiffEditor::loadSettings() s->endGroup(); IDiffView *view = Utils::findOr(m_views, m_views.at(0), [id](IDiffView *v) { return v->id() == id; }); - QTC_ASSERT(view, return); + QTC_CHECK(view); - setupView(view); + return view; } void DiffEditor::saveSetting(const QString &key, const QVariant &value) const diff --git a/src/plugins/diffeditor/diffeditor.h b/src/plugins/diffeditor/diffeditor.h index 3be67972e418c7915e69b7939a72744c2fd7fd27..998757122954bfe6e4f3683d8c3588610a6b3269 100644 --- a/src/plugins/diffeditor/diffeditor.h +++ b/src/plugins/diffeditor/diffeditor.h @@ -59,10 +59,9 @@ class DiffEditor : public Core::IEditor Q_OBJECT public: - DiffEditor(const QSharedPointer<DiffEditorDocument> &doc); + DiffEditor(DiffEditorDocument *doc); ~DiffEditor(); -public: Core::IEditor *duplicate(); bool open(QString *errorString, @@ -86,7 +85,10 @@ private slots: void toggleSync(); private: - void loadSettings(); + DiffEditor(); + void setDocument(QSharedPointer<DiffEditorDocument> doc); + + IDiffView *loadSettings(); void saveSetting(const QString &key, const QVariant &value) const; void updateEntryToolTip(); void showDiffView(IDiffView *view); diff --git a/src/plugins/diffeditor/diffeditorfactory.cpp b/src/plugins/diffeditor/diffeditorfactory.cpp index e52b0c5e170c2f4bbbe510f275fe2d55c4300f1d..6687cc191bb0ed761ba1930fb40c3d0f77b4bf77 100644 --- a/src/plugins/diffeditor/diffeditorfactory.cpp +++ b/src/plugins/diffeditor/diffeditorfactory.cpp @@ -49,7 +49,7 @@ DiffEditorFactory::DiffEditorFactory(QObject *parent) Core::IEditor *DiffEditorFactory::createEditor() { - return new DiffEditor(QSharedPointer<DiffEditorDocument>(new DiffEditorDocument)); + return new DiffEditor(new DiffEditorDocument); } } // namespace Internal