summaryrefslogtreecommitdiff
path: root/src/plugins/qmljseditor/qmljsoutlinetreeview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/qmljseditor/qmljsoutlinetreeview.cpp')
-rw-r--r--src/plugins/qmljseditor/qmljsoutlinetreeview.cpp27
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