diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/dolphindetailsview.cpp | 10 | ||||
| -rw-r--r-- | src/dolphindetailsview.h | 2 |
2 files changed, 11 insertions, 1 deletions
diff --git a/src/dolphindetailsview.cpp b/src/dolphindetailsview.cpp index e3a69fea4..b725b0da2 100644 --- a/src/dolphindetailsview.cpp +++ b/src/dolphindetailsview.cpp @@ -47,6 +47,7 @@ DolphinDetailsView::DolphinDetailsView(QWidget* parent, DolphinController* contr QTreeView(parent), m_autoResize(true), m_expandingTogglePressed(false), + m_keyPressed(false), m_controller(controller), m_selectionManager(0), m_font(), @@ -360,6 +361,13 @@ void DolphinDetailsView::keyPressEvent(QKeyEvent* event) { QTreeView::keyPressEvent(event); m_controller->handleKeyPressEvent(event); + m_keyPressed = true; +} + +void DolphinDetailsView::keyReleaseEvent(QKeyEvent* event) +{ + QTreeView::keyReleaseEvent(event); + m_keyPressed = false; } void DolphinDetailsView::resizeEvent(QResizeEvent* event) @@ -391,7 +399,7 @@ void DolphinDetailsView::currentChanged(const QModelIndex& current, const QModel // Stay consistent with QListView: When changing the current index by key presses, // also change the selection. - if (QApplication::mouseButtons() == Qt::NoButton) { + if (m_keyPressed) { selectionModel()->select(current, QItemSelectionModel::ClearAndSelect); } } diff --git a/src/dolphindetailsview.h b/src/dolphindetailsview.h index 0acafddfc..eae04646a 100644 --- a/src/dolphindetailsview.h +++ b/src/dolphindetailsview.h @@ -58,6 +58,7 @@ protected: virtual void dropEvent(QDropEvent* event); virtual void paintEvent(QPaintEvent* event); virtual void keyPressEvent(QKeyEvent* event); + virtual void keyReleaseEvent(QKeyEvent* event); virtual void resizeEvent(QResizeEvent* event); virtual void wheelEvent(QWheelEvent* event); virtual void currentChanged(const QModelIndex& current, const QModelIndex& previous); @@ -158,6 +159,7 @@ private: private: bool m_autoResize; // if true, the columns are resized automatically to the available width bool m_expandingTogglePressed; + bool m_keyPressed; // true if a key is pressed currently; info used by currentChanged() DolphinController* m_controller; SelectionManager* m_selectionManager; |
