diff --git a/plugins/documentswitcher/documentswitchertreeview.cpp b/plugins/documentswitcher/documentswitchertreeview.cpp index a690e1a8ca..8d55767ac3 100644 --- a/plugins/documentswitcher/documentswitchertreeview.cpp +++ b/plugins/documentswitcher/documentswitchertreeview.cpp @@ -1,67 +1,72 @@ /*************************************************************************** * Copyright 2009 Andreas Pakulat * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU Library General Public * * License along with this program; if not, write to the * * Free Software Foundation, Inc., * * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include "documentswitchertreeview.h" #include #include #include #include #include #include "documentswitcherplugin.h" using namespace KDevelop; DocumentSwitcherTreeView::DocumentSwitcherTreeView(DocumentSwitcherPlugin* plugin_ ) : QTreeView(nullptr) , plugin(plugin_) { setWindowFlags(Qt::Popup | Qt::FramelessWindowHint); } void DocumentSwitcherTreeView::keyPressEvent(QKeyEvent* event) { - QTreeView::keyPressEvent(event); + if (event->key() == Qt::Key_Escape) { + event->accept(); + hide(); + } else { + QTreeView::keyPressEvent(event); + } } void DocumentSwitcherTreeView::keyReleaseEvent(QKeyEvent* event) { if (event->key() == Qt::Key_Control) { plugin->itemActivated(selectionModel()->currentIndex()); event->accept(); hide(); } else { QTreeView::keyReleaseEvent(event); } } void DocumentSwitcherTreeView::drawBranches(QPainter* painter, const QRect& rect, const QModelIndex& index) const { if (WidgetColorizer::colorizeByProject()) { if (const auto project = index.data(ProjectRole).value()) { const auto projectPath = project->path(); const QColor color = WidgetColorizer::colorForId(qHash(projectPath), palette(), true); WidgetColorizer::drawBranches(this, painter, rect, index, color); } } // don't call the base implementation, as we only want to paint the colorization above // this means that for people who have the feature disabled, we get some padding on the left, // but that is OK imo }