forked from qt-creator/qt-creator
Merge "Merge remote-tracking branch 'origin/15.0'"
This commit is contained in:
155
dist/changelog/changes-15.0.1.md
vendored
Normal file
155
dist/changelog/changes-15.0.1.md
vendored
Normal 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
|
2
dist/changelog/template.md
vendored
2
dist/changelog/template.md
vendored
@@ -103,6 +103,8 @@ Test Integration
|
||||
|
||||
### Qt Test
|
||||
|
||||
### Boost
|
||||
|
||||
### Catch2
|
||||
|
||||
### CTest
|
||||
|
@@ -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] {
|
||||
|
@@ -124,7 +124,7 @@ private:
|
||||
|
||||
void handleResponse(const DocumentUri &uri, const DocumentSymbolsResult &response);
|
||||
void updateTextCursor(const QModelIndex &proxyIndex);
|
||||
void updateSelectionInTree(const QTextCursor ¤tCursor);
|
||||
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 ¤tCursor)
|
||||
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);
|
||||
|
@@ -96,7 +96,7 @@ private:
|
||||
|
||||
const QRegularExpression filePattern;
|
||||
QList<Task> m_tasks;
|
||||
bool m_inTraceBack;
|
||||
bool m_inTraceBack = false;
|
||||
};
|
||||
|
||||
// RunConfiguration
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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()
|
||||
|
@@ -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
|
||||
|
@@ -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"
|
||||
|
@@ -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):
|
||||
|
Reference in New Issue
Block a user