From 1efa3ccad76fa709791d0e322b17d1a00f5d1a7e Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Thu, 29 May 2008 18:00:59 +0000 Subject: [PATCH] Only select an item if the current item has been changed by a key press (e. g. QTreeView sets the current item when the view loses the focus). svn path=/trunk/KDE/kdebase/apps/; revision=814234 --- src/dolphindetailsview.cpp | 10 +++++++++- src/dolphindetailsview.h | 2 ++ 2 files changed, 11 insertions(+), 1 deletion(-) 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; -- 2.47.3