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
This commit is contained in:
Peter Penz 2008-05-29 18:00:59 +00:00
parent d0df073064
commit 1efa3ccad7
2 changed files with 11 additions and 1 deletions

View file

@ -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);
}
}

View file

@ -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;