diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/views/dolphintreeview.cpp | 42 | ||||
| -rw-r--r-- | src/views/dolphintreeview.h | 5 |
2 files changed, 12 insertions, 35 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 diff --git a/src/views/dolphintreeview.h b/src/views/dolphintreeview.h index dbbc984a6..c037d412a 100644 --- a/src/views/dolphintreeview.h +++ b/src/views/dolphintreeview.h @@ -41,6 +41,7 @@ public: virtual ~DolphinTreeView(); virtual QModelIndex indexAt (const QPoint& point) const; + virtual void keyboardSearch(const QString & search); virtual QRegion visualRegionForSelection(const QItemSelection& selection) const; protected: @@ -60,9 +61,6 @@ protected: virtual void dragMoveEvent(QDragMoveEvent* event); virtual void dragLeaveEvent(QDragLeaveEvent* event); virtual void paintEvent(QPaintEvent* event); - virtual void keyPressEvent(QKeyEvent* event); - virtual void keyReleaseEvent(QKeyEvent* event); - virtual void currentChanged(const QModelIndex& current, const QModelIndex& previous); virtual void setSelection(const QRect& rect, QItemSelectionModel::SelectionFlags command); virtual void scrollTo(const QModelIndex& index, ScrollHint hint = EnsureVisible); @@ -95,7 +93,6 @@ private: bool isAboveExpandingToggle(const QPoint& pos) const; private: - bool m_updateCurrentIndex; bool m_expandingTogglePressed; bool m_useDefaultIndexAt; // true, if QTreeView::indexAt() should be used bool m_ignoreScrollTo; // true if calls to scrollTo(...) should do nothing. |
