File indexing completed on 2024-04-28 05:49:18
0001 /* This file is part of the KDE project 0002 0003 SPDX-FileCopyrightText: 2014 Dominik Haumann <dhaumann@kde.org> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #include "tabswitchertreeview.h" 0009 #include "tabswitcher.h" 0010 0011 #include <QKeyEvent> 0012 0013 TabSwitcherTreeView::TabSwitcherTreeView() 0014 { 0015 setWindowFlags(Qt::Popup | Qt::FramelessWindowHint); 0016 setSelectionBehavior(QAbstractItemView::SelectRows); 0017 setSelectionMode(QAbstractItemView::SingleSelection); 0018 // setUniformItemSizes(true); 0019 setTextElideMode(Qt::ElideMiddle); 0020 setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); 0021 0022 setHeaderHidden(true); 0023 setRootIsDecorated(false); 0024 } 0025 0026 int TabSwitcherTreeView::sizeHintWidth() const 0027 { 0028 return sizeHintForColumn(0) + sizeHintForColumn(1); 0029 } 0030 0031 void TabSwitcherTreeView::resizeColumnsToContents() 0032 { 0033 resizeColumnToContents(0); 0034 resizeColumnToContents(1); 0035 } 0036 0037 void TabSwitcherTreeView::keyReleaseEvent(QKeyEvent *event) 0038 { 0039 if (event->key() == Qt::Key_Control) { 0040 Q_EMIT itemActivated(selectionModel()->currentIndex()); 0041 event->accept(); 0042 hide(); 0043 } else { 0044 QTreeView::keyReleaseEvent(event); 0045 } 0046 } 0047 0048 void TabSwitcherTreeView::keyPressEvent(QKeyEvent *event) 0049 { 0050 if (event->key() == Qt::Key_Escape) { 0051 event->accept(); 0052 hide(); 0053 } else { 0054 QTreeView::keyPressEvent(event); 0055 } 0056 } 0057 0058 void TabSwitcherTreeView::showEvent(QShowEvent *event) 0059 { 0060 resizeColumnsToContents(); 0061 QTreeView::showEvent(event); 0062 } 0063 0064 #include "moc_tabswitchertreeview.cpp"