┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2008-07-20 01:33:55 +0000
committerPeter Penz <[email protected]>2008-07-20 01:33:55 +0000
commit2b2c0941cce3fd9cc13339bc1b90749b4dd1f897 (patch)
tree4ea29f7aefcc06f67c03103e937093815e7ce717 /src
parenta3b4d94f6ee6ff3885cf197f7308bc070744964a (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.cpp28
-rw-r--r--src/ktreeview.h3
-rw-r--r--src/ktreeview_p.h3
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);