diff options
-rw-r--r-- | scripts/common.py | 10 | ||||
-rwxr-xr-x | scripts/createDistPackage.py | 7 | ||||
-rwxr-xr-x | scripts/makedmg.py | 6 | ||||
-rw-r--r-- | src/plugins/android/androidtoolchain.cpp | 4 | ||||
-rw-r--r-- | src/plugins/debugger/qml/qmlengine.cpp | 4 | ||||
-rw-r--r-- | src/plugins/ios/iosrunconfiguration.cpp | 24 | ||||
-rw-r--r-- | src/plugins/ios/iosrunconfiguration.h | 2 | ||||
-rw-r--r-- | src/plugins/projectexplorer/devicesupport/devicecheckbuildstep.cpp | 4 | ||||
-rw-r--r-- | src/plugins/projectexplorer/devicesupport/devicecheckbuildstep.h | 2 | ||||
-rw-r--r-- | src/plugins/qbsprojectmanager/qbsbuildstep.cpp | 2 | ||||
-rw-r--r-- | src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp | 2 | ||||
-rw-r--r-- | src/plugins/qnx/qnxconstants.h | 2 | ||||
-rw-r--r-- | src/plugins/qnx/qnxdeployconfiguration.cpp | 2 | ||||
-rw-r--r-- | src/plugins/qnx/qnxplugin.cpp | 20 | ||||
-rw-r--r-- | src/plugins/qtsupport/qtoutputformatter.cpp | 7 | ||||
-rw-r--r-- | src/plugins/valgrind/callgrindtool.cpp | 11 |
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); |