diff options
| author | Peter Penz <[email protected]> | 2011-10-22 02:14:42 +0200 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2011-10-22 02:16:42 +0200 |
| commit | 07b0bf462698cc36db886c555124269a4ad7741f (patch) | |
| tree | 58b1b9c594fe4035380b49e90a924f44b10d1709 /src/kitemviews/kitemlistview.h | |
| parent | eac436d0374d3be323c6ba36799d3cddc98301ea (diff) | |
Fix crash when grouping items
Because of a wrong usage of parent() vs. parentItem() a crash
could occur because the parent might be assigned to an already
deleted instance.
Diffstat (limited to 'src/kitemviews/kitemlistview.h')
| -rw-r--r-- | src/kitemviews/kitemlistview.h | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/src/kitemviews/kitemlistview.h b/src/kitemviews/kitemlistview.h index ee84abe1c..985b7c278 100644 --- a/src/kitemviews/kitemlistview.h +++ b/src/kitemviews/kitemlistview.h @@ -331,11 +331,16 @@ private: /** * Helper method for createWidget() and setWidgetIndex() to create or update - * the itemlist groupheader. + * the itemlist group-header. */ void updateGroupHeaderForWidget(KItemListWidget* widget); /** + * Recycles the group-header from the widget. + */ + void recycleGroupHeaderForWidget(KItemListWidget* widget); + + /** * @return The widths of each visible role that is shown in the KItemListHeader. */ QHash<QByteArray, qreal> headerRolesWidths() const; @@ -483,9 +488,7 @@ template <class T> KItemListWidget* KItemListWidgetCreator<T>::create(KItemListView* view) { KItemListWidget* widget = static_cast<KItemListWidget*>(popRecycleableWidget()); - if (widget) { - widget->setParentItem(view); - } else { + if (!widget) { widget = new T(view); addCreatedWidget(widget); } @@ -504,7 +507,7 @@ class LIBDOLPHINPRIVATE_EXPORT KItemListGroupHeaderCreatorBase : public KItemLis { public: virtual ~KItemListGroupHeaderCreatorBase(); - virtual KItemListGroupHeader* create(QGraphicsWidget* parent) = 0; + virtual KItemListGroupHeader* create(KItemListView* view) = 0; virtual void recycle(KItemListGroupHeader* header); }; @@ -513,7 +516,7 @@ class LIBDOLPHINPRIVATE_EXPORT KItemListGroupHeaderCreator : public KItemListGro { public: virtual ~KItemListGroupHeaderCreator(); - virtual KItemListGroupHeader* create(QGraphicsWidget* parent); + virtual KItemListGroupHeader* create(KItemListView* view); }; template <class T> @@ -522,13 +525,11 @@ KItemListGroupHeaderCreator<T>::~KItemListGroupHeaderCreator() } template <class T> -KItemListGroupHeader* KItemListGroupHeaderCreator<T>::create(QGraphicsWidget* parent) +KItemListGroupHeader* KItemListGroupHeaderCreator<T>::create(KItemListView* view) { KItemListGroupHeader* widget = static_cast<KItemListGroupHeader*>(popRecycleableWidget()); - if (widget) { - widget->setParentItem(parent); - } else { - widget = new T(parent); + if (!widget) { + widget = new T(view); addCreatedWidget(widget); } return widget; |
