From 04f79bc9659663238594d8c725def0b0f1a93a06 Mon Sep 17 00:00:00 2001 From: con <qtc-committer@nokia.com> Date: Fri, 5 Dec 2008 15:06:11 +0100 Subject: [PATCH] Fixes: - Show <no symbols> in method combo box if there aren't any MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task: - 234321 RevBy: - Thorbjørn --- src/plugins/cppeditor/cppeditor.cpp | 24 +++++++++++++++++++----- src/plugins/cppeditor/cppeditor.h | 2 ++ 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp index da52bb3d601..8567f81d751 100644 --- a/src/plugins/cppeditor/cppeditor.cpp +++ b/src/plugins/cppeditor/cppeditor.cpp @@ -79,6 +79,7 @@ #include <QtGui/QComboBox> #include <QtGui/QTreeView> #include <QtGui/QHeaderView> +#include <QtGui/QStringListModel> using namespace CPlusPlus; using namespace CppEditor::Internal; @@ -202,7 +203,9 @@ void CPPEditor::createToolBar(CPPEditorEditable *editable) m_methodCombo->setMaxVisibleItems(20); m_overviewModel = new OverviewModel(this); - m_methodCombo->setModel(m_overviewModel); + m_noSymbolsModel = new QStringListModel(this); + m_noSymbolsModel->setStringList(QStringList() << tr("<no symbols>")); + m_methodCombo->setModel(m_noSymbolsModel); connect(m_methodCombo, SIGNAL(activated(int)), this, SLOT(jumpToMethod(int))); connect(this, SIGNAL(cursorPositionChanged()), this, SLOT(updateMethodBoxIndex())); @@ -315,9 +318,16 @@ void CPPEditor::onDocumentUpdated(Document::Ptr doc) return; m_overviewModel->rebuild(doc); - OverviewTreeView *treeView = static_cast<OverviewTreeView *>(m_methodCombo->view()); - treeView->sync(); - updateMethodBoxIndex(); + if (m_overviewModel->rowCount() > 0) { + if (m_methodCombo->model() != m_overviewModel) + m_methodCombo->setModel(m_overviewModel); + OverviewTreeView *treeView = static_cast<OverviewTreeView *>(m_methodCombo->view()); + treeView->sync(); + updateMethodBoxIndex(); + } else { + if (m_methodCombo->model() != m_noSymbolsModel) + m_methodCombo->setModel(m_noSymbolsModel); + } } void CPPEditor::updateFileName() @@ -325,6 +335,8 @@ void CPPEditor::updateFileName() void CPPEditor::jumpToMethod(int) { + if (m_methodCombo->model() != m_overviewModel) + return; QModelIndex index = m_methodCombo->view()->currentIndex(); Symbol *symbol = m_overviewModel->symbolFromIndex(index); if (! symbol) @@ -339,12 +351,14 @@ void CPPEditor::jumpToMethod(int) void CPPEditor::updateMethodBoxIndex() { + if (m_methodCombo->model() != m_overviewModel) + return; int line = 0, column = 0; convertPosition(position(), &line, &column); QModelIndex lastIndex; - const int rc = m_overviewModel->rowCount(QModelIndex()); + const int rc = m_overviewModel->rowCount(); for (int row = 0; row < rc; ++row) { const QModelIndex index = m_overviewModel->index(row, 0, QModelIndex()); Symbol *symbol = m_overviewModel->symbolFromIndex(index); diff --git a/src/plugins/cppeditor/cppeditor.h b/src/plugins/cppeditor/cppeditor.h index 2420bcf4e5e..33745eddef2 100644 --- a/src/plugins/cppeditor/cppeditor.h +++ b/src/plugins/cppeditor/cppeditor.h @@ -42,6 +42,7 @@ QT_BEGIN_NAMESPACE class QAction; class QComboBox; +class QStringListModel; QT_END_NAMESPACE namespace Core { @@ -138,6 +139,7 @@ private: QList<int> m_contexts; QComboBox *m_methodCombo; CPlusPlus::OverviewModel *m_overviewModel; + QStringListModel *m_noSymbolsModel; }; } // namespace Internal -- GitLab