]> cloud.milkyroute.net Git - dolphin.git/commitdiff
fix crash in Folder Panel (= treeview) when Dolphin gets closed before the panel...
authorPeter Penz <peter.penz19@gmail.com>
Sun, 20 Jul 2008 01:33:55 +0000 (01:33 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Sun, 20 Jul 2008 01:33:55 +0000 (01:33 +0000)
BUG: 167044

svn path=/trunk/KDE/kdebase/apps/; revision=835169

src/ktreeview.cpp
src/ktreeview.h
src/ktreeview_p.h

index cb7560b20a9a4dd255f8b957d9f405ea2ba84163..5c665ee997b945d7bd301c8ff6018222e5bec2f7 100644 (file)
@@ -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"
index 0e9841fb394b09d0922a410b0eb642deb9c58360..4d7dad4eaed77198d5f847105f0bcae9f383df52 100644 (file)
@@ -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;
index 1cfa463cd89e9e3b6669db3d8e1f5faa54352564..bea4788db56e46c731eee66c74de4f46e059da9e 100644 (file)
@@ -32,6 +32,9 @@ class KTreeView::KTreeViewPrivate : public QObject
 {
     Q_OBJECT
 
+public:
+    void connectScrollTimers();
+
 public Q_SLOTS:
     void startScrolling();
     void updateVerticalScrollBar(int value);