From e5a0ce83fdd6ea02598df8dece4ce9c89bfd6240 Mon Sep 17 00:00:00 2001 From: Frank Reininghaus Date: Sun, 16 Jan 2011 18:35:36 +0000 Subject: DolphinTreeView contains some code to update the selection after a keyboard search because QTreeView (unlike the other item views) does not handle this internally. This commit simplifies that code by performing the selection update in the method keyboardSearch(). That way, we can get rid of the member m_updateCurrentIndex and of 3 member functions. The unit tests still pass, so I'm quite confident that this does not break anything. svn path=/trunk/KDE/kdebase/apps/; revision=1214865 --- src/views/dolphintreeview.cpp | 42 +++++++++++------------------------------- 1 file changed, 11 insertions(+), 31 deletions(-) (limited to 'src/views/dolphintreeview.cpp') diff --git a/src/views/dolphintreeview.cpp b/src/views/dolphintreeview.cpp index 9e7af0dab..64b66aa84 100644 --- a/src/views/dolphintreeview.cpp +++ b/src/views/dolphintreeview.cpp @@ -31,7 +31,6 @@ DolphinTreeView::DolphinTreeView(QWidget* parent) : QTreeView(parent), - m_updateCurrentIndex(false), m_expandingTogglePressed(false), m_useDefaultIndexAt(true), m_ignoreScrollTo(false), @@ -45,6 +44,17 @@ DolphinTreeView::~DolphinTreeView() { } +void DolphinTreeView::keyboardSearch(const QString & search) +{ + const QModelIndex oldCurrent = currentIndex(); + QTreeView::keyboardSearch(search); + if (currentIndex() != oldCurrent) { + // The current index has changed, but it is not selected yet. + // To select it, we call setCurrentIndex(...). + setCurrentIndex(currentIndex()); + } +} + QRegion DolphinTreeView::visualRegionForSelection(const QItemSelection& selection) const { // We have to make sure that the visualRect of each model index is inside the region. @@ -72,12 +82,6 @@ bool DolphinTreeView::event(QEvent* event) case QEvent::Polish: m_useDefaultIndexAt = false; break; - case QEvent::FocusOut: - // If a key-press triggers an action that e. g. opens a dialog, the - // widget gets no key-release event. Assure that the pressed state - // is reset to prevent accidently setting the current index during a selection. - m_updateCurrentIndex = false; - break; default: break; } @@ -238,30 +242,6 @@ void DolphinTreeView::paintEvent(QPaintEvent* event) } } -void DolphinTreeView::keyPressEvent(QKeyEvent* event) -{ - // See DolphinTreeView::currentChanged() for more information about m_updateCurrentIndex - m_updateCurrentIndex = (event->modifiers() == Qt::NoModifier); - QTreeView::keyPressEvent(event); -} - -void DolphinTreeView::keyReleaseEvent(QKeyEvent* event) -{ - QTreeView::keyReleaseEvent(event); - m_updateCurrentIndex = false; -} - -void DolphinTreeView::currentChanged(const QModelIndex& current, const QModelIndex& previous) -{ - QTreeView::currentChanged(current, previous); - - // Stay consistent with QListView: When changing the current index by key presses - // without modifiers, also change the selection. - if (m_updateCurrentIndex) { - setCurrentIndex(current); - } -} - QModelIndex DolphinTreeView::indexAt(const QPoint& point) const { // The blank portion of the name column counts as empty space -- cgit v1.3