Merge "Merge remote-tracking branch 'origin/15.0'"

This commit is contained in:
The Qt Project
2025-01-10 14:40:47 +00:00
10 changed files with 202 additions and 25 deletions

155
dist/changelog/changes-15.0.1.md vendored Normal file
View File

@@ -0,0 +1,155 @@
Qt Creator 15.0.1
=================
Qt Creator version 15.0.1 contains bug fixes and new features.
The most important changes are listed in this document. For a complete list of
changes, see the Git log for the Qt Creator sources that you can check out from
the public Git repository or view online at
<https://code.qt.io/cgit/qt-creator/qt-creator.git/log/?id=v15.0.0..v15.0.1>
General
-------
* Fixed the loading of plugins from the user-specific plugin directory
* Fixed a crash when selecting a dynamic library directly in the plugin
installation wizard
Help
----
* Fixed opening links to Academy
([QTCREATORBUG-32134](https://bugreports.qt.io/browse/QTCREATORBUG-32134))
Editing
-------
* Fixed a crash when editors are closed while the document switching window
(`Ctrl+Tab`) is open
* Fixed a missing re-highlighting after the color scheme is changed
([QTCREATORBUG-32116](https://bugreports.qt.io/browse/QTCREATORBUG-32116))
### C++
* Fixed the `Move Definition` refactoring action for template methods
([QTCREATORBUG-31678](https://bugreports.qt.io/browse/QTCREATORBUG-31678))
* Clangd
* Updated prebuilt binaries to LLVM 19.1.6
* Fixed a potential crash when canceling indexing
* Built-in
* Fixed a wrong warning for range-based `for` loops
([QTCREATORBUG-32043](https://bugreports.qt.io/browse/QTCREATORBUG-32043))
### QML
* qmlls
* Turned off by default because of issues with QML modules
* Fixed that triggering refactoring actions was not available with
shortcut and Locator
([QTCREATORBUG-31977](https://bugreports.qt.io/browse/QTCREATORBUG-31977))
* Fixed that auto-completion sometimes did not appear
([QTCREATORBUG-32013](https://bugreports.qt.io/browse/QTCREATORBUG-32013))
* Fixed that a client handler could be created for empty executable paths
Projects
--------
* Fixed the GitHub action created by the Qt Creator plugin wizard
([QTCREATORBUG-32090](https://bugreports.qt.io/browse/QTCREATORBUG-32090))
### CMake
* Fixed that user-defined `UTILITY` targets were missing from Locator
([QTCREATORBUG-32080](https://bugreports.qt.io/browse/QTCREATORBUG-32080))
* Fixed a potential crash with CMake Presets
* Fixed an issue after updating MSVC
([QTCREATORBUG-32165](https://bugreports.qt.io/browse/QTCREATORBUG-32165))
* Fixed that `CMakeLists.txt` could not be found when adding files when
the `FOLDER` property was used
([QTCREATORBUG-32194](https://bugreports.qt.io/browse/QTCREATORBUG-32194))
* Fixed that a rebuild of an imported project could be forced
([QTCREATORBUG-32196](https://bugreports.qt.io/browse/QTCREATORBUG-32196))
* Fixed an issue with watching for external CMake changes
([QTCREATORBUG-31536](https://bugreports.qt.io/browse/QTCREATORBUG-31536))
* Conan
* Fixed the loading of projects that specify a `CMakeDeps` generator
([QTCREATORBUG-32076](https://bugreports.qt.io/browse/QTCREATORBUG-32076))
Debugging
---------
* Fixed a crash when enabling or disabling all breakpoints with the context menu
Analyzer
--------
### Clang
* Clang-Tidy
* Fixed that the required compilation database was not created
([QTCREATORBUG-32098](https://bugreports.qt.io/browse/QTCREATORBUG-32098))
* Fixed an issue with deselecting checks
([QTCREATORBUG-32147](https://bugreports.qt.io/browse/QTCREATORBUG-32147))
### Axivion
* Fixed that settings changes were automatically applied
([QTCREATORBUG-32078](https://bugreports.qt.io/browse/QTCREATORBUG-32078))
* Fixed the handling of projects with special characters in their name
([QTCREATORBUG-32091](https://bugreports.qt.io/browse/QTCREATORBUG-32091))
Terminal
--------
* Fixed the reuse of terminal tabs on macOS
([QTCREATORBUG-32197](https://bugreports.qt.io/browse/QTCREATORBUG-32197))
* Fixed a freeze when closing a terminal on Windows
([QTCREATORBUG-32192](https://bugreports.qt.io/browse/QTCREATORBUG-32192))
* Fixed that terminals automatically scrolled to the end also when not at the
bottom
([QTCREATORBUG-32167](https://bugreports.qt.io/browse/QTCREATORBUG-32167))
Version Control Systems
-----------------------
### Git
* Worked around a potential crash in the Branches view
Test Integration
----------------
### Boost
* Fixed a potential crash when accessing the C++ snapshot
Platforms
---------
### Android
* Fixed a potential crash after reloading packages
Credits for these changes go to:
--------------------------------
Alessandro Portale
André Pönitz
Andrii Semkiv
Christian Kandeler
Christian Stenger
Cristian Adam
David Schulz
Eike Ziller
Jaroslaw Kobus
Krzysztof Chrusciel
Leena Miettinen
Liu Zhangjian
Lukasz Papierkowski
Marcus Tillmanns
Orgad Shaneh
Patryk Stachniak
Robert Löhning
Sami Shalayel
Tim Blechmann
Ville Lavonius

View File

@@ -103,6 +103,8 @@ Test Integration
### Qt Test
### Boost
### Catch2
### CTest

View File

@@ -818,6 +818,7 @@ void DebuggerRunTool::startDebugServerIfNeededAndContinueStartup()
}
d->debuggerServerProc.setCommand(cmd);
d->debuggerServerProc.setWorkingDirectory(m_runParameters.inferior().workingDirectory);
connect(&d->debuggerServerProc, &Process::readyReadStandardOutput,
this, [this] {

View File

@@ -124,7 +124,7 @@ private:
void handleResponse(const DocumentUri &uri, const DocumentSymbolsResult &response);
void updateTextCursor(const QModelIndex &proxyIndex);
void updateSelectionInTree(const QTextCursor &currentCursor);
void updateSelectionInTree();
void onItemActivated(const QModelIndex &index);
QPointer<Client> m_client;
@@ -172,10 +172,7 @@ LanguageClientOutlineWidget::LanguageClientOutlineWidget(Client *client,
connect(&m_view, &QAbstractItemView::activated,
this, &LanguageClientOutlineWidget::onItemActivated);
connect(m_editor->editorWidget(), &TextEditor::TextEditorWidget::cursorPositionChanged,
this, [this](){
if (m_sync)
updateSelectionInTree(m_editor->textCursor());
});
this, &LanguageClientOutlineWidget::updateSelectionInTree);
setFocusProxy(&m_view);
}
@@ -187,8 +184,7 @@ QList<QAction *> LanguageClientOutlineWidget::filterMenuActions() const
void LanguageClientOutlineWidget::setCursorSynchronization(bool syncWithCursor)
{
m_sync = syncWithCursor;
if (m_sync && m_editor)
updateSelectionInTree(m_editor->textCursor());
updateSelectionInTree();
}
void LanguageClientOutlineWidget::setSorted(bool sorted)
@@ -238,9 +234,10 @@ void LanguageClientOutlineWidget::handleResponse(const DocumentUri &uri,
m_model.setInfo(*s, false);
else
m_model.clear();
m_view.expandAll();
// The list has changed, update the current items
updateSelectionInTree(m_editor->textCursor());
updateSelectionInTree();
}
void LanguageClientOutlineWidget::updateTextCursor(const QModelIndex &proxyIndex)
@@ -268,8 +265,11 @@ static LanguageClientOutlineItem *itemForCursor(const LanguageClientOutlineModel
return result;
}
void LanguageClientOutlineWidget::updateSelectionInTree(const QTextCursor &currentCursor)
void LanguageClientOutlineWidget::updateSelectionInTree()
{
if (!m_sync || !m_editor)
return;
const QTextCursor currentCursor = m_editor->editorWidget()->textCursor();
if (LanguageClientOutlineItem *item = itemForCursor(m_model, currentCursor)) {
const QModelIndex index = m_proxyModel.mapFromSource(m_model.indexForItem(item));
m_view.setCurrentIndex(index);

View File

@@ -96,7 +96,7 @@ private:
const QRegularExpression filePattern;
QList<Task> m_tasks;
bool m_inTraceBack;
bool m_inTraceBack = false;
};
// RunConfiguration

View File

@@ -177,7 +177,6 @@ void OutlineWidgetStack::restoreSettings(Utils::QtcSettings *settings, int posit
const Key baseKey = numberedKey("Outline.", position) + '.';
const QString baseKeyString = stringFromKey(baseKey);
bool syncWithEditor = true;
m_widgetSettings.clear();
const QStringList longKeys = settings->allKeys();
for (const QString &longKey : longKeys) {
@@ -187,13 +186,13 @@ void OutlineWidgetStack::restoreSettings(Utils::QtcSettings *settings, int posit
const QString key = longKey.mid(baseKeyString.length());
if (key == QLatin1String("SyncWithEditor")) {
syncWithEditor = settings->value(keyFromString(longKey)).toBool();
m_syncWithEditor = settings->value(keyFromString(longKey)).toBool();
continue;
}
m_widgetSettings.insert(key, settings->value(keyFromString(longKey)));
}
m_toggleSync->setChecked(syncWithEditor);
m_toggleSync->setChecked(m_syncWithEditor);
if (auto outlineWidget = qobject_cast<IOutlineWidget*>(currentWidget()))
outlineWidget->restoreSettings(m_widgetSettings);
}

View File

@@ -4066,9 +4066,9 @@ public:
, m_embed(embed)
, m_textEditorWidget(textEditorWidget)
{
QVBoxLayout *layout = new QVBoxLayout(this);
layout->setContentsMargins(0, 0, 0, 0);
layout->addWidget(m_embed);
m_layout = new QVBoxLayout(this);
updateContentMargins();
m_layout->addWidget(m_embed);
setFixedWidth(m_textEditorWidget->width() - m_textEditorWidget->extraAreaWidth());
setFixedHeight(m_embed->minimumSizeHint().height());
@@ -4076,13 +4076,31 @@ public:
connect(m_textEditorWidget, &TextEditorWidget::resized, this, [this] {
setFixedWidth(m_textEditorWidget->width() - m_textEditorWidget->extraAreaWidth());
});
m_textEditorWidget->viewport()->installEventFilter(this);
}
int embedHeight() { return m_embed->sizeHint().height(); }
bool eventFilter(QObject *obj, QEvent *event) override
{
if (event->type() == QEvent::Resize)
updateContentMargins();
return QObject::eventFilter(obj, event);
}
private:
void updateContentMargins() {
bool verticalScrollBarVisible = m_textEditorWidget->verticalScrollBar()->isVisible();
int verticalScrollBarWidth = m_textEditorWidget->verticalScrollBar()->width();
// Value 4 here is the liitle space between extraArea (space with line numbers) and code.
m_layout->setContentsMargins(0, 0, 4 + (verticalScrollBarVisible ? verticalScrollBarWidth : 0), 0);
}
QWidget *m_embed;
TextEditorWidget *m_textEditorWidget;
QVBoxLayout *m_layout;
};
EmbeddedWidgetInterface::~EmbeddedWidgetInterface()

View File

@@ -90,8 +90,6 @@ void ValgrindToolRunner::stop()
m_isStopping = true;
m_runner.stop();
appendMessage(Tr::tr("Process terminated."), ErrorMessageFormat);
m_progress.reportFinished();
reportStopped();
}
QStringList ValgrindToolRunner::genericToolArguments() const

View File

@@ -61,6 +61,8 @@ static CommandLine valgrindCommand(const CommandLine &command,
class ValgrindProcessPrivate : public QObject
{
Q_OBJECT
public:
ValgrindProcessPrivate(ValgrindProcess *owner)
: q(owner)
@@ -83,6 +85,9 @@ public:
bool m_useTerminal = false;
TaskTreeRunner m_taskTreeRunner;
signals:
void stopRequested();
};
Group ValgrindProcessPrivate::runRecipe() const
@@ -175,6 +180,7 @@ Group ValgrindProcessPrivate::runRecipe() const
connect(processPtr, &Process::readyReadStandardError, this, [this, processPtr] {
emit q->appendMessage(processPtr->readAllStandardError(), StdErrFormat);
});
connect(this, &ValgrindProcessPrivate::stopRequested, processPtr, &Process::stop);
};
const auto onProcessDone = [this, storage](const Process &process) {
emit q->processErrorReceived(process.errorString(), process.error());
@@ -254,7 +260,7 @@ bool ValgrindProcess::start()
void ValgrindProcess::stop()
{
d->m_taskTreeRunner.reset();
emit d->stopRequested();
}
bool ValgrindProcess::runBlocking()
@@ -275,3 +281,5 @@ bool ValgrindProcess::runBlocking()
}
} // namespace Valgrind
#include "valgrindprocess.moc"

View File

@@ -30,12 +30,8 @@ def main():
# invoke QML parsing
invokeMenuItem("Tools", "QML/JS", "Run Checks")
# verify that error properly reported
# internal check returns e.g.'Invalid property name "Color". (M16)'
# but if project is CMake based the messages are generated by qmllint
test.verify(checkSyntaxError(issuesView,
['Binding assigned to "Color", but no property "Color" exists in '
'the current element.'], False, True),
"Verifying if error or warning is properly reported")
test.verify(checkSyntaxError(issuesView, ['Invalid property name "Color". (M16)'], True),
"Verifying if error is properly reported")
# repair error - go to written line
placeCursorToLine(editorArea, testingCodeLine)
for _ in range(14):