Merge remote-tracking branch 'origin/11.0'

Change-Id: Ibe5040142ca38fed77ffed163212baf22592e392
This commit is contained in:
Eike Ziller
2023-08-04 14:57:29 +02:00
6 changed files with 51 additions and 17 deletions

View File

@@ -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);

View File

@@ -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()

View File

@@ -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;

View File

@@ -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

View File

@@ -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);

View File

@@ -40,6 +40,8 @@ private slots:
void testFormatting_data(); void testFormatting_data();
void testFormatting(); void testFormatting();
void testDeletingMarkOnReload();
#endif #endif
}; };