diff --git a/share/qtcreator/qmljsdebugger/jsdebuggeragent.cpp b/share/qtcreator/qmljsdebugger/jsdebuggeragent.cpp
index 24c61eead00ddb02a24ac6dbda5d8e2db1c8c926..4258882e10c76dfc75354bcf051ded0bb1b934db 100644
--- a/share/qtcreator/qmljsdebugger/jsdebuggeragent.cpp
+++ b/share/qtcreator/qmljsdebugger/jsdebuggeragent.cpp
@@ -514,7 +514,6 @@ void JSDebuggerAgent::continueExec()
 void JSDebuggerAgent::enabledChanged(bool on)
 {
     engine()->setAgent(on ? this : 0);
-    QDeclarativeDebugService::enabledChanged(on);
 }
 
 } // namespace QmlJSDebugger
diff --git a/share/qtcreator/templates/wizards/qml-extension/object.cpp b/share/qtcreator/templates/wizards/qml-extension/object.cpp
index 8b4f8feef43b3f43976047222bedc30da8448c15..0f9ed3e7bb019146e6eded4e5b9dc0dc2d45a383 100644
--- a/share/qtcreator/templates/wizards/qml-extension/object.cpp
+++ b/share/qtcreator/templates/wizards/qml-extension/object.cpp
@@ -1,34 +1,17 @@
 #include "%ObjectName:l%.%CppHeaderSuffix%"
 
-#include <QtCore/QTime>
 #include <QtDeclarative/qdeclarative.h>
 
-%ObjectName%::%ObjectName%(QObject *parent):
-        QObject(parent)
+%ObjectName%::%ObjectName%(QDeclarativeItem *parent):
+        QDeclarativeItem(parent)
 {
-    timer = new QTimer(this);
-    timer->setInterval(750);
-    connect(timer, SIGNAL(timeout()), this, SLOT(timerFired()));
-    timer->start();
-}
-
-QString %ObjectName%::text() const
-{
-    return theText;
-}
+    // By default, QDeclarativeItem does not draw anything. If you subclass
+    // QDeclarativeItem to create a visual item, you will need to uncomment the
+    // following line:
 
-void %ObjectName%::setText(const QString &text)
-{
-    if (theText != text) {
-        theText = text;
-        emit textChanged(theText);
-    }
+    // setFlag(ItemHasNoContents, false);
 }
 
-void %ObjectName%::timerFired()
+%ObjectName%::~%ObjectName%()
 {
-    QTime t = QTime::currentTime();
-    setText(t.toString(QLatin1String("HH:mm:ss")));
 }
-
-QML_DECLARE_TYPE(%ObjectName%);
diff --git a/share/qtcreator/templates/wizards/qml-extension/object.h b/share/qtcreator/templates/wizards/qml-extension/object.h
index 882464ad0729a7062db5f06327853c5db4fe71ab..054174b20e406f5cf34bd26856c7e8baa3ac010d 100644
--- a/share/qtcreator/templates/wizards/qml-extension/object.h
+++ b/share/qtcreator/templates/wizards/qml-extension/object.h
@@ -1,33 +1,18 @@
 #ifndef %ObjectName:u%_H
 #define %ObjectName:u%_H
 
-#include <QtCore/QObject>
-#include <QtCore/QString>
-#include <QtCore/QTimer>
+#include <QtDeclarative/QDeclarativeItem>
 
-class %ObjectName% : public QObject
+class %ObjectName% : public QDeclarativeItem
 {
     Q_OBJECT
-
-    Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged)
+    Q_DISABLE_COPY(%ObjectName%)
 
 public:
-    %ObjectName%(QObject *parent = 0);
-
-    QString text() const;
-    void setText(const QString &text);
-
-signals:
-    void textChanged(const QString &newText);
-
-private slots:
-    void timerFired();
-
-private:
-    QString theText;
-    QTimer *timer;
-
-    Q_DISABLE_COPY(%ObjectName%)
+    %ObjectName%(QDeclarativeItem *parent = 0);
+    ~%ObjectName%();
 };
 
+QML_DECLARE_TYPE(%ObjectName%)
+
 #endif // %ObjectName:u%_H
diff --git a/share/qtcreator/templates/wizards/qml-extension/plugin.cpp b/share/qtcreator/templates/wizards/qml-extension/plugin.cpp
index 0d97d3d2080e21820f2bd6379d53525f705eefd3..5e86f2463a12f9db3138899c315e417f7931d1d2 100644
--- a/share/qtcreator/templates/wizards/qml-extension/plugin.cpp
+++ b/share/qtcreator/templates/wizards/qml-extension/plugin.cpp
@@ -1,11 +1,11 @@
-#include "%ProjectName:l%.%CppHeaderSuffix%"
+#include "%ProjectName:l%_plugin.%CppHeaderSuffix%"
 #include "%ObjectName:l%.%CppHeaderSuffix%"
 
 #include <QtDeclarative/qdeclarative.h>
 
-void %ProjectName%::registerTypes(const char *uri)
+void %ProjectName%Plugin::registerTypes(const char *uri)
 {
     qmlRegisterType<%ObjectName%>(uri, 1, 0, "%ObjectName%");
 }
 
-Q_EXPORT_PLUGIN(%ProjectName%);
+Q_EXPORT_PLUGIN2(%ProjectName%, %ProjectName%Plugin)
diff --git a/share/qtcreator/templates/wizards/qml-extension/plugin.h b/share/qtcreator/templates/wizards/qml-extension/plugin.h
index 1ae9c559ec9314da57bca8fcc671562f0933347e..8600532f3c29ac7d479ff689e04f2beac8a2df54 100644
--- a/share/qtcreator/templates/wizards/qml-extension/plugin.h
+++ b/share/qtcreator/templates/wizards/qml-extension/plugin.h
@@ -1,9 +1,9 @@
-#ifndef %ProjectName:u%_H
-#define %ProjectName:u%_H
+#ifndef %ProjectName:u%_PLUGIN_H
+#define %ProjectName:u%_PLUGIN_H
 
 #include <QtDeclarative/QDeclarativeExtensionPlugin>
 
-class %ProjectName% : public QDeclarativeExtensionPlugin
+class %ProjectName%Plugin : public QDeclarativeExtensionPlugin
 {
     Q_OBJECT
 
@@ -11,4 +11,4 @@ public:
     void registerTypes(const char *uri);
 };
 
-#endif // %ProjectName:u%_H
+#endif // %ProjectName:u%_PLUGIN_H
diff --git a/share/qtcreator/templates/wizards/qml-extension/project.pro b/share/qtcreator/templates/wizards/qml-extension/project.pro
index 800dbffdf88806c7fef0ac1695789d53eafcd3a2..d4f5293be80b80aa410ba17ee8aef42147e0c5d2 100644
--- a/share/qtcreator/templates/wizards/qml-extension/project.pro
+++ b/share/qtcreator/templates/wizards/qml-extension/project.pro
@@ -1,5 +1,5 @@
 TEMPLATE = lib
-TARGET  = %ProjectName%
+TARGET = %ProjectName%
 QT += declarative
 CONFIG += qt plugin
 
@@ -7,11 +7,17 @@ TARGET = $$qtLibraryTarget($$TARGET)
 
 # Input
 SOURCES += \
-    %ProjectName:l%.%CppSourceSuffix% \
+    %ProjectName:l%_plugin.%CppSourceSuffix% \
     %ObjectName:l%.%CppSourceSuffix%
 
-OTHER_FILES=qmldir
-
 HEADERS += \
-    %ProjectName:l%.%CppHeaderSuffix% \
+    %ProjectName:l%_plugin.%CppHeaderSuffix% \
     %ObjectName:l%.%CppHeaderSuffix%
+
+OTHER_FILES = qmldir
+
+copy_qmldir.target = $$OUT_PWD/qmldir
+copy_qmldir.depends = $$PWD/qmldir
+copy_qmldir.commands = $(COPY_FILE) $$copy_qmldir.depends $$copy_qmldir.target
+QMAKE_EXTRA_TARGETS += copy_qmldir
+PRE_TARGETDEPS += $$copy_qmldir.target
diff --git a/share/qtcreator/templates/wizards/qml-extension/wizard.xml b/share/qtcreator/templates/wizards/qml-extension/wizard.xml
index 8b37b7efcf0bb8e9c6805ac663984260a4162f44..6f202f9574fb56b343d61b43faec8c9b8135e1d0 100644
--- a/share/qtcreator/templates/wizards/qml-extension/wizard.xml
+++ b/share/qtcreator/templates/wizards/qml-extension/wizard.xml
@@ -43,8 +43,8 @@ leave room for the Qt 4 target page.
     <displaycategory>QML Extension Plugin</displaycategory>
     <files>
         <file source="qmldir" target="qmldir"/>
-        <file source="plugin.h" target="%ProjectName:l%.%CppHeaderSuffix%"/>
-        <file source="plugin.cpp" target="%ProjectName:l%.%CppSourceSuffix%"/>
+        <file source="plugin.h" target="%ProjectName:l%_plugin.%CppHeaderSuffix%"/>
+        <file source="plugin.cpp" target="%ProjectName:l%_plugin.%CppSourceSuffix%"/>
         <file source="object.h" target="%ObjectName:l%.%CppHeaderSuffix%"/>
         <file source="object.cpp" target="%ObjectName:l%.%CppSourceSuffix%" openeditor="true"/>
         <file source="project.pro" target="%ProjectName:l%.pro" openproject="true"/>
@@ -53,8 +53,13 @@ leave room for the Qt 4 target page.
     <fieldpagetitle>Custom QML Extension  Plugin Parameters</fieldpagetitle>
     <fields>
         <field mandatory="false" name="ObjectName">
-            <fieldcontrol class="QLineEdit" validator='^[A-Za-z0-9_]+$'  defaulttext="ExampleObject"/>
-            <fielddescription>Example Object Class-name:</fielddescription>
+            <fieldcontrol class="QLineEdit" validator='^[A-Za-z0-9_]+$'  defaulttext="MyItem"/>
+            <fielddescription>Object Class-name:</fielddescription>
         </field>
     </fields>
+    <validationrules>
+        <validationrule condition='"%ObjectName%" != "%ProjectName%_plugin"'>
+            <message>The project name and the object class-name cannot be the same.</message>
+        </validationrule>
+    </validationrules>
 </wizard>
diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts
index 931234bbbc782ca3c8af01b5762705b34380035a..60321e251a2bbb0fbe4a92560e0257862bc590e9 100644
--- a/share/qtcreator/translations/qtcreator_de.ts
+++ b/share/qtcreator/translations/qtcreator_de.ts
@@ -9791,7 +9791,7 @@ Fehler: %2</translation>
     <message>
         <location line="+1"/>
         <source>Do you really want to delete the build configuration &lt;b&gt;%1&lt;/b&gt;?</source>
-        <translation>Möchten Sie die Build-Konfiguration&lt;b&gt;%1&lt;/b&gt; löschen?</translation>
+        <translation>Möchten Sie die Build-Konfiguration &lt;b&gt;%1&lt;/b&gt; löschen?</translation>
     </message>
     <message>
         <location line="+41"/>
diff --git a/src/libs/qmleditorwidgets/contextpanewidgetimage.cpp b/src/libs/qmleditorwidgets/contextpanewidgetimage.cpp
index bcc79494038601f7854f23aba2623f6700943f9a..80d7b4d3a5b9e6211cb5d0e968f3f4f9c4b117ef 100644
--- a/src/libs/qmleditorwidgets/contextpanewidgetimage.cpp
+++ b/src/libs/qmleditorwidgets/contextpanewidgetimage.cpp
@@ -465,10 +465,10 @@ void ContextPaneWidgetImage::setPixmap(const QString &fileName)
         if (QFile(fileName).exists()) {
             if (fileName.endsWith(QLatin1String("sci"))) {
                 QString pixmapFileName;
-                int left;
-                int right;
-                int top;
-                int bottom;
+                int left = -1;
+                int right = -1;
+                int top = -1;
+                int bottom = -1;
                 Qt::TileRule horizontalTileRule;
                 Qt::TileRule verticalTileRule;
                 if (parseSciFile(fileName, pixmapFileName, left, right, top, bottom, horizontalTileRule, verticalTileRule)) {
diff --git a/src/plugins/debugger/breakbyfunction.ui b/src/plugins/debugger/breakbyfunction.ui
deleted file mode 100644
index d6c045219c3f256eaf4e3e99afc3cc28c3bc1301..0000000000000000000000000000000000000000
--- a/src/plugins/debugger/breakbyfunction.ui
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>BreakByFunctionDialog</class>
- <widget class="QDialog" name="BreakByFunctionDialog">
-  <property name="geometry">
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>337</width>
-    <height>101</height>
-   </rect>
-  </property>
-  <property name="windowTitle">
-   <string>Set Breakpoint at Function</string>
-  </property>
-  <layout class="QVBoxLayout">
-   <property name="spacing">
-    <number>6</number>
-   </property>
-   <property name="margin">
-    <number>9</number>
-   </property>
-   <item>
-    <layout class="QHBoxLayout" name="horizontalLayout">
-     <item>
-      <widget class="QLabel" name="functionLabel">
-       <property name="text">
-        <string>Function to break on:</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QLineEdit" name="functionLineEdit"/>
-     </item>
-    </layout>
-   </item>
-   <item>
-    <widget class="Line" name="line">
-     <property name="orientation">
-      <enum>Qt::Horizontal</enum>
-     </property>
-    </widget>
-   </item>
-   <item>
-    <widget class="QDialogButtonBox" name="buttonBox">
-     <property name="orientation">
-      <enum>Qt::Horizontal</enum>
-     </property>
-     <property name="standardButtons">
-      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
-     </property>
-    </widget>
-   </item>
-  </layout>
- </widget>
- <resources/>
- <connections/>
-</ui>
diff --git a/src/plugins/debugger/breakhandler.cpp b/src/plugins/debugger/breakhandler.cpp
index f5a14f1bdde385bb3db0c6f878965c26be8df5f6..e0428f8cf5642d1986b7ffe53b4c602bff530d01 100644
--- a/src/plugins/debugger/breakhandler.cpp
+++ b/src/plugins/debugger/breakhandler.cpp
@@ -285,6 +285,9 @@ QVariant BreakHandler::data(const QModelIndex &mi, int role) const
 
     const BreakpointData *data = at(mi.row());
 
+    if (role == BreakpointRole)
+        return qulonglong(data);
+
     if (role == BreakpointUseFullPathRole)
         return data->useFullPath;
 
@@ -502,6 +505,15 @@ bool BreakHandler::setData(const QModelIndex &index, const QVariant &value, int
     return false;
 }
 
+void BreakHandler::reinsertBreakpoint(BreakpointData *data)
+{
+    // FIXME: Use some more direct method?
+    appendBreakpoint(data->clone());
+    removeBreakpoint(data);
+    m_engine->attemptBreakpointSynchronization();
+    emit layoutChanged();
+}
+
 void BreakHandler::append(BreakpointData *data)
 {
     data->m_handler = this;
diff --git a/src/plugins/debugger/breakhandler.h b/src/plugins/debugger/breakhandler.h
index 432bf0a27a87f564e8fa2b53c118f18ffd1826e1..9a9aa30289c79e498f5d249e9b5c8fe21756988e 100644
--- a/src/plugins/debugger/breakhandler.h
+++ b/src/plugins/debugger/breakhandler.h
@@ -66,7 +66,6 @@ public:
     BreakpointData *at(int index) const;
     int size() const { return m_bp.size(); }
     bool hasPendingBreakpoints() const;
-    void append(BreakpointData *data);
     void removeAt(int index); // This also deletes the marker.
     void clear(); // This also deletes all the marker.
     int indexOf(BreakpointData *data) { return m_bp.indexOf(data); }
@@ -99,6 +98,7 @@ public:
 
 public slots:
     void appendBreakpoint(BreakpointData *data);
+    void reinsertBreakpoint(BreakpointData *data);
     void toggleBreakpointEnabled(BreakpointData *data);
     void breakByFunction(const QString &functionName);
     void removeBreakpoint(int index);
@@ -119,6 +119,7 @@ private:
     void loadBreakpoints();
     void saveBreakpoints();
     void removeBreakpointHelper(int index);
+    void append(BreakpointData *data);
 
     const QIcon m_breakpointIcon;
     const QIcon m_disabledBreakpointIcon;
diff --git a/src/plugins/debugger/breakpoint.cpp b/src/plugins/debugger/breakpoint.cpp
index 3d45c972b59bd607478dd6dd4d4874c649b2d061..f7dc8a848e22987198a80cb9acb15cd4affe0a2d 100644
--- a/src/plugins/debugger/breakpoint.cpp
+++ b/src/plugins/debugger/breakpoint.cpp
@@ -364,6 +364,12 @@ bool BreakpointData::conditionsMatch() const
     return s1 == s2;
 }
 
+void BreakpointData::reinsertBreakpoint()
+{
+    QTC_ASSERT(m_handler, return);
+    m_handler->reinsertBreakpoint(this);
+}
+
 } // namespace Internal
 } // namespace Debugger
 
diff --git a/src/plugins/debugger/breakpoint.h b/src/plugins/debugger/breakpoint.h
index ffe6a654dd40dcb08a393b0ac5b1f061e0ae0ff2..7e22ffdb918b281027b1d0b6b1e11388894692e2 100644
--- a/src/plugins/debugger/breakpoint.h
+++ b/src/plugins/debugger/breakpoint.h
@@ -56,6 +56,7 @@ public:
     void updateMarker();
     QString toToolTip() const;
     BreakHandler *handler() { return m_handler; }
+    void reinsertBreakpoint();
 
     bool isLocatedAt(const QString &fileName, int lineNumber,
         bool useMarkerPosition) const;
diff --git a/src/plugins/debugger/breakpoint.ui b/src/plugins/debugger/breakpoint.ui
index f9e09010ba37b40c636dd18246c8f255914d0516..e8932ce84cf1647c7aa1be1cb3f967352525f89b 100644
--- a/src/plugins/debugger/breakpoint.ui
+++ b/src/plugins/debugger/breakpoint.ui
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>382</width>
-    <height>280</height>
+    <height>302</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -46,55 +46,69 @@
      <item row="2" column="1">
       <widget class="QLineEdit" name="lineEditLineNumber"/>
      </item>
+     <item row="3" column="1">
+      <widget class="QCheckBox" name="checkBoxUseFullPath">
+       <property name="text">
+        <string/>
+       </property>
+      </widget>
+     </item>
+     <item row="3" column="0">
+      <widget class="QLabel" name="labelUseFullPath">
+       <property name="text">
+        <string>Use full path:</string>
+       </property>
+      </widget>
+     </item>
      <item row="4" column="0">
-      <widget class="QLabel" name="labelFunction">
+      <widget class="QLabel" name="labelAddress">
        <property name="text">
-        <string>Function:</string>
+        <string>Address:</string>
        </property>
       </widget>
      </item>
      <item row="4" column="1">
-      <widget class="QLineEdit" name="lineEditFunction"/>
+      <widget class="QLineEdit" name="lineEditAddress"/>
      </item>
      <item row="5" column="0">
-      <widget class="QLabel" name="labelCondition">
+      <widget class="QLabel" name="labelFunction">
        <property name="text">
-        <string>Condition:</string>
+        <string>Function:</string>
        </property>
       </widget>
      </item>
      <item row="5" column="1">
-      <widget class="QLineEdit" name="lineEditCondition"/>
+      <widget class="QLineEdit" name="lineEditFunction"/>
      </item>
      <item row="6" column="0">
-      <widget class="QLabel" name="labelIgnoreCount">
+      <widget class="QLabel" name="labelCondition">
        <property name="text">
-        <string>Ignore count:</string>
+        <string>Condition:</string>
        </property>
       </widget>
      </item>
      <item row="6" column="1">
-      <widget class="QLineEdit" name="lineEditIgnoreCount"/>
+      <widget class="QLineEdit" name="lineEditCondition"/>
      </item>
      <item row="7" column="0">
-      <widget class="QLabel" name="labelThreadSpec">
+      <widget class="QLabel" name="labelIgnoreCount">
        <property name="text">
-        <string>Thread specification:</string>
+        <string>Ignore count:</string>
        </property>
       </widget>
      </item>
      <item row="7" column="1">
-      <widget class="QLineEdit" name="lineEditThreadSpec"/>
+      <widget class="QLineEdit" name="lineEditIgnoreCount"/>
      </item>
-     <item row="3" column="0">
-      <widget class="QLabel" name="labelAddress">
+     <item row="8" column="0">
+      <widget class="QLabel" name="labelThreadSpec">
        <property name="text">
-        <string>Address:</string>
+        <string>Thread specification:</string>
        </property>
       </widget>
      </item>
-     <item row="3" column="1">
-      <widget class="QLineEdit" name="lineEditAddress"/>
+     <item row="8" column="1">
+      <widget class="QLineEdit" name="lineEditThreadSpec"/>
      </item>
     </layout>
    </item>
diff --git a/src/plugins/debugger/breakwindow.cpp b/src/plugins/debugger/breakwindow.cpp
index 09e885fa622ce92c3aa639004d527cedd3173615..0ff0a255a0d0bdf8299bd286edf5167a0471e908 100644
--- a/src/plugins/debugger/breakwindow.cpp
+++ b/src/plugins/debugger/breakwindow.cpp
@@ -64,7 +64,7 @@ class BreakpointDialog : public QDialog, public Ui::BreakpointDialog
 {
     Q_OBJECT
 public:
-    explicit BreakpointDialog(QWidget *parent)
+    explicit BreakpointDialog(QWidget *parent, BreakpointData *data)
       : QDialog(parent)
     {
         setupUi(this);
@@ -72,8 +72,21 @@ public:
         comboBoxType->insertItem(1, tr("Function Name"));
         comboBoxType->insertItem(2, tr("Function \"main()\""));
         comboBoxType->insertItem(3, tr("Address"));
-        connect(comboBoxType, SIGNAL(activated(int)),
-                SLOT(typeChanged(int)));
+        lineEditFileName->setText(data->fileName);
+        lineEditLineNumber->setText(QByteArray::number(data->lineNumber));
+        lineEditFunction->setText(data->funcName);
+        lineEditCondition->setText(data->condition);
+        lineEditIgnoreCount->setText(QByteArray::number(data->ignoreCount));
+        checkBoxUseFullPath->setChecked(data->useFullPath);
+        if (data->address)
+            lineEditAddress->setText("0x" + QByteArray::number(data->address, 16));
+        int initialType = 0;
+        if (!data->funcName.isEmpty())
+            initialType = lineEditFunction->text() == "main" ? 2 : 1;
+        if (data->address)
+            initialType = 3;
+        typeChanged(initialType);
+        connect(comboBoxType, SIGNAL(activated(int)), SLOT(typeChanged(int)));
     }
 
 public slots:
@@ -86,6 +99,8 @@ public slots:
         lineEditFileName->setEnabled(isLineVisible);
         labelLineNumber->setEnabled(isLineVisible);
         lineEditLineNumber->setEnabled(isLineVisible);
+        labelUseFullPath->setEnabled(isLineVisible);
+        checkBoxUseFullPath->setEnabled(isLineVisible);
         labelFunction->setEnabled(isFunctionVisible);
         lineEditFunction->setEnabled(isFunctionVisible);
         labelAddress->setEnabled(isAddressVisible);
@@ -96,26 +111,6 @@ public slots:
 
 };
 
-///////////////////////////////////////////////////////////////////////
-//
-// BreakByFunctionDialog
-//
-///////////////////////////////////////////////////////////////////////
-
-class BreakByFunctionDialog : public QDialog, Ui::BreakByFunctionDialog
-{
-public:
-    explicit BreakByFunctionDialog(QWidget *parent)
-      : QDialog(parent)
-    {
-        setupUi(this);
-        connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
-        connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
-    }
-    QString functionName() const { return functionLineEdit->text(); }
-};
-
-
 ///////////////////////////////////////////////////////////////////////
 //
 // BreakWindow
@@ -279,16 +274,13 @@ void BreakWindow::contextMenuEvent(QContextMenuEvent *ev)
     pathAction->setEnabled(si.size() > 0);
 
     QAction *addBreakpointAction =
-        new QAction(tr("Set Breakpoint..."), this);
-    //QAction *breakAtFunctionAction =
-    //    new QAction(tr("Set Breakpoint at Function..."), this);
-    //QAction *breakAtMainAction =
-    //    new QAction(tr("Set Breakpoint at Function \"main\""), this);
+        new QAction(tr("Add Breakpoint..."), this);
     QAction *breakAtThrowAction =
         new QAction(tr("Set Breakpoint at \"throw\""), this);
     QAction *breakAtCatchAction =
         new QAction(tr("Set Breakpoint at \"catch\""), this);
 
+    menu.addAction(addBreakpointAction);
     menu.addAction(deleteAction);
     menu.addAction(editBreakpointAction);
     menu.addAction(associateBreakpointAction);
@@ -299,11 +291,8 @@ void BreakWindow::contextMenuEvent(QContextMenuEvent *ev)
     menu.addAction(deleteByFileAction);
     menu.addSeparator();
     menu.addAction(synchronizeAction);
-    menu.addSeparator();
-    //menu.addAction(breakAtFunctionAction);
-    //menu.addAction(breakAtMainAction);
-    menu.addAction(addBreakpointAction);
     if (engineCapabilities & BreakOnThrowAndCatchCapability) {
+        menu.addSeparator();
         menu.addAction(breakAtThrowAction);
         menu.addAction(breakAtCatchAction);
     }
@@ -342,15 +331,9 @@ void BreakWindow::contextMenuEvent(QContextMenuEvent *ev)
         setBreakpointsFullPath(si, !fullpath);
     else if (act == addBreakpointAction)
         addBreakpoint();
-    //else if (act == breakAtFunctionAction) {
-    //    BreakByFunctionDialog dlg(this);
-    //    if (dlg.exec())
-    //        setModelData(RequestBreakByFunctionRole, dlg.functionName());
-    //} else if (act == breakAtMainAction)
-    //    setModelData(RequestBreakByFunctionMainRole);
-     else if (act == breakAtThrowAction)
+    else if (act == breakAtThrowAction)
         setModelData(RequestBreakByFunctionRole, "__cxa_throw");
-     else if (act == breakAtCatchAction)
+    else if (act == breakAtCatchAction)
         setModelData(RequestBreakByFunctionRole, "__cxa_begin_catch");
 }
 
@@ -392,41 +375,58 @@ void BreakWindow::deleteBreakpoints(QList<int> list)
     setModelData(RequestSynchronizeBreakpointsRole);
 }
 
-void BreakWindow::addBreakpoint()
+bool BreakWindow::editBreakpoint(BreakpointData *data)
 {
-    BreakpointDialog dialog(this);
+    BreakpointDialog dialog(this, data);
     if (dialog.exec() == QDialog::Rejected)
-        return;
-    BreakpointData *data = new BreakpointData();
-    if (!dialog.lineEditAddress->text().isEmpty()) {
-        bool ok = false;
+        return false;
+    bool ok = false;
+    if (!dialog.lineEditAddress->text().isEmpty())
         data->address = dialog.lineEditAddress->text().toULongLong(&ok, 0);
-    }
+    if (!dialog.lineEditFunction->text().isEmpty())
+        data->funcName = dialog.lineEditFunction->text();
     if (!dialog.lineEditFunction->text().isEmpty())
         data->funcName = dialog.lineEditFunction->text();
     if (!dialog.lineEditFileName->text().isEmpty())
         data->fileName = dialog.lineEditFileName->text();
-    if (!dialog.lineEditFileName->text().isEmpty())
-        data->fileName = dialog.lineEditFileName->text();
+    data->lineNumber = dialog.lineEditLineNumber->text().toInt();
+    data->useFullPath = dialog.checkBoxUseFullPath->isChecked();
     if (!dialog.lineEditCondition->text().isEmpty())
         data->condition = dialog.lineEditCondition->text().toUtf8();
     if (!dialog.lineEditIgnoreCount->text().isEmpty())
         data->ignoreCount = dialog.lineEditIgnoreCount->text().toInt();
     if (!dialog.lineEditThreadSpec->text().isEmpty())
         data->threadSpec = dialog.lineEditThreadSpec->text().toUtf8();
-    setModelData(RequestBreakpointRole, QVariant::fromValue(data));
+    return true;
+}
+
+void BreakWindow::addBreakpoint()
+{
+    BreakpointData *data = new BreakpointData();
+    if (editBreakpoint(data))
+        setModelData(RequestBreakpointRole, QVariant::fromValue(data));
+    else
+        delete data;
 }
 
 void BreakWindow::editBreakpoints(const QModelIndexList &list)
 {
+    if (list.size() == 1) {
+        QVariant var = model()->data(list.at(0), BreakpointRole);
+        BreakpointData *data = (BreakpointData *)var.toULongLong();
+        if (editBreakpoint(data))
+            data->reinsertBreakpoint();
+        return;
+    }
+
+    // This allows to change properties of multiple breakpoints at a time.
     QDialog dlg(this);
     Ui::BreakCondition ui;
     ui.setupUi(&dlg);
 
     QTC_ASSERT(!list.isEmpty(), return);
     QModelIndex idx = list.front();
-    const int row = idx.row();
-    dlg.setWindowTitle(tr("Conditions on Breakpoint %1").arg(row));
+    dlg.setWindowTitle(tr("Edit Breakpoint Properties"));
     ui.lineEditFunction->hide();
     ui.labelFunction->hide();
     ui.lineEditFileName->hide();
@@ -436,7 +436,8 @@ void BreakWindow::editBreakpoints(const QModelIndexList &list)
     QAbstractItemModel *m = model();
     ui.lineEditCondition->setText(
         m->data(idx, BreakpointConditionRole).toString());
-    ui.lineEditIgnoreCount->setValidator(new QIntValidator(0, 2147483647, ui.lineEditIgnoreCount));
+    ui.lineEditIgnoreCount->setValidator(
+        new QIntValidator(0, 2147483647, ui.lineEditIgnoreCount));
     ui.lineEditIgnoreCount->setText(
         m->data(idx, BreakpointIgnoreCountRole).toString());
     ui.lineEditThreadSpec->setText(
diff --git a/src/plugins/debugger/breakwindow.h b/src/plugins/debugger/breakwindow.h
index 2a9e41b7a0dce60d0bf8c3595d7483615e35b390..5b6b1cb969b2d72e8a48ff921c0093a3be42a06b 100644
--- a/src/plugins/debugger/breakwindow.h
+++ b/src/plugins/debugger/breakwindow.h
@@ -62,6 +62,7 @@ private:
     void deleteBreakpoints(const QModelIndexList &list);
     void deleteBreakpoints(QList<int> rows);
     void addBreakpoint();
+    bool editBreakpoint(BreakpointData *data); // Returns 'Accept'.
     void editBreakpoints(const QModelIndexList &list);
     void associateBreakpoint(const QModelIndexList &list, int thread);
     void setBreakpointsEnabled(const QModelIndexList &list, bool enabled);
diff --git a/src/plugins/debugger/debugger.pro b/src/plugins/debugger/debugger.pro
index f4ebe54f7270dd3bc87f6dfd0cdaa278c5c74853..62035c48e69301662c85194cd1d7c89c12509630 100644
--- a/src/plugins/debugger/debugger.pro
+++ b/src/plugins/debugger/debugger.pro
@@ -95,7 +95,6 @@ SOURCES += breakhandler.cpp \
 FORMS += attachexternaldialog.ui \
     attachcoredialog.ui \
     attachtcfdialog.ui \
-    breakbyfunction.ui \
     breakcondition.ui \
     breakpoint.ui \
     dumperoptionpage.ui \
diff --git a/src/plugins/debugger/debuggeractions.cpp b/src/plugins/debugger/debuggeractions.cpp
index 8a0eba727c50fe84956657131854c7d6932a842f..670db758c0070602427c3b429739dba6293027ac 100644
--- a/src/plugins/debugger/debuggeractions.cpp
+++ b/src/plugins/debugger/debuggeractions.cpp
@@ -317,9 +317,6 @@ DebuggerSettings *DebuggerSettings::instance()
     item->setValue(true);
     instance->insertItem(UseCodeModel, item);
 
-    item = new SavedAction(instance);
-    item->setText(tr("Recheck Debugging Helper Availability"));
-    instance->insertItem(RecheckDebuggingHelpers, item);
 
     //
     // Breakpoints
diff --git a/src/plugins/debugger/debuggeractions.h b/src/plugins/debugger/debuggeractions.h
index 6fd56fb64faf085b45417e260060d41fb3bd1e8c..c0ef28a8f37b8770ccc78498d84e50440f5b0a41 100644
--- a/src/plugins/debugger/debuggeractions.h
+++ b/src/plugins/debugger/debuggeractions.h
@@ -94,7 +94,6 @@ enum DebuggerActionCode
     OperateByInstruction,
     AutoDerefPointers,
 
-    RecheckDebuggingHelpers,
     UseDebuggingHelpers,
     UseCustomDebuggingHelperLocation,
     CustomDebuggingHelperLocation,
diff --git a/src/plugins/debugger/debuggerconstants.h b/src/plugins/debugger/debuggerconstants.h
index 6f56ef5dbcc72c9f6e03cccf350d8c48d6a8b32d..35e60bcfe45fda385d7e08b7e46c1fe3a9922800 100644
--- a/src/plugins/debugger/debuggerconstants.h
+++ b/src/plugins/debugger/debuggerconstants.h
@@ -204,6 +204,7 @@ enum ModelRoles
     RequestExecuteCommandRole,
 
     // Breakpoints
+    BreakpointRole,
     BreakpointEnabledRole,
     BreakpointUseFullPathRole,
     BreakpointFunctionNameRole,
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index 56f165db766dfe71f32744adb3a98ad3c87a6459..34d1b5b591fe95be44a8892a4e906e3836ae285c 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -2235,7 +2235,6 @@ void DebuggerPluginPrivate::setInitialState()
     m_actions.jumpToLineAction2->setEnabled(false);
     m_actions.nextAction->setEnabled(false);
 
-    theDebuggerAction(RecheckDebuggingHelpers)->setEnabled(false);
     theDebuggerAction(AutoDerefPointers)->setEnabled(true);
     theDebuggerAction(ExpandStack)->setEnabled(false);
     theDebuggerAction(ExecuteCommand)->setEnabled(m_state == InferiorStopOk);
@@ -2347,7 +2346,6 @@ void DebuggerPluginPrivate::updateState(DebuggerEngine *engine)
 
     m_actions.nextAction->setEnabled(stopped);
 
-    theDebuggerAction(RecheckDebuggingHelpers)->setEnabled(actionsEnabled);
     const bool canDeref = actionsEnabled
         && (m_capabilities & AutoDerefPointersCapability);
     theDebuggerAction(AutoDerefPointers)->setEnabled(canDeref);
diff --git a/src/plugins/debugger/gdb/classicgdbengine.cpp b/src/plugins/debugger/gdb/classicgdbengine.cpp
index 16d3a2685520156eb77e87c4e89cb03cff64d4c0..6918f23c20ffda506e9e16e069b80de1ab6cb544 100644
--- a/src/plugins/debugger/gdb/classicgdbengine.cpp
+++ b/src/plugins/debugger/gdb/classicgdbengine.cpp
@@ -569,17 +569,6 @@ void GdbEngine::tryQueryDebuggingHelpersClassic()
         CB(handleQueryDebuggingHelperClassic));
 }
 
-void GdbEngine::recheckDebuggingHelperAvailabilityClassic()
-{
-    PRECONDITION;
-    if (m_gdbAdapter->dumperHandling() != AbstractGdbAdapter::DumperNotAvailable) {
-        // Retrieve list of dumpable classes.
-        postCommand("call (void*)qDumpObjectData440(1,0,0,0,0,0,0,0)");
-        postCommand("p (char*)&qDumpOutBuffer",
-            CB(handleQueryDebuggingHelperClassic));
-    }
-}
-
 // Called from CoreAdapter and AttachAdapter
 void GdbEngine::updateAllClassic()
 {
diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index 27311de6e85b5ca2a586948d87bc9593af955cf2..ec860d875aad5ac0d7d4b3a37fee454bbcba4316 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -1781,8 +1781,6 @@ void GdbEngine::setupEngine()
                 this, SLOT(setUseDebuggingHelpers(QVariant)));
         connect(theDebuggerAction(DebugDebuggingHelpers), SIGNAL(valueChanged(QVariant)),
                 this, SLOT(setDebugDebuggingHelpersClassic(QVariant)));
-        connect(theDebuggerAction(RecheckDebuggingHelpers), SIGNAL(triggered()),
-                this, SLOT(recheckDebuggingHelperAvailabilityClassic()));
     }
 
     QTC_ASSERT(state() == EngineSetupRequested, /**/);
diff --git a/src/plugins/debugger/gdb/gdbengine.h b/src/plugins/debugger/gdb/gdbengine.h
index c4b90b80da87bb69ad4693efa7c1b69242d38355..210b1c678174aa3c5dcc80a4395f55faf1a03844 100644
--- a/src/plugins/debugger/gdb/gdbengine.h
+++ b/src/plugins/debugger/gdb/gdbengine.h
@@ -516,7 +516,6 @@ private: ////////// View & Data Stuff //////////
     void setDebuggingHelperStateClassic(DebuggingHelperState);
     void tryLoadDebuggingHelpersClassic();
     void tryQueryDebuggingHelpersClassic();
-    Q_SLOT void recheckDebuggingHelperAvailabilityClassic();
     Q_SLOT void setDebugDebuggingHelpersClassic(const QVariant &on);
     Q_SLOT void setUseDebuggingHelpers(const QVariant &on);
 
diff --git a/src/plugins/debugger/watchwindow.cpp b/src/plugins/debugger/watchwindow.cpp
index b1b46cc49a2130ae414a70f45a80578f6db9289b..878b0a11db404dceeb1e947ea7091c4fb197f1f4 100644
--- a/src/plugins/debugger/watchwindow.cpp
+++ b/src/plugins/debugger/watchwindow.cpp
@@ -376,20 +376,8 @@ void WatchWindow::contextMenuEvent(QContextMenuEvent *ev)
         menu.addAction(actSetWatchPointAtPointerValue);
     menu.addSeparator();
 
-    menu.addAction(theDebuggerAction(RecheckDebuggingHelpers));
     menu.addAction(theDebuggerAction(UseDebuggingHelpers));
-    QAction *actClearCodeModelSnapshot
-        = new QAction(tr("Refresh Code Model Snapshot"), &menu);
-    actClearCodeModelSnapshot->setEnabled(actionsEnabled
-        && theDebuggerAction(UseCodeModel)->isChecked());
-    menu.addAction(actClearCodeModelSnapshot);
-    QAction *actShowInEditor
-        = new QAction(tr("Show View Contents in Editor"), &menu);
-    actShowInEditor->setEnabled(actionsEnabled);
-    menu.addAction(actShowInEditor);
-    menu.addSeparator();
     menu.addAction(theDebuggerAction(UseToolTipsInLocalsView));
-
     menu.addAction(theDebuggerAction(AutoDerefPointers));
     menu.addAction(theDebuggerAction(ShowStdNamespace));
     menu.addAction(theDebuggerAction(ShowQtNamespace));
@@ -403,6 +391,15 @@ void WatchWindow::contextMenuEvent(QContextMenuEvent *ev)
     actAlwaysAdjustColumnWidth->setChecked(m_alwaysResizeColumnsToContents);
 
     menu.addSeparator();
+    QAction *actClearCodeModelSnapshot
+        = new QAction(tr("Refresh Code Model Snapshot"), &menu);
+    actClearCodeModelSnapshot->setEnabled(actionsEnabled
+        && theDebuggerAction(UseCodeModel)->isChecked());
+    menu.addAction(actClearCodeModelSnapshot);
+    QAction *actShowInEditor
+        = new QAction(tr("Show View Contents in Editor"), &menu);
+    actShowInEditor->setEnabled(actionsEnabled);
+    menu.addAction(actShowInEditor);
     menu.addAction(theDebuggerAction(SettingsDialog));
 
     QAction *act = menu.exec(ev->globalPos());
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunfactories.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemorunfactories.cpp
index 0ee8512d1d34b457c81add6391af01f40ef2f20e..49c42bef3c3ebe2b8d84f2e33f7b69c3ab23148c 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemorunfactories.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunfactories.cpp
@@ -163,7 +163,8 @@ bool MaemoRunControlFactory::canRun(RunConfiguration *runConfiguration,
     const MaemoRunConfiguration * const maemoRunConfig
         = qobject_cast<MaemoRunConfiguration *>(runConfiguration);
     if (!maemoRunConfig || !maemoRunConfig->deviceConfig().isValid()
-        || !maemoRunConfig->toolchain())
+        || !maemoRunConfig->toolchain()
+        || maemoRunConfig->remoteExecutableFilePath().isEmpty())
         return false;
     const int freePortCount = maemoRunConfig->freePorts().count();
     if (freePortCount == 0)
@@ -182,10 +183,11 @@ bool MaemoRunControlFactory::canRun(RunConfiguration *runConfiguration,
 RunControl* MaemoRunControlFactory::create(RunConfiguration *runConfig,
     const QString &mode)
 {
-    MaemoRunConfiguration *rc = qobject_cast<MaemoRunConfiguration *>(runConfig);
-    Q_ASSERT(rc);
     Q_ASSERT(mode == ProjectExplorer::Constants::RUNMODE
         || mode == ProjectExplorer::Constants::DEBUGMODE);
+    Q_ASSERT(canRun(runConfig, mode));
+    MaemoRunConfiguration *rc = qobject_cast<MaemoRunConfiguration *>(runConfig);
+    Q_ASSERT(rc);
     if (mode == ProjectExplorer::Constants::RUNMODE)
         return new MaemoRunControl(rc);
     return MaemoDebugSupport::createDebugRunControl(rc);
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemosshrunner.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemosshrunner.cpp
index 0ef0e95fc27b892c1b7cdc64bbe9cbed4636713a..5ea12bc90e2e554a5445f8f7065f8b79fd5b8536 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemosshrunner.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemosshrunner.cpp
@@ -143,11 +143,15 @@ void MaemoSshRunner::cleanup(bool initialCleanup)
 
     emit reportProgress(tr("Killing remote process(es)..."));
     m_shuttingDown = !initialCleanup;
+
+    // pkill behaves differently on Fremantle and Harmattan.
+    const char *const killTemplate = "pkill -%2 '^%1$'; pkill -%2 '/%1$';";
+
     QString niceKill;
     QString brutalKill;
     foreach (const QString &proc, m_procsToKill) {
-        niceKill += QString::fromLocal8Bit("pkill %1\\$;").arg(proc);
-        brutalKill += QString::fromLocal8Bit("pkill -9 %1\\$;").arg(proc);
+        niceKill += QString::fromLocal8Bit(killTemplate).arg(proc).arg("SIGTERM");
+        brutalKill += QString::fromLocal8Bit(killTemplate).arg(proc).arg("SIGKILL");
     }
     QString remoteCall = niceKill + QLatin1String("sleep 1; ") + brutalKill;
     remoteCall.remove(remoteCall.count() - 1, 1); // Get rid of trailing semicolon.
diff --git a/src/plugins/texteditor/fontsettingspage.cpp b/src/plugins/texteditor/fontsettingspage.cpp
index 0336d660b7dad2b6f78f0ee755a047078db5413c..45882f7e0ffc7eeba7122be7158ce24f0e5fc0eb 100644
--- a/src/plugins/texteditor/fontsettingspage.cpp
+++ b/src/plugins/texteditor/fontsettingspage.cpp
@@ -383,14 +383,14 @@ void FontSettingsPage::updatePointSizes()
         d_ptr->ui.sizeComboBox->clear();
     }
     const QList<int> sizeLst = pointSizesForSelectedFont();
-    int idx = 0;
+    int idx = -1;
     int i = 0;
     for (; i < sizeLst.count(); ++i) {
-        if (idx == 0 && sizeLst.at(i) >= oldSize)
+        if (idx == -1 && sizeLst.at(i) >= oldSize)
             idx = i;
         d_ptr->ui.sizeComboBox->addItem(QString::number(sizeLst.at(i)));
     }
-    if (d_ptr->ui.sizeComboBox->count())
+    if (idx != -1)
         d_ptr->ui.sizeComboBox->setCurrentIndex(idx);
 }
 
diff --git a/src/tools/qml/qmlobserver/main.cpp b/src/tools/qml/qmlobserver/main.cpp
index 786c494d5c928903e0ec9238a23ca55f15ea5846..f04640d970eb8b53f22833aa88f793be17e442bc 100644
--- a/src/tools/qml/qmlobserver/main.cpp
+++ b/src/tools/qml/qmlobserver/main.cpp
@@ -85,6 +85,9 @@ QString warnings;
 void showWarnings()
 {
     if (!warnings.isEmpty()) {
+        int argc = 0; char **argv = 0;
+        QApplication application(argc, argv); // QApplication() in main has been destroyed already.
+        Q_UNUSED(application)
         QMessageBox::warning(0, QApplication::tr("Qt QML Viewer"), warnings);
     }
 }
@@ -176,7 +179,7 @@ int main(int argc, char ** argv)
 
 #if defined (Q_OS_WIN)
     // Debugging output is not visible by default on Windows -
-    // therefore show modal dialog with errors instad.
+    // therefore show modal dialog with errors instead.
     atexit(showWarnings);
 #endif
 
diff --git a/src/tools/qml/qmlobserver/qmlruntime.cpp b/src/tools/qml/qmlobserver/qmlruntime.cpp
index 6d4fe6c7a040b019bd18838383852efca725db6d..0fbacbe3648d5bc4028cb36cf2c84b67c54f3671 100644
--- a/src/tools/qml/qmlobserver/qmlruntime.cpp
+++ b/src/tools/qml/qmlobserver/qmlruntime.cpp
@@ -649,7 +649,7 @@ QDeclarativeViewer::QDeclarativeViewer(QWidget *parent, Qt::WindowFlags flags)
         QObject::connect(observer, SIGNAL(inspectorContextCleared()), m_crumblePathWidget, SLOT(clear()));
         QObject::connect(observer, SIGNAL(inspectorContextPushed(QString)), m_crumblePathWidget, SLOT(pushElement(QString)));
         QObject::connect(observer, SIGNAL(inspectorContextPopped()), m_crumblePathWidget, SLOT(popElement()));
-        QObject::connect(m_crumblePathWidget, SIGNAL(elementClicked(int)), observer, SLOT(setInspectorContext(int)));
+        QObject::connect(m_crumblePathWidget, SIGNAL(elementClicked(int)), observer, SLOT(setObserverContext(int)));
         QObject::connect(observer, SIGNAL(designModeBehaviorChanged(bool)), m_crumblePathWidget, SLOT(setVisible(bool)));
     }
     QObject::connect(canvas->engine(), SIGNAL(quit()), QCoreApplication::instance (), SLOT(quit()));