forked from qt-creator/qt-creator
Merge "Merge remote-tracking branch 'origin/4.15'"
This commit is contained in:
@@ -857,6 +857,7 @@ function(qtc_copy_to_builddir custom_target_name)
|
|||||||
set(timestampFiles)
|
set(timestampFiles)
|
||||||
|
|
||||||
qtc_output_binary_dir(_output_binary_dir)
|
qtc_output_binary_dir(_output_binary_dir)
|
||||||
|
set(allFiles ${_arg_FILES})
|
||||||
|
|
||||||
foreach(srcFile ${_arg_FILES})
|
foreach(srcFile ${_arg_FILES})
|
||||||
string(MAKE_C_IDENTIFIER "${srcFile}" destinationTimestampFilePart)
|
string(MAKE_C_IDENTIFIER "${srcFile}" destinationTimestampFilePart)
|
||||||
@@ -891,6 +892,7 @@ function(qtc_copy_to_builddir custom_target_name)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
file(GLOB_RECURSE filesToCopy "${srcDirectory}/*")
|
file(GLOB_RECURSE filesToCopy "${srcDirectory}/*")
|
||||||
|
list(APPEND allFiles ${filesToCopy})
|
||||||
add_custom_command(OUTPUT "${destinationTimestampFileName}"
|
add_custom_command(OUTPUT "${destinationTimestampFileName}"
|
||||||
COMMAND "${CMAKE_COMMAND}" -E copy_directory "${srcDirectory}" "${destinationDirectory}"
|
COMMAND "${CMAKE_COMMAND}" -E copy_directory "${srcDirectory}" "${destinationDirectory}"
|
||||||
COMMAND "${CMAKE_COMMAND}" -E touch "${destinationTimestampFileName}"
|
COMMAND "${CMAKE_COMMAND}" -E touch "${destinationTimestampFileName}"
|
||||||
@@ -901,7 +903,8 @@ function(qtc_copy_to_builddir custom_target_name)
|
|||||||
)
|
)
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
add_custom_target("${custom_target_name}" ALL DEPENDS ${timestampFiles})
|
add_custom_target("${custom_target_name}" ALL DEPENDS ${timestampFiles}
|
||||||
|
SOURCES ${allFiles})
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(qtc_add_resources target resourceName)
|
function(qtc_add_resources target resourceName)
|
||||||
|
121
dist/changes-4.15.1.md
vendored
Normal file
121
dist/changes-4.15.1.md
vendored
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
Qt Creator 4.15.1
|
||||||
|
=================
|
||||||
|
|
||||||
|
Qt Creator version 4.15.1 contains bug fixes.
|
||||||
|
|
||||||
|
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. For example:
|
||||||
|
|
||||||
|
git clone git://code.qt.io/qt-creator/qt-creator.git
|
||||||
|
git log --cherry-pick --pretty=oneline origin/v4.15.0..v4.15.1
|
||||||
|
|
||||||
|
General
|
||||||
|
-------
|
||||||
|
|
||||||
|
* Fixed crash in `Search Results` pane (QTCREATORBUG-25713)
|
||||||
|
* Fixed crash when showing tooltips after screen configuration changes
|
||||||
|
(QTCREATORBUG-25747)
|
||||||
|
* Fixed environment selection for external tools (QTCREATORBUG-25634)
|
||||||
|
|
||||||
|
Editing
|
||||||
|
-------
|
||||||
|
|
||||||
|
* Fixed crash when opening settings from tooltip (QTCREATORBUG-25623)
|
||||||
|
* Fixed hiding of function hints (QTCREATORBUG-25664)
|
||||||
|
* Fixed vanishing text marks (QTCREATORBUG-25427)
|
||||||
|
|
||||||
|
### C++
|
||||||
|
|
||||||
|
* Fixed freeze when updating project while indexing is running
|
||||||
|
|
||||||
|
### QML
|
||||||
|
|
||||||
|
* Fixed wrong warning for blocks with `case` and `let` (QTCREATORBUG-24214)
|
||||||
|
|
||||||
|
### QRC
|
||||||
|
|
||||||
|
* Fixed that `compress-algo` tags were removed (QTCREATORBUG-25706)
|
||||||
|
|
||||||
|
Projects
|
||||||
|
--------
|
||||||
|
|
||||||
|
* Fixed restoration of `Projects` mode layout (QTCREATORBUG-25551)
|
||||||
|
|
||||||
|
### Wizards
|
||||||
|
|
||||||
|
* Fixed `Fetch data asynchronously` for list and table models
|
||||||
|
|
||||||
|
### CMake
|
||||||
|
|
||||||
|
* Fixed issues when switching configurations or running CMake while parsing
|
||||||
|
(QTCREATORBUG-25588, QTCREATORBUG-25287)
|
||||||
|
* Fixed crash when cancelling scanning the project tree (QTCREATORBUG-24564)
|
||||||
|
* Fixed custom targets missing in Locator (QTCREATORBUG-25726)
|
||||||
|
|
||||||
|
Debugging
|
||||||
|
---------
|
||||||
|
|
||||||
|
### GDB
|
||||||
|
|
||||||
|
* Fixed crash (QTCREATORBUG-25745)
|
||||||
|
|
||||||
|
Test Integration
|
||||||
|
----------------
|
||||||
|
|
||||||
|
* Fixed selection of individual tests (QTCREATORBUG-25702)
|
||||||
|
|
||||||
|
### Catch2
|
||||||
|
|
||||||
|
* Fixed issues with Catch2 3.0 (QTCREATORBUG-25582)
|
||||||
|
|
||||||
|
### GoogleTest
|
||||||
|
|
||||||
|
* Fixed crash with empty test name
|
||||||
|
|
||||||
|
Platforms
|
||||||
|
---------
|
||||||
|
|
||||||
|
### Windows
|
||||||
|
|
||||||
|
* Fixed issues with `clang-cl` toolchain (QTCREATORBUG-25690,
|
||||||
|
QTCREATORBUG-25693, QTCREATORBUG-25698)
|
||||||
|
|
||||||
|
### Remote Linux
|
||||||
|
|
||||||
|
* Fixed install step (QTCREATORBUG-25359)
|
||||||
|
|
||||||
|
### Android
|
||||||
|
|
||||||
|
* Improved startup time (QTCREATORBUG-25463)
|
||||||
|
* Fixed `Checking pending licenses` (QTCREATORBUG-25667)
|
||||||
|
|
||||||
|
### MCU
|
||||||
|
|
||||||
|
* Added support for Cypress Traveo II (UL-4242)
|
||||||
|
* Fixed CMake generator for GHS compiler (UL-4247)
|
||||||
|
|
||||||
|
Credits for these changes go to:
|
||||||
|
--------------------------------
|
||||||
|
Alessandro Portale
|
||||||
|
André Pönitz
|
||||||
|
Christiaan Janssen
|
||||||
|
Christian Kandeler
|
||||||
|
Christian Stenger
|
||||||
|
Cristian Adam
|
||||||
|
David Schulz
|
||||||
|
Eike Ziller
|
||||||
|
Erik Verbruggen
|
||||||
|
Ivan Komissarov
|
||||||
|
Jaroslaw Kobus
|
||||||
|
Knud Dollereder
|
||||||
|
Leena Miettinen
|
||||||
|
Marco Bubke
|
||||||
|
Michael Winkelmann
|
||||||
|
Miikka Heikkinen
|
||||||
|
Mikhail Khachayants
|
||||||
|
Mitch Curtis
|
||||||
|
Tapani Mattila
|
||||||
|
Thiago Macieira
|
||||||
|
Thomas Hartmann
|
||||||
|
Tim Jenssen
|
@@ -312,8 +312,8 @@ void FileApiReader::endState(const QFileInfo &replyFi)
|
|||||||
|
|
||||||
void FileApiReader::makeBackupConfiguration(bool store)
|
void FileApiReader::makeBackupConfiguration(bool store)
|
||||||
{
|
{
|
||||||
FilePath reply = m_parameters.buildDirectory.pathAppended(".cmake/api/v1/reply");
|
FilePath reply = m_parameters.workDirectory.pathAppended(".cmake/api/v1/reply");
|
||||||
FilePath replyPrev = m_parameters.buildDirectory.pathAppended(".cmake/api/v1/reply.prev");
|
FilePath replyPrev = m_parameters.workDirectory.pathAppended(".cmake/api/v1/reply.prev");
|
||||||
if (!store)
|
if (!store)
|
||||||
std::swap(reply, replyPrev);
|
std::swap(reply, replyPrev);
|
||||||
|
|
||||||
@@ -327,8 +327,8 @@ void FileApiReader::makeBackupConfiguration(bool store)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FilePath cmakeCacheTxt = m_parameters.buildDirectory.pathAppended("CMakeCache.txt");
|
FilePath cmakeCacheTxt = m_parameters.workDirectory.pathAppended("CMakeCache.txt");
|
||||||
FilePath cmakeCacheTxtPrev = m_parameters.buildDirectory.pathAppended("CMakeCache.txt.prev");
|
FilePath cmakeCacheTxtPrev = m_parameters.workDirectory.pathAppended("CMakeCache.txt.prev");
|
||||||
if (!store)
|
if (!store)
|
||||||
std::swap(cmakeCacheTxt, cmakeCacheTxtPrev);
|
std::swap(cmakeCacheTxt, cmakeCacheTxtPrev);
|
||||||
|
|
||||||
@@ -371,6 +371,10 @@ void FileApiReader::startCMakeState(const QStringList &configurationArguments)
|
|||||||
connect(m_cmakeProcess.get(), &CMakeProcess::finished, this, &FileApiReader::cmakeFinishedState);
|
connect(m_cmakeProcess.get(), &CMakeProcess::finished, this, &FileApiReader::cmakeFinishedState);
|
||||||
|
|
||||||
qCDebug(cmakeFileApiMode) << ">>>>>> Running cmake with arguments:" << configurationArguments;
|
qCDebug(cmakeFileApiMode) << ">>>>>> Running cmake with arguments:" << configurationArguments;
|
||||||
|
// Reset watcher:
|
||||||
|
m_watcher.removeFiles(m_watcher.files());
|
||||||
|
m_watcher.removeDirectories(m_watcher.directories());
|
||||||
|
|
||||||
makeBackupConfiguration(true);
|
makeBackupConfiguration(true);
|
||||||
writeConfigurationIntoBuildDirectory(configurationArguments);
|
writeConfigurationIntoBuildDirectory(configurationArguments);
|
||||||
m_cmakeProcess->run(m_parameters, configurationArguments);
|
m_cmakeProcess->run(m_parameters, configurationArguments);
|
||||||
@@ -386,6 +390,8 @@ void FileApiReader::cmakeFinishedState()
|
|||||||
if (m_lastCMakeExitCode != 0)
|
if (m_lastCMakeExitCode != 0)
|
||||||
makeBackupConfiguration(false);
|
makeBackupConfiguration(false);
|
||||||
|
|
||||||
|
FileApiParser::setupCMakeFileApi(m_parameters.workDirectory, m_watcher);
|
||||||
|
|
||||||
endState(FileApiParser::scanForCMakeReplyFile(m_parameters.workDirectory));
|
endState(FileApiParser::scanForCMakeReplyFile(m_parameters.workDirectory));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -32,6 +32,8 @@
|
|||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
#include <projectexplorer/task.h>
|
#include <projectexplorer/task.h>
|
||||||
#include <projectexplorer/taskhub.h>
|
#include <projectexplorer/taskhub.h>
|
||||||
|
#include <projectexplorer/project.h>
|
||||||
|
#include <projectexplorer/session.h>
|
||||||
#include <utils/fileutils.h>
|
#include <utils/fileutils.h>
|
||||||
#include <utils/outputformatter.h>
|
#include <utils/outputformatter.h>
|
||||||
|
|
||||||
@@ -80,8 +82,13 @@ AssetExportDialog::AssetExportDialog(const Utils::FilePath &exportPath,
|
|||||||
{
|
{
|
||||||
m_ui->setupUi(this);
|
m_ui->setupUi(this);
|
||||||
|
|
||||||
m_ui->exportPath->setFilePath(exportPath);
|
m_ui->exportPath->setExpectedKind(Utils::PathChooser::Kind::SaveFile);
|
||||||
m_ui->exportPath->setPromptDialogTitle(tr("Choose Export Path"));
|
m_ui->exportPath->setFilePath(
|
||||||
|
exportPath.pathAppended(
|
||||||
|
ProjectExplorer::SessionManager::startupProject()->displayName() + ".metadata"
|
||||||
|
));
|
||||||
|
m_ui->exportPath->setPromptDialogTitle(tr("Choose Export File"));
|
||||||
|
m_ui->exportPath->setPromptDialogFilter(tr("Metadata file (*.metadata)"));
|
||||||
m_ui->exportPath->lineEdit()->setReadOnly(true);
|
m_ui->exportPath->lineEdit()->setReadOnly(true);
|
||||||
m_ui->exportPath->addButton(tr("Open"), this, [this]() {
|
m_ui->exportPath->addButton(tr("Open"), this, [this]() {
|
||||||
Core::FileUtils::showInGraphicalShell(Core::ICore::mainWindow(), m_ui->exportPath->path());
|
Core::FileUtils::showInGraphicalShell(Core::ICore::mainWindow(), m_ui->exportPath->path());
|
||||||
@@ -92,6 +99,7 @@ AssetExportDialog::AssetExportDialog(const Utils::FilePath &exportPath,
|
|||||||
m_ui->advancedOptions->setWidget(optionsWidget);
|
m_ui->advancedOptions->setWidget(optionsWidget);
|
||||||
auto optionsLayout = new QHBoxLayout(optionsWidget);
|
auto optionsLayout = new QHBoxLayout(optionsWidget);
|
||||||
optionsLayout->setContentsMargins(8, 8, 8, 8);
|
optionsLayout->setContentsMargins(8, 8, 8, 8);
|
||||||
|
|
||||||
m_exportAssetsCheck = new QCheckBox(tr("Export assets"), this);
|
m_exportAssetsCheck = new QCheckBox(tr("Export assets"), this);
|
||||||
m_exportAssetsCheck->setChecked(true);
|
m_exportAssetsCheck->setChecked(true);
|
||||||
optionsLayout->addWidget(m_exportAssetsCheck);
|
optionsLayout->addWidget(m_exportAssetsCheck);
|
||||||
@@ -153,7 +161,12 @@ void AssetExportDialog::onExport()
|
|||||||
TaskHub::clearTasks(Constants::TASK_CATEGORY_ASSET_EXPORT);
|
TaskHub::clearTasks(Constants::TASK_CATEGORY_ASSET_EXPORT);
|
||||||
m_exportLogs->clear();
|
m_exportLogs->clear();
|
||||||
|
|
||||||
m_assetExporter.exportQml(m_filePathModel.files(), m_ui->exportPath->filePath(),
|
Utils::FilePath selectedPath = m_ui->exportPath->filePath();
|
||||||
|
Utils::FilePath exportPath = m_perComponentExportCheck->isChecked() ?
|
||||||
|
(selectedPath.isDir() ? selectedPath : selectedPath.parentDir()) :
|
||||||
|
selectedPath;
|
||||||
|
|
||||||
|
m_assetExporter.exportQml(m_filePathModel.files(), exportPath,
|
||||||
m_exportAssetsCheck->isChecked(),
|
m_exportAssetsCheck->isChecked(),
|
||||||
m_perComponentExportCheck->isChecked());
|
m_perComponentExportCheck->isChecked());
|
||||||
}
|
}
|
||||||
|
@@ -123,7 +123,9 @@ void AssetExporter::exportQml(const Utils::FilePaths &qmlFiles, const Utils::Fil
|
|||||||
{
|
{
|
||||||
m_perComponentExport = perComponentExport;
|
m_perComponentExport = perComponentExport;
|
||||||
ExportNotification::addInfo(tr("Export root directory: %1.\nExporting assets: %2")
|
ExportNotification::addInfo(tr("Export root directory: %1.\nExporting assets: %2")
|
||||||
.arg(exportPath.toUserOutput())
|
.arg(exportPath.isDir()
|
||||||
|
? exportPath.toUserOutput()
|
||||||
|
: exportPath.parentDir().toUserOutput())
|
||||||
.arg(exportAssets? tr("Yes") : tr("No")));
|
.arg(exportAssets? tr("Yes") : tr("No")));
|
||||||
|
|
||||||
if (m_perComponentExport)
|
if (m_perComponentExport)
|
||||||
@@ -134,7 +136,8 @@ void AssetExporter::exportQml(const Utils::FilePaths &qmlFiles, const Utils::Fil
|
|||||||
m_totalFileCount = m_exportFiles.count();
|
m_totalFileCount = m_exportFiles.count();
|
||||||
m_components.clear();
|
m_components.clear();
|
||||||
m_componentUuidCache.clear();
|
m_componentUuidCache.clear();
|
||||||
m_exportPath = exportPath;
|
m_exportPath = exportPath.isDir() ? exportPath : exportPath.parentDir();
|
||||||
|
m_exportFile = exportPath.fileName();
|
||||||
m_currentState.change(ParsingState::Parsing);
|
m_currentState.change(ParsingState::Parsing);
|
||||||
if (exportAssets)
|
if (exportAssets)
|
||||||
m_assetDumper = make_unique<AssetDumper>();
|
m_assetDumper = make_unique<AssetDumper>();
|
||||||
@@ -437,7 +440,7 @@ void AssetExporter::writeMetadata() const
|
|||||||
QJsonArray artboards;
|
QJsonArray artboards;
|
||||||
std::transform(m_components.cbegin(), m_components.cend(), back_inserter(artboards),
|
std::transform(m_components.cbegin(), m_components.cend(), back_inserter(artboards),
|
||||||
[](const unique_ptr<Component> &c) {return c->json(); });
|
[](const unique_ptr<Component> &c) {return c->json(); });
|
||||||
writeFile(m_exportPath.pathAppended(projectName + ".metadata"), artboards);
|
writeFile(m_exportPath.pathAppended(m_exportFile), artboards);
|
||||||
}
|
}
|
||||||
notifyProgress(1.0);
|
notifyProgress(1.0);
|
||||||
ExportNotification::addInfo(tr("Export finished."));
|
ExportNotification::addInfo(tr("Export finished."));
|
||||||
|
@@ -112,6 +112,7 @@ private:
|
|||||||
Utils::FilePaths m_exportFiles;
|
Utils::FilePaths m_exportFiles;
|
||||||
unsigned int m_totalFileCount = 0;
|
unsigned int m_totalFileCount = 0;
|
||||||
Utils::FilePath m_exportPath;
|
Utils::FilePath m_exportPath;
|
||||||
|
QString m_exportFile;
|
||||||
bool m_perComponentExport = false;
|
bool m_perComponentExport = false;
|
||||||
std::vector<std::unique_ptr<Component>> m_components;
|
std::vector<std::unique_ptr<Component>> m_components;
|
||||||
QHash<QString, QString> m_componentUuidCache;
|
QHash<QString, QString> m_componentUuidCache;
|
||||||
|
@@ -2046,7 +2046,7 @@ void FormEditorFlowDecisionItem::updateGeometry()
|
|||||||
|
|
||||||
QRectF textRect(0, 0, 100, 20);
|
QRectF textRect(0, 0, 100, 20);
|
||||||
|
|
||||||
Qt::Corner corner = Qt::TopLeftCorner;
|
Qt::Corner corner = Qt::TopRightCorner;
|
||||||
if (qmlItemNode().modelNode().hasAuxiliaryData("dialogLabelPosition"))
|
if (qmlItemNode().modelNode().hasAuxiliaryData("dialogLabelPosition"))
|
||||||
corner = qmlItemNode().modelNode().auxiliaryData("dialogLabelPosition").value<Qt::Corner>();
|
corner = qmlItemNode().modelNode().auxiliaryData("dialogLabelPosition").value<Qt::Corner>();
|
||||||
|
|
||||||
@@ -2191,7 +2191,7 @@ void FormEditorFlowDecisionItem::paint(QPainter *painter, const QStyleOptionGrap
|
|||||||
|
|
||||||
QRectF textRect(0, 0, 100, 20);
|
QRectF textRect(0, 0, 100, 20);
|
||||||
|
|
||||||
Qt::Corner corner = Qt::TopLeftCorner;
|
Qt::Corner corner = Qt::TopRightCorner;
|
||||||
if (qmlItemNode().modelNode().hasAuxiliaryData("dialogLabelPosition"))
|
if (qmlItemNode().modelNode().hasAuxiliaryData("dialogLabelPosition"))
|
||||||
corner = qmlItemNode().modelNode().auxiliaryData("dialogLabelPosition").value<Qt::Corner>();
|
corner = qmlItemNode().modelNode().auxiliaryData("dialogLabelPosition").value<Qt::Corner>();
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user