diff --git a/src/dolphincolumnwidget.cpp b/src/dolphincolumnwidget.cpp index a9b0b82445..41fad2ea71 100644 --- a/src/dolphincolumnwidget.cpp +++ b/src/dolphincolumnwidget.cpp @@ -55,6 +55,7 @@ DolphinColumnWidget::DolphinColumnWidget(QWidget* parent, m_active(true), m_view(columnView), m_selectionManager(0), + m_autoScroller(0), m_url(url), m_childUrl(), m_font(), @@ -78,7 +79,7 @@ DolphinColumnWidget::DolphinColumnWidget(QWidget* parent, setVerticalScrollMode(QListView::ScrollPerPixel); setHorizontalScrollMode(QListView::ScrollPerPixel); - new DolphinViewAutoScroller(this); + m_autoScroller = new DolphinViewAutoScroller(this); // apply the column mode settings to the widget const ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings(); @@ -450,7 +451,7 @@ void DolphinColumnWidget::selectionChanged(const QItemSelection& selected, const void DolphinColumnWidget::currentChanged(const QModelIndex& current, const QModelIndex& previous) { QListView::currentChanged(current, previous); - if (current.isValid()) { + if (current.isValid() && !m_autoScroller->isActive()) { scrollTo(current); } } diff --git a/src/dolphincolumnwidget.h b/src/dolphincolumnwidget.h index c1db48f8df..c1bf6a836a 100644 --- a/src/dolphincolumnwidget.h +++ b/src/dolphincolumnwidget.h @@ -33,6 +33,7 @@ class DolphinColumnView; class DolphinModel; class DolphinSortFilterProxyModel; class DolphinDirLister; +class DolphinViewAutoScroller; class KFilePreviewGenerator; class KJob; class KFileItem; @@ -149,6 +150,7 @@ private: bool m_active; DolphinColumnView* m_view; SelectionManager* m_selectionManager; + DolphinViewAutoScroller* m_autoScroller; KUrl m_url; // URL of the directory that is shown KUrl m_childUrl; // URL of the next column that is shown diff --git a/src/dolphindetailsview.cpp b/src/dolphindetailsview.cpp index f92a28e791..1b651456aa 100644 --- a/src/dolphindetailsview.cpp +++ b/src/dolphindetailsview.cpp @@ -55,6 +55,7 @@ DolphinDetailsView::DolphinDetailsView(QWidget* parent, DolphinController* contr m_ignoreScrollTo(false), m_controller(controller), m_selectionManager(0), + m_autoScroller(0), m_font(), m_decorationSize(), m_band() @@ -76,7 +77,7 @@ DolphinDetailsView::DolphinDetailsView(QWidget* parent, DolphinController* contr setEditTriggers(QAbstractItemView::NoEditTriggers); setMouseTracking(true); - new DolphinViewAutoScroller(this); + m_autoScroller = new DolphinViewAutoScroller(this); const ViewProperties props(controller->url()); setSortIndicatorSection(props.sorting()); @@ -424,7 +425,7 @@ void DolphinDetailsView::wheelEvent(QWheelEvent* event) void DolphinDetailsView::currentChanged(const QModelIndex& current, const QModelIndex& previous) { QTreeView::currentChanged(current, previous); - if (current.isValid()) { + if (current.isValid() && !m_autoScroller->isActive()) { scrollTo(current); } diff --git a/src/dolphindetailsview.h b/src/dolphindetailsview.h index 1c7e0e9caf..8e48e88274 100644 --- a/src/dolphindetailsview.h +++ b/src/dolphindetailsview.h @@ -27,6 +27,7 @@ class DolphinController; class SelectionManager; +class DolphinViewAutoScroller; /** * @brief Represents the details view which shows the name, size, @@ -181,6 +182,7 @@ private: DolphinController* m_controller; SelectionManager* m_selectionManager; + DolphinViewAutoScroller* m_autoScroller; QFont m_font; QSize m_decorationSize; diff --git a/src/dolphiniconsview.cpp b/src/dolphiniconsview.cpp index 2e43656bab..d30ef321eb 100644 --- a/src/dolphiniconsview.cpp +++ b/src/dolphiniconsview.cpp @@ -43,6 +43,7 @@ DolphinIconsView::DolphinIconsView(QWidget* parent, DolphinController* controlle m_enableScrollTo(false), m_controller(controller), m_selectionManager(0), + m_autoScroller(0), m_categoryDrawer(0), m_font(), m_decorationSize(), @@ -62,7 +63,7 @@ DolphinIconsView::DolphinIconsView(QWidget* parent, DolphinController* controlle viewport()->setAcceptDrops(true); setMouseTracking(true); - new DolphinViewAutoScroller(this); + m_autoScroller = new DolphinViewAutoScroller(this); connect(this, SIGNAL(clicked(const QModelIndex&)), controller, SLOT(requestTab(const QModelIndex&))); @@ -317,7 +318,7 @@ void DolphinIconsView::leaveEvent(QEvent* event) void DolphinIconsView::currentChanged(const QModelIndex& current, const QModelIndex& previous) { KCategorizedView::currentChanged(current, previous); - if (current.isValid()) { + if (current.isValid() && !m_autoScroller->isActive()) { scrollTo(current); } } diff --git a/src/dolphiniconsview.h b/src/dolphiniconsview.h index 966069641a..28d0830feb 100644 --- a/src/dolphiniconsview.h +++ b/src/dolphiniconsview.h @@ -34,6 +34,7 @@ class DolphinController; class SelectionManager; class DolphinCategoryDrawer; +class DolphinViewAutoScroller; /** * @brief Represents the view, where each item is shown as an icon. @@ -92,6 +93,7 @@ private: bool m_enableScrollTo; DolphinController* m_controller; SelectionManager* m_selectionManager; + DolphinViewAutoScroller* m_autoScroller; DolphinCategoryDrawer* m_categoryDrawer; QFont m_font; diff --git a/src/dolphinviewautoscroller.cpp b/src/dolphinviewautoscroller.cpp index 767a5b4581..2a57cc157c 100644 --- a/src/dolphinviewautoscroller.cpp +++ b/src/dolphinviewautoscroller.cpp @@ -48,6 +48,11 @@ DolphinViewAutoScroller::~DolphinViewAutoScroller() { } +bool DolphinViewAutoScroller::isActive() const +{ + return m_timer->isActive(); +} + bool DolphinViewAutoScroller::eventFilter(QObject* watched, QEvent* event) { if (watched == m_itemView->viewport()) { diff --git a/src/dolphinviewautoscroller.h b/src/dolphinviewautoscroller.h index 6ef6631f7c..3827b23261 100644 --- a/src/dolphinviewautoscroller.h +++ b/src/dolphinviewautoscroller.h @@ -38,6 +38,7 @@ class DolphinViewAutoScroller : public QObject public: DolphinViewAutoScroller(QAbstractItemView* parent); virtual ~DolphinViewAutoScroller(); + bool isActive() const; protected: virtual bool eventFilter(QObject* watched, QEvent* event);