From 4815fbd00bfcaaa8daaae447c1f61d1acfd68de0 Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Tue, 20 Mar 2012 21:03:38 +0100 Subject: [PATCH] Bypass crash with Polyester-style The Polyester style crashes when drawing a header where the parent widget is 0. BUG: 296453 FIXED-IN: 4.8.2 --- src/kitemviews/kitemlistheader.cpp | 7 ++++--- src/kitemviews/kitemlistheader_p.h | 6 +++++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/kitemviews/kitemlistheader.cpp b/src/kitemviews/kitemlistheader.cpp index bd7dfb831..dfe76bc95 100644 --- a/src/kitemviews/kitemlistheader.cpp +++ b/src/kitemviews/kitemlistheader.cpp @@ -141,7 +141,7 @@ void KItemListHeader::paint(QPainter* painter, const QStyleOptionGraphicsItem* o foreach (const QByteArray& role, m_visibleRoles) { const qreal roleWidth = m_visibleRolesWidths.value(role); const QRectF rect(x, 0, roleWidth, size().height()); - paintRole(painter, role, rect, orderIndex); + paintRole(painter, role, rect, orderIndex, widget); x += roleWidth; ++orderIndex; } @@ -339,7 +339,8 @@ void KItemListHeader::slotSortOrderChanged(Qt::SortOrder current, Qt::SortOrder void KItemListHeader::paintRole(QPainter* painter, const QByteArray& role, const QRectF& rect, - int orderIndex) const + int orderIndex, + QWidget* widget) const { // The following code is based on the code from QHeaderView::paintSection(). // Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). @@ -378,7 +379,7 @@ void KItemListHeader::paintRole(QPainter* painter, option.selectedPosition = QStyleOptionHeader::NotAdjacent; option.text = m_model->roleDescription(role); - style()->drawControl(QStyle::CE_Header, &option, painter); + style()->drawControl(QStyle::CE_Header, &option, painter, widget); } void KItemListHeader::updatePressedRoleIndex(const QPointF& pos) diff --git a/src/kitemviews/kitemlistheader_p.h b/src/kitemviews/kitemlistheader_p.h index 56f80c9dd..364a5f1c0 100644 --- a/src/kitemviews/kitemlistheader_p.h +++ b/src/kitemviews/kitemlistheader_p.h @@ -94,7 +94,11 @@ private slots: void slotSortOrderChanged(Qt::SortOrder current, Qt::SortOrder previous); private: - void paintRole(QPainter* painter, const QByteArray& role, const QRectF& rect, int orderIndex) const; + void paintRole(QPainter* painter, + const QByteArray& role, + const QRectF& rect, + int orderIndex, + QWidget* widget = 0) const; void updatePressedRoleIndex(const QPointF& pos); void updateHoveredRoleIndex(const QPointF& pos); -- 2.47.3