┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/views/dolphintreeview.cpp
diff options
context:
space:
mode:
authorFrank Reininghaus <[email protected]>2011-01-16 18:35:36 +0000
committerFrank Reininghaus <[email protected]>2011-01-16 18:35:36 +0000
commite5a0ce83fdd6ea02598df8dece4ce9c89bfd6240 (patch)
treefcb69f7b3923c85efb37292016801765261fd867 /src/views/dolphintreeview.cpp
parentae59d894c2691b02e3ce63707b590ff797d9e7b6 (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.cpp42
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