diff options
| author | Frank Reininghaus <[email protected]> | 2011-01-16 18:35:36 +0000 |
|---|---|---|
| committer | Frank Reininghaus <[email protected]> | 2011-01-16 18:35:36 +0000 |
| commit | e5a0ce83fdd6ea02598df8dece4ce9c89bfd6240 (patch) | |
| tree | fcb69f7b3923c85efb37292016801765261fd867 /src/views/dolphintreeview.cpp | |
| parent | ae59d894c2691b02e3ce63707b590ff797d9e7b6 (diff) | |
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
Diffstat (limited to 'src/views/dolphintreeview.cpp')
| -rw-r--r-- | src/views/dolphintreeview.cpp | 42 |
1 files changed, 11 insertions, 31 deletions
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 |
