diff --git a/src/plugins/cpptools/cppcodecompletion.cpp b/src/plugins/cpptools/cppcodecompletion.cpp
index 7bb3a36c40ddb3876e9861c5399092d032d50c9b..9815b6f2c1622f9c4bec20ba1277ecef0d93a0bd 100644
--- a/src/plugins/cpptools/cppcodecompletion.cpp
+++ b/src/plugins/cpptools/cppcodecompletion.cpp
@@ -78,7 +78,7 @@ class FunctionArgumentWidget : public QLabel
 {
 public:
     FunctionArgumentWidget();
-    void showFunctionHint(Function *functionSymbol, const Snapshot &snapshot);
+    void showFunctionHint(Function *functionSymbol, const LookupContext &context);
 
 protected:
     bool eventFilter(QObject *obj, QEvent *e);
@@ -95,7 +95,7 @@ private:
 
     QFrame *m_popupFrame;
     Function *m_item;
-    Snapshot m_snapshot;
+    LookupContext m_context;
 };
 
 class ConvertToCompletionItem: protected NameVisitor
@@ -215,10 +215,10 @@ FunctionArgumentWidget::FunctionArgumentWidget()
 }
 
 void FunctionArgumentWidget::showFunctionHint(Function *functionSymbol,
-                                              const Snapshot &snapshot)
+                                              const LookupContext &context)
 {
     m_item = functionSymbol;
-    m_snapshot = snapshot;
+    m_context = context;
     m_startpos = m_editor->position();
 
     // update the text
@@ -1073,7 +1073,7 @@ void CppCodeCompletion::complete(const TextEditor::CompletionItem &item)
             if (!m_functionArgumentWidget)
                 m_functionArgumentWidget = new FunctionArgumentWidget;
 
-            m_functionArgumentWidget->showFunctionHint(function, typeOfExpression.snapshot());
+            m_functionArgumentWidget->showFunctionHint(function, typeOfExpression.lookupContext());
         }
     } else if (m_completionOperator == T_SIGNAL || m_completionOperator == T_SLOT) {
         QString toInsert = item.m_text;
diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp
index 81c21e359bb563cb2f799636f1a409832b0849e1..660448a6bcc265224ceb1a736c533d66fe9c3cac 100644
--- a/src/plugins/debugger/debuggermanager.cpp
+++ b/src/plugins/debugger/debuggermanager.cpp
@@ -452,7 +452,7 @@ QDockWidget *DebuggerManager::createDockForWidget(QWidget *widget)
 {
     QDockWidget *dockWidget = new QDockWidget(widget->windowTitle(), m_mainWindow);
     dockWidget->setObjectName(widget->windowTitle());
-    dockWidget->setFeatures(QDockWidget::NoDockWidgetFeatures);
+    dockWidget->setFeatures(QDockWidget::DockWidgetClosable);
     dockWidget->setTitleBarWidget(new QWidget(dockWidget));
     dockWidget->setWidget(widget);
     connect(dockWidget->toggleViewAction(), SIGNAL(toggled(bool)),
@@ -489,7 +489,7 @@ void DebuggerManager::setSimpleDockWidgetArrangement()
 void DebuggerManager::setLocked(bool locked)
 {
     const QDockWidget::DockWidgetFeatures features =
-            (locked) ? QDockWidget::NoDockWidgetFeatures :
+            (locked) ? QDockWidget::DockWidgetClosable :
                        QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetClosable;
 
     foreach (QDockWidget *dockWidget, m_dockWidgets) {
diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp
index a573477f32c01b28588ce4463c830a56db414ee6..def2355823c568426f2c0209fcc8f80a152bfe92 100644
--- a/src/plugins/texteditor/basetexteditor.cpp
+++ b/src/plugins/texteditor/basetexteditor.cpp
@@ -2504,14 +2504,13 @@ void BaseTextEditor::extraAreaMouseEvent(QMouseEvent *e)
         }
     }
 
-
     if (e->type() == QEvent::MouseButtonPress || e->type() == QEvent::MouseButtonDblClick) {
         if (e->button() == Qt::LeftButton) {
             if (d->m_codeFoldingVisible && TextBlockUserData::canCollapse(cursor.block())
                 && !TextBlockUserData::hasClosingCollapseInside(cursor.block().next())
                 && collapseBox(cursor.block()).contains(e->pos())) {
-                setTextCursor(cursor);
                 toggleBlockVisible(cursor.block());
+                d->moveCursorVisible(false);
             } else if (d->m_marksVisible && e->pos().x() > markWidth) {
                 QTextCursor selection = cursor;
                 selection.setVisualNavigation(true);
@@ -3392,15 +3391,16 @@ void BaseTextEditor::setIfdefedOutBlocks(const QList<BaseTextEditor::BlockRange>
 }
 
 
-void BaseTextEditorPrivate::moveCursorVisible()
+void BaseTextEditorPrivate::moveCursorVisible(bool ensureVisible)
 {
     QTextCursor cursor = q->textCursor();
     if (!cursor.block().isVisible()) {
         cursor.setVisualNavigation(true);
-        cursor.movePosition(QTextCursor::PreviousBlock);
+        cursor.movePosition(QTextCursor::Up);
         q->setTextCursor(cursor);
     }
-    q->ensureCursorVisible();
+    if (ensureVisible)
+        q->ensureCursorVisible();
 }
 
 void BaseTextEditor::collapse()
diff --git a/src/plugins/texteditor/basetexteditor_p.h b/src/plugins/texteditor/basetexteditor_p.h
index 270b7444f42953a712557d52e9081d131b84fbb8..9da5b27248c56983873c3f7d88d1766740870319 100644
--- a/src/plugins/texteditor/basetexteditor_p.h
+++ b/src/plugins/texteditor/basetexteditor_p.h
@@ -218,7 +218,7 @@ public:
     QTextCursor m_findScope;
     QTextCursor m_selectBlockAnchor;
 
-    void moveCursorVisible();
+    void moveCursorVisible(bool ensureVisible = true);
 };
 
 } // namespace Internal