diff options
Diffstat (limited to 'src/plugins/qmljseditor/qmljsoutlinetreeview.cpp')
-rw-r--r-- | src/plugins/qmljseditor/qmljsoutlinetreeview.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/plugins/qmljseditor/qmljsoutlinetreeview.cpp b/src/plugins/qmljseditor/qmljsoutlinetreeview.cpp index e0828ab840..b4da65cce6 100644 --- a/src/plugins/qmljseditor/qmljsoutlinetreeview.cpp +++ b/src/plugins/qmljseditor/qmljsoutlinetreeview.cpp @@ -2,6 +2,7 @@ #include "qmloutlinemodel.h" #include <utils/annotateditemdelegate.h> +#include <QtGui/QMenu> namespace QmlJSEditor { namespace Internal { @@ -26,5 +27,31 @@ QmlJSOutlineTreeView::QmlJSOutlineTreeView(QWidget *parent) : setItemDelegateForColumn(0, itemDelegate); } +void QmlJSOutlineTreeView::contextMenuEvent(QContextMenuEvent *event) +{ + if (!event) + return; + + QMenu contextMenu; + + contextMenu.addAction(tr("Expand All"), this, SLOT(expandAll())); + contextMenu.addAction(tr("Collapse All"), this, SLOT(collapseAllExceptRoot())); + + contextMenu.exec(event->globalPos()); + + event->accept(); +} + +void QmlJSOutlineTreeView::collapseAllExceptRoot() +{ + if (!model()) + return; + const QModelIndex rootElementIndex = model()->index(0, 0, rootIndex()); + int rowCount = model()->rowCount(rootElementIndex); + for (int i = 0; i < rowCount; ++i) { + collapse(model()->index(i, 0, rootElementIndex)); + } +} + } // namespace Internal } // namespace QmlJSEditor |