From 936b671332d4742642f044e6ce61d2f46218155c Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 8 Dec 2014 14:43:08 +0100 Subject: QWindowsVistaStyle: Draw PE_PanelItemViewItem for non-item view widgets. Task-number: QTBUG-43157 Change-Id: I2a5f721cadc0dfffbb81902ef1d06ba34a729300 Reviewed-by: J-P Nurmi --- src/widgets/styles/qwindowsvistastyle.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/widgets/styles/qwindowsvistastyle.cpp b/src/widgets/styles/qwindowsvistastyle.cpp index 57ad1fe02b..c793e0c588 100644 --- a/src/widgets/styles/qwindowsvistastyle.cpp +++ b/src/widgets/styles/qwindowsvistastyle.cpp @@ -652,15 +652,18 @@ void QWindowsVistaStyle::drawPrimitive(PrimitiveElement element, const QStyleOpt case PE_PanelItemViewItem: { const QStyleOptionViewItem *vopt; - const QAbstractItemView *view = qobject_cast(widget); bool newStyle = true; + QAbstractItemView::SelectionBehavior selectionBehavior = QAbstractItemView::SelectRows; + QAbstractItemView::SelectionMode selectionMode = QAbstractItemView::NoSelection; + if (const QAbstractItemView *view = qobject_cast(widget)) { + newStyle = !qobject_cast(view); + selectionBehavior = view->selectionBehavior(); + selectionMode = view->selectionMode(); + } - if (qobject_cast(widget)) - newStyle = false; - - if (newStyle && view && (vopt = qstyleoption_cast(option))) { + if (newStyle && (vopt = qstyleoption_cast(option))) { bool selected = vopt->state & QStyle::State_Selected; - bool hover = vopt->state & QStyle::State_MouseOver; + const bool hover = selectionMode != QAbstractItemView::NoSelection && (vopt->state & QStyle::State_MouseOver); bool active = vopt->state & QStyle::State_Active; if (vopt->features & QStyleOptionViewItem::Alternate) @@ -679,10 +682,8 @@ void QWindowsVistaStyle::drawPrimitive(PrimitiveElement element, const QStyleOpt if (vopt->showDecorationSelected) sectionSize = vopt->rect.size(); - if (view->selectionBehavior() == QAbstractItemView::SelectRows) + if (selectionBehavior == QAbstractItemView::SelectRows) sectionSize.setWidth(vopt->rect.width()); - if (view->selectionMode() == QAbstractItemView::NoSelection) - hover = false; QPixmap pixmap; if (vopt->backgroundBrush.style() != Qt::NoBrush) { -- cgit v1.2.3