aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--scripts/common.py10
-rwxr-xr-xscripts/createDistPackage.py7
-rwxr-xr-xscripts/makedmg.py6
-rw-r--r--src/plugins/android/androidtoolchain.cpp4
-rw-r--r--src/plugins/debugger/qml/qmlengine.cpp4
-rw-r--r--src/plugins/ios/iosrunconfiguration.cpp24
-rw-r--r--src/plugins/ios/iosrunconfiguration.h2
-rw-r--r--src/plugins/projectexplorer/devicesupport/devicecheckbuildstep.cpp4
-rw-r--r--src/plugins/projectexplorer/devicesupport/devicecheckbuildstep.h2
-rw-r--r--src/plugins/qbsprojectmanager/qbsbuildstep.cpp2
-rw-r--r--src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp2
-rw-r--r--src/plugins/qnx/qnxconstants.h2
-rw-r--r--src/plugins/qnx/qnxdeployconfiguration.cpp2
-rw-r--r--src/plugins/qnx/qnxplugin.cpp20
-rw-r--r--src/plugins/qtsupport/qtoutputformatter.cpp7
-rw-r--r--src/plugins/valgrind/callgrindtool.cpp11
16 files changed, 93 insertions, 16 deletions
diff --git a/scripts/common.py b/scripts/common.py
index b8f640377e..91ff78ad4e 100644
--- a/scripts/common.py
+++ b/scripts/common.py
@@ -177,3 +177,13 @@ def is_debug(path, filenames):
def is_not_debug(path, filenames):
files = [fn for fn in filenames if os.path.isfile(os.path.join(path, fn))]
return [fn for fn in files if not is_debug_file(os.path.join(path, fn))]
+
+def codesign(app_path):
+ signing_identity = os.environ.get('SIGNING_IDENTITY')
+ if is_mac_platform() and signing_identity:
+ codesign_call = ['codesign', '--force', '--deep', '-s', signing_identity, '-v']
+ signing_flags = os.environ.get('SIGNING_FLAGS')
+ if signing_flags:
+ codesign_call.extend(signing_flags.split())
+ codesign_call.append(app_path)
+ subprocess.check_call(codesign_call)
diff --git a/scripts/createDistPackage.py b/scripts/createDistPackage.py
index 2b0c38ea5f..a2bdf1bd19 100755
--- a/scripts/createDistPackage.py
+++ b/scripts/createDistPackage.py
@@ -33,7 +33,8 @@ import tempfile
import common
def parse_arguments():
- parser = argparse.ArgumentParser(description="Create Qt Creator package, filtering out debug information files.")
+ parser = argparse.ArgumentParser(description="Create Qt Creator package, filtering out debug information files.",
+ epilog="To sign the contents before packaging on macOS, set the SIGNING_IDENTITY and optionally the SIGNING_FLAGS environment variables.")
parser.add_argument('--7z', help='path to 7z binary',
default='7z.exe' if common.is_windows_platform() else '7z',
metavar='<7z_binary>', dest='sevenzip')
@@ -52,6 +53,10 @@ def main():
try:
common.copytree(arguments.source_directory, tempdir, symlinks=True,
ignore=(common.is_not_debug if arguments.debug else common.is_debug))
+ # on macOS we might have to codesign (again) to account for removed debug info
+ if not arguments.debug:
+ common.codesign(tempdir)
+ # package
zip_source = os.path.join(tempdir, '*') if arguments.exclude_toplevel else tempdir
subprocess.check_call([arguments.sevenzip, 'a', '-mx9',
arguments.target_archive, zip_source])
diff --git a/scripts/makedmg.py b/scripts/makedmg.py
index 33721f90a7..7911a1be00 100755
--- a/scripts/makedmg.py
+++ b/scripts/makedmg.py
@@ -34,7 +34,8 @@ import time
import common
def parse_arguments():
- parser = argparse.ArgumentParser(description='Create Qt Creator disk image, filtering out debug information files.')
+ parser = argparse.ArgumentParser(description='Create Qt Creator disk image, filtering out debug information files.',
+ epilog="To sign the contents before packaging on macOS, set the SIGNING_IDENTITY and optionally the SIGNING_FLAGS environment variables.")
parser.add_argument('target_diskimage', help='output .dmg file to create')
parser.add_argument('dmg_volumename', help='volume name to use for the disk image')
parser.add_argument('source_directory', help='directory with the Qt Creator sources')
@@ -47,6 +48,9 @@ def main():
tempdir = os.path.join(tempdir_base, os.path.basename(arguments.binary_directory))
try:
common.copytree(arguments.binary_directory, tempdir, symlinks=True, ignore=common.is_debug)
+ if common.is_mac_platform():
+ app_path = [app for app in os.listdir(tempdir) if app.endswith('.app')][0]
+ common.codesign(os.path.join(tempdir, app_path))
os.symlink('/Applications', os.path.join(tempdir, 'Applications'))
shutil.copy(os.path.join(arguments.source_directory, 'LICENSE.GPL3-EXCEPT'), tempdir)
dmg_cmd = ['hdiutil', 'create', '-srcfolder', tempdir, '-volname', arguments.dmg_volumename,
diff --git a/src/plugins/android/androidtoolchain.cpp b/src/plugins/android/androidtoolchain.cpp
index 55940fa5a9..ffdef58e9d 100644
--- a/src/plugins/android/androidtoolchain.cpp
+++ b/src/plugins/android/androidtoolchain.cpp
@@ -116,7 +116,9 @@ static void addSystemHeaderPaths(QList<ProjectExplorer::HeaderPath> &paths,
const Utils::FileName ndkPath = AndroidConfigurations::currentConfig().ndkLocation();
// Get short version (for example 4.9)
- const QString clangVersion = version.left(version.lastIndexOf('.'));
+ auto versionNumber = QVersionNumber::fromString(version);
+ const QString clangVersion = QString("%1.%2")
+ .arg(versionNumber.majorVersion()).arg(versionNumber.minorVersion());
Utils::FileName stdcppPath = ndkPath;
stdcppPath.appendPath("sources/cxx-stl/gnu-libstdc++/" + clangVersion);
Utils::FileName includePath = stdcppPath;
diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp
index fa69e81653..b428a88ea3 100644
--- a/src/plugins/debugger/qml/qmlengine.cpp
+++ b/src/plugins/debugger/qml/qmlengine.cpp
@@ -2166,6 +2166,10 @@ void QmlEnginePrivate::handleFrame(const QVariantMap &response)
watchHandler->insertItem(item);
evaluate(exp, -1, [this, iname, exp](const QVariantMap &response) {
handleEvaluateExpression(response, iname, exp);
+
+ // If there are no scopes, "this" may be the only thing to look up.
+ if (currentFrameScopes.isEmpty())
+ checkForFinishedUpdate();
});
}
diff --git a/src/plugins/ios/iosrunconfiguration.cpp b/src/plugins/ios/iosrunconfiguration.cpp
index 10370dd8db..092500de6d 100644
--- a/src/plugins/ios/iosrunconfiguration.cpp
+++ b/src/plugins/ios/iosrunconfiguration.cpp
@@ -108,10 +108,19 @@ IosRunConfiguration::IosRunConfiguration(Target *target, Core::Id id)
void IosRunConfiguration::deviceChanges()
{
+ updateDeviceType();
updateDisplayNames();
updateEnabledState();
}
+void IosRunConfiguration::updateDeviceType()
+{
+ if (DeviceTypeKitInformation::deviceTypeId(target()->kit()) == Constants::IOS_DEVICE_TYPE)
+ m_deviceType = IosDeviceType(IosDeviceType::IosDevice);
+ else if (m_deviceType.type == IosDeviceType::IosDevice)
+ m_deviceType = IosDeviceType(IosDeviceType::SimulatedDevice);
+}
+
QWidget *IosRunConfiguration::createConfigurationWidget()
{
return new IosRunConfigurationWidget(this);
@@ -119,10 +128,6 @@ QWidget *IosRunConfiguration::createConfigurationWidget()
void IosRunConfiguration::updateDisplayNames()
{
- if (DeviceTypeKitInformation::deviceTypeId(target()->kit()) == Constants::IOS_DEVICE_TYPE)
- m_deviceType = IosDeviceType(IosDeviceType::IosDevice);
- else if (m_deviceType.type == IosDeviceType::IosDevice)
- m_deviceType = IosDeviceType(IosDeviceType::SimulatedDevice);
IDevice::ConstPtr dev = DeviceKitInformation::device(target()->kit());
const QString devName = dev.isNull() ? IosDevice::name() : dev->displayName();
setDefaultDisplayName(tr("Run on %1").arg(devName));
@@ -235,10 +240,7 @@ bool IosRunConfiguration::fromMap(const QVariantMap &map)
bool deviceTypeIsInt;
map.value(deviceTypeKey).toInt(&deviceTypeIsInt);
if (deviceTypeIsInt || !m_deviceType.fromMap(map.value(deviceTypeKey).toMap())) {
- if (DeviceTypeKitInformation::deviceTypeId(target()->kit()) == Constants::IOS_DEVICE_TYPE)
- m_deviceType = IosDeviceType(IosDeviceType::IosDevice);
- else
- m_deviceType = IosDeviceType(IosDeviceType::SimulatedDevice);
+ updateDeviceType();
}
updateDisplayNames();
@@ -332,6 +334,12 @@ void IosRunConfiguration::setDeviceType(const IosDeviceType &deviceType)
m_deviceType = deviceType;
}
+void IosRunConfiguration::doAdditionalSetup(const RunConfigurationCreationInfo &)
+{
+ updateDeviceType();
+ updateDisplayNames();
+}
+
IosRunConfigurationWidget::IosRunConfigurationWidget(IosRunConfiguration *runConfiguration)
: m_runConfiguration(runConfiguration)
{
diff --git a/src/plugins/ios/iosrunconfiguration.h b/src/plugins/ios/iosrunconfiguration.h
index 6bb07db6d2..817ed7db5f 100644
--- a/src/plugins/ios/iosrunconfiguration.h
+++ b/src/plugins/ios/iosrunconfiguration.h
@@ -57,6 +57,7 @@ public:
IosDeviceType deviceType() const;
void setDeviceType(const IosDeviceType &deviceType);
+ void doAdditionalSetup(const ProjectExplorer::RunConfigurationCreationInfo &) override;
bool fromMap(const QVariantMap &map) override;
QVariantMap toMap() const override;
@@ -66,6 +67,7 @@ signals:
private:
void deviceChanges();
friend class IosRunConfigurationWidget;
+ void updateDeviceType();
void updateDisplayNames();
void updateEnabledState() final;
bool canRunForNode(const ProjectExplorer::Node *node) const final;
diff --git a/src/plugins/projectexplorer/devicesupport/devicecheckbuildstep.cpp b/src/plugins/projectexplorer/devicesupport/devicecheckbuildstep.cpp
index 2d6164c9ae..f90f9843c2 100644
--- a/src/plugins/projectexplorer/devicesupport/devicecheckbuildstep.cpp
+++ b/src/plugins/projectexplorer/devicesupport/devicecheckbuildstep.cpp
@@ -38,7 +38,7 @@ using namespace ProjectExplorer;
DeviceCheckBuildStep::DeviceCheckBuildStep(BuildStepList *bsl)
: BuildStep(bsl, stepId())
{
- setDefaultDisplayName(stepDisplayName());
+ setDefaultDisplayName(displayName());
}
bool DeviceCheckBuildStep::init(QList<const BuildStep *> &earlierSteps)
@@ -92,7 +92,7 @@ Core::Id DeviceCheckBuildStep::stepId()
return "ProjectExplorer.DeviceCheckBuildStep";
}
-QString DeviceCheckBuildStep::stepDisplayName()
+QString DeviceCheckBuildStep::displayName()
{
return tr("Check for a configured device");
}
diff --git a/src/plugins/projectexplorer/devicesupport/devicecheckbuildstep.h b/src/plugins/projectexplorer/devicesupport/devicecheckbuildstep.h
index 7886a9e8ab..8a114e1e6c 100644
--- a/src/plugins/projectexplorer/devicesupport/devicecheckbuildstep.h
+++ b/src/plugins/projectexplorer/devicesupport/devicecheckbuildstep.h
@@ -45,7 +45,7 @@ public:
BuildStepConfigWidget *createConfigWidget() override;
static Core::Id stepId();
- static QString stepDisplayName();
+ static QString displayName();
};
} // namespace ProjectExplorer
diff --git a/src/plugins/qbsprojectmanager/qbsbuildstep.cpp b/src/plugins/qbsprojectmanager/qbsbuildstep.cpp
index ffe80df75f..c01db641e3 100644
--- a/src/plugins/qbsprojectmanager/qbsbuildstep.cpp
+++ b/src/plugins/qbsprojectmanager/qbsbuildstep.cpp
@@ -207,6 +207,8 @@ QVariantMap QbsBuildStep::qbsConfiguration(VariableHandling variableHandling) co
config.insert(Constants::QBS_FORCE_PROBES_KEY, m_forceProbes);
if (m_enableQmlDebugging)
config.insert(Constants::QBS_CONFIG_QUICK_DEBUG_KEY, true);
+ else
+ config.remove(Constants::QBS_CONFIG_QUICK_DEBUG_KEY);
if (variableHandling == ExpandVariables) {
const Utils::MacroExpander *expander = Utils::globalMacroExpander();
for (auto it = config.begin(), end = config.end(); it != end; ++it) {
diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
index c08f595dbb..9066a65d7e 100644
--- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
+++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
@@ -977,10 +977,12 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH
QList<DocumentMessage> warnings;
if (Document::MutablePtr doc = createParsedDocument(url, data, &errors)) {
+ /* We cannot do this since changes to other documents do have side effects on the current document
if (m_document && (m_document->fingerprint() == doc->fingerprint())) {
setActive(false);
return true;
}
+ */
snapshot.insert(doc);
m_document = doc;
diff --git a/src/plugins/qnx/qnxconstants.h b/src/plugins/qnx/qnxconstants.h
index f65dcf30c7..ecd31d6b3d 100644
--- a/src/plugins/qnx/qnxconstants.h
+++ b/src/plugins/qnx/qnxconstants.h
@@ -39,6 +39,8 @@ const char QNX_QNX_FEATURE[] = "QtSupport.Wizards.FeatureQNX";
const char QNX_QNX_RUNCONFIGURATION_PREFIX[] = "Qt4ProjectManager.QNX.QNXRunConfiguration.";
+const char QNX_QNX_DEPLOYCONFIGURATION_ID[] = "Qt4ProjectManager.QNX.QNXDeployConfiguration";
+
const char QNX_QNX_OS_TYPE[] = "QnxOsType";
const char QNX_DEBUG_EXECUTABLE[] = "pdebug";
diff --git a/src/plugins/qnx/qnxdeployconfiguration.cpp b/src/plugins/qnx/qnxdeployconfiguration.cpp
index 3288bb4fbc..7993a90e22 100644
--- a/src/plugins/qnx/qnxdeployconfiguration.cpp
+++ b/src/plugins/qnx/qnxdeployconfiguration.cpp
@@ -60,7 +60,7 @@ NamedWidget *QnxDeployConfiguration::createConfigWidget()
QnxDeployConfigurationFactory::QnxDeployConfigurationFactory()
{
registerDeployConfiguration<QnxDeployConfiguration>
- ("Qt4ProjectManager.QNX.QNXDeployConfiguration");
+ (Constants::QNX_QNX_DEPLOYCONFIGURATION_ID);
setDefaultDisplayName(QnxDeployConfiguration::tr("Deploy to QNX Device"));
addSupportedTargetDeviceType(QnxDeviceFactory::deviceType());
}
diff --git a/src/plugins/qnx/qnxplugin.cpp b/src/plugins/qnx/qnxplugin.cpp
index 4bc3a7e968..850efa48dc 100644
--- a/src/plugins/qnx/qnxplugin.cpp
+++ b/src/plugins/qnx/qnxplugin.cpp
@@ -45,6 +45,7 @@
#include <coreplugin/icontext.h>
#include <coreplugin/icore.h>
+#include <projectexplorer/devicesupport/devicecheckbuildstep.h>
#include <projectexplorer/kitinformation.h>
#include <projectexplorer/projectexplorer.h>
#include <projectexplorer/projectexplorerconstants.h>
@@ -55,6 +56,9 @@
#include <projectexplorer/target.h>
#include <projectexplorer/toolchain.h>
+#include <remotelinux/genericdirectuploadstep.h>
+#include <remotelinux/remotelinuxcheckforfreediskspacestep.h>
+
#include <qtsupport/qtkitinformation.h>
#include <QAction>
@@ -64,6 +68,19 @@ using namespace ProjectExplorer;
namespace Qnx {
namespace Internal {
+template <class Step>
+class GenericQnxDeployStepFactory : public BuildStepFactory
+{
+public:
+ GenericQnxDeployStepFactory()
+ {
+ registerStep<Step>(Step::stepId());
+ setDisplayName(Step::displayName());
+ setSupportedConfiguration(Constants::QNX_QNX_DEPLOYCONFIGURATION_ID);
+ setSupportedStepList(ProjectExplorer::Constants::BUILDSTEPS_DEPLOY);
+ }
+};
+
class QnxPluginPrivate
{
public:
@@ -76,6 +93,9 @@ public:
QnxQtVersionFactory qtVersionFactory;
QnxDeviceFactory deviceFactory;
QnxDeployConfigurationFactory deployConfigFactory;
+ GenericQnxDeployStepFactory<RemoteLinux::GenericDirectUploadStep> directUploadDeployFactory;
+ GenericQnxDeployStepFactory<RemoteLinux::RemoteLinuxCheckForFreeDiskSpaceStep> checkForFreeDiskSpaceDeployFactory;
+ GenericQnxDeployStepFactory<DeviceCheckBuildStep> checkBuildDeployFactory;
QnxRunConfigurationFactory runConfigFactory;
QnxSettingsPage settingsPage;
QnxToolChainFactory toolChainFactory;
diff --git a/src/plugins/qtsupport/qtoutputformatter.cpp b/src/plugins/qtsupport/qtoutputformatter.cpp
index 08a817dadc..67984fce30 100644
--- a/src/plugins/qtsupport/qtoutputformatter.cpp
+++ b/src/plugins/qtsupport/qtoutputformatter.cpp
@@ -57,7 +57,7 @@ public:
: qmlError(QLatin1String("(" QML_URL_REGEXP // url
":\\d+" // colon, line
"(?::\\d+)?)" // colon, column (optional)
- "[: \t]")) // colon, space or tab
+ "[: \t)]")) // colon, space, tab or brace
, qtError(QLatin1String("Object::.*in (.*:\\d+)"))
, qtAssert(QLatin1String("ASSERT: .* in file (.+, line \\d+)"))
, qtAssertX(QLatin1String("ASSERT failure in .*: \".*\", file (.+, line \\d+)"))
@@ -353,6 +353,11 @@ void QtSupportPlugin::testQtOutputFormatter_data()
<< 0 << 18 << QString::fromLatin1("qrc:///main.qml:20")
<< QString::fromLatin1("/main.qml") << 20 << -1;
+ QTest::newRow("onClicked (qrc:/main.qml:20)")
+ << QString::fromLatin1("onClicked (qrc:/main.qml:20)")
+ << 11 << 27 << QString::fromLatin1("qrc:/main.qml:20")
+ << QString::fromLatin1("/main.qml") << 20 << -1;
+
QTest::newRow("file:///main.qml:20")
<< QString::fromLatin1("file:///main.qml:20 Unexpected token `identifier'")
<< 0 << 19 << QString::fromLatin1("file:///main.qml:20")
diff --git a/src/plugins/valgrind/callgrindtool.cpp b/src/plugins/valgrind/callgrindtool.cpp
index 294e28e665..2903b3cae5 100644
--- a/src/plugins/valgrind/callgrindtool.cpp
+++ b/src/plugins/valgrind/callgrindtool.cpp
@@ -217,6 +217,7 @@ public:
QAction *m_dumpAction = nullptr;
QAction *m_resetAction = nullptr;
QAction *m_pauseAction = nullptr;
+ QAction *m_discardAction = nullptr;
QString m_toggleCollectFunction;
bool m_toolBusy = false;
@@ -392,6 +393,15 @@ CallgrindTool::CallgrindTool()
action->setToolTip(tr("Pause event logging. No events are counted which will speed up program execution during profiling."));
connect(action, &QAction::toggled, this, &CallgrindTool::pauseToggled);
+ // discard data action
+ m_discardAction = action = new QAction(this);
+ action->setIcon(Utils::Icons::CLEAN_TOOLBAR.icon());
+ action->setToolTip(tr("Discard Data"));
+ connect(action, &QAction::triggered, this, [this](bool) {
+ clearTextMarks();
+ doClear(true);
+ });
+
// navigation
// go back
m_goBack = action = new QAction(this);
@@ -421,6 +431,7 @@ CallgrindTool::CallgrindTool()
toolbar.addAction(m_dumpAction);
toolbar.addAction(m_resetAction);
toolbar.addAction(m_pauseAction);
+ toolbar.addAction(m_discardAction);
toolbar.addAction(m_goBack);
toolbar.addAction(m_goNext);
toolbar.addWidget(new Utils::StyledSeparator);