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"