diff options
25 files changed, 153 insertions, 58 deletions
diff --git a/doc/images/qtcreator-build-environment.png b/doc/images/qtcreator-build-environment.png Binary files differindex 9818ebbc24..33b0a7b9e0 100644 --- a/doc/images/qtcreator-build-environment.png +++ b/doc/images/qtcreator-build-environment.png diff --git a/doc/images/qtcreator-build-steps-custom.png b/doc/images/qtcreator-build-steps-custom.png Binary files differindex ab9eef4b96..9f46ee7af7 100644 --- a/doc/images/qtcreator-build-steps-custom.png +++ b/doc/images/qtcreator-build-steps-custom.png diff --git a/doc/images/qtcreator-build-steps.png b/doc/images/qtcreator-build-steps.png Binary files differindex 1688209c70..5f03246e76 100644 --- a/doc/images/qtcreator-build-steps.png +++ b/doc/images/qtcreator-build-steps.png diff --git a/doc/images/qtcreator-clean-steps.png b/doc/images/qtcreator-clean-steps.png Binary files differindex 0814009d98..6946143f5c 100644 --- a/doc/images/qtcreator-clean-steps.png +++ b/doc/images/qtcreator-clean-steps.png diff --git a/doc/images/qtcreator-disable-steps.png b/doc/images/qtcreator-disable-steps.png Binary files differnew file mode 100644 index 0000000000..5fd83de9f9 --- /dev/null +++ b/doc/images/qtcreator-disable-steps.png diff --git a/doc/images/qtcreator-movestep.png b/doc/images/qtcreator-movestep.png Binary files differindex 59a3b21163..57e0f17ab6 100644 --- a/doc/images/qtcreator-movestep.png +++ b/doc/images/qtcreator-movestep.png diff --git a/doc/images/qtcreator-projectpane.png b/doc/images/qtcreator-projectpane.png Binary files differindex 782f21c942..f888b00cf3 100644 --- a/doc/images/qtcreator-projectpane.png +++ b/doc/images/qtcreator-projectpane.png diff --git a/doc/src/projects/creator-projects-settings-build.qdoc b/doc/src/projects/creator-projects-settings-build.qdoc index 86e876a06e..2b436a4a64 100644 --- a/doc/src/projects/creator-projects-settings-build.qdoc +++ b/doc/src/projects/creator-projects-settings-build.qdoc @@ -42,9 +42,6 @@ the final installation file. You specify build settings in the \gui Projects mode. - - \image qtcreator-projectpane.png - To add a new build configuration, click \gui Add and select the type of configuration you would like to add. You can add as many build configurations as you need. @@ -53,6 +50,8 @@ \section1 Editing Build Configurations + \image qtcreator-projectpane.png + To edit a build configuration: \list 1 @@ -150,7 +149,7 @@ \image qtcreator-build-steps.png "Build steps" - To override the shell command that \QC constructs by default, remove + To override the shell command that \QC constructs by default, disable or remove the build step and add a custom build step that specifies another shell command. @@ -159,8 +158,9 @@ To add custom steps to the build settings, select \gui {Add Build Step > Custom Process Step}. - By default, custom steps are disabled. To activate a custom step, select - the \gui{Enable custom process step} check-box. + By default, custom steps are enabled. To disable a custom step, select + the \inlineimage qtcreator-disable-steps.png + (\gui Disable) button. \image qtcreator-build-steps-custom.png "Custom Process Step" @@ -179,14 +179,14 @@ \o To add a clean step using make or a custom process, click \gui{Add Clean Step} and select the type of step you want to add. - By default, custom steps are disabled. To activate a custom step, - select the \gui{Enable custom process step} check-box. + By default, custom steps are enabled. To disable a custom step, + select the \gui Disable button. \o To remove a clean step, click \gui{Remove Item}. \o To change the order of steps, click \inlineimage qtcreator-movestep.png - . + (\gui {Move Up} and \gui {Move Down}). \endlist \section1 Build Environment @@ -214,4 +214,13 @@ compilers and tools need. Therefore, the environment is never totally empty, even after you clear it. + \section1 Related Topics + + \list + + \o \l{Adding Qt Versions} + \o \l{Adding Tool Chains} + + \endlist + */ diff --git a/share/qtcreator/welcomescreen/widgets/SessionItem.qml b/share/qtcreator/welcomescreen/widgets/SessionItem.qml index fb660c7ec3..20eaa3b0e3 100644 --- a/share/qtcreator/welcomescreen/widgets/SessionItem.qml +++ b/share/qtcreator/welcomescreen/widgets/SessionItem.qml @@ -177,6 +177,7 @@ Item { Row { x: 6 spacing: 4 + visible: !defaultSession Image { source: "images/icons/clone.png" } LinkedText { diff --git a/src/app/main.cpp b/src/app/main.cpp index 612aadd055..0fbbc5e1b0 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -234,10 +234,6 @@ int main(int argc, char **argv) QtSystemExceptionHandler systemExceptionHandler; #endif - QTranslator translator; - QTranslator qtTranslator; - QString locale = QLocale::system().name(); - // Manually determine -settingspath command line option // We can't use the regular way of the plugin manager, because that needs to parse pluginspecs // but the settings path can influence which plugins are enabled @@ -273,19 +269,37 @@ int main(int argc, char **argv) pluginManager.setGlobalSettings(globalSettings); pluginManager.setSettings(settings); - locale = settings->value("General/OverrideLanguage", locale).toString(); + QTranslator translator; + QTranslator qtTranslator; + QStringList uiLanguages; +#if QT_VERSION >= 0x040800 + uiLanguages = QLocale::system().uiLanguages(); +#else + uiLanguages << QLocale::system().name(); +#endif + QString overrideLanguage = settings->value("General/OverrideLanguage").toString(); + if (!overrideLanguage.isEmpty()) + uiLanguages.prepend(overrideLanguage); const QString &creatorTrPath = QCoreApplication::applicationDirPath() + QLatin1String(SHARE_PATH "/translations"); - if (translator.load(QLatin1String("qtcreator_") + locale, creatorTrPath)) { - const QString &qtTrPath = QLibraryInfo::location(QLibraryInfo::TranslationsPath); - const QString &qtTrFile = QLatin1String("qt_") + locale; - // Binary installer puts Qt tr files into creatorTrPath - if (qtTranslator.load(qtTrFile, qtTrPath) || qtTranslator.load(qtTrFile, creatorTrPath)) { - app.installTranslator(&translator); - app.installTranslator(&qtTranslator); - app.setProperty("qtc_locale", locale); - } else { + foreach (const QString &locale, uiLanguages) { + if (translator.load(QLatin1String("qtcreator_") + locale, creatorTrPath)) { + const QString &qtTrPath = QLibraryInfo::location(QLibraryInfo::TranslationsPath); + const QString &qtTrFile = QLatin1String("qt_") + locale; + // Binary installer puts Qt tr files into creatorTrPath + if (qtTranslator.load(qtTrFile, qtTrPath) || qtTranslator.load(qtTrFile, creatorTrPath)) { + app.installTranslator(&translator); + app.installTranslator(&qtTranslator); + app.setProperty("qtc_locale", locale); + break; + } translator.load(QString()); // unload() + } else if (locale == QLatin1String("C") /* overrideLanguage == "English" */) { + // use built-in + break; + } else if (locale.startsWith(QLatin1String("en")) /* "English" is built-in */) { + // use built-in + break; } } diff --git a/src/libs/3rdparty/cplusplus/Parser.cpp b/src/libs/3rdparty/cplusplus/Parser.cpp index 77d7a5e200..95fd714798 100644 --- a/src/libs/3rdparty/cplusplus/Parser.cpp +++ b/src/libs/3rdparty/cplusplus/Parser.cpp @@ -3638,11 +3638,9 @@ bool Parser::parseBuiltinTypeSpecifier(SpecifierListAST *&node) DecltypeSpecifierAST *ast = new (_pool) DecltypeSpecifierAST; ast->decltype_token = consumeToken(); match(T_LPAREN, &ast->lparen_token); - if (parseExpression(ast->expression)) { + if (parseExpression(ast->expression)) match(T_RPAREN, &ast->rparen_token); - node = new (_pool) SpecifierListAST(ast); - return true; - } + node = new (_pool) SpecifierListAST(ast); skipUntilDeclaration(); return true; } else if (lookAtBuiltinTypeSpecifier()) { diff --git a/src/libs/utils/filenamevalidatinglineedit.cpp b/src/libs/utils/filenamevalidatinglineedit.cpp index 4bbed5720f..a90356e190 100644 --- a/src/libs/utils/filenamevalidatinglineedit.cpp +++ b/src/libs/utils/filenamevalidatinglineedit.cpp @@ -95,14 +95,11 @@ void FileNameValidatingLineEdit::setForceFirstCapitalLetter(bool b) /* Validate a file base name, check for forbidden characters/strings. */ -#ifdef Q_OS_WIN -# define SLASHES "/\\" -#else -# define SLASHES "/" -#endif - -static const char notAllowedCharsSubDir[] = "~!?:&*\"|#%<>$\"'();`' "; -static const char notAllowedCharsNoSubDir[] = "~!?:&*\"|#%<>$\"'();`' "SLASHES; + +#define SLASHES "/\\" + +static const char notAllowedCharsSubDir[] = ",^@=+{}[]~!?:&*\"|#%<>$\"'();`' "; +static const char notAllowedCharsNoSubDir[] = ",^@=+{}[]~!?:&*\"|#%<>$\"'();`' "SLASHES; static const char *notAllowedSubStrings[] = {".."}; diff --git a/src/libs/utils/fileutils.cpp b/src/libs/utils/fileutils.cpp index 3c201d31c7..cb62ca4172 100644 --- a/src/libs/utils/fileutils.cpp +++ b/src/libs/utils/fileutils.cpp @@ -62,7 +62,7 @@ namespace Utils { bool FileUtils::removeRecursively(const QString &filePath, QString *error) { QFileInfo fileInfo(filePath); - if (!fileInfo.exists()) + if (!fileInfo.exists() && !fileInfo.isSymLink()) return true; QFile::setPermissions(filePath, fileInfo.permissions() | QFile::WriteUser); if (fileInfo.isDir()) { diff --git a/src/plugins/cmakeprojectmanager/makestep.cpp b/src/plugins/cmakeprojectmanager/makestep.cpp index 431b6c9dea..524ba5548a 100644 --- a/src/plugins/cmakeprojectmanager/makestep.cpp +++ b/src/plugins/cmakeprojectmanager/makestep.cpp @@ -249,7 +249,7 @@ MakeStepConfigWidget::MakeStepConfigWidget(MakeStep *makeStep) // TODO update this list also on rescans of the CMakeLists.txt // TODO shouldn't be accessing project - CMakeProject *pro = m_makeStep->cmakeBuildConfiguration()->cmakeTarget()->cmakeProject(); + CMakeProject *pro = static_cast<CMakeProject *>(m_makeStep->target()->project()); foreach (const QString& buildTarget, pro->buildTargetTitles()) { QListWidgetItem *item = new QListWidgetItem(buildTarget, m_buildTargetsList); item->setFlags(item->flags() | Qt::ItemIsUserCheckable); @@ -288,7 +288,7 @@ void MakeStepConfigWidget::buildTargetsChanged() { disconnect(m_buildTargetsList, SIGNAL(itemChanged(QListWidgetItem*)), this, SLOT(itemChanged(QListWidgetItem*))); m_buildTargetsList->clear(); - CMakeProject *pro = m_makeStep->cmakeBuildConfiguration()->cmakeTarget()->cmakeProject(); + CMakeProject *pro = static_cast<CMakeProject *>(m_makeStep->target()->project()); foreach (const QString& buildTarget, pro->buildTargetTitles()) { QListWidgetItem *item = new QListWidgetItem(buildTarget, m_buildTargetsList); item->setFlags(item->flags() | Qt::ItemIsUserCheckable); @@ -301,6 +301,8 @@ void MakeStepConfigWidget::buildTargetsChanged() void MakeStepConfigWidget::updateDetails() { CMakeBuildConfiguration *bc = m_makeStep->cmakeBuildConfiguration(); + if (!bc) + bc = static_cast<CMakeBuildConfiguration *>(m_makeStep->target()->activeBuildConfiguration()); ProjectExplorer::ToolChain *tc = bc->toolChain(); if (tc) { QString arguments = Utils::QtcProcess::joinArgs(m_makeStep->m_buildTargets); diff --git a/src/plugins/cpptools/cppfindreferences.cpp b/src/plugins/cpptools/cppfindreferences.cpp index 30e5690b7e..91676c6333 100644 --- a/src/plugins/cpptools/cppfindreferences.cpp +++ b/src/plugins/cpptools/cppfindreferences.cpp @@ -514,11 +514,13 @@ void CppFindReferences::cancel() void CppFindReferences::openEditor(const Find::SearchResultItem &item) { if (item.path.size() > 0) { - TextEditor::BaseTextEditorWidget::openEditorAt(item.path.first(), item.lineNumber, item.textMarkPos, - Core::Id(), - Core::EditorManager::ModeSwitch); + TextEditor::BaseTextEditorWidget::openEditorAt(QDir::fromNativeSeparators(item.path.first()), + item.lineNumber, item.textMarkPos, + Core::Id(), + Core::EditorManager::ModeSwitch); } else { - Core::EditorManager::instance()->openEditor(item.text, Core::Id(), Core::EditorManager::ModeSwitch); + Core::EditorManager::instance()->openEditor(QDir::fromNativeSeparators(item.text), + Core::Id(), Core::EditorManager::ModeSwitch); } } diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index c5032e5ba5..f5a721adf8 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -812,12 +812,21 @@ QStringList CppModelManager::internalFrameworkPaths() const QByteArray CppModelManager::internalDefinedMacros() const { QByteArray macros; + QSet<QByteArray> alreadyIn; QMapIterator<ProjectExplorer::Project *, ProjectInfo> it(m_projects); while (it.hasNext()) { it.next(); ProjectInfo pinfo = it.value(); - foreach (const ProjectPart::Ptr &part, pinfo.projectParts()) - macros += part->defines; + foreach (const ProjectPart::Ptr &part, pinfo.projectParts()) { + const QList<QByteArray> defs = part->defines.split('\n'); + foreach (const QByteArray &def, defs) { + if (!alreadyIn.contains(def)) { + macros += def; + macros.append('\n'); + alreadyIn.insert(def); + } + } + } } return macros; } diff --git a/src/plugins/genericprojectmanager/genericmakestep.cpp b/src/plugins/genericprojectmanager/genericmakestep.cpp index 5a6d782ee4..57bb1d49b0 100644 --- a/src/plugins/genericprojectmanager/genericmakestep.cpp +++ b/src/plugins/genericprojectmanager/genericmakestep.cpp @@ -110,6 +110,8 @@ GenericBuildConfiguration *GenericMakeStep::genericBuildConfiguration() const bool GenericMakeStep::init() { GenericBuildConfiguration *bc = genericBuildConfiguration(); + if (!bc) + bc = static_cast<GenericBuildConfiguration *>(target()->activeBuildConfiguration()); ProjectExplorer::ProcessParameters *pp = processParameters(); pp->setMacroExpander(bc->macroExpander()); @@ -173,7 +175,7 @@ QString GenericMakeStep::makeCommand() const { QString command = m_makeCommand; if (command.isEmpty()) { - GenericProject *pro = genericBuildConfiguration()->genericTarget()->genericProject(); + GenericProject *pro = static_cast<GenericProject *>(target()->project()); if (ProjectExplorer::ToolChain *toolChain = pro->toolChain()) command = toolChain->makeCommand(); else @@ -224,7 +226,7 @@ GenericMakeStepConfigWidget::GenericMakeStepConfigWidget(GenericMakeStep *makeSt m_ui->setupUi(this); // TODO update this list also on rescans of the GenericLists.txt - GenericProject *pro = m_makeStep->genericBuildConfiguration()->genericTarget()->genericProject(); + GenericProject *pro = static_cast<GenericProject *>(m_makeStep->target()->project()); foreach (const QString &target, pro->buildTargets()) { QListWidgetItem *item = new QListWidgetItem(target, m_ui->targetsList); item->setFlags(item->flags() | Qt::ItemIsUserCheckable); @@ -263,6 +265,8 @@ void GenericMakeStepConfigWidget::updateMakeOverrrideLabel() void GenericMakeStepConfigWidget::updateDetails() { GenericBuildConfiguration *bc = m_makeStep->genericBuildConfiguration(); + if (!bc) + bc = static_cast<GenericBuildConfiguration *>(m_makeStep->target()->activeBuildConfiguration()); ProjectExplorer::ProcessParameters param; param.setMacroExpander(bc->macroExpander()); diff --git a/src/plugins/projectexplorer/abstractmsvctoolchain.cpp b/src/plugins/projectexplorer/abstractmsvctoolchain.cpp index 136bef3069..4bb17b044e 100644 --- a/src/plugins/projectexplorer/abstractmsvctoolchain.cpp +++ b/src/plugins/projectexplorer/abstractmsvctoolchain.cpp @@ -203,7 +203,7 @@ bool AbstractMsvcToolChain::generateEnvironmentSettings(Utils::Environment &env, Utils::TempFileSaver saver(QDir::tempPath() + QLatin1String("/XXXXXX.bat")); QByteArray call = "call "; - call += Utils::QtcProcess::quoteArg(batchFile).toLocal8Bit() + "\r\n"; + call += Utils::QtcProcess::quoteArg(batchFile).toLocal8Bit(); if (!batchArgs.isEmpty()) { call += ' '; call += batchArgs.toLocal8Bit(); diff --git a/src/plugins/projectexplorer/session.cpp b/src/plugins/projectexplorer/session.cpp index 103bf494c2..1b5d590511 100644 --- a/src/plugins/projectexplorer/session.cpp +++ b/src/plugins/projectexplorer/session.cpp @@ -285,11 +285,6 @@ void SessionManager::addProjects(const QList<Project*> &projects) if (clearedList.count() == 1) emit singleProjectAdded(clearedList.first()); - - // maybe we have a new startup project? - if (!startupProject()) - if (!m_projects.isEmpty()) - setStartupProject(m_projects.first()); } void SessionManager::removeProject(Project *project) @@ -759,7 +754,7 @@ void SessionManager::restoreStartupProject(const Utils::PersistentSettingsReader const QString startupProjectPath = startupProject; foreach (Project *pro, m_projects) { if (QDir::cleanPath(pro->document()->fileName()) == startupProjectPath) { - setStartupProject(m_startupProject); + setStartupProject(pro); break; } } diff --git a/tests/auto/cplusplus/ast/tst_ast.cpp b/tests/auto/cplusplus/ast/tst_ast.cpp index 13f90d2a29..6f5e349f70 100644 --- a/tests/auto/cplusplus/ast/tst_ast.cpp +++ b/tests/auto/cplusplus/ast/tst_ast.cpp @@ -101,6 +101,7 @@ private slots: void gcc_attributes_1(); void gcc_attributes_2(); void gcc_attributes_3(); + void crash_test_1(); // expressions void simple_name_1(); @@ -212,6 +213,13 @@ void tst_AST::gcc_attributes_3() QCOMPARE(unit->tokenKind(link->rbrace_token), (int) T_RBRACE); } +void tst_AST::crash_test_1() +{ + QSharedPointer<TranslationUnit> unit(parseStatement("decltype auto\n")); + AST *ast = unit->ast(); + QVERIFY(ast); +} + void tst_AST::simple_declaration_1() { QSharedPointer<TranslationUnit> unit(parseStatement("\n" diff --git a/tests/system/settings/unix/Nokia/qtversion.xml b/tests/system/settings/unix/Nokia/qtversion.xml index a06c086f4f..8d8ce4b3c7 100644 --- a/tests/system/settings/unix/Nokia/qtversion.xml +++ b/tests/system/settings/unix/Nokia/qtversion.xml @@ -54,8 +54,18 @@ </valuemap> </data> <data> + <variable>QtVersion.5</variable> + <valuemap type="QVariantMap"> + <value type="int" key="Id">2</value> + <value type="QString" key="Name">Desktop Qt 4.8 for GCC (Qt SDK)</value> + <value type="QString" key="QMakePath">~/QtSDK/Desktop/Qt/4.8.0/gcc/bin/qmake</value> + <value type="QString" key="QtVersion.Type">Qt4ProjectManager.QtVersion.Desktop</value> + <value type="bool" key="isAutodetected">false</value> + </valuemap> + </data> + <data> <variable>QtVersion.Count</variable> - <value type="int">5</value> + <value type="int">6</value> </data> <data> <variable>Version</variable> diff --git a/tests/system/settings/windows/Nokia/qtversion.xml b/tests/system/settings/windows/Nokia/qtversion.xml index c368196718..cfc45474e6 100644 --- a/tests/system/settings/windows/Nokia/qtversion.xml +++ b/tests/system/settings/windows/Nokia/qtversion.xml @@ -108,8 +108,38 @@ </valuemap> </data> <data> + <variable>QtVersion.9</variable> + <valuemap type="QVariantMap"> + <value type="int" key="Id">1</value> + <value type="QString" key="Name">Qt 4.8 for Desktop - MSVC2008 (Qt SDK)</value> + <value type="QString" key="QMakePath">C:/QtSDK/Desktop/Qt/4.8.0/msvc2008/bin/qmake.exe</value> + <value type="QString" key="QtVersion.Type">Qt4ProjectManager.QtVersion.Desktop</value> + <value type="bool" key="isAutodetected">false</value> + </valuemap> + </data> + <data> + <variable>QtVersion.10</variable> + <valuemap type="QVariantMap"> + <value type="int" key="Id">2</value> + <value type="QString" key="Name">Qt 4.8 for Desktop - MSVC2010 (Qt SDK)</value> + <value type="QString" key="QMakePath">C:/QtSDK/Desktop/Qt/4.8.0/msvc2010/bin/qmake.exe</value> + <value type="QString" key="QtVersion.Type">Qt4ProjectManager.QtVersion.Desktop</value> + <value type="bool" key="isAutodetected">false</value> + </valuemap> + </data> + <data> + <variable>QtVersion.10</variable> + <valuemap type="QVariantMap"> + <value type="int" key="Id">3</value> + <value type="QString" key="Name">Qt 4.8 for Desktop - MinGW (Qt SDK)</value> + <value type="QString" key="QMakePath">C:/QtSDK/Desktop/Qt/4.8.0/mingw/bin/qmake.exe</value> + <value type="QString" key="QtVersion.Type">Qt4ProjectManager.QtVersion.Desktop</value> + <value type="bool" key="isAutodetected">false</value> + </valuemap> + </data> + <data> <variable>QtVersion.Count</variable> - <value type="int">9</value> + <value type="int">12</value> </data> <data> <variable>Version</variable> diff --git a/tests/system/shared/project.py b/tests/system/shared/project.py index 7aff291bf3..fc039880b6 100644 --- a/tests/system/shared/project.py +++ b/tests/system/shared/project.py @@ -11,11 +11,12 @@ def __handleProcessExited__(object, exitCode): global processExited processExited = True -def openQmakeProject(projectPath): +def openQmakeProject(projectPath, targets=QtQuickConstants.Targets.DESKTOP): invokeMenuItem("File", "Open File or Project...") selectFromFileDialog(projectPath) selectFromCombo(waitForObject(":Qt Creator.Create Build Configurations:_QComboBox", 180000), "For Each Qt Version One Debug And One Release") + __chooseTargets__(targets) configureButton = waitForObject("{text='Configure Project' type='QPushButton' unnamed='1' visible='1'" "window=':Qt Creator_Core::Internal::MainWindow'}", 20000) clickButton(configureButton) @@ -271,6 +272,7 @@ def __chooseTargets__(targets=QtQuickConstants.Targets.DESKTOP, availableTargets QtQuickConstants.Targets.SIMULATOR, QtQuickConstants.Targets.HARMATTAN] if platform.system() in ('Windows', 'Microsoft'): available += [QtQuickConstants.Targets.SYMBIAN] + available.remove(QtQuickConstants.Targets.EMBEDDED_LINUX) for current in available: mustCheck = targets & current == current try: diff --git a/tests/system/shared/project_explorer.py b/tests/system/shared/project_explorer.py index 92055a9fee..643182f3f4 100644 --- a/tests/system/shared/project_explorer.py +++ b/tests/system/shared/project_explorer.py @@ -2,11 +2,14 @@ import re; # this function switches the MainWindow of creator to the specified view def switchViewTo(view): + # make sure that no tooltip is shown, so move the mouse away and wait until all disappear + mouseMove(waitForObject(':Qt Creator_Core::Internal::MainWindow'), -20, -20) + waitFor("not QToolTip.isVisible()", 15000) if view < ViewConstants.WELCOME or view > ViewConstants.LAST_AVAILABLE: return tabBar = waitForObject("{type='Core::Internal::FancyTabBar' unnamed='1' visible='1' " "window=':Qt Creator_Core::Internal::MainWindow'}") - mouseMove(tabBar, 10, 10 + 52 * view) + mouseMove(tabBar, 20, 20 + 52 * view) if waitFor("QToolTip.isVisible()", 10000): text = str(QToolTip.text()) else: @@ -18,7 +21,7 @@ def switchViewTo(view): else: test.warning("ToolTip does not match", "Expected pattern: %s\nGot: %s" % (pattern, text)) mouseClick(waitForObject("{type='Core::Internal::FancyTabBar' unnamed='1' visible='1' " - "window=':Qt Creator_Core::Internal::MainWindow'}"), 5, 5 + 52 * view, 0, Qt.LeftButton) + "window=':Qt Creator_Core::Internal::MainWindow'}"), 20, 20 + 52 * view, 0, Qt.LeftButton) # this function is used to make sure that simple building prerequisites are met # param targetCount specifies how many build targets had been selected (it's important that this one is correct) diff --git a/tests/system/suite_general/tst_build_speedcrunch/test.py b/tests/system/suite_general/tst_build_speedcrunch/test.py index a977de109b..cd2c09879a 100644 --- a/tests/system/suite_general/tst_build_speedcrunch/test.py +++ b/tests/system/suite_general/tst_build_speedcrunch/test.py @@ -1,4 +1,5 @@ source("../../shared/qtcreator.py") +import re SpeedCrunchPath = "" @@ -25,7 +26,17 @@ def main(): fancyToolButton = waitForObject(":*Qt Creator_Core::Internal::FancyToolButton") + qtVerPattern = re.compile("\d\.\d(\.\d+)?") for config in iterateBuildConfigs(1, 0, "(Desktop )?Qt.*Release"): + qtVersion = qtVerPattern.search(config) + if qtVersion: + qtVersion = qtVersion.group() + if qtVersion >= "4.8": + test.log("Skipping config %s - this project needs Qt <= 4.7.x (got %s)" % (config, qtVersion)) + continue + else: + test.warning("Could not determine Qt version for config '%s' - skipping..." % config) + continue selectBuildConfig(1, 0, config) buildConfig = buildConfigFromFancyToolButton(fancyToolButton) if buildConfig != config: |