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:
|
||||
ninjaPath.setToSettingsTransformation(
|
||||
[](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.setDefaultValue(true);
|
||||
|
||||
@@ -246,8 +246,10 @@ class RevertDialog : public QDialog
|
||||
{
|
||||
public:
|
||||
RevertDialog(const QString &title, QWidget *parent = nullptr);
|
||||
QString revision() const { return m_revisionLineEdit->text(); }
|
||||
|
||||
QLineEdit *m_revisionLineEdit;
|
||||
private:
|
||||
QLineEdit *m_revisionLineEdit = nullptr;
|
||||
};
|
||||
|
||||
FossilPlugin::~FossilPlugin()
|
||||
@@ -428,15 +430,11 @@ void FossilPluginPrivate::revertCurrentFile()
|
||||
const VcsBase::VcsBasePluginState state = currentState();
|
||||
QTC_ASSERT(state.hasFile(), return);
|
||||
|
||||
QDialog dialog(Core::ICore::dialogParent());
|
||||
|
||||
auto revisionLineEdit = new QLineEdit;
|
||||
|
||||
if (dialog.exec() != QDialog::Accepted)
|
||||
return;
|
||||
m_client.revertFile(state.currentFileTopLevel(),
|
||||
state.relativeCurrentFile(),
|
||||
revisionLineEdit->text());
|
||||
RevertDialog dialog(Tr::tr("Revert"), Core::ICore::dialogParent());
|
||||
if (dialog.exec() == QDialog::Accepted) {
|
||||
m_client.revertFile(state.currentFileTopLevel(), state.relativeCurrentFile(),
|
||||
dialog.revision());
|
||||
}
|
||||
}
|
||||
|
||||
void FossilPluginPrivate::statusCurrentFile()
|
||||
@@ -511,7 +509,7 @@ void FossilPluginPrivate::revertAll()
|
||||
|
||||
RevertDialog dialog(Tr::tr("Revert"), Core::ICore::dialogParent());
|
||||
if (dialog.exec() == QDialog::Accepted)
|
||||
m_client.revertAll(state.topLevel(), dialog.m_revisionLineEdit->text());
|
||||
m_client.revertAll(state.topLevel(), dialog.revision());
|
||||
}
|
||||
|
||||
void FossilPluginPrivate::statusMulti()
|
||||
@@ -627,7 +625,7 @@ void FossilPluginPrivate::update()
|
||||
|
||||
RevertDialog dialog(Tr::tr("Update"), Core::ICore::dialogParent());
|
||||
if (dialog.exec() == QDialog::Accepted)
|
||||
m_client.update(state.topLevel(), dialog.m_revisionLineEdit->text());
|
||||
m_client.update(state.topLevel(), dialog.revision());
|
||||
}
|
||||
|
||||
void FossilPluginPrivate::configureRepository()
|
||||
|
||||
@@ -843,7 +843,7 @@ bool TextDocument::reload(QString *errorString, const FilePath &realFilePath)
|
||||
auto documentLayout =
|
||||
qobject_cast<TextDocumentLayout*>(d->m_document.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)
|
||||
== OpenResult::Success;
|
||||
|
||||
@@ -4,9 +4,14 @@
|
||||
#include "textdocumentlayout.h"
|
||||
#include "fontsettings.h"
|
||||
#include "textdocument.h"
|
||||
#include "texteditorplugin.h"
|
||||
#include "texteditorsettings.h"
|
||||
|
||||
#include <utils/qtcassert.h>
|
||||
#include <utils/temporarydirectory.h>
|
||||
|
||||
#include <QDebug>
|
||||
#include <QTest>
|
||||
|
||||
namespace TextEditor {
|
||||
|
||||
@@ -667,11 +672,15 @@ TextMarks TextDocumentLayout::documentClosing()
|
||||
return marks;
|
||||
}
|
||||
|
||||
void TextDocumentLayout::documentAboutToReload()
|
||||
void TextDocumentLayout::documentAboutToReload(TextDocument *baseTextDocument)
|
||||
{
|
||||
m_reloadMarks = documentClosing();
|
||||
for (TextMark *mark : std::as_const(m_reloadMarks))
|
||||
mark->setDeleteCallback([this, mark] { m_reloadMarks.removeOne(mark); });
|
||||
for (TextMark *mark : std::as_const(m_reloadMarks)) {
|
||||
mark->setDeleteCallback([this, mark, baseTextDocument] {
|
||||
baseTextDocument->removeMarkFromMarksCache(mark);
|
||||
m_reloadMarks.removeOne(mark);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
void TextDocumentLayout::documentReloaded(TextDocument *baseTextDocument)
|
||||
@@ -860,4 +869,23 @@ TextSuggestion::TextSuggestion()
|
||||
|
||||
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
|
||||
|
||||
@@ -246,7 +246,7 @@ public:
|
||||
QRectF blockBoundingRect(const QTextBlock &block) const override;
|
||||
|
||||
TextMarks documentClosing();
|
||||
void documentAboutToReload();
|
||||
void documentAboutToReload(TextDocument *baseTextDocument);
|
||||
void documentReloaded(TextDocument *baseextDocument);
|
||||
void updateMarksLineNumber();
|
||||
void updateMarksBlock(const QTextBlock &block);
|
||||
|
||||
@@ -40,6 +40,8 @@ private slots:
|
||||
|
||||
void testFormatting_data();
|
||||
void testFormatting();
|
||||
|
||||
void testDeletingMarkOnReload();
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user