From 32f446e6dec29b684a55f384dd9535dfc1d91d92 Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Thu, 8 May 2008 21:16:57 +0000 Subject: [PATCH] * Prevent that the QTreeView::scrollTo() method adjusts the position of the horizontal scrollbar. This is done manually inside KTreeView if automatic scrolling is enabled. * increased the delay until the auto scrolling starts from 50 to 300 CCMAIL: haraldhv@stud.ntnu.no svn path=/trunk/KDE/kdebase/apps/; revision=805605 --- src/ktreeview.cpp | 15 ++++++++++++++- src/ktreeview.h | 1 + 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/ktreeview.cpp b/src/ktreeview.cpp index 687bfe1e3..cb7560b20 100644 --- a/src/ktreeview.cpp +++ b/src/ktreeview.cpp @@ -36,7 +36,7 @@ KTreeView::KTreeViewPrivate::KTreeViewPrivate(KTreeView *parent) : { startScrollTimer = new QTimer(this); startScrollTimer->setSingleShot(true); - startScrollTimer->setInterval(50); + startScrollTimer->setInterval(300); connect(startScrollTimer, SIGNAL(timeout()), this, SLOT(startScrolling())); @@ -156,5 +156,18 @@ void KTreeView::setSelectionModel(QItemSelectionModel *selectionModel) d->startScrollTimer, SLOT(start())); } +void KTreeView::scrollTo(const QModelIndex& index, ScrollHint hint) +{ + if (d->autoHorizontalScroll) { + // assure that the value of the horizontal scrollbar stays on its current value, + // KTreeView will adjust the value manually + const int value = horizontalScrollBar()->value(); + QTreeView::scrollTo(index, hint); + horizontalScrollBar()->setValue(value); + } else { + QTreeView::scrollTo(index, hint); + } +} + #include "ktreeview.moc" #include "ktreeview_p.moc" diff --git a/src/ktreeview.h b/src/ktreeview.h index 4a6262621..0e9841fb3 100644 --- a/src/ktreeview.h +++ b/src/ktreeview.h @@ -35,6 +35,7 @@ public: bool autoHorizontalScroll() const; virtual void setSelectionModel(QItemSelectionModel *selectionModel); + virtual void scrollTo(const QModelIndex& index, ScrollHint hint = EnsureVisible); private: class KTreeViewPrivate; -- 2.47.3