mirror of
https://invent.kde.org/system/dolphin
synced 2024-10-28 03:21:56 +00:00
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:
parent
a3b4d94f6e
commit
2b2c0941cc
|
@ -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"
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -32,6 +32,9 @@ class KTreeView::KTreeViewPrivate : public QObject
|
|||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
void connectScrollTimers();
|
||||
|
||||
public Q_SLOTS:
|
||||
void startScrolling();
|
||||
void updateVerticalScrollBar(int value);
|
||||
|
|
Loading…
Reference in a new issue