forked from qt-creator/qt-creator
Merge remote-tracking branch 'origin/11.0'
Change-Id: Ibe5040142ca38fed77ffed163212baf22592e392
This commit is contained in:
@@ -54,6 +54,12 @@ CMakeSpecificSettings::CMakeSpecificSettings()
|
|||||||
// never save this to the settings:
|
// never save this to the settings:
|
||||||
ninjaPath.setToSettingsTransformation(
|
ninjaPath.setToSettingsTransformation(
|
||||||
[](const QVariant &) { return QVariant::fromValue(QString()); });
|
[](const QVariant &) { return QVariant::fromValue(QString()); });
|
||||||
|
ninjaPath.setFromSettingsTransformation([](const QVariant &from) {
|
||||||
|
// Sometimes the installer appends the same ninja path to the qtcreator.ini file
|
||||||
|
const QString path = from.canConvert<QStringList>() ? from.toStringList().last()
|
||||||
|
: from.toString();
|
||||||
|
return FilePath::fromUserInput(path).toVariant();
|
||||||
|
});
|
||||||
|
|
||||||
packageManagerAutoSetup.setSettingsKey("PackageManagerAutoSetup");
|
packageManagerAutoSetup.setSettingsKey("PackageManagerAutoSetup");
|
||||||
packageManagerAutoSetup.setDefaultValue(true);
|
packageManagerAutoSetup.setDefaultValue(true);
|
||||||
|
|||||||
@@ -246,8 +246,10 @@ class RevertDialog : public QDialog
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
RevertDialog(const QString &title, QWidget *parent = nullptr);
|
RevertDialog(const QString &title, QWidget *parent = nullptr);
|
||||||
|
QString revision() const { return m_revisionLineEdit->text(); }
|
||||||
|
|
||||||
QLineEdit *m_revisionLineEdit;
|
private:
|
||||||
|
QLineEdit *m_revisionLineEdit = nullptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
FossilPlugin::~FossilPlugin()
|
FossilPlugin::~FossilPlugin()
|
||||||
@@ -428,15 +430,11 @@ void FossilPluginPrivate::revertCurrentFile()
|
|||||||
const VcsBase::VcsBasePluginState state = currentState();
|
const VcsBase::VcsBasePluginState state = currentState();
|
||||||
QTC_ASSERT(state.hasFile(), return);
|
QTC_ASSERT(state.hasFile(), return);
|
||||||
|
|
||||||
QDialog dialog(Core::ICore::dialogParent());
|
RevertDialog dialog(Tr::tr("Revert"), Core::ICore::dialogParent());
|
||||||
|
if (dialog.exec() == QDialog::Accepted) {
|
||||||
auto revisionLineEdit = new QLineEdit;
|
m_client.revertFile(state.currentFileTopLevel(), state.relativeCurrentFile(),
|
||||||
|
dialog.revision());
|
||||||
if (dialog.exec() != QDialog::Accepted)
|
}
|
||||||
return;
|
|
||||||
m_client.revertFile(state.currentFileTopLevel(),
|
|
||||||
state.relativeCurrentFile(),
|
|
||||||
revisionLineEdit->text());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FossilPluginPrivate::statusCurrentFile()
|
void FossilPluginPrivate::statusCurrentFile()
|
||||||
@@ -511,7 +509,7 @@ void FossilPluginPrivate::revertAll()
|
|||||||
|
|
||||||
RevertDialog dialog(Tr::tr("Revert"), Core::ICore::dialogParent());
|
RevertDialog dialog(Tr::tr("Revert"), Core::ICore::dialogParent());
|
||||||
if (dialog.exec() == QDialog::Accepted)
|
if (dialog.exec() == QDialog::Accepted)
|
||||||
m_client.revertAll(state.topLevel(), dialog.m_revisionLineEdit->text());
|
m_client.revertAll(state.topLevel(), dialog.revision());
|
||||||
}
|
}
|
||||||
|
|
||||||
void FossilPluginPrivate::statusMulti()
|
void FossilPluginPrivate::statusMulti()
|
||||||
@@ -627,7 +625,7 @@ void FossilPluginPrivate::update()
|
|||||||
|
|
||||||
RevertDialog dialog(Tr::tr("Update"), Core::ICore::dialogParent());
|
RevertDialog dialog(Tr::tr("Update"), Core::ICore::dialogParent());
|
||||||
if (dialog.exec() == QDialog::Accepted)
|
if (dialog.exec() == QDialog::Accepted)
|
||||||
m_client.update(state.topLevel(), dialog.m_revisionLineEdit->text());
|
m_client.update(state.topLevel(), dialog.revision());
|
||||||
}
|
}
|
||||||
|
|
||||||
void FossilPluginPrivate::configureRepository()
|
void FossilPluginPrivate::configureRepository()
|
||||||
|
|||||||
@@ -843,7 +843,7 @@ bool TextDocument::reload(QString *errorString, const FilePath &realFilePath)
|
|||||||
auto documentLayout =
|
auto documentLayout =
|
||||||
qobject_cast<TextDocumentLayout*>(d->m_document.documentLayout());
|
qobject_cast<TextDocumentLayout*>(d->m_document.documentLayout());
|
||||||
if (documentLayout)
|
if (documentLayout)
|
||||||
documentLayout->documentAboutToReload(); // removes text marks non-permanently
|
documentLayout->documentAboutToReload(this); // removes text marks non-permanently
|
||||||
|
|
||||||
bool success = openImpl(errorString, filePath(), realFilePath, /*reload =*/true)
|
bool success = openImpl(errorString, filePath(), realFilePath, /*reload =*/true)
|
||||||
== OpenResult::Success;
|
== OpenResult::Success;
|
||||||
|
|||||||
@@ -4,9 +4,14 @@
|
|||||||
#include "textdocumentlayout.h"
|
#include "textdocumentlayout.h"
|
||||||
#include "fontsettings.h"
|
#include "fontsettings.h"
|
||||||
#include "textdocument.h"
|
#include "textdocument.h"
|
||||||
|
#include "texteditorplugin.h"
|
||||||
#include "texteditorsettings.h"
|
#include "texteditorsettings.h"
|
||||||
|
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
|
#include <utils/temporarydirectory.h>
|
||||||
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
#include <QTest>
|
||||||
|
|
||||||
namespace TextEditor {
|
namespace TextEditor {
|
||||||
|
|
||||||
@@ -667,11 +672,15 @@ TextMarks TextDocumentLayout::documentClosing()
|
|||||||
return marks;
|
return marks;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextDocumentLayout::documentAboutToReload()
|
void TextDocumentLayout::documentAboutToReload(TextDocument *baseTextDocument)
|
||||||
{
|
{
|
||||||
m_reloadMarks = documentClosing();
|
m_reloadMarks = documentClosing();
|
||||||
for (TextMark *mark : std::as_const(m_reloadMarks))
|
for (TextMark *mark : std::as_const(m_reloadMarks)) {
|
||||||
mark->setDeleteCallback([this, mark] { m_reloadMarks.removeOne(mark); });
|
mark->setDeleteCallback([this, mark, baseTextDocument] {
|
||||||
|
baseTextDocument->removeMarkFromMarksCache(mark);
|
||||||
|
m_reloadMarks.removeOne(mark);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextDocumentLayout::documentReloaded(TextDocument *baseTextDocument)
|
void TextDocumentLayout::documentReloaded(TextDocument *baseTextDocument)
|
||||||
@@ -860,4 +869,23 @@ TextSuggestion::TextSuggestion()
|
|||||||
|
|
||||||
TextSuggestion::~TextSuggestion() = default;
|
TextSuggestion::~TextSuggestion() = default;
|
||||||
|
|
||||||
|
#ifdef WITH_TESTS
|
||||||
|
|
||||||
|
void Internal::TextEditorPlugin::testDeletingMarkOnReload()
|
||||||
|
{
|
||||||
|
auto doc = new TextDocument();
|
||||||
|
doc->setFilePath(Utils::TemporaryDirectory::masterDirectoryFilePath() / "TestMarkDoc.txt");
|
||||||
|
doc->setPlainText("asd");
|
||||||
|
auto documentLayout = qobject_cast<TextDocumentLayout *>(doc->document()->documentLayout());
|
||||||
|
QVERIFY(documentLayout);
|
||||||
|
auto mark = new TextMark(doc, 1, TextMarkCategory{"testMark","testMark"});
|
||||||
|
QVERIFY(doc->marks().contains(mark));
|
||||||
|
documentLayout->documentAboutToReload(doc); // removes text marks non-permanently
|
||||||
|
delete mark;
|
||||||
|
documentLayout->documentReloaded(doc); // re-adds text marks
|
||||||
|
QVERIFY(!doc->marks().contains(mark));
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
} // namespace TextEditor
|
} // namespace TextEditor
|
||||||
|
|||||||
@@ -246,7 +246,7 @@ public:
|
|||||||
QRectF blockBoundingRect(const QTextBlock &block) const override;
|
QRectF blockBoundingRect(const QTextBlock &block) const override;
|
||||||
|
|
||||||
TextMarks documentClosing();
|
TextMarks documentClosing();
|
||||||
void documentAboutToReload();
|
void documentAboutToReload(TextDocument *baseTextDocument);
|
||||||
void documentReloaded(TextDocument *baseextDocument);
|
void documentReloaded(TextDocument *baseextDocument);
|
||||||
void updateMarksLineNumber();
|
void updateMarksLineNumber();
|
||||||
void updateMarksBlock(const QTextBlock &block);
|
void updateMarksBlock(const QTextBlock &block);
|
||||||
|
|||||||
@@ -40,6 +40,8 @@ private slots:
|
|||||||
|
|
||||||
void testFormatting_data();
|
void testFormatting_data();
|
||||||
void testFormatting();
|
void testFormatting();
|
||||||
|
|
||||||
|
void testDeletingMarkOnReload();
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user