diff --git a/src/plugins/coreplugin/editormanager/openeditorsview.cpp b/src/plugins/coreplugin/editormanager/openeditorsview.cpp index 9a9c69b0059..cc48b681313 100644 --- a/src/plugins/coreplugin/editormanager/openeditorsview.cpp +++ b/src/plugins/coreplugin/editormanager/openeditorsview.cpp @@ -118,6 +118,7 @@ OpenEditorsWidget::OpenEditorsWidget() m_ui.editorList->header()->resizeSection(1, 16); m_ui.editorList->setContextMenuPolicy(Qt::CustomContextMenu); m_ui.editorList->installEventFilter(this); + m_ui.editorList->viewport()->installEventFilter(this); connect(em, SIGNAL(currentEditorChanged(Core::IEditor*)), this, SLOT(updateCurrentItem(Core::IEditor*))); @@ -162,6 +163,17 @@ bool OpenEditorsWidget::eventFilter(QObject *obj, QEvent *event) && ke->modifiers() == 0) { closeEditor(m_ui.editorList->currentIndex()); } + } else if (obj == m_ui.editorList->viewport() + && event->type() == QEvent::MouseButtonRelease) { + QMouseEvent * me = static_cast(event); + if (me->button() == Qt::MiddleButton + && me->modifiers() == Qt::NoModifier) { + QModelIndex index = m_ui.editorList->indexAt(me->pos()); + if (index.isValid()) { + closeEditor(index); + return true; + } + } } return false; }