diff --git a/doc/api/qtcreator-documentation.qdoc b/doc/api/qtcreator-documentation.qdoc index 2ec78a2c4df..32cb491f589 100644 --- a/doc/api/qtcreator-documentation.qdoc +++ b/doc/api/qtcreator-documentation.qdoc @@ -258,7 +258,7 @@ changed over time, so they differ between Qt and \QC versions. Since \QC version 3.3, only Qt 5 is supported for building documentation. The templates to use are defined by the - \c qt5\qtbase\doc\global\qt-html-templates-offline.qdocconf} and + \c {qt5\qtbase\doc\global\qt-html-templates-offline.qdocconf} and \c {qt5\qtbase\doc\global\qt-html-templates-online.qdocconf} configuration file. They are fetched from Qt sources by adding the following lines to the qdocconf file: @@ -266,11 +266,14 @@ \list \li \c {include ($QT_INSTALL_DOCS/global/qt-html-templates-offline.qdocconf)} - for publishing on the web - \li \c {include ($QT_INSTALL_DOCS/global/qt-html-templates-online.qdocconf)} for help files + \li \c {include ($QT_INSTALL_DOCS/global/qt-html-templates-online.qdocconf)} + for publishing on the web \endlist + \note To have the correct fonts loaded for the online version, you must be + running it on a web server. + \note If the styles look wrong to you when reading help files in \QC or \QA, you might be looking at them in the QTextBrowser instead of the WebKit browser. This happens if you build \QC and \QA with a self-built Qt and did diff --git a/doc/src/qtquick/qtquick-ui-forms.qdoc b/doc/src/qtquick/qtquick-ui-forms.qdoc index 2c9a309ba65..1aa46f38275 100644 --- a/doc/src/qtquick/qtquick-ui-forms.qdoc +++ b/doc/src/qtquick/qtquick-ui-forms.qdoc @@ -34,6 +34,9 @@ You can use \QC wizards to create UI forms that have the filename extension \e .ui.qml. The UI forms contain a purely declarative subset of the QML language. It is recommended that you edit the forms in the \uicontrol Design mode. + However, exporting items as alias properties is a commercial only feature, + and therefore you must use the \uicontrol Edit mode to do it if you are + using the open source version of \QC. \QC enforces the use of the supported QML features by displaying error messages. diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomSpinBoxStyle.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomSpinBoxStyle.qml index ecfccea4ff3..02503f3fe46 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomSpinBoxStyle.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/CustomSpinBoxStyle.qml @@ -67,7 +67,7 @@ SpinBoxStyle { } background: Rectangle { - implicitWidth: Math.max(60, styleData.contentWidth) + implicitWidth: Math.max(64, styleData.contentWidth) implicitHeight: 23 border.color: borderColor radius: 3 diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/SliderSpinBox.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/SliderSpinBox.qml index c0d6b92efe4..7e25e7c81bf 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/SliderSpinBox.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/SliderSpinBox.qml @@ -39,79 +39,6 @@ SpinBox { property color highlightColor: "orange" property color textColor: "#eee" - function showSlider() { - timer.stop() - timer2.start() - slider.opacity = 1; - } - - onHoveredChanged: { - if (hovered) - showSlider(); - } - - Slider { - id: slider - - anchors.left: parent.left - anchors.right: parent.right - anchors.top: parent.bottom - height: 10; - //opacity: 0 - - maximumValue: spinBox.maximumValue - minimumValue: spinBox.minimumValue - - value: spinBox.value - visible: false - - onValueChanged: { - spinBox.value = value - } - - Behavior on opacity { - PropertyAnimation { - duration: 100 - } - } - - onHoveredChanged: { - if (!hovered) { - timer.startTimer(); - } else { - timer2.stop() - timer.stop() - } - } - } - - Timer { - id: timer - repeat: false - function startTimer() { - if (!timer.running) - timer.start() - } - interval: 600 - - onTriggered: { - return - if (!slider.hovered) - slider.opacity = 0; - } - } - - Timer { - id: timer2 - repeat: false - interval: 1000 - onTriggered: { - return - if (!slider.hovered) - slider.opacity = 0; - } - } - style: CustomSpinBoxStyle { } diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/SpinBox.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/SpinBox.qml index 01c5adc5f63..b9963ecae88 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/SpinBox.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/SpinBox.qml @@ -63,25 +63,6 @@ Controls.SpinBox { backendValue.value = value; } - Controls.Slider { - id: slider - - anchors.left: parent.left - anchors.right: parent.right - anchors.top: parent.bottom - height: 10 - visible: false - - maximumValue: spinBox.maximumValue - minimumValue: spinBox.minimumValue - - value: spinBox.value - - onValueChanged: { - spinBox.value = value - } - } - style: CustomSpinBoxStyle { } } diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/PathViewSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/PathViewSpecifics.qml index db91eba92e6..1a26b97ebad 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/PathViewSpecifics.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/PathViewSpecifics.qml @@ -51,7 +51,7 @@ Column { SecondColumnLayout { SpinBox { backendValue: backendValues.dragMargin - minimumValue: 100; + minimumValue: 0; maximumValue: 100; decimals: 0 } diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp index 862ff1850ef..a844414fc07 100644 --- a/src/libs/cplusplus/LookupContext.cpp +++ b/src/libs/cplusplus/LookupContext.cpp @@ -631,10 +631,15 @@ QList ClassOrNamespace::lookup_helper(const Name *name, bool searchI // a qualified name. For instance, a nested class which is forward declared // in the class but defined outside it - we should capture both. Symbol *match = 0; + QSet processed; for (ClassOrNamespace *parentBinding = binding->parent(); parentBinding && !match; - parentBinding = parentBinding->parent()) + parentBinding = parentBinding->parent()) { + if (processed.contains(parentBinding)) + break; + processed.insert(parentBinding); match = parentBinding->lookupInScope(fullName); + } if (match) { LookupItem item; @@ -648,8 +653,12 @@ QList ClassOrNamespace::lookup_helper(const Name *name, bool searchI } QSet processed; + QSet processedOwnParents; ClassOrNamespace *binding = this; do { + if (processedOwnParents.contains(binding)) + break; + processedOwnParents.insert(binding); lookup_helper(name, binding, &result, &processed, /*templateId = */ 0); binding = binding->_parent; } while (searchInEnclosingScope && binding); diff --git a/src/libs/cplusplus/pp-engine.cpp b/src/libs/cplusplus/pp-engine.cpp index 05a8f66c871..ba8470e50e1 100644 --- a/src/libs/cplusplus/pp-engine.cpp +++ b/src/libs/cplusplus/pp-engine.cpp @@ -140,6 +140,12 @@ static bool isQtReservedWord(const char *name, int size) return false; } +static void nestingTooDeep() +{ +#ifndef NO_DEBUG + std::cerr << "*** WARNING #if / #ifdef nesting exceeded the max level " << MAX_LEVEL << std::endl; +#endif +} } // anonymous namespace @@ -1824,6 +1830,12 @@ void Preprocessor::handleIfDirective(PPToken *tk) lex(tk); // consume "if" token Value result; const PPToken lastExpressionToken = evalExpression(tk, result); + + if (m_state.m_ifLevel >= MAX_LEVEL - 1) { + nestingTooDeep(); + return; + } + const bool value = !result.is_zero(); const bool wasSkipping = m_state.m_skipping[m_state.m_ifLevel]; @@ -1950,12 +1962,17 @@ void Preprocessor::handleIfDefDirective(bool checkUndefined, PPToken *tk) value = !value; const bool wasSkipping = m_state.m_skipping[m_state.m_ifLevel]; - ++m_state.m_ifLevel; - m_state.m_trueTest[m_state.m_ifLevel] = value; - m_state.m_skipping[m_state.m_ifLevel] = wasSkipping ? wasSkipping : !value; - if (m_client && !wasSkipping && !value) - startSkippingBlocks(*tk); + if (m_state.m_ifLevel < MAX_LEVEL - 1) { + ++m_state.m_ifLevel; + m_state.m_trueTest[m_state.m_ifLevel] = value; + m_state.m_skipping[m_state.m_ifLevel] = wasSkipping ? wasSkipping : !value; + + if (m_client && !wasSkipping && !value) + startSkippingBlocks(*tk); + } else { + nestingTooDeep(); + } lex(tk); // consume the identifier #ifndef NO_DEBUG diff --git a/src/libs/qmljs/qmljsmodelmanagerinterface.cpp b/src/libs/qmljs/qmljsmodelmanagerinterface.cpp index 4ec0a70c865..be839396e8e 100644 --- a/src/libs/qmljs/qmljsmodelmanagerinterface.cpp +++ b/src/libs/qmljs/qmljsmodelmanagerinterface.cpp @@ -1006,7 +1006,8 @@ void ModelManagerInterface::importScan(QFutureInterface &future, int totalWork(progressRange), workDone(0); future.setProgressRange(0, progressRange); // update max length while iterating? const Snapshot snapshot = modelManager->snapshot(); - while (!pathsToScan.isEmpty() && !future.isCanceled()) { + bool isCanceled = future.isCanceled(); + while (!pathsToScan.isEmpty() && !isCanceled) { ScanItem toScan = pathsToScan.last(); pathsToScan.pop_back(); int pathBudget = (1 << (maxScanDepth + 2 - toScan.depth)); @@ -1043,9 +1044,10 @@ void ModelManagerInterface::importScan(QFutureInterface &future, workDone += pathBudget * 3 / 4; } future.setProgressValue(progressRange * workDone / totalWork); + isCanceled = future.isCanceled(); } future.setProgressValue(progressRange); - if (future.isCanceled()) { + if (isCanceled) { // assume no work has been done QMutexLocker l(&modelManager->m_mutex); for (int i = 0; i < paths.size(); ++i) diff --git a/src/libs/utils/theme/theme.cpp b/src/libs/utils/theme/theme.cpp index 97a433e9554..1097b3d7ff2 100644 --- a/src/libs/utils/theme/theme.cpp +++ b/src/libs/utils/theme/theme.cpp @@ -354,6 +354,7 @@ QPalette Theme::palette() const pal.setBrush(QPalette::ButtonText, color(Theme::TextColorNormal)); pal.setBrush(QPalette::ToolTipBase, color(Theme::BackgroundColorSelected)); pal.setColor(QPalette::Highlight, color(Theme::BackgroundColorSelected)); + pal.setColor(QPalette::Dark, color(Theme::BackgroundColorDark)); pal.setColor(QPalette::HighlightedText, Qt::white); pal.setColor(QPalette::ToolTipText, color(Theme::TextColorNormal)); return pal; diff --git a/src/libs/utils/utils-lib.pri b/src/libs/utils/utils-lib.pri index 34b3549dc8e..dcacfe7c718 100644 --- a/src/libs/utils/utils-lib.pri +++ b/src/libs/utils/utils-lib.pri @@ -8,11 +8,6 @@ QT += script network CONFIG += exceptions # used by portlist.cpp, textfileformat.cpp, and ssh/* -win32-msvc* { - # disable warnings caused by botan headers - QMAKE_CXXFLAGS += -wd4250 -wd4290 -} - SOURCES += $$PWD/environment.cpp \ $$PWD/environmentmodel.cpp \ $$PWD/qtcprocess.cpp \ diff --git a/src/plugins/android/androidrunner.cpp b/src/plugins/android/androidrunner.cpp index 5e017f20f92..d833578a795 100644 --- a/src/plugins/android/androidrunner.cpp +++ b/src/plugins/android/androidrunner.cpp @@ -390,14 +390,6 @@ void AndroidRunner::asyncStart() args << _("-e") << _("qml_debug") << _("true"); args << _("-e") << _("qmljsdebugger") << QString::fromLatin1("port:%1,block").arg(m_qmlPort); } - if (m_useLocalQtLibs) { - args << _("-e") << _("use_local_qt_libs") << _("true"); - args << _("-e") << _("libs_prefix") << _("/data/local/tmp/qt/"); - args << _("-e") << _("load_local_libs") << m_localLibs; - args << _("-e") << _("load_local_jars") << m_localJars; - if (!m_localJarsInitClasses.isEmpty()) - args << _("-e") << _("static_init_classes") << m_localJarsInitClasses; - } QProcess adb; adb.start(m_adb, args); diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp index 8f8422d14d6..ee893269256 100644 --- a/src/plugins/debugger/qml/qmlengine.cpp +++ b/src/plugins/debugger/qml/qmlengine.cpp @@ -518,7 +518,7 @@ void QmlEngine::serviceConnectionError(const QString &serviceName) bool QmlEngine::canDisplayTooltip() const { - return state() == InferiorRunOk || state() == InferiorStopOk; + return false; } void QmlEngine::filterApplicationMessage(const QString &output, int /*channel*/) diff --git a/src/plugins/debugger/qml/qmlv8debuggerclient.cpp b/src/plugins/debugger/qml/qmlv8debuggerclient.cpp index 0e119956ca1..67f1a59aed8 100644 --- a/src/plugins/debugger/qml/qmlv8debuggerclient.cpp +++ b/src/plugins/debugger/qml/qmlv8debuggerclient.cpp @@ -127,7 +127,6 @@ public: QScriptValue parser; QScriptValue stringifier; - QStringList scriptSourceRequests; QHash evaluatingExpression; QHash localsAndWatchers; @@ -952,6 +951,9 @@ void QmlV8DebuggerClient::executeDebuggerCommand(const QString &command) void QmlV8DebuggerClient::synchronizeWatchers(const QStringList &watchers) { SDEBUG(watchers); + if (d->engine->state() != InferiorStopOk) + return; + foreach (const QString &exp, watchers) { StackHandler *stackHandler = d->engine->stackHandler(); if (stackHandler->isContentsValid() && stackHandler->currentFrame().isUsable()) { diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp index cb5ac6f30d9..5ad5e9fc72d 100644 --- a/src/plugins/debugger/watchhandler.cpp +++ b/src/plugins/debugger/watchhandler.cpp @@ -1629,7 +1629,7 @@ int WatchHandler::format(const QByteArray &iname) const { int result = AutomaticFormat; if (const WatchItem *item = m_model->findItem(iname)) { - int result = theIndividualFormats.value(item->d.iname, AutomaticFormat); + result = theIndividualFormats.value(item->d.iname, AutomaticFormat); if (result == AutomaticFormat) result = theTypeFormats.value(stripForFormat(item->d.type), AutomaticFormat); } diff --git a/src/plugins/help/qtwebkithelpviewer.cpp b/src/plugins/help/qtwebkithelpviewer.cpp index 1821e1c0da7..fe2c0d5647b 100644 --- a/src/plugins/help/qtwebkithelpviewer.cpp +++ b/src/plugins/help/qtwebkithelpviewer.cpp @@ -402,6 +402,7 @@ QtWebKitHelpViewer::QtWebKitHelpViewer(QWidget *parent) QPalette p = palette(); p.setColor(QPalette::Base, Qt::white); + p.setColor(QPalette::Text, Qt::black); setPalette(p); connect(m_webView, SIGNAL(urlChanged(QUrl)), this, SIGNAL(sourceChanged(QUrl))); diff --git a/src/plugins/help/textbrowserhelpviewer.cpp b/src/plugins/help/textbrowserhelpviewer.cpp index 6f2b9b9cd26..c6fa8e0e60f 100644 --- a/src/plugins/help/textbrowserhelpviewer.cpp +++ b/src/plugins/help/textbrowserhelpviewer.cpp @@ -65,6 +65,7 @@ TextBrowserHelpViewer::TextBrowserHelpViewer(QWidget *parent) p.setColor(QPalette::Inactive, QPalette::HighlightedText, p.color(QPalette::Active, QPalette::HighlightedText)); p.setColor(QPalette::Base, Qt::white); + p.setColor(QPalette::Text, Qt::black); setPalette(p); connect(m_textBrowser, SIGNAL(sourceChanged(QUrl)), this, SIGNAL(titleChanged())); diff --git a/src/plugins/projectexplorer/kit.cpp b/src/plugins/projectexplorer/kit.cpp index acee118d72e..c7e39507cf9 100644 --- a/src/plugins/projectexplorer/kit.cpp +++ b/src/plugins/projectexplorer/kit.cpp @@ -582,16 +582,19 @@ QString Kit::toHtml(const QList &additional) const void Kit::setAutoDetected(bool detected) { d->m_autodetected = detected; + kitUpdated(); } void Kit::setAutoDetectionSource(const QString &autoDetectionSource) { d->m_autoDetectionSource = autoDetectionSource; + kitUpdated(); } void Kit::setSdkProvided(bool sdkProvided) { d->m_sdkProvided = sdkProvided; + kitUpdated(); } void Kit::makeSticky() @@ -608,11 +611,13 @@ void Kit::setSticky(Id id, bool b) d->m_sticky.insert(id); else d->m_sticky.remove(id); + kitUpdated(); } void Kit::makeUnSticky() { d->m_sticky.clear(); + kitUpdated(); } void Kit::setMutable(Id id, bool b) @@ -621,6 +626,7 @@ void Kit::setMutable(Id id, bool b) d->m_mutable.insert(id); else d->m_mutable.remove(id); + kitUpdated(); } bool Kit::isMutable(Id id) const diff --git a/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp b/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp index 408a567aa7d..06f33d3f5b4 100644 --- a/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp +++ b/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp @@ -354,8 +354,12 @@ void KitManagerConfigWidget::workingCopyWasUpdated(Kit *k) void KitManagerConfigWidget::kitWasUpdated(Kit *k) { - if (m_kit == k) + if (m_kit == k) { + bool emitSignal = m_kit->isAutoDetected() != m_modifiedKit->isAutoDetected(); discard(); + if (emitSignal) + emit isAutoDetectedChanged(); + } updateVisibility(); } diff --git a/src/plugins/projectexplorer/kitmanagerconfigwidget.h b/src/plugins/projectexplorer/kitmanagerconfigwidget.h index 28879d97672..750ed14eab4 100644 --- a/src/plugins/projectexplorer/kitmanagerconfigwidget.h +++ b/src/plugins/projectexplorer/kitmanagerconfigwidget.h @@ -77,6 +77,7 @@ public: signals: void dirty(); + void isAutoDetectedChanged(); private slots: void setIcon(); diff --git a/src/plugins/projectexplorer/kitmodel.cpp b/src/plugins/projectexplorer/kitmodel.cpp index e14889edeb5..d785ca6e369 100644 --- a/src/plugins/projectexplorer/kitmodel.cpp +++ b/src/plugins/projectexplorer/kitmodel.cpp @@ -170,6 +170,31 @@ KitManagerConfigWidget *KitModel::widget(const QModelIndex &index) return n ? n->widget : 0; } +void KitModel::isAutoDetectedChanged() +{ + KitManagerConfigWidget *w = qobject_cast(sender()); + int idx = -1; + idx = Utils::indexOf(m_manualRoot->childNodes, [w](KitNode *node) { return node->widget == w; }); + KitNode *oldParent = 0; + KitNode *newParent = w->workingCopy()->isAutoDetected() ? m_autoRoot : m_manualRoot; + if (idx != -1) { + oldParent = m_manualRoot; + } else { + idx = Utils::indexOf(m_autoRoot->childNodes, [w](KitNode *node) { return node->widget == w; }); + if (idx != -1) { + oldParent = m_autoRoot; + } + } + + if (oldParent && oldParent != newParent) { + beginMoveRows(index(oldParent), idx, idx, index(newParent), newParent->childNodes.size()); + KitNode *n = oldParent->childNodes.takeAt(idx); + n->parent = newParent; + newParent->childNodes.append(n); + endMoveRows(); + } +} + void KitModel::validateKitNames() { QHash nameHash; @@ -263,6 +288,9 @@ KitNode *KitModel::createNode(Kit *k) || m_manualRoot->children().contains(node)) node->update(); }); + connect(node->widget, SIGNAL(isAutoDetectedChanged()), + this, SLOT(isAutoDetectedChanged())); + return node; } diff --git a/src/plugins/projectexplorer/kitmodel.h b/src/plugins/projectexplorer/kitmodel.h index d3b7054fbbc..56628b7fb6b 100644 --- a/src/plugins/projectexplorer/kitmodel.h +++ b/src/plugins/projectexplorer/kitmodel.h @@ -84,6 +84,7 @@ private: void removeKit(ProjectExplorer::Kit *k); void changeDefaultKit(); void validateKitNames(); + void isAutoDetectedChanged(); KitNode *findWorkingCopy(Kit *k) const; KitNode *createNode(Kit *k); diff --git a/src/plugins/projectexplorer/miniprojecttargetselector.cpp b/src/plugins/projectexplorer/miniprojecttargetselector.cpp index 5eb390c546b..103cd765fd5 100644 --- a/src/plugins/projectexplorer/miniprojecttargetselector.cpp +++ b/src/plugins/projectexplorer/miniprojecttargetselector.cpp @@ -135,12 +135,12 @@ void TargetSelectorDelegate::paint(QPainter *painter, selectionGradient.load(QLatin1String(":/projectexplorer/images/targetpanel_gradient.png")); if (option.state & QStyle::State_Selected) { + const QColor color = (option.state & QStyle::State_HasFocus) ? + option.palette.highlight().color() : + option.palette.dark().color(); if (creatorTheme()->widgetStyle() == Theme::StyleFlat) { - painter->fillRect(option.rect, creatorTheme()->color(Theme::BackgroundColorSelected)); + painter->fillRect(option.rect, color); } else { - QColor color =(option.state & QStyle::State_HasFocus) ? - option.palette.highlight().color() : - option.palette.dark().color(); painter->fillRect(option.rect, color.darker(140)); StyleHelper::drawCornerImage(selectionGradient, painter, option.rect.adjusted(0, 0, 0, -1), 5, 5, 5, 5); painter->setPen(QColor(255, 255, 255, 60)); diff --git a/src/plugins/qbsprojectmanager/qbsprojectmanager.cpp b/src/plugins/qbsprojectmanager/qbsprojectmanager.cpp index 359f1397c7c..fa265471b2c 100644 --- a/src/plugins/qbsprojectmanager/qbsprojectmanager.cpp +++ b/src/plugins/qbsprojectmanager/qbsprojectmanager.cpp @@ -194,6 +194,7 @@ void QbsManager::addProfileFromKit(const ProjectExplorer::Kit *k) { const QString name = QString::fromLatin1("qtc_%1_%2").arg(k->fileSystemFriendlyName().left(8), QString::number(k->id().uniqueIdentifier(), 16)); + qbs::Profile(name, settings()).removeProfile(); setProfileForKit(name, k); addQtProfileFromKit(name, k); diff --git a/src/plugins/qmldesigner/components/importmanager/importmanagerview.cpp b/src/plugins/qmldesigner/components/importmanager/importmanagerview.cpp index 24c4268b593..c5168efdcd5 100644 --- a/src/plugins/qmldesigner/components/importmanager/importmanagerview.cpp +++ b/src/plugins/qmldesigner/components/importmanager/importmanagerview.cpp @@ -32,6 +32,7 @@ #include "importswidget.h" #include +#include namespace QmlDesigner { @@ -264,6 +265,8 @@ void ImportManagerView::addImport(const Import &import) catch (const RewritingException &e) { e.showException(); } + + QmlDesignerPlugin::instance()->currentDesignDocument()->updateSubcomponentManager(); } } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/importmanager/importswidget.cpp b/src/plugins/qmldesigner/components/importmanager/importswidget.cpp index 4102b965239..df5d94b78a5 100644 --- a/src/plugins/qmldesigner/components/importmanager/importswidget.cpp +++ b/src/plugins/qmldesigner/components/importmanager/importswidget.cpp @@ -64,33 +64,6 @@ static bool isImportAlreadyUsed(const Import &import, QList import return false; } -void ImportsWidget::setPossibleImports(const QList &possibleImports) -{ - m_addImportComboBox->clear(); - foreach (const Import &possibleImport, possibleImports) { - if (!isImportAlreadyUsed(possibleImport, m_importLabels)) - m_addImportComboBox->addItem(possibleImport.toString(true), QVariant::fromValue(possibleImport)); - } -} - -void ImportsWidget::removePossibleImports() -{ - m_addImportComboBox->clear(); -} - -void ImportsWidget::setUsedImports(const QList &usedImports) -{ - foreach (ImportLabel *importLabel, m_importLabels) - importLabel->setReadOnly(usedImports.contains(importLabel->import())); - -} - -void ImportsWidget::removeUsedImports() -{ - foreach (ImportLabel *importLabel, m_importLabels) - importLabel->setEnabled(true); -} - static bool importLess(const Import &firstImport, const Import &secondImport) { if (firstImport.url() == secondImport.url()) @@ -117,6 +90,34 @@ static bool importLess(const Import &firstImport, const Import &secondImport) return false; } +void ImportsWidget::setPossibleImports(QList possibleImports) +{ + Utils::sort(possibleImports, importLess); + m_addImportComboBox->clear(); + foreach (const Import &possibleImport, possibleImports) { + if (!isImportAlreadyUsed(possibleImport, m_importLabels)) + m_addImportComboBox->addItem(possibleImport.toString(true), QVariant::fromValue(possibleImport)); + } +} + +void ImportsWidget::removePossibleImports() +{ + m_addImportComboBox->clear(); +} + +void ImportsWidget::setUsedImports(const QList &usedImports) +{ + foreach (ImportLabel *importLabel, m_importLabels) + importLabel->setReadOnly(usedImports.contains(importLabel->import())); + +} + +void ImportsWidget::removeUsedImports() +{ + foreach (ImportLabel *importLabel, m_importLabels) + importLabel->setEnabled(true); +} + void ImportsWidget::setImports(const QList &imports) { qDeleteAll(m_importLabels); diff --git a/src/plugins/qmldesigner/components/importmanager/importswidget.h b/src/plugins/qmldesigner/components/importmanager/importswidget.h index 5716f239158..c0a1920bc54 100644 --- a/src/plugins/qmldesigner/components/importmanager/importswidget.h +++ b/src/plugins/qmldesigner/components/importmanager/importswidget.h @@ -52,7 +52,7 @@ public: void setImports(const QList &imports); void removeImports(); - void setPossibleImports(const QList &possibleImports); + void setPossibleImports(QList possibleImports); void removePossibleImports(); void setUsedImports(const QList &possibleImports); diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp index 93a0410307c..44e1447095f 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp @@ -123,32 +123,29 @@ NodeInstanceServerProxy::NodeInstanceServerProxy(NodeInstanceView *nodeInstanceV m_runModus(runModus), m_synchronizeId(-1) { - PuppetCreator puppetCreator(kit, QString()); - QString socketToken(QUuid::createUuid().toString()); m_localServer->listen(socketToken); m_localServer->setMaxPendingConnections(3); PuppetCreator::QmlPuppetVersion puppetVersion = hasQtQuick1(nodeInstanceView) ? PuppetCreator::Qml1Puppet : PuppetCreator::Qml2Puppet; + PuppetCreator puppetCreator(kit, QString(), nodeInstanceView->model(), puppetVersion); - puppetCreator.createPuppetExecutableIfMissing(puppetVersion); - m_qmlPuppetEditorProcess = puppetCreator.createPuppetProcess(puppetVersion, - "editormode", + puppetCreator.createPuppetExecutableIfMissing(); + + m_qmlPuppetEditorProcess = puppetCreator.createPuppetProcess("editormode", socketToken, this, SLOT(printEditorProcessOutput()), SLOT(processFinished(int,QProcess::ExitStatus))); if (runModus == NormalModus) { - m_qmlPuppetRenderProcess = puppetCreator.createPuppetProcess(puppetVersion, - "rendermode", + m_qmlPuppetRenderProcess = puppetCreator.createPuppetProcess("rendermode", socketToken, this, SLOT(printRenderProcessOutput()), SLOT(processFinished(int,QProcess::ExitStatus))); - m_qmlPuppetPreviewProcess = puppetCreator.createPuppetProcess(puppetVersion, - "previewmode", + m_qmlPuppetPreviewProcess = puppetCreator.createPuppetProcess("previewmode", socketToken, this, SLOT(printPreviewProcessOutput()), diff --git a/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp b/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp index d097ac81551..0c3cb658ea2 100644 --- a/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp +++ b/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp @@ -115,10 +115,12 @@ bool PuppetCreator::useOnlyFallbackPuppet() const || !qgetenv("USE_ONLY_FALLBACK_PUPPET").isEmpty() || m_kit == 0 || !m_kit->isValid(); } -PuppetCreator::PuppetCreator(ProjectExplorer::Kit *kit, const QString &qtCreatorVersion) +PuppetCreator::PuppetCreator(ProjectExplorer::Kit *kit, const QString &qtCreatorVersion, const Model *model, QmlPuppetVersion puppetVersion) : m_qtCreatorVersion(qtCreatorVersion), m_kit(kit), - m_availablePuppetType(FallbackPuppet) + m_availablePuppetType(FallbackPuppet), + m_model(model), + m_puppetVersion(puppetVersion) { } @@ -126,18 +128,18 @@ PuppetCreator::~PuppetCreator() { } -void PuppetCreator::createPuppetExecutableIfMissing(PuppetCreator::QmlPuppetVersion puppetVersion) +void PuppetCreator::createPuppetExecutableIfMissing() { - if (puppetVersion == Qml1Puppet) + if (m_puppetVersion == Qml1Puppet) createQml1PuppetExecutableIfMissing(); else createQml2PuppetExecutableIfMissing(); } -QProcess *PuppetCreator::createPuppetProcess(PuppetCreator::QmlPuppetVersion puppetVersion, const QString &puppetMode, const QString &socketToken, QObject *handlerObject, const char *outputSlot, const char *finishSlot) const +QProcess *PuppetCreator::createPuppetProcess(const QString &puppetMode, const QString &socketToken, QObject *handlerObject, const char *outputSlot, const char *finishSlot) const { QString puppetPath; - if (puppetVersion == Qml1Puppet) + if (m_puppetVersion == Qml1Puppet) puppetPath = qmlPuppetPath(m_availablePuppetType); else puppetPath = qml2PuppetPath(m_availablePuppetType); @@ -333,13 +335,21 @@ QString PuppetCreator::qmlPuppetPath(PuppetType puppetType) const QProcessEnvironment PuppetCreator::processEnvironment() const { +#if defined(Q_OS_WIN) + static QLatin1String pathSep(";"); +#else + static QLatin1String pathSep(":"); +#endif Utils::Environment environment = Utils::Environment::systemEnvironment(); if (!useOnlyFallbackPuppet()) m_kit->addToEnvironment(environment); environment.set("QML_BAD_GUI_RENDER_LOOP", "true"); environment.set("QML_USE_MOCKUPS", "true"); environment.set("QML_PUPPET_MODE", "true"); - + if (m_puppetVersion == Qml1Puppet) + environment.appendOrSet("QML_IMPORT_PATH", m_model->importPaths().join(pathSep), pathSep); + else + environment.appendOrSet("QML2_IMPORT_PATH", m_model->importPaths().join(pathSep), pathSep); return environment.toProcessEnvironment(); } diff --git a/src/plugins/qmldesigner/designercore/instances/puppetcreator.h b/src/plugins/qmldesigner/designercore/instances/puppetcreator.h index b8ef4e68ba0..ab27deb6d90 100644 --- a/src/plugins/qmldesigner/designercore/instances/puppetcreator.h +++ b/src/plugins/qmldesigner/designercore/instances/puppetcreator.h @@ -41,6 +41,7 @@ class Kit; namespace QmlDesigner { +class Model; class PuppetBuildProgressDialog; class PuppetCreator @@ -56,13 +57,12 @@ public: Qml2Puppet }; - PuppetCreator(ProjectExplorer::Kit *kit, const QString &qtCreatorVersion); + PuppetCreator(ProjectExplorer::Kit *kit, const QString &qtCreatorVersion, const Model *model, QmlPuppetVersion puppetVersion); ~PuppetCreator(); - void createPuppetExecutableIfMissing(QmlPuppetVersion puppetVersion); + void createPuppetExecutableIfMissing(); - QProcess *createPuppetProcess(QmlPuppetVersion puppetVersion, - const QString &puppetMode, + QProcess *createPuppetProcess(const QString &puppetMode, const QString &socketToken, QObject *handlerObject, const char *outputSlot, @@ -120,6 +120,8 @@ private: PuppetType m_availablePuppetType; static QHash m_qml1PuppetForKitPuppetHash; static QHash m_qml2PuppetForKitPuppetHash; + const Model *m_model; + QmlPuppetVersion m_puppetVersion; }; } // namespace QmlDesigner diff --git a/src/plugins/texteditor/generichighlighter/highlighter.cpp b/src/plugins/texteditor/generichighlighter/highlighter.cpp index 8c482693a6b..49c8a5b5e4e 100644 --- a/src/plugins/texteditor/generichighlighter/highlighter.cpp +++ b/src/plugins/texteditor/generichighlighter/highlighter.cpp @@ -175,16 +175,17 @@ void Highlighter::highlightBlock(const QString &text) handleContextChange(m_currentContext->lineBeginContext(), m_currentContext->definition()); - ProgressData progress; + ProgressData *progress = new ProgressData; const int length = text.length(); - while (progress.offset() < length) - iterateThroughRules(text, length, &progress, false, m_currentContext->rules()); + while (progress->offset() < length) + iterateThroughRules(text, length, progress, false, m_currentContext->rules()); if (extractObservableState(currentBlockState()) != WillContinue) { handleContextChange(m_currentContext->lineEndContext(), m_currentContext->definition(), false); } + delete progress; m_contexts.clear(); if (m_indentationBasedFolding) { diff --git a/src/plugins/winrt/winrtdebugsupport.cpp b/src/plugins/winrt/winrtdebugsupport.cpp index bf2dfbf4033..baa382fdf21 100644 --- a/src/plugins/winrt/winrtdebugsupport.cpp +++ b/src/plugins/winrt/winrtdebugsupport.cpp @@ -57,6 +57,11 @@ WinRtDebugSupport::WinRtDebugSupport(RunControl *runControl, WinRtRunnerHelper * connect(m_debugRunControl, SIGNAL(finished()), this, SLOT(finish())); } +WinRtDebugSupport::~WinRtDebugSupport() +{ + delete m_runner; +} + void WinRtDebugSupport::finish() { m_runner->stop(); diff --git a/src/plugins/winrt/winrtdebugsupport.h b/src/plugins/winrt/winrtdebugsupport.h index 04475eb1f0c..4b5d8d5cf3e 100644 --- a/src/plugins/winrt/winrtdebugsupport.h +++ b/src/plugins/winrt/winrtdebugsupport.h @@ -49,6 +49,7 @@ public: static ProjectExplorer::RunControl *createDebugRunControl(WinRtRunConfiguration *runConfig, ProjectExplorer::RunMode mode, QString *errorMessage); + ~WinRtDebugSupport(); private: WinRtDebugSupport(ProjectExplorer::RunControl *runControl, WinRtRunnerHelper *runner); diff --git a/src/plugins/winrt/winrtrunnerhelper.cpp b/src/plugins/winrt/winrtrunnerhelper.cpp index eb35cdb6a7e..7a0dc238e2a 100644 --- a/src/plugins/winrt/winrtrunnerhelper.cpp +++ b/src/plugins/winrt/winrtrunnerhelper.cpp @@ -52,7 +52,7 @@ using namespace WinRt; using namespace WinRt::Internal; WinRtRunnerHelper::WinRtRunnerHelper(WinRtRunConfiguration *runConfiguration, QString *errormessage) - : QObject(runConfiguration) + : QObject() , m_messenger(0) , m_runConfiguration(runConfiguration) , m_process(0) diff --git a/tests/auto/cplusplus/checksymbols/tst_checksymbols.cpp b/tests/auto/cplusplus/checksymbols/tst_checksymbols.cpp index 80ff3c8d1df..89e2e624f73 100644 --- a/tests/auto/cplusplus/checksymbols/tst_checksymbols.cpp +++ b/tests/auto/cplusplus/checksymbols/tst_checksymbols.cpp @@ -192,6 +192,7 @@ private slots: void test_checksymbols_macroUses(); void test_checksymbols_macroUses_data(); + void test_checksymbols_infiniteLoop_data(); void test_checksymbols_infiniteLoop(); }; @@ -1755,36 +1756,12 @@ void tst_CheckSymbols::test_checksymbols_macroUses_data() void tst_CheckSymbols::test_checksymbols_infiniteLoop() { - const QByteArray source1 = - "#include \"file2.h\"\n" - "\n" - "template\n" - "class basic_ios {\n" - " typedef basic_ostream<_Elem, _Traits> _Myos;\n" - "};\n" - "\n" - "template\n" - "class basic_ostream {\n" - " typedef basic_ostream<_Elem, _Traits> _Myt;\n" - " typedef ostreambuf_iterator<_Elem, _Traits> _Iter;\n" - "};\n" - ; + QFETCH(QByteArray, source1); + QFETCH(QByteArray, source2); + const QString filePath1 = QDir::tempPath() + QLatin1String("/file1.h"); Tests::TestCase::writeFile(filePath1, source1); - const QByteArray source2 = - "template\n" - "class basic_streambuf {\n" - " typedef basic_streambuf<_Elem, _Traits> _Myt;\n" - "};\n" - "\n" - "template\n" - "class ostreambuf_iterator {\n" - " typedef _Traits traits_type;\n" - " typedef basic_streambuf<_Elem, _Traits> streambuf_type;\n" - " typedef basic_ostream<_Elem, _Traits> ostream_type;\n" - "};\n" - ; const QString filePath2 = QDir::tempPath() + QLatin1String("/file2.h"); Tests::TestCase::writeFile(filePath2, source2); @@ -1797,5 +1774,77 @@ void tst_CheckSymbols::test_checksymbols_infiniteLoop() TestCase::runCheckSymbols(document1, snapshot); } +void tst_CheckSymbols::test_checksymbols_infiniteLoop_data() +{ + QTest::addColumn("source1"); + QTest::addColumn("source2"); + + QTest::newRow("1") + << + _("#include \"file2.h\"\n" + "\n" + "template\n" + "class basic_ios {\n" + " typedef basic_ostream<_Elem, _Traits> _Myos;\n" + "};\n" + "\n" + "template\n" + "class basic_ostream {\n" + " typedef basic_ostream<_Elem, _Traits> _Myt;\n" + " typedef ostreambuf_iterator<_Elem, _Traits> _Iter;\n" + "};\n") + << + _("template\n" + "class basic_streambuf {\n" + " typedef basic_streambuf<_Elem, _Traits> _Myt;\n" + "};\n" + "\n" + "template\n" + "class ostreambuf_iterator {\n" + " typedef _Traits traits_type;\n" + " typedef basic_streambuf<_Elem, _Traits> streambuf_type;\n" + " typedef basic_ostream<_Elem, _Traits> ostream_type;\n" + "};\n") + ; + + QTest::newRow("2") + << + _("#include \"file2.h\"\n" + "\n" + "template\n" + "struct _List_base_types\n" + "{\n" + " typedef typename _Wrap_alloc<_Alloc>::template rebind<_Ty>::other _Alty;\n" + " typedef typename _Alty::template rebind<_Node>::other _Alnod_type;\n" + "};\n" + "\n" + "template\n" + "struct _List_alloc \n" + "{\n" + " const _Alloc_types::_Alnod_type& _Getal() const {}\n" + "};\n" + "\n" + "template\n" + "struct _List_buy : public _List_alloc< _List_base_types<_Ty> >\n" + "{\n" + " void foo()\n" + " {\n" + " this->_Getal().construct(1, 2);\n" + " this->_Getal().deallocate(0, 1);\n" + " }\n" + "};\n") + << + _("template\n" + "struct _Wrap_alloc : public _Alloc\n" + "{\n" + " typedef _Alloc _Mybase;\n" + " template struct rebind { typedef _Wrap_alloc<_Other_alloc> other; };\n" + "\n" + " void deallocate(pointer _Ptr, size_type _Count) {}\n" + " void construct(value_type *_Ptr) {}\n" + "};\n") + ; +} + QTEST_APPLESS_MAIN(tst_CheckSymbols) #include "tst_checksymbols.moc" diff --git a/tests/auto/cplusplus/preprocessor/tst_preprocessor.cpp b/tests/auto/cplusplus/preprocessor/tst_preprocessor.cpp index 4852e242179..c9e417c59b4 100644 --- a/tests/auto/cplusplus/preprocessor/tst_preprocessor.cpp +++ b/tests/auto/cplusplus/preprocessor/tst_preprocessor.cpp @@ -390,6 +390,7 @@ private slots: void empty_trailing_lines_data(); void undef(); void concat(); + void excessive_nesting(); }; // Remove all #... lines, and 'simplify' string, to allow easily comparing the result @@ -1901,6 +1902,23 @@ void tst_Preprocessor::concat() QCOMPARE(prep.constData(), output.constData()); } +void tst_Preprocessor::excessive_nesting() +{ + Environment env; + Preprocessor preprocess(0, &env); + QByteArray input; + const QByteArray output = + "# 1 \"\"\n" + "# 2001 \"\"\n"; + for (int i = 0; i < 1000; ++i) + input += "#if FOO\n"; + for (int i = 0; i < 1000; ++i) + input += "#endif\n"; + QByteArray prep = preprocess.run(QLatin1String(""), input); + // Output cannot be precisely determined, but it shouldn't crash. + QCOMPARE(prep, output); +} + void tst_Preprocessor::compare_input_output(bool keepComments) { QFETCH(QByteArray, input); diff --git a/tests/auto/debugger/tst_offsets.cpp b/tests/auto/debugger/tst_offsets.cpp index a6e1d9255fe..a8eb0d15470 100644 --- a/tests/auto/debugger/tst_offsets.cpp +++ b/tests/auto/debugger/tst_offsets.cpp @@ -83,7 +83,17 @@ void tst_offsets::offsets_data() QFilePrivate *p = 0; QTestData &data = QTest::newRow("QFilePrivate::fileName") << int((char *)&p->fileName - (char *)p); - if (qtVersion > 0x50200) + if (qtVersion >= 0x50400) +#ifdef Q_OS_WIN +# ifdef Q_CC_MSVC + data << 196 << 272; +# else // MinGW + data << 188 << 272; +# endif +#else + data << 180 << 272; +#endif + else if (qtVersion > 0x50200) #ifdef Q_OS_WIN # ifdef Q_CC_MSVC data << 184 << 272; diff --git a/tests/system/shared/editor_utils.py b/tests/system/shared/editor_utils.py index 27dd588e4bf..f3811af5270 100644 --- a/tests/system/shared/editor_utils.py +++ b/tests/system/shared/editor_utils.py @@ -153,9 +153,12 @@ def verifyHoveringOnEditor(editor, lines, additionalKeyPresses, expectedTypes, e for ty in additionalKeyPresses: type(editor, ty) rect = editor.cursorRect(editor.textCursor()) + expectedToolTip = "{type='%s' visible='1'}" % expectedType + # wait for similar tooltips to disappear + checkIfObjectExists(expectedToolTip, False, 1000, True) sendEvent("QMouseEvent", editor, QEvent.MouseMove, rect.x+rect.width/2, rect.y+rect.height/2, Qt.NoButton, 0) try: - tip = waitForObject("{type='%s' visible='1'}" % expectedType) + tip = waitForObject(expectedToolTip) except: tip = None if tip == None: diff --git a/tests/system/shared/qtcreator.py b/tests/system/shared/qtcreator.py index 559334ea3f2..5190f1b3759 100644 --- a/tests/system/shared/qtcreator.py +++ b/tests/system/shared/qtcreator.py @@ -39,6 +39,8 @@ import sys import errno; from datetime import datetime,timedelta; +isQt53Build = os.getenv("SYSTEST_ISQT53BUILD") != "0" + srcPath = '' SettingsPath = '' tmpSettingsDir = '' diff --git a/tests/system/shared/utils.py b/tests/system/shared/utils.py index 2b30aca0487..b4532752084 100644 --- a/tests/system/shared/utils.py +++ b/tests/system/shared/utils.py @@ -578,9 +578,6 @@ def dumpChildren(item): return [item.child(index) for index in range(item.childCount())] def writeTestResults(folder): - if squishinfo.version < 0x040200FF: - print "Skipping writing test results (Squish < 4.2)" - return if not os.path.exists(folder): print "Skipping writing test results (folder '%s' does not exist)." % folder return diff --git a/tests/system/suite_HELP/tst_HELP06/test.py b/tests/system/suite_HELP/tst_HELP06/test.py index 7f79a046865..3d5a96b0d63 100755 --- a/tests/system/suite_HELP/tst_HELP06/test.py +++ b/tests/system/suite_HELP/tst_HELP06/test.py @@ -45,7 +45,13 @@ def invokeContextMenuItemOnBookmarkFolder(view, item, menuItem): "window=':Add Bookmark_BookmarkDialog'}" % aboveWidget), menuItem) def textForQtVersion(text): - return text + " | QtCreator" + if isQt53Build: + return text + " | QtCreator" + else: + suffix = "Qt Creator Manual" + if text != suffix: + text += " | " + suffix + return text def main(): startApplication("qtcreator" + SettingsPath) diff --git a/tests/system/suite_WELP/tst_WELP01/test.py b/tests/system/suite_WELP/tst_WELP01/test.py index 5b8208b7104..fd19e479b42 100755 --- a/tests/system/suite_WELP/tst_WELP01/test.py +++ b/tests/system/suite_WELP/tst_WELP01/test.py @@ -83,7 +83,10 @@ def main(): test.verify(checkIfObjectExists(gettingStartedText), "Verifying: Qt Creator displays Welcome Page with 'Get Started Now' button.") - expectedText = "(QtCreator : Qt Creator Manual)|(Qt Creator Manual [|] QtCreator)" + if isQt53Build: + expectedText = "(QtCreator : Qt Creator Manual)|(Qt Creator Manual [|] QtCreator)" + else: + expectedText = "Qt Creator Manual" testDetails = "Verifying: Help with Creator Documentation is being opened." clickItemVerifyHelpCombo(gettingStartedText, expectedText, testDetails) diff --git a/tests/system/suite_general/tst_opencreator_qbs/test.py b/tests/system/suite_general/tst_opencreator_qbs/test.py index b7d363c7cc9..27a70a72489 100644 --- a/tests/system/suite_general/tst_opencreator_qbs/test.py +++ b/tests/system/suite_general/tst_opencreator_qbs/test.py @@ -39,7 +39,12 @@ def main(): if not startedWithoutPluginError(): return openQbsProject(pathCreator) - progressBarWait(200000) + test.log("Start parsing project") naviTreeView = "{column='0' container=':Qt Creator_Utils::NavigationTreeView' text~='qtcreator( \[\S+\])?' type='QModelIndex'}" + ntwObject = waitForObject(naviTreeView) + if waitFor("ntwObject.model().rowCount(ntwObject) > 2", 200000): # No need to wait for C++-parsing + test.log("Parsing project done") # we only need the project + else: + test.warning("Parsing project timed out") compareProjectTree(naviTreeView, "projecttree_creator.tsv") invokeMenuItem("File", "Exit") diff --git a/tests/system/suite_tools/tst_codepasting/test.py b/tests/system/suite_tools/tst_codepasting/test.py index c8d7d2c4be0..00ba1335981 100644 --- a/tests/system/suite_tools/tst_codepasting/test.py +++ b/tests/system/suite_tools/tst_codepasting/test.py @@ -41,7 +41,7 @@ def main(): startApplication("qtcreator" + SettingsPath) if not startedWithoutPluginError(): return - protocolsToTest = ["Paste.KDE.Org", "Pastebin.Ca"] + protocolsToTest = ["Paste.KDE.Org"] # , "Pastebin.Ca"] # Be careful with Pastebin.Com, there are only 10 pastes per 24h # for all machines using the same IP-address like you. # protocolsToTest += ["Pastebin.Com"]