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
This commit is contained in:
Peter Penz 2008-07-20 01:33:55 +00:00
parent a3b4d94f6e
commit 2b2c0941cc
3 changed files with 27 additions and 7 deletions

View 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"

View 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;

View file

@ -32,6 +32,9 @@ class KTreeView::KTreeViewPrivate : public QObject
{
Q_OBJECT
public:
void connectScrollTimers();
public Q_SLOTS:
void startScrolling();
void updateVerticalScrollBar(int value);