diff --git a/src/libs/cplusplus/TypePrettyPrinter.cpp b/src/libs/cplusplus/TypePrettyPrinter.cpp
index 2784d9d695a7a8266f620d9f043abecd0a6542f3..6fd6a2cf2451d33d9895951567f6dcacaa04ae5a 100644
--- a/src/libs/cplusplus/TypePrettyPrinter.cpp
+++ b/src/libs/cplusplus/TypePrettyPrinter.cpp
@@ -92,6 +92,8 @@ QString TypePrettyPrinter::operator()(const FullySpecifiedType &type, const QStr
         if (ch.isLetterOrNumber() || ch == QLatin1Char('_'))
             text += QLatin1Char(' ');
         text += _name;
+    } else if (text.isEmpty()) {
+        text = name;
     }
     (void) switchName(previousName);
     return text;
diff --git a/src/plugins/coreplugin/html/images/feedback-text.png b/src/plugins/coreplugin/html/images/feedback-text.png
index 731bdc50a322c6153ed760cb7ca8d6a8b59b010c..5f6f05843fbc0452b31538c8f9666db9199ba255 100644
Binary files a/src/plugins/coreplugin/html/images/feedback-text.png and b/src/plugins/coreplugin/html/images/feedback-text.png differ
diff --git a/src/plugins/cppeditor/cpphoverhandler.cpp b/src/plugins/cppeditor/cpphoverhandler.cpp
index 5059a92d8b1d290aacc69d462dff93b3d0ef9216..b814ed291aa5cc9e89dbf7193f9b88b6de8a1f20 100644
--- a/src/plugins/cppeditor/cpphoverhandler.cpp
+++ b/src/plugins/cppeditor/cpphoverhandler.cpp
@@ -258,6 +258,7 @@ void CppHoverHandler::updateHelpIdAndTooltip(TextEditor::ITextEditor *editor, in
 
         if (!types.isEmpty()) {
             FullySpecifiedType firstType = types.first().first;
+            Symbol *symbol = types.first().second;
             FullySpecifiedType docType = firstType;
 
             if (const PointerType *pt = firstType->asPointerType()) {
@@ -266,8 +267,8 @@ void CppHoverHandler::updateHelpIdAndTooltip(TextEditor::ITextEditor *editor, in
                 docType = rt->elementType();
             }
 
-            m_helpId = buildHelpId(docType, types.first().second);
-            QString displayName = buildHelpId(firstType, types.first().second);
+            m_helpId = buildHelpId(docType, symbol);
+            QString displayName = buildHelpId(firstType, symbol);
 
             if (!firstType->isClass() && !firstType->isNamedType()) {
                 Overview overview;
@@ -297,7 +298,7 @@ void CppHoverHandler::updateHelpIdAndTooltip(TextEditor::ITextEditor *editor, in
         m_helpEngineNeedsSetup = false;
     }
 
-    if (! m_toolTip.isEmpty())
+    if (!m_toolTip.isEmpty())
         m_toolTip = Qt::escape(m_toolTip);
 
     if (!m_helpId.isEmpty() && !m_helpEngine->linksForIdentifier(m_helpId).isEmpty()) {
diff --git a/src/plugins/debugger/breakbyfunction.ui b/src/plugins/debugger/breakbyfunction.ui
index 06cedb2e46911872cae3c2fa4a3b756cee923b81..d6c045219c3f256eaf4e3e99afc3cc28c3bc1301 100644
--- a/src/plugins/debugger/breakbyfunction.ui
+++ b/src/plugins/debugger/breakbyfunction.ui
@@ -11,7 +11,7 @@
    </rect>
   </property>
   <property name="windowTitle">
-   <string>Start Debugger</string>
+   <string>Set Breakpoint at Function</string>
   </property>
   <layout class="QVBoxLayout">
    <property name="spacing">
diff --git a/src/plugins/debugger/gdbengine.cpp b/src/plugins/debugger/gdbengine.cpp
index fa2d2bacbe4320aaa3e6b16d57fbf163ea123d65..e4b859d6c198a7919808bea28a084373e3bf4e84 100644
--- a/src/plugins/debugger/gdbengine.cpp
+++ b/src/plugins/debugger/gdbengine.cpp
@@ -3337,7 +3337,7 @@ void GdbEngine::handleQueryDataDumper2(const GdbResultRecord &record)
             tr("Cannot find special data dumpers"),
             tr("The debugged binary does not contain information needed for "
                     "nice display of Qt data types.\n\n"
-                    "Try might want to try include the file\n\n"
+                    "You might want to try including the file\n\n"
                     ".../ide/main/bin/gdbmacros/gdbmacros.cpp'\n\n"
                     "into your project directly.")
                 );
diff --git a/src/plugins/qt4projectmanager/gccparser.cpp b/src/plugins/qt4projectmanager/gccparser.cpp
index 1d43e77f574f6c4f63736756b4d5176e98b75594..b71a3362f55f12a07c4b559c7d66868542b47caf 100644
--- a/src/plugins/qt4projectmanager/gccparser.cpp
+++ b/src/plugins/qt4projectmanager/gccparser.cpp
@@ -46,14 +46,12 @@ GccParser::GccParser()
     m_regExpIncluded.setPattern("^.*from\\s([^:]+):(\\d+)(,|:)$");
     m_regExpIncluded.setMinimal(true);
 
-    m_regExpLinker.setPattern("^(\\S+)\\(\\S+\\):\\s(.+)$");
+    m_regExpLinker.setPattern("^(\\S*)\\(\\S+\\):\\s(.+)$");
     m_regExpLinker.setMinimal(true);
 
     //make[4]: Entering directory `/home/kkoehne/dev/ide-explorer/src/plugins/qtscripteditor'
     m_makeDir.setPattern("^make.*: (\\w+) directory .(.+).$");
     m_makeDir.setMinimal(true);
-
-    m_linkIndent = false;
 }
 
 QString GccParser::name() const
@@ -76,7 +74,15 @@ void GccParser::stdOutput(const QString & line)
 void GccParser::stdError(const QString & line)
 {
     QString lne = line.trimmed();
-    if (m_regExp.indexIn(lne) > -1) {
+     if (m_regExpLinker.indexIn(lne) > -1) {
+        QString description = m_regExpLinker.cap(2);
+        emit addToTaskWindow(
+            m_regExpLinker.cap(1), //filename
+            ProjectExplorer::BuildParserInterface::Error,
+            -1, //linenumber
+            description);
+        //qDebug()<<"m_regExpLinker"<<m_regExpLinker.cap(2);
+    } else if (m_regExp.indexIn(lne) > -1) {
         ProjectExplorer::BuildParserInterface::PatternType type;
         if (m_regExp.cap(5) == "warning")
             type = ProjectExplorer::BuildParserInterface::Warning;
@@ -86,17 +92,14 @@ void GccParser::stdError(const QString & line)
             type = ProjectExplorer::BuildParserInterface::Unknown;
 
         QString description =  m_regExp.cap(6);
-        if (m_linkIndent)
-            description.prepend(QLatin1String("-> "));
 
-        //qDebug()<<m_regExp.cap(1)<<m_regExp.cap(2)<<m_regExp.cap(3)<<m_regExp.cap(4);
+        //qDebug()<<"m_regExp"<<m_regExp.cap(1)<<m_regExp.cap(2)<<m_regExp.cap(5);
 
         emit addToTaskWindow(
             m_regExp.cap(1), //filename
             type,
             m_regExp.cap(2).toInt(), //line number
             description);
-
     } else if (m_regExpIncluded.indexIn(lne) > -1) {
         emit addToTaskWindow(
             m_regExpIncluded.cap(1), //filename
@@ -104,29 +107,7 @@ void GccParser::stdError(const QString & line)
             m_regExpIncluded.cap(2).toInt(), //linenumber
             lne //description
             );
-    } else if (m_regExpLinker.indexIn(lne) > -1) {
-        ProjectExplorer::BuildParserInterface::PatternType type = ProjectExplorer::BuildParserInterface::Error;
-        QString description = m_regExpLinker.cap(2);
-        if (lne.endsWith(QLatin1Char(':'))) {
-            m_linkIndent = true;
-        } else if (m_linkIndent) {
-            description.prepend(QLatin1String("-> "));
-            type = ProjectExplorer::BuildParserInterface::Unknown;
-        }
-        emit addToTaskWindow(
-            m_regExpLinker.cap(1), //filename
-            type,
-            -1, //linenumber
-            description);
+        //qDebug()<<"m_regExpInclude"<<m_regExpIncluded.cap(1)<<m_regExpIncluded.cap(2);
     } else if (lne.startsWith(QLatin1String("collect2:"))) {
-        emit addToTaskWindow(
-            "",
-            ProjectExplorer::BuildParserInterface::Error,
-            -1,
-            lne //description
-            );
-        m_linkIndent = false;
-    } else {
-        m_linkIndent = false;
-    }
-}
+        emit addToTaskWindow("", ProjectExplorer::BuildParserInterface::Error, -1, lne);
+    }}
diff --git a/src/plugins/qt4projectmanager/gccparser.h b/src/plugins/qt4projectmanager/gccparser.h
index 24b21cde6f3d8c7dac5d87f1c9afe5a3fb1d0e59..80796f4be2a11b2348b9893e3b81064ef33a3dd7 100644
--- a/src/plugins/qt4projectmanager/gccparser.h
+++ b/src/plugins/qt4projectmanager/gccparser.h
@@ -54,7 +54,6 @@ private:
     QRegExp m_regExpIncluded;
     QRegExp m_regExpLinker;
     QRegExp m_makeDir;
-    bool m_linkIndent;
 };
 
 } // namespace ProjectExplorer
diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp
index 5d05003e8ce88e048a5851d59c0e8a3adc4fa044..b069247b55e31804266f13bb79e000e5b7aee916 100644
--- a/src/plugins/qt4projectmanager/qt4nodes.cpp
+++ b/src/plugins/qt4projectmanager/qt4nodes.cpp
@@ -540,7 +540,7 @@ Qt4ProFileNode::~Qt4ProFileNode()
 void Qt4ProFileNode::buildStateChanged(ProjectExplorer::Project *project)
 {
     if (project == m_project && !ProjectExplorer::ProjectExplorerPlugin::instance()->buildManager()->isBuilding(m_project))
-        updateUiFiles();
+        updateUiFiles(m_project->buildDirectory(m_project->activeBuildConfiguration()));
 }
 
 bool Qt4ProFileNode::hasTargets() const
@@ -710,7 +710,7 @@ void Qt4ProFileNode::update()
                 emit qt4Watcher->variablesChanged(this, m_varValues, newVarValues);
     }
 
-    updateUiFiles();
+    updateUiFiles(m_project->buildDirectory(m_project->activeBuildConfiguration()));
 
     foreach (NodesWatcher *watcher, watchers())
         if (Qt4NodesWatcher *qt4Watcher = qobject_cast<Qt4NodesWatcher*>(watcher))
@@ -744,7 +744,7 @@ namespace {
 // It does so by storing a modification time for each ui file we know about.
 
 // TODO this function should also be called if the build directory is changed
-void Qt4ProFileNode::updateUiFiles()
+void Qt4ProFileNode::updateUiFiles(const QString &buildDirectory)
 {
     // Only those two project types can have ui files for us
     if (m_projectType != ApplicationTemplate
@@ -757,7 +757,7 @@ void Qt4ProFileNode::updateUiFiles()
     const QList<FileNode*> uiFiles = uiFilesVisitor.uiFileNodes;
 
     // Find the UiDir, there can only ever be one
-    QString uiDir; // We should default to the build directory
+    QString uiDir = buildDirectory;
     QStringList tmp = m_varValues[UiDirVar];
     if (tmp.size() != 0)
         uiDir = tmp.first();
diff --git a/src/plugins/qt4projectmanager/qt4nodes.h b/src/plugins/qt4projectmanager/qt4nodes.h
index 5d428cc67202c94882de7061cf419cb37b8f6772..d44c5f6738bc0459e8c5fac04f1c215e1aca58c8 100644
--- a/src/plugins/qt4projectmanager/qt4nodes.h
+++ b/src/plugins/qt4projectmanager/qt4nodes.h
@@ -187,7 +187,7 @@ public slots:
     void scheduleUpdate();
     void update();
 private slots:
-    void updateUiFiles();
+    void updateUiFiles(const QString& buildConfiguration);
     void buildStateChanged(ProjectExplorer::Project*);
 
 private:
diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp
index 4415a73209c396e1025d97cf0865364c1cbcc004..780de4ebc6585db60c4a3e934e1c5817ea1139bd 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.cpp
+++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp
@@ -112,6 +112,7 @@ void QtVersionManager::addVersion(QtVersion *version)
 {
     m_versions.append(version);
     emit qtVersionsChanged();
+    writeVersionsIntoSettings();
 }
 
 void QtVersionManager::updateDocumentation()
diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp
index 4cb4ec21772c6659d6c236e471bd572bf6f17259..a573477f32c01b28588ce4463c830a56db414ee6 100644
--- a/src/plugins/texteditor/basetexteditor.cpp
+++ b/src/plugins/texteditor/basetexteditor.cpp
@@ -3115,8 +3115,9 @@ bool TextBlockUserData::findPreviousOpenParenthesis(QTextCursor *cursor, bool se
         if (!parenList.isEmpty() && !TextEditDocumentLayout::ifdefedOut(block)) {
             for (int i = parenList.count()-1; i >= 0; --i) {
                 Parenthesis paren = parenList.at(i);
-                if (block == cursor->block() && position - block.position() <= paren.pos + 1)
-                    continue;
+                if (block == cursor->block() &&
+                    (position - block.position() <= paren.pos + (paren.type == Parenthesis::Closed ? 1 : 0)))
+                        continue;
                 if (paren.type == Parenthesis::Closed) {
                     ++ignore;
                 } else if (ignore > 0) {
diff --git a/src/shared/qtsingleapplication/qtlocalpeer.cpp b/src/shared/qtsingleapplication/qtlocalpeer.cpp
index 452d43545a30d859f859baa085fce1b26572638b..140e36f46b0c20699f34be1bbe46dabf2a09ec0a 100644
--- a/src/shared/qtsingleapplication/qtlocalpeer.cpp
+++ b/src/shared/qtsingleapplication/qtlocalpeer.cpp
@@ -143,7 +143,7 @@ void QtLocalPeer::receiveConnection()
         return;
 
     // Why doesn't Qt have a blocking stream that takes care of this shait???
-    while (socket->bytesAvailable() < sizeof(quint32))
+    while (socket->bytesAvailable() < static_cast<int>(sizeof(quint32)))
         socket->waitForReadyRead();
     QDataStream ds(socket);
     QByteArray uMsg;
diff --git a/src/tools/qtlibspatcher/qtlibspatchermain.cpp b/src/tools/qtlibspatcher/qtlibspatchermain.cpp
index b66a35f294cd38e865ca2e41eaa673b0cd4bf09c..ad4e3ae71561844c66ae754cf62e80157c0d4bba 100644
--- a/src/tools/qtlibspatcher/qtlibspatchermain.cpp
+++ b/src/tools/qtlibspatcher/qtlibspatchermain.cpp
@@ -42,7 +42,7 @@
 #include <QtCore/QDebug>
 
 #ifdef Q_OS_WIN
-#	define QT_INSTALL_DIR "C:/qt-greenhouse/Trolltech/Code_less_create_more/Trolltech/Code_less_create_more/Troll/4.4.3";
+#	define QT_INSTALL_DIR "C:/qt-greenhouse/Trolltech/Code_less_create_more/Trolltech/Code_less_create_more/Troll/4.4.3/qt";
 
 	const char * const oldInstallBase = QT_INSTALL_DIR;
 	const char * const oldSourceBase = QT_INSTALL_DIR;
@@ -108,7 +108,8 @@ bool patchBinariesWithQtPathes(const char *baseQtPath)
     #ifdef Q_OS_WIN
         "/bin/qmake.exe",
         "/bin/QtCore4.dll",
-        "/bin/QtCored4.dll"
+        "/bin/QtCored4.dll",
+        "/lib/QtCored4.dll"
     #else
         "/bin/qmake",
         "/lib/libQtCore.so",
@@ -136,7 +137,6 @@ char * allocFileNameCopyAppend(const char * textToCopy,
     Q_ASSERT(textToAppend != NULL);
     if (textToAppend2 == NULL)
         textToAppend2 = "";
-    Q_ASSERT(textToAppend2 != NULL);
 
     char * const res = new char[bytesToAllocate];
     const size_t textToCopyLen = strlen(textToCopy);
@@ -153,7 +153,7 @@ char * allocFileNameCopyAppend(const char * textToCopy,
     if (textToAppendLen > 0)
         strncpy(res + textToCopyLen, textToAppend, bytesToAllocate - textToCopyLen - 1);
     if (textToAppend2Len > 0)
-        strncpy(res + textToCopyLen + textToAppend2Len, textToAppend2, bytesToAllocate - textToCopyLen - textToAppend2Len - 1);
+        strncpy(res + textToCopyLen + textToAppendLen, textToAppend2, bytesToAllocate - textToCopyLen - textToAppendLen - 1);
     res[textToCopyLen + textToAppendLen + textToAppend2Len] = '\0';
     res[bytesToAllocate - 1] = '\0'; // Safe is safe
     return res;
@@ -183,6 +183,19 @@ bool patchDebugLibrariesWithQtPath(const char *baseQtPath)
         {"/bin/QtWebKitd4.dll", "/src/3rdparty/webkit/WebCore/"},
         {"/bin/QtXmld4.dll", "/src/xml/"},
         {"/bin/QtXmlPatternsd4.dll", "/src/xmlpatterns/"},
+        {"/lib/Qt3Supportd4.dll", "/src/qt3support/"},
+        {"/lib/QtCored4.dll", "/src/corelib/"},
+        {"/lib/QtGuid4.dll", "/src/gui/"},
+        {"/lib/QtHelpd4.dll", "/tools/assistant/lib/"},
+        {"/lib/QtNetworkd4.dll", "/src/network/"},
+        {"/lib/QtOpenGLd4.dll", "/src/opengl/"},
+        {"/lib/QtScriptd4.dll", "/src/script/"},
+        {"/lib/QtSqld4.dll", "/src/sql/"},
+        {"/lib/QtSvgd4.dll", "/src/svg/"},
+        {"/lib/QtTestd4.dll", "/src/testlib/"},
+        {"/lib/QtWebKitd4.dll", "/src/3rdparty/webkit/WebCore/"},
+        {"/lib/QtXmld4.dll", "/src/xml/"},
+        {"/lib/QtXmlPatternsd4.dll", "/src/xmlpatterns/"},
         {"/plugins/accessible/qtaccessiblecompatwidgetsd4.dll", "/src/plugins/accessible/compat/"},
         {"/plugins/accessible/qtaccessiblewidgetsd4.dll", "/src/plugins/accessible/widgets/"},
         {"/plugins/codecs/qcncodecsd4.dll", "/src/plugins/codecs/cn/"},
diff --git a/tests/auto/cplusplus/ast/ast.pro b/tests/auto/cplusplus/ast/ast.pro
index 39fd14105de2e394305c223f6e76f6047eb139e0..84733f97e6f78c44972ef40bf488f2da594ce7fc 100644
--- a/tests/auto/cplusplus/ast/ast.pro
+++ b/tests/auto/cplusplus/ast/ast.pro
@@ -1,4 +1,5 @@
-load(qttest_p4)
+TEMPLATE = app
+CONFIG += qt warn_on console depend_includepath
+QT = core testlib
 include(../shared/shared.pri)
-QT = core
 SOURCES += tst_ast.cpp
diff --git a/tests/auto/cplusplus/semantic/semantic.pro b/tests/auto/cplusplus/semantic/semantic.pro
index 71a8b5fab5fdc5a2fb8b3d571b3a4a532b28f2dd..37c013685f73f42c40149e298869ce9563779e7b 100644
--- a/tests/auto/cplusplus/semantic/semantic.pro
+++ b/tests/auto/cplusplus/semantic/semantic.pro
@@ -1,5 +1,6 @@
-load(qttest_p4)
+TEMPLATE = app
+CONFIG += qt warn_on console depend_includepath
+QT = core testlib
 include(../shared/shared.pri)
-QT = core
 
 SOURCES += tst_semantic.cpp