aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Teske <daniel.teske@digia.com>2014-04-09 17:04:50 +0200
committerDaniel Teske <daniel.teske@digia.com>2014-04-16 13:52:41 +0200
commitaeabe1a727af3ebc0e05570da20f3d0a0a427f3b (patch)
treea1d04fedb07354bca4723b53150744c8394d7b0d
parent18f8486b05a48f072cf0b0170b8854a25bb9d372 (diff)
OutlineViews: Make behavior consistent with other views
Allow them to be focused, activate also on return/enter. Also fix focus handling so that assigning a shortcut to "Activate Outline View" actually works. Change-Id: I878777ae0dad493af1715b36ee264a4f0c12443e Reviewed-by: Eike Ziller <eike.ziller@digia.com>
-rw-r--r--src/plugins/cppeditor/cppoutline.cpp15
-rw-r--r--src/plugins/cppeditor/cppoutline.h1
-rw-r--r--src/plugins/qmljseditor/qmljsoutline.cpp13
-rw-r--r--src/plugins/qmljseditor/qmljsoutline.h1
-rw-r--r--src/plugins/qmljseditor/qmljsoutlinetreeview.cpp2
-rw-r--r--src/plugins/texteditor/outlinefactory.cpp1
6 files changed, 21 insertions, 12 deletions
diff --git a/src/plugins/cppeditor/cppoutline.cpp b/src/plugins/cppeditor/cppoutline.cpp
index 2bc7916e9f..641e577995 100644
--- a/src/plugins/cppeditor/cppoutline.cpp
+++ b/src/plugins/cppeditor/cppoutline.cpp
@@ -46,8 +46,6 @@ enum {
CppOutlineTreeView::CppOutlineTreeView(QWidget *parent) :
Utils::NavigationTreeView(parent)
{
- // see also QmlJSOutlineTreeView
- setFocusPolicy(Qt::NoFocus);
setExpandsOnDoubleClick(false);
}
@@ -105,6 +103,7 @@ CppOutlineWidget::CppOutlineWidget(CPPEditorWidget *editor) :
setLayout(layout);
m_treeView->setModel(m_proxyModel);
+ setFocusProxy(m_treeView);
connect(m_model, SIGNAL(modelReset()), this, SLOT(modelUpdated()));
modelUpdated();
@@ -113,8 +112,8 @@ CppOutlineWidget::CppOutlineWidget(CPPEditorWidget *editor) :
this, SLOT(updateSelectionInTree(QModelIndex)));
connect(m_treeView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
this, SLOT(updateSelectionInText(QItemSelection)));
- connect(m_treeView, SIGNAL(doubleClicked(QModelIndex)),
- this, SLOT(updateTextCursor(QModelIndex)));
+ connect(m_treeView, SIGNAL(activated(QModelIndex)),
+ this, SLOT(focusEditor()));
}
QList<QAction*> CppOutlineWidget::filterMenuActions() const
@@ -145,7 +144,7 @@ void CppOutlineWidget::updateSelectionInTree(const QModelIndex &index)
if (debug)
qDebug() << "CppOutline - updating selection due to cursor move";
- m_treeView->selectionModel()->select(proxyIndex, QItemSelectionModel::ClearAndSelect);
+ m_treeView->setCurrentIndex(proxyIndex);
m_treeView->scrollTo(proxyIndex);
m_blockCursorSync = false;
}
@@ -176,11 +175,15 @@ void CppOutlineWidget::updateTextCursor(const QModelIndex &proxyIndex)
// line has to be 1 based, column 0 based!
m_editor->gotoLine(symbol->line(), symbol->column() - 1);
- m_editor->setFocus();
m_blockCursorSync = false;
}
}
+void CppOutlineWidget::focusEditor()
+{
+ m_editor->setFocus();
+}
+
bool CppOutlineWidget::syncCursor()
{
return m_enableCursorSync && !m_blockCursorSync;
diff --git a/src/plugins/cppeditor/cppoutline.h b/src/plugins/cppeditor/cppoutline.h
index a4322ce653..29969dc197 100644
--- a/src/plugins/cppeditor/cppoutline.h
+++ b/src/plugins/cppeditor/cppoutline.h
@@ -77,6 +77,7 @@ private slots:
void updateSelectionInTree(const QModelIndex &index);
void updateSelectionInText(const QItemSelection &selection);
void updateTextCursor(const QModelIndex &index);
+ void focusEditor();
private:
bool syncCursor();
diff --git a/src/plugins/qmljseditor/qmljsoutline.cpp b/src/plugins/qmljseditor/qmljsoutline.cpp
index e42a617d78..fe6953ae7b 100644
--- a/src/plugins/qmljseditor/qmljsoutline.cpp
+++ b/src/plugins/qmljseditor/qmljsoutline.cpp
@@ -104,6 +104,7 @@ QmlJSOutlineWidget::QmlJSOutlineWidget(QWidget *parent) :
m_filterModel->setFilterBindings(false);
m_treeView->setModel(m_filterModel);
+ setFocusProxy(m_treeView);
QVBoxLayout *layout = new QVBoxLayout;
@@ -130,8 +131,8 @@ void QmlJSOutlineWidget::setEditor(QmlJSTextEditorWidget *editor)
connect(m_treeView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
this, SLOT(updateSelectionInText(QItemSelection)));
- connect(m_treeView, SIGNAL(doubleClicked(QModelIndex)),
- this, SLOT(updateTextCursor(QModelIndex)));
+ connect(m_treeView, SIGNAL(activated(QModelIndex)),
+ this, SLOT(focusEditor()));
connect(m_editor, SIGNAL(outlineModelIndexChanged(QModelIndex)),
this, SLOT(updateSelectionInTree(QModelIndex)));
@@ -187,7 +188,7 @@ void QmlJSOutlineWidget::updateSelectionInTree(const QModelIndex &index)
filterIndex = m_filterModel->mapFromSource(baseIndex);
}
- m_treeView->selectionModel()->select(filterIndex, QItemSelectionModel::ClearAndSelect);
+ m_treeView->setCurrentIndex(filterIndex);
m_treeView->scrollTo(filterIndex);
m_blockCursorSync = false;
}
@@ -226,10 +227,14 @@ void QmlJSOutlineWidget::updateTextCursor(const QModelIndex &index)
textCursor.setPosition(location.offset);
m_editor->setTextCursor(textCursor);
m_editor->centerCursor();
- m_editor->setFocus();
m_blockCursorSync = false;
}
+void QmlJSOutlineWidget::focusEditor()
+{
+ m_editor->setFocus();
+}
+
void QmlJSOutlineWidget::setShowBindings(bool showBindings)
{
m_filterModel->setFilterBindings(!showBindings);
diff --git a/src/plugins/qmljseditor/qmljsoutline.h b/src/plugins/qmljseditor/qmljsoutline.h
index 668b697c72..39cf78be98 100644
--- a/src/plugins/qmljseditor/qmljsoutline.h
+++ b/src/plugins/qmljseditor/qmljsoutline.h
@@ -80,6 +80,7 @@ private slots:
void updateSelectionInTree(const QModelIndex &index);
void updateSelectionInText(const QItemSelection &selection);
void updateTextCursor(const QModelIndex &index);
+ void focusEditor();
void setShowBindings(bool showBindings);
private:
diff --git a/src/plugins/qmljseditor/qmljsoutlinetreeview.cpp b/src/plugins/qmljseditor/qmljsoutlinetreeview.cpp
index 808726bffe..6a883155c5 100644
--- a/src/plugins/qmljseditor/qmljsoutlinetreeview.cpp
+++ b/src/plugins/qmljseditor/qmljsoutlinetreeview.cpp
@@ -39,8 +39,6 @@ namespace Internal {
QmlJSOutlineTreeView::QmlJSOutlineTreeView(QWidget *parent) :
Utils::NavigationTreeView(parent)
{
- // see also CppOutlineTreeView
- setFocusPolicy(Qt::NoFocus);
setExpandsOnDoubleClick(false);
setDragEnabled(true);
diff --git a/src/plugins/texteditor/outlinefactory.cpp b/src/plugins/texteditor/outlinefactory.cpp
index 9ad3d0aa85..a1b5376782 100644
--- a/src/plugins/texteditor/outlinefactory.cpp
+++ b/src/plugins/texteditor/outlinefactory.cpp
@@ -168,6 +168,7 @@ void OutlineWidgetStack::updateCurrentEditor(Core::IEditor *editor)
newWidget->setCursorSynchronization(m_syncWithEditor);
addWidget(newWidget);
setCurrentWidget(newWidget);
+ setFocusProxy(newWidget);
}
updateFilterMenu();