diff options
| author | Peter Penz <[email protected]> | 2008-07-20 01:33:55 +0000 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2008-07-20 01:33:55 +0000 |
| commit | 2b2c0941cce3fd9cc13339bc1b90749b4dd1f897 (patch) | |
| tree | 4ea29f7aefcc06f67c03103e937093815e7ce717 /src | |
| parent | a3b4d94f6ee6ff3885cf197f7308bc070744964a (diff) | |
fix crash in Folder Panel (= treeview) when Dolphin gets closed before the panel got polished
BUG: 167044
svn path=/trunk/KDE/kdebase/apps/; revision=835169
Diffstat (limited to 'src')
| -rw-r--r-- | src/ktreeview.cpp | 28 | ||||
| -rw-r--r-- | src/ktreeview.h | 3 | ||||
| -rw-r--r-- | src/ktreeview_p.h | 3 |
3 files changed, 27 insertions, 7 deletions
diff --git a/src/ktreeview.cpp b/src/ktreeview.cpp index cb7560b20..5c665ee99 100644 --- a/src/ktreeview.cpp +++ b/src/ktreeview.cpp @@ -23,6 +23,7 @@ #include <KGlobalSettings> +#include <QEvent> #include <QItemSelectionModel> #include <QScrollBar> #include <QTimer> @@ -37,10 +38,15 @@ KTreeView::KTreeViewPrivate::KTreeViewPrivate(KTreeView *parent) : startScrollTimer = new QTimer(this); startScrollTimer->setSingleShot(true); startScrollTimer->setInterval(300); + + timeLine = new QTimeLine(300, this); +} + +void KTreeView::KTreeViewPrivate::connectScrollTimers() +{ connect(startScrollTimer, SIGNAL(timeout()), this, SLOT(startScrolling())); - timeLine = new QTimeLine(300, this); connect(timeLine, SIGNAL(frameChanged(int)), this, SLOT(updateVerticalScrollBar(int))); @@ -54,10 +60,6 @@ KTreeView::KTreeViewPrivate::KTreeViewPrivate(KTreeView *parent) : startScrollTimer, SLOT(start())); } -KTreeView::~KTreeView() -{ -} - void KTreeView::KTreeViewPrivate::startScrolling() { QModelIndex index; @@ -130,14 +132,18 @@ void KTreeView::KTreeViewPrivate::updateVerticalScrollBar(int value) // ************************************************ KTreeView::KTreeView(QWidget *parent) : - QTreeView(parent), - d(new KTreeViewPrivate(this)) + QTreeView(parent), + d(new KTreeViewPrivate(this)) { if (KGlobalSettings::graphicEffectsLevel() >= KGlobalSettings::SimpleAnimationEffects) { setAutoHorizontalScroll(true); } } +KTreeView::~KTreeView() +{ +} + void KTreeView::setAutoHorizontalScroll(bool value) { d->autoHorizontalScroll = value; @@ -169,5 +175,13 @@ void KTreeView::scrollTo(const QModelIndex& index, ScrollHint hint) } } +bool KTreeView::event(QEvent* event) +{ + if (event->type() == QEvent::Polish) { + d->connectScrollTimers(); + } + return QTreeView::event(event); +} + #include "ktreeview.moc" #include "ktreeview_p.moc" diff --git a/src/ktreeview.h b/src/ktreeview.h index 0e9841fb3..4d7dad4ea 100644 --- a/src/ktreeview.h +++ b/src/ktreeview.h @@ -37,6 +37,9 @@ public: virtual void setSelectionModel(QItemSelectionModel *selectionModel); virtual void scrollTo(const QModelIndex& index, ScrollHint hint = EnsureVisible); +protected: + virtual bool event(QEvent* event); + private: class KTreeViewPrivate; KTreeViewPrivate *d; diff --git a/src/ktreeview_p.h b/src/ktreeview_p.h index 1cfa463cd..bea4788db 100644 --- a/src/ktreeview_p.h +++ b/src/ktreeview_p.h @@ -32,6 +32,9 @@ class KTreeView::KTreeViewPrivate : public QObject { Q_OBJECT +public: + void connectScrollTimers(); + public Q_SLOTS: void startScrolling(); void updateVerticalScrollBar(int value); |
