diff --git a/dist/changes-2.6.0 b/dist/changes-2.6.0 index 73146bddb30..cd97fefa390 100644 --- a/dist/changes-2.6.0 +++ b/dist/changes-2.6.0 @@ -37,7 +37,7 @@ Managing Projects * Moved the debugger setting from tool chains to kits and renamed tool chains to compilers * Added experimental support for Android (enable the plugin in Help > About Plugins) - * Added experimental support for QNX (enable the plugin in Help > About Plugins) + * Added support for QNX * Made it possible to disable deploy configurations * Added double-clicking of file names in compile errors to open the file * Added a Cancel Build button to the Compile Output pane diff --git a/doc/src/overview/creator-tech-support.qdoc b/doc/src/overview/creator-tech-support.qdoc index 2ab040b19f4..d0a270c21db 100644 --- a/doc/src/overview/creator-tech-support.qdoc +++ b/doc/src/overview/creator-tech-support.qdoc @@ -41,8 +41,11 @@ \row \o Learn more about Qt - \o \l{http://qt.nokia.com/developer/learning/online/training/specialized-elearning/} - {Specialized eLearning Modules Based on Qt Training Modules} + \o \l{http://qt.digia.com/product/learning/}{Learning} + from Digia + + \l{http://qt-project.org/wiki/developer-guides} + {Qt Developer Guides} from Qt Project \row \o Develop Qt applications for desktop and mobile devices @@ -55,15 +58,15 @@ \row \o Participate in Qt development - \o \l{http://qt.gitorious.org/}{Qt Git Hosting} + \o \l{http://qt-project.org/contribute}{Contribute to Qt} \row \o Find free Qt-based applications \o \l{http://qt-apps.org/}{Qt Apps} \row - \o Buy commercial Qt support from Digia - \o \l{http://qt.digia.com/}{Qt Commercial} + \o Develop with a commercial Qt license and support - Qt by Digia + \o \l{http://qt.digia.com/Product/Licensing/}{Qt Licensing} \endtable */ diff --git a/qtcreator.qbp b/qtcreator.qbp index 7ba51acdbde..1bb841a8d54 100644 --- a/qtcreator.qbp +++ b/qtcreator.qbp @@ -13,7 +13,6 @@ Project { "lib/qtcreator/qtcomponents/qtcomponents.qbs", "share/share.qbs", "share/qtcreator/translations/translations.qbs", - "src/libs/3rdparty/botan/botan.qbs", "src/libs/aggregation/aggregation.qbs", "src/libs/cplusplus/cplusplus.qbs", "src/libs/extensionsystem/extensionsystem.qbs", diff --git a/src/libs/3rdparty/3rdparty.pro b/src/libs/3rdparty/3rdparty.pro deleted file mode 100644 index c7babdde2c0..00000000000 --- a/src/libs/3rdparty/3rdparty.pro +++ /dev/null @@ -1,4 +0,0 @@ -TEMPLATE = subdirs -CONFIG += ordered - -SUBDIRS += botan diff --git a/src/libs/3rdparty/botan/botan.pri b/src/libs/3rdparty/botan/botan.pri index 20832c1a7aa..1088c997326 100644 --- a/src/libs/3rdparty/botan/botan.pri +++ b/src/libs/3rdparty/botan/botan.pri @@ -1,2 +1,46 @@ INCLUDEPATH *= $$PWD/.. -LIBS *= -l$$qtLibraryName(Botan) +HEADERS += $$PWD/botan.h +SOURCES += $$PWD/botan.cpp + +CONFIG += exceptions + +DEPENDPATH += . + +DEFINES += BOTAN_DLL= +unix:DEFINES += BOTAN_TARGET_OS_HAS_GETTIMEOFDAY BOTAN_HAS_ALLOC_MMAP \ + BOTAN_HAS_ENTROPY_SRC_DEV_RANDOM BOTAN_HAS_ENTROPY_SRC_EGD BOTAN_HAS_ENTROPY_SRC_FTW \ + BOTAN_HAS_ENTROPY_SRC_UNIX BOTAN_HAS_MUTEX_PTHREAD BOTAN_HAS_PIPE_UNIXFD_IO +*linux*:DEFINES += BOTAN_TARGET_OS_IS_LINUX BOTAN_TARGET_OS_HAS_CLOCK_GETTIME \ + BOTAN_TARGET_OS_HAS_DLOPEN BOTAN_TARGET_OS_HAS_GMTIME_R BOTAN_TARGET_OS_HAS_POSIX_MLOCK \ + BOTAN_HAS_DYNAMICALLY_LOADED_ENGINE BOTAN_HAS_DYNAMIC_LOADER +macx:DEFINES += BOTAN_TARGET_OS_IS_DARWIN +*g++*:DEFINES += BOTAN_BUILD_COMPILER_IS_GCC +*clang*:DEFINES += BOTAN_BUILD_COMPILER_IS_CLANG +*icc*:DEFINES += BOTAN_BUILD_COMPILER_IS_INTEL + +win32 { + DEFINES += BOTAN_TARGET_OS_IS_WINDOWS \ + BOTAN_TARGET_OS_HAS_LOADLIBRARY BOTAN_TARGET_OS_HAS_WIN32_GET_SYSTEMTIME \ + BOTAN_TARGET_OS_HAS_WIN32_VIRTUAL_LOCK BOTAN_HAS_DYNAMICALLY_LOADED_ENGINE \ + BOTAN_HAS_DYNAMIC_LOADER BOTAN_HAS_ENTROPY_SRC_CAPI BOTAN_HAS_ENTROPY_SRC_WIN32 \ + BOTAN_HAS_MUTEX_WIN32 + + win32-msvc* { + QMAKE_CXXFLAGS += -wd4251 -wd4290 -wd4250 + DEFINES += BOTAN_BUILD_COMPILER_IS_MSVC BOTAN_TARGET_OS_HAS_GMTIME_S + } else { + QMAKE_CFLAGS += -fpermissive -finline-functions -Wno-long-long + QMAKE_CXXFLAGS += -fpermissive -finline-functions -Wno-long-long + } + LIBS += -ladvapi32 -luser32 +} + +unix:*-g++* { + QMAKE_CFLAGS += -fPIC -ansi -fpermissive -finline-functions -Wno-long-long + QMAKE_CXXFLAGS += -fPIC -ansi -fpermissive -finline-functions -Wno-long-long + QMAKE_CXXFLAGS_HIDESYMS -= -fvisibility-inlines-hidden # for ubuntu 7.04 +} + +linux*|freebsd* { + LIBS += -lrt +} diff --git a/src/libs/3rdparty/botan/botan.pro b/src/libs/3rdparty/botan/botan.pro deleted file mode 100644 index 92f2bd0f6a1..00000000000 --- a/src/libs/3rdparty/botan/botan.pro +++ /dev/null @@ -1,53 +0,0 @@ -TEMPLATE = lib -TARGET = Botan - -PRECOMPILED_HEADER = ../precompiled_headers/botan_pch.h - -CONFIG += exceptions - -include(../../../qtcreatorlibrary.pri) - -DEPENDPATH += . -INCLUDEPATH += . - -DEFINES += BOTAN_DLL=Q_DECL_EXPORT -unix:DEFINES += BOTAN_TARGET_OS_HAS_GETTIMEOFDAY BOTAN_HAS_ALLOC_MMAP \ - BOTAN_HAS_ENTROPY_SRC_DEV_RANDOM BOTAN_HAS_ENTROPY_SRC_EGD BOTAN_HAS_ENTROPY_SRC_FTW \ - BOTAN_HAS_ENTROPY_SRC_UNIX BOTAN_HAS_MUTEX_PTHREAD BOTAN_HAS_PIPE_UNIXFD_IO -*linux*:DEFINES += BOTAN_TARGET_OS_IS_LINUX BOTAN_TARGET_OS_HAS_CLOCK_GETTIME \ - BOTAN_TARGET_OS_HAS_DLOPEN BOTAN_TARGET_OS_HAS_GMTIME_R BOTAN_TARGET_OS_HAS_POSIX_MLOCK \ - BOTAN_HAS_DYNAMICALLY_LOADED_ENGINE BOTAN_HAS_DYNAMIC_LOADER -macx:DEFINES += BOTAN_TARGET_OS_IS_DARWIN -*g++*:DEFINES += BOTAN_BUILD_COMPILER_IS_GCC -*clang*:DEFINES += BOTAN_BUILD_COMPILER_IS_CLANG -*icc*:DEFINES += BOTAN_BUILD_COMPILER_IS_INTEL - -win32 { - DEFINES += BOTAN_TARGET_OS_IS_WINDOWS \ - BOTAN_TARGET_OS_HAS_LOADLIBRARY BOTAN_TARGET_OS_HAS_WIN32_GET_SYSTEMTIME \ - BOTAN_TARGET_OS_HAS_WIN32_VIRTUAL_LOCK BOTAN_HAS_DYNAMICALLY_LOADED_ENGINE \ - BOTAN_HAS_DYNAMIC_LOADER BOTAN_HAS_ENTROPY_SRC_CAPI BOTAN_HAS_ENTROPY_SRC_WIN32 \ - BOTAN_HAS_MUTEX_WIN32 - - win32-msvc* { - QMAKE_CXXFLAGS += -wd4251 -wd4290 -wd4250 - DEFINES += BOTAN_BUILD_COMPILER_IS_MSVC BOTAN_TARGET_OS_HAS_GMTIME_S - } else { - QMAKE_CFLAGS += -fpermissive -finline-functions -Wno-long-long - QMAKE_CXXFLAGS += -fpermissive -finline-functions -Wno-long-long - } - LIBS += -ladvapi32 -luser32 -} - -unix:*-g++* { - QMAKE_CFLAGS += -fPIC -ansi -fpermissive -finline-functions -Wno-long-long - QMAKE_CXXFLAGS += -fPIC -ansi -fpermissive -finline-functions -Wno-long-long - QMAKE_CXXFLAGS_HIDESYMS -= -fvisibility-inlines-hidden # for ubuntu 7.04 -} - -HEADERS += botan.h -SOURCES += botan.cpp - -linux*|freebsd* { - LIBS += -lrt -} diff --git a/src/libs/3rdparty/botan/botan.qbs b/src/libs/3rdparty/botan/botan.qbs deleted file mode 100644 index 3743e8d27ab..00000000000 --- a/src/libs/3rdparty/botan/botan.qbs +++ /dev/null @@ -1,69 +0,0 @@ -import qbs.base 1.0 -import "../../QtcLibrary.qbs" as QtcLibrary - -QtcLibrary { - name: "Botan" - - Depends { name: "cpp" } - Depends { name: "Qt.core" } - - cpp.dynamicLibraries: { - if (qbs.targetOS == "windows") { - return [ - "advapi32", - "user32" - ] - } else { - return ["rt", "dl"] - } - } - - cpp.defines: { - var result = ["BOTAN_DLL=Q_DECL_EXPORT"] - if (qbs.toolchain == "msvc") - result.push("BOTAN_BUILD_COMPILER_IS_MSVC", "BOTAN_TARGET_OS_HAS_GMTIME_S") - if (qbs.toolchain == "gcc" || qbs.toolchain == "mingw") - result.push("BOTAN_BUILD_COMPILER_IS_GCC") - if (qbs.targetOS == "linux") - result.push("BOTAN_TARGET_OS_IS_LINUX", "BOTAN_TARGET_OS_HAS_CLOCK_GETTIME", - "BOTAN_TARGET_OS_HAS_DLOPEN", " BOTAN_TARGET_OS_HAS_GMTIME_R", - "BOTAN_TARGET_OS_HAS_POSIX_MLOCK", "BOTAN_HAS_DYNAMICALLY_LOADED_ENGINE", - "BOTAN_HAS_DYNAMIC_LOADER", "BOTAN_TARGET_OS_HAS_GETTIMEOFDAY", - "BOTAN_HAS_ALLOC_MMAP", "BOTAN_HAS_ENTROPY_SRC_DEV_RANDOM", - "BOTAN_HAS_ENTROPY_SRC_EGD", "BOTAN_HAS_ENTROPY_SRC_FTW", - "BOTAN_HAS_ENTROPY_SRC_UNIX", "BOTAN_HAS_MUTEX_PTHREAD", "BOTAN_HAS_PIPE_UNIXFD_IO") - if (qbs.targetOS == "mac") - result.push("BOTAN_TARGET_OS_IS_DARWIN", "BOTAN_TARGET_OS_HAS_GETTIMEOFDAY", - "BOTAN_HAS_ALLOC_MMAP", "BOTAN_HAS_ENTROPY_SRC_DEV_RANDOM", - "BOTAN_HAS_ENTROPY_SRC_EGD", "BOTAN_HAS_ENTROPY_SRC_FTW", - "BOTAN_HAS_ENTROPY_SRC_UNIX", "BOTAN_HAS_MUTEX_PTHREAD", "BOTAN_HAS_PIPE_UNIXFD_IO") - if (qbs.targetOS == "windows") - result.push("BOTAN_TARGET_OS_IS_WINDOWS", - "BOTAN_TARGET_OS_HAS_LOADLIBRARY", "BOTAN_TARGET_OS_HAS_WIN32_GET_SYSTEMTIME", - "BOTAN_TARGET_OS_HAS_WIN32_VIRTUAL_LOCK", "BOTAN_HAS_DYNAMICALLY_LOADED_ENGINE", - "BOTAN_HAS_DYNAMIC_LOADER", "BOTAN_HAS_ENTROPY_SRC_CAPI", - "BOTAN_HAS_ENTROPY_SRC_WIN32", "BOTAN_HAS_MUTEX_WIN32") - return base.concat(result) - } - - Properties { - condition: qbs.toolchain == "mingw" - cpp.cxxFlags: [ - "-fpermissive", - "-finline-functions", - "-Wno-long-long" - ] - } - - files: [ "botan.h", "botan.cpp" ] - - ProductModule { - Depends { name: "cpp" } - cpp.linkerFlags: { - if (qbs.toolchain == "mingw") { - return ["-Wl,--enable-auto-import"] - } - } - cpp.includePaths: ".." - } -} diff --git a/src/libs/3rdparty/precompiled_headers/botan_pch.h b/src/libs/3rdparty/precompiled_headers/botan_pch.h deleted file mode 100644 index 44b36326bfd..00000000000 --- a/src/libs/3rdparty/precompiled_headers/botan_pch.h +++ /dev/null @@ -1,49 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -****************************************************************************/ - -#if defined __cplusplus -#include - -#ifdef Q_WS_WIN -# define _POSIX_ -# include -# undef _POSIX_ -#endif - -#include "../botan/botan.h" - -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/src/libs/libs.pro b/src/libs/libs.pro index 5eaf4715852..9a1da2d4ebe 100644 --- a/src/libs/libs.pro +++ b/src/libs/libs.pro @@ -5,7 +5,6 @@ QT += core gui # aggregation and extensionsystem are directly in src.pro # because of dependencies of app SUBDIRS = \ - 3rdparty \ utils \ utils/process_stub.pro \ languageutils \ diff --git a/src/libs/ssh/ssh.pro b/src/libs/ssh/ssh.pro index 3b4ce049627..477cf4b91ff 100644 --- a/src/libs/ssh/ssh.pro +++ b/src/libs/ssh/ssh.pro @@ -68,3 +68,5 @@ HEADERS = $$PWD/sshsendfacility_p.h \ $$PWD/sshdirecttcpiptunnel.h FORMS = $$PWD/sshkeycreationdialog.ui + +include(../3rdparty/botan/botan.pri) diff --git a/src/libs/ssh/ssh.qbs b/src/libs/ssh/ssh.qbs index 9b772cd9604..794f8d1ce24 100644 --- a/src/libs/ssh/ssh.qbs +++ b/src/libs/ssh/ssh.qbs @@ -4,11 +4,11 @@ import "../QtcLibrary.qbs" as QtcLibrary QtcLibrary { name: "QtcSsh" - cpp.defines: base.concat(["QSSH_LIBRARY"]) + cpp.defines: base.concat(["QSSH_LIBRARY"]).concat(botanDefines) + cpp.includePaths: botanIncludes Depends { name: "cpp" } Depends { name: "Qt"; submodules: ["widgets", "network" ] } - Depends { name: "Botan" } files: [ "sftpchannel.h", "sftpchannel_p.h", "sftpchannel.cpp", @@ -41,7 +41,48 @@ QtcLibrary { "sshremoteprocess.cpp", "sshremoteprocess.h", "sshremoteprocess_p.h", "sshremoteprocessrunner.cpp", "sshremoteprocessrunner.h", "sshsendfacility.cpp", "sshsendfacility_p.h", - ] + ].concat(botanFiles) + + property var botanIncludes: ["../3rdparty"] + property var botanLibs: qbs.targetOS === "windows" ? ["advapi32", "user32"] : ["rt", "dl"] + property var botanDefines: { + var result = ['BOTAN_DLL='] + if (qbs.toolchain === "msvc") + result.push("BOTAN_BUILD_COMPILER_IS_MSVC", "BOTAN_TARGET_OS_HAS_GMTIME_S") + if (qbs.toolchain === "gcc" || qbs.toolchain === "mingw") + result.push("BOTAN_BUILD_COMPILER_IS_GCC") + if (qbs.targetOS === "linux") + result.push("BOTAN_TARGET_OS_IS_LINUX", "BOTAN_TARGET_OS_HAS_CLOCK_GETTIME", + "BOTAN_TARGET_OS_HAS_DLOPEN", " BOTAN_TARGET_OS_HAS_GMTIME_R", + "BOTAN_TARGET_OS_HAS_POSIX_MLOCK", "BOTAN_HAS_DYNAMICALLY_LOADED_ENGINE", + "BOTAN_HAS_DYNAMIC_LOADER", "BOTAN_TARGET_OS_HAS_GETTIMEOFDAY", + "BOTAN_HAS_ALLOC_MMAP", "BOTAN_HAS_ENTROPY_SRC_DEV_RANDOM", + "BOTAN_HAS_ENTROPY_SRC_EGD", "BOTAN_HAS_ENTROPY_SRC_FTW", + "BOTAN_HAS_ENTROPY_SRC_UNIX", "BOTAN_HAS_MUTEX_PTHREAD", "BOTAN_HAS_PIPE_UNIXFD_IO") + if (qbs.targetOS === "mac") + result.push("BOTAN_TARGET_OS_IS_DARWIN", "BOTAN_TARGET_OS_HAS_GETTIMEOFDAY", + "BOTAN_HAS_ALLOC_MMAP", "BOTAN_HAS_ENTROPY_SRC_DEV_RANDOM", + "BOTAN_HAS_ENTROPY_SRC_EGD", "BOTAN_HAS_ENTROPY_SRC_FTW", + "BOTAN_HAS_ENTROPY_SRC_UNIX", "BOTAN_HAS_MUTEX_PTHREAD", "BOTAN_HAS_PIPE_UNIXFD_IO") + if (qbs.targetOS === "windows") + result.push("BOTAN_TARGET_OS_IS_WINDOWS", + "BOTAN_TARGET_OS_HAS_LOADLIBRARY", "BOTAN_TARGET_OS_HAS_WIN32_GET_SYSTEMTIME", + "BOTAN_TARGET_OS_HAS_WIN32_VIRTUAL_LOCK", "BOTAN_HAS_DYNAMICALLY_LOADED_ENGINE", + "BOTAN_HAS_DYNAMIC_LOADER", "BOTAN_HAS_ENTROPY_SRC_CAPI", + "BOTAN_HAS_ENTROPY_SRC_WIN32", "BOTAN_HAS_MUTEX_WIN32") + return result + } + property var botanFiles: [ "../3rdparty/botan/botan.h", "../3rdparty/botan/botan.cpp" ] + + // For Botan. + Properties { + condition: qbs.toolchain === "mingw" + cpp.cxxFlags: [ + "-fpermissive", + "-finline-functions", + "-Wno-long-long" + ] + } ProductModule { Depends { name: "Qt"; submodules: ["widgets", "network"] } diff --git a/src/libs/ssh/ssh_dependencies.pri b/src/libs/ssh/ssh_dependencies.pri index e2a3c96f457..e69de29bb2d 100644 --- a/src/libs/ssh/ssh_dependencies.pri +++ b/src/libs/ssh/ssh_dependencies.pri @@ -1 +0,0 @@ -include(../3rdparty/botan/botan.pri) diff --git a/src/plugins/QtcPlugin.qbs b/src/plugins/QtcPlugin.qbs index bc979b7fe72..03e3155a65f 100644 --- a/src/plugins/QtcPlugin.qbs +++ b/src/plugins/QtcPlugin.qbs @@ -36,7 +36,7 @@ Product { cpp.includePaths: [ ".", ".." ] Group { - files: [ name + ".pluginspec.in" ] + files: [ product.name + ".pluginspec.in" ] fileTags: ["pluginSpecIn"] } } diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index 3c3325b9a42..7b6e0ed10e3 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -98,6 +98,7 @@ static inline QString formWindowEditorContents(const QObject *editor) */ CMakeProject::CMakeProject(CMakeManager *manager, const QString &fileName) : m_manager(manager), + m_activeTarget(0), m_fileName(fileName), m_rootNode(new CMakeProjectNode(m_fileName)), m_lastEditor(0) @@ -107,8 +108,6 @@ CMakeProject::CMakeProject(CMakeManager *manager, const QString &fileName) m_file = new CMakeFile(this, fileName); - connect(this, SIGNAL(addedTarget(ProjectExplorer::Target*)), - SLOT(targetAdded(ProjectExplorer::Target*))); connect(this, SIGNAL(buildTargetsChanged()), this, SLOT(updateRunConfigurations())); } @@ -139,7 +138,7 @@ void CMakeProject::fileChanged(const QString &fileName) void CMakeProject::changeActiveBuildConfiguration(ProjectExplorer::BuildConfiguration *bc) { - if (!bc || bc->target() != activeTarget()) + if (!bc) return; CMakeBuildConfiguration *cmakebc = static_cast(bc); @@ -170,13 +169,22 @@ void CMakeProject::changeActiveBuildConfiguration(ProjectExplorer::BuildConfigur parseCMakeLists(); } -void CMakeProject::targetAdded(ProjectExplorer::Target *t) +void CMakeProject::activeTargetWasChanged(Target *target) { - if (!t) + if (m_activeTarget) { + disconnect(m_activeTarget, SIGNAL(activeBuildConfigurationChanged(ProjectExplorer::BuildConfiguration*)), + this, SLOT(changeActiveBuildConfiguration(ProjectExplorer::BuildConfiguration*))); + } + + m_activeTarget = target; + + if (!m_activeTarget) return; - connect(t, SIGNAL(activeBuildConfigurationChanged(ProjectExplorer::BuildConfiguration*)), - SLOT(changeActiveBuildConfiguration(ProjectExplorer::BuildConfiguration*))); + connect(m_activeTarget, SIGNAL(activeBuildConfigurationChanged(ProjectExplorer::BuildConfiguration*)), + this, SLOT(changeActiveBuildConfiguration(ProjectExplorer::BuildConfiguration*))); + + changeActiveBuildConfiguration(m_activeTarget->activeBuildConfiguration()); } void CMakeProject::changeBuildDirectory(CMakeBuildConfiguration *bc, const QString &newBuildDirectory) @@ -604,6 +612,14 @@ bool CMakeProject::fromMap(const QVariantMap &map) connect(ProjectExplorer::ProjectExplorerPlugin::instance()->buildManager(), SIGNAL(buildStateChanged(ProjectExplorer::Project*)), this, SLOT(buildStateChanged(ProjectExplorer::Project*))); + m_activeTarget = activeTarget(); + if (m_activeTarget) + connect(m_activeTarget, SIGNAL(activeBuildConfigurationChanged(ProjectExplorer::BuildConfiguration*)), + this, SLOT(changeActiveBuildConfiguration(ProjectExplorer::BuildConfiguration*))); + + connect(this, SIGNAL(activeTargetChanged(ProjectExplorer::Target*)), + this, SLOT(activeTargetWasChanged(ProjectExplorer::Target*))); + return true; } diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.h b/src/plugins/cmakeprojectmanager/cmakeproject.h index 775b67ed8a6..a68596c170e 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.h +++ b/src/plugins/cmakeprojectmanager/cmakeproject.h @@ -51,6 +51,8 @@ QT_BEGIN_NAMESPACE class QFileSystemWatcher; QT_END_NAMESPACE +namespace ProjectExplorer { class Target; } + namespace CMakeProjectManager { namespace Internal { @@ -116,8 +118,8 @@ protected: private slots: void fileChanged(const QString &fileName); + void activeTargetWasChanged(ProjectExplorer::Target *target); void changeActiveBuildConfiguration(ProjectExplorer::BuildConfiguration*); - void targetAdded(ProjectExplorer::Target *); void editorChanged(Core::IEditor *editor); void editorAboutToClose(Core::IEditor *editor); @@ -135,6 +137,7 @@ private: void updateRunConfigurations(ProjectExplorer::Target *t); CMakeManager *m_manager; + ProjectExplorer::Target *m_activeTarget; QString m_fileName; CMakeFile *m_file; QString m_projectName; diff --git a/src/plugins/projectexplorer/kit.cpp b/src/plugins/projectexplorer/kit.cpp index 31c9bdcdc53..5ce108f1d05 100644 --- a/src/plugins/projectexplorer/kit.cpp +++ b/src/plugins/projectexplorer/kit.cpp @@ -165,6 +165,7 @@ void Kit::copyFrom(const Kit *k) d->m_icon = k->d->m_icon; d->m_autodetected = k->d->m_autodetected; d->m_displayName = k->d->m_displayName; + d->m_mustNotify = true; } bool Kit::isValid() const diff --git a/src/plugins/qmlprofiler/qml/RangeDetails.qml b/src/plugins/qmlprofiler/qml/RangeDetails.qml index 90b6dfc475b..5c8117cdbdc 100644 --- a/src/plugins/qmlprofiler/qml/RangeDetails.qml +++ b/src/plugins/qmlprofiler/qml/RangeDetails.qml @@ -55,6 +55,28 @@ Item { property int relativey : y - yoffset onYChanged: relativey = y - yoffset + // keep inside view + Connections { + target: root + onWidthChanged: fitInView(); + onCandidateHeightChanged: fitInView(); + } + + function fitInView() { + // don't reposition if it does not fit + if (root.width < width || root.candidateHeight < height) + return; + + if (x + width > root.width) + x = root.width - width; + if (x < 0) + x = 0; + if (y + height > root.candidateHeight) + y = root.candidateHeight - height; + if (y < 0) + y = 0; + } + // shadow BorderImage { property int px: 4 @@ -163,6 +185,10 @@ Item { width: col.width + 45 height: col.height + 30 drag.target: parent + drag.minimumX: 0 + drag.maximumX: root.width - parent.width + drag.minimumY: 0 + drag.maximumY: root.candidateHeight - parent.height onClicked: { root.gotoSourceLocation(file, line, column); root.recenterOnItem(view.selectedItem); diff --git a/src/plugins/qmlprofiler/qml/SelectionRangeDetails.qml b/src/plugins/qmlprofiler/qml/SelectionRangeDetails.qml index e1ccb2abf67..29bce7bc056 100644 --- a/src/plugins/qmlprofiler/qml/SelectionRangeDetails.qml +++ b/src/plugins/qmlprofiler/qml/SelectionRangeDetails.qml @@ -50,6 +50,28 @@ Item { property int relativey : y - yoffset onYChanged: relativey = y - yoffset + // keep inside view + Connections { + target: root + onWidthChanged: fitInView(); + onCandidateHeightChanged: fitInView(); + } + + function fitInView() { + // don't reposition if it does not fit + if (root.width < width || root.candidateHeight < height) + return; + + if (x + width > root.width) + x = root.width - width; + if (x < 0) + x = 0; + if (y + height > root.candidateHeight) + y = root.candidateHeight - height; + if (y < 0) + y = 0; + } + // shadow BorderImage { property int px: 4 @@ -134,6 +156,10 @@ Item { width: col.width + 45 height: col.height + 30 drag.target: parent + drag.minimumX: 0 + drag.maximumX: root.width - parent.width + drag.minimumY: 0 + drag.maximumY: root.candidateHeight - parent.height onClicked: { if ((selectionRange.x < flick.contentX) ^ (selectionRange.x+selectionRange.width > flick.contentX + flick.width)) { root.recenter(selectionRange.startTime + selectionRange.duration/2); diff --git a/src/plugins/qmlprofiler/qmlprofilerdatamodel.cpp b/src/plugins/qmlprofiler/qmlprofilerdatamodel.cpp index 4dfd866fbe4..642db1bde48 100644 --- a/src/plugins/qmlprofiler/qmlprofilerdatamodel.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerdatamodel.cpp @@ -290,6 +290,11 @@ void QmlProfilerDataModel::clear() setState(Empty); } +void QmlProfilerDataModel::prepareForWriting() +{ + setState(AcquiringData); +} + void QmlProfilerDataModel::addRangedEvent(int type, int bindingType, qint64 startTime, qint64 length, const QStringList &data, const QmlDebug::QmlEventLocation &location) diff --git a/src/plugins/qmlprofiler/qmlprofilerdatamodel.h b/src/plugins/qmlprofiler/qmlprofilerdatamodel.h index 9ad3b14efab..a39bacaf58c 100644 --- a/src/plugins/qmlprofiler/qmlprofilerdatamodel.h +++ b/src/plugins/qmlprofiler/qmlprofilerdatamodel.h @@ -165,6 +165,7 @@ signals: public slots: void clear(); + void prepareForWriting(); void addRangedEvent(int type, int bindingType, qint64 startTime, qint64 length, const QStringList &data, const QmlDebug::QmlEventLocation &location); void addV8Event(int depth,const QString &function,const QString &filename, int lineNumber, double totalTime, double selfTime); diff --git a/src/plugins/qmlprofiler/qmlprofilertool.cpp b/src/plugins/qmlprofiler/qmlprofilertool.cpp index 9e6a44cfd6b..8b539bfa270 100644 --- a/src/plugins/qmlprofiler/qmlprofilertool.cpp +++ b/src/plugins/qmlprofiler/qmlprofilertool.cpp @@ -692,6 +692,7 @@ void QmlProfilerTool::profilerStateChanged() } case QmlProfilerStateManager::AppKilled : { showNonmodalWarning(tr("Application finished before loading profiled data.\nPlease use the stop button instead.")); + d->m_profilerDataModel->clear(); break; } case QmlProfilerStateManager::Idle : @@ -720,6 +721,7 @@ void QmlProfilerTool::serverRecordingChanged() // clear the old data each time we start a new profiling session if (d->m_profilerState->serverRecording()) { clearData(); + d->m_profilerDataModel->prepareForWriting(); } } } diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp index 520c94701de..abd4f2e5a46 100644 --- a/src/plugins/qmlprojectmanager/qmlproject.cpp +++ b/src/plugins/qmlprojectmanager/qmlproject.cpp @@ -74,9 +74,6 @@ QmlProject::QmlProject(Internal::Manager *manager, const QString &fileName) Core::DocumentManager::addDocument(m_file, true); m_manager->registerProject(this); - - connect(this, SIGNAL(addedTarget(ProjectExplorer::Target*)), - this, SLOT(addedTarget(ProjectExplorer::Target*))); } QmlProject::~QmlProject() @@ -329,6 +326,15 @@ bool QmlProject::fromMap(const QVariantMap &map) addTarget(createTarget(defaultKit)); refresh(Everything); + + // addedTarget calls updateEnabled on the runconfigurations + // which needs to happen after refresh + foreach (ProjectExplorer::Target *t, targets()) + addedTarget(t); + + connect(this, SIGNAL(addedTarget(ProjectExplorer::Target*)), + this, SLOT(addedTarget(ProjectExplorer::Target*))); + return true; } diff --git a/src/plugins/qnx/Qnx.pluginspec.in b/src/plugins/qnx/Qnx.pluginspec.in index ffb9e6e584f..864ed1b5534 100644 --- a/src/plugins/qnx/Qnx.pluginspec.in +++ b/src/plugins/qnx/Qnx.pluginspec.in @@ -1,4 +1,4 @@ - + Research In Motion (C) 2012 Research In Motion diff --git a/src/plugins/qnx/blackberryqtversion.cpp b/src/plugins/qnx/blackberryqtversion.cpp index 89a595ca9d9..1ed165bf9c1 100644 --- a/src/plugins/qnx/blackberryqtversion.cpp +++ b/src/plugins/qnx/blackberryqtversion.cpp @@ -33,6 +33,7 @@ #include "qnxconstants.h" +#include #include #include @@ -57,12 +58,41 @@ QMultiMap parseEnvironmentFile(const QString &fileName) if (!line.contains(QLatin1Char('='))) continue; - const QStringList lineContent = line.split(QLatin1Char('=')); - QString var = lineContent.value(0); + int equalIndex = line.indexOf(QLatin1Char('=')); + QString var = line.left(equalIndex); //Remove set in front if (var.startsWith(QLatin1String("set "))) var = var.right(var.size() - 4); - QString value = lineContent.value(1).section(QLatin1Char('"'), 0, -1, QString::SectionSkipEmpty); + + QString value = line.mid(equalIndex + 1); + +#if defined Q_OS_WIN + QRegExp systemVarRegExp(QLatin1String("IF NOT DEFINED ([\\w\\d]+)\\s+set ([\\w\\d]+)=([\\w\\d]+)")); + if (line.contains(systemVarRegExp)) { + var = systemVarRegExp.cap(2); + Utils::Environment sysEnv = Utils::Environment::systemEnvironment(); + QString sysVar = systemVarRegExp.cap(1); + if (sysEnv.hasKey(sysVar)) + value = sysEnv.value(sysVar); + else + value = systemVarRegExp.cap(3); + } +#elif defined Q_OS_UNIX + QRegExp systemVarRegExp(QLatin1String("\\$\\{([\\w\\d]+):=([\\w\\d]+)\\}")); // to match e.g. "${QNX_HOST_VERSION:=10_0_9_52}" + if (value.contains(systemVarRegExp)) { + Utils::Environment sysEnv = Utils::Environment::systemEnvironment(); + QString sysVar = systemVarRegExp.cap(1); + if (sysEnv.hasKey(sysVar)) + value = sysEnv.value(sysVar); + else + value = systemVarRegExp.cap(2); + } +#endif + + if (value.startsWith(QLatin1Char('"'))) + value = value.mid(1); + if (value.endsWith(QLatin1Char('"'))) + value = value.left(value.size() - 1); fileContent[var] = value; } @@ -77,7 +107,7 @@ QMultiMap parseEnvironmentFile(const QString &fileName) foreach (const QString &value, values) { const QString ownKeyAsWindowsVar = QLatin1Char('%') + key + QLatin1Char('%'); const QString ownKeyAsUnixVar = QLatin1Char('$') + key; - if (!value.contains(ownKeyAsWindowsVar) && !value.contains(ownKeyAsUnixVar)) { + if (value != ownKeyAsUnixVar && value != ownKeyAsWindowsVar) { // to ignore e.g. PATH=$PATH QString val = value; if (val.contains(QLatin1Char('%')) || val.contains(QLatin1Char('$'))) { QMapIterator replaceIt(fileContent); diff --git a/src/plugins/qnx/qnx.pro b/src/plugins/qnx/qnx.pro index ed729e954f8..5bc1501bab2 100644 --- a/src/plugins/qnx/qnx.pro +++ b/src/plugins/qnx/qnx.pro @@ -3,9 +3,6 @@ TARGET = Qnx QT += network xml PROVIDER = RIM -isEmpty(QNX_ENABLE):QNX_EXPERIMENTAL_STR="true" -else:QNX_EXPERIMENTAL_STR="false" - include(../../qtcreatorplugin.pri) include(qnx_dependencies.pri) diff --git a/src/plugins/qnx/qnx.qbs b/src/plugins/qnx/qnx.qbs index ff11e279aa0..b5b093b903a 100644 --- a/src/plugins/qnx/qnx.qbs +++ b/src/plugins/qnx/qnx.qbs @@ -14,9 +14,6 @@ QtcPlugin { Depends { name: "RemoteLinux" } Depends { name: "Qt"; submodules: ["widgets", "xml", "network"] } - property bool enable: false - property var pluginspecreplacements: ({"QNX_EXPERIMENTAL_STR": (enable ? "false" : "true")}) - cpp.defines: base.concat(["QT_NO_CAST_TO_ASCII", "QT_NO_CAST_FROM_ASCII"]) cpp.includePaths: base.concat("../../shared") diff --git a/src/plugins/qt4projectmanager/qt4projectmanager.qbs b/src/plugins/qt4projectmanager/qt4projectmanager.qbs index 2a7584399fb..a706b5070ac 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanager.qbs +++ b/src/plugins/qt4projectmanager/qt4projectmanager.qbs @@ -12,7 +12,6 @@ QtcPlugin { Depends { name: "CppTools" } Depends { name: "Debugger" } Depends { name: "QmlJS" } - Depends { name: "Botan" } Depends { name: "CPlusPlus" } Depends { name: "TextEditor" } diff --git a/src/plugins/qt4projectmanager/qt4projectmanager_dependencies.pri b/src/plugins/qt4projectmanager/qt4projectmanager_dependencies.pri index 298cf1cb8a9..2f469a603d1 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanager_dependencies.pri +++ b/src/plugins/qt4projectmanager/qt4projectmanager_dependencies.pri @@ -3,4 +3,3 @@ include(../../plugins/qtsupport/qtsupport.pri) include(../../plugins/cpptools/cpptools.pri) include(../../plugins/debugger/debugger.pri) include(../../libs/qmljs/qmljs.pri) -include(../../libs/3rdparty/botan/botan.pri) diff --git a/src/plugins/vcsbase/commonsettingspage.cpp b/src/plugins/vcsbase/commonsettingspage.cpp index 65561171f2a..e47d198240d 100644 --- a/src/plugins/vcsbase/commonsettingspage.cpp +++ b/src/plugins/vcsbase/commonsettingspage.cpp @@ -97,6 +97,7 @@ QString CommonSettingsWidget::searchKeyWordMatchString() const + blank + m_ui->nickNameMailMapLabel->text() + blank + m_ui->nickNameFieldsFileLabel->text() + blank + m_ui->sshPromptLabel->text() + + blank + m_ui->patchCommandLabel->text() ; rc.remove(QLatin1Char('&')); // Strip buddy markers. return rc; diff --git a/tests/manual/debugger/simple/simple_test_app.cpp b/tests/manual/debugger/simple/simple_test_app.cpp index 5b1a45bc597..513078d6412 100644 --- a/tests/manual/debugger/simple/simple_test_app.cpp +++ b/tests/manual/debugger/simple/simple_test_app.cpp @@ -681,10 +681,10 @@ namespace undefined { int *i = new int; delete i; BREAK_HERE; + // Continue. // Manual: Uncomment the following line. Step. // On Linux, a SIGABRT should be received. //delete i; - // Continue. dummyStatement(&i); } diff --git a/tests/system/suite_general/tst_select_all/test.py b/tests/system/suite_general/tst_select_all/test.py index 5c101629ae0..da1e18333c5 100644 --- a/tests/system/suite_general/tst_select_all/test.py +++ b/tests/system/suite_general/tst_select_all/test.py @@ -43,9 +43,6 @@ def main(): pos = size if key == "": pos -= 1 - if JIRA.isBugStillOpen(7215, JIRA.Bug.CREATOR): - test.warning("Using workaround for %s-%d" % (JIRA.Bug.CREATOR, 7215)) - pos = 0 test.compare(editor.textCursor().selectionStart(), pos) test.compare(editor.textCursor().selectionEnd(), pos) test.compare(editor.textCursor().position(), pos)