diff options
author | Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> | 2014-12-08 14:43:08 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> | 2015-01-10 15:08:13 +0100 |
commit | 936b671332d4742642f044e6ce61d2f46218155c (patch) | |
tree | 465c2f2a3807dafbaf41dd6222692d465f79ff3f | |
parent | 6c8c72a9efc365383ed81b643bd7f5d5ea6923aa (diff) |
QWindowsVistaStyle: Draw PE_PanelItemViewItem for non-item view widgets.
Task-number: QTBUG-43157
Change-Id: I2a5f721cadc0dfffbb81902ef1d06ba34a729300
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
-rw-r--r-- | src/widgets/styles/qwindowsvistastyle.cpp | 19 |
1 files changed, 10 insertions, 9 deletions
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<const QAbstractItemView *>(widget); bool newStyle = true; + QAbstractItemView::SelectionBehavior selectionBehavior = QAbstractItemView::SelectRows; + QAbstractItemView::SelectionMode selectionMode = QAbstractItemView::NoSelection; + if (const QAbstractItemView *view = qobject_cast<const QAbstractItemView *>(widget)) { + newStyle = !qobject_cast<const QTableView*>(view); + selectionBehavior = view->selectionBehavior(); + selectionMode = view->selectionMode(); + } - if (qobject_cast<const QTableView*>(widget)) - newStyle = false; - - if (newStyle && view && (vopt = qstyleoption_cast<const QStyleOptionViewItem *>(option))) { + if (newStyle && (vopt = qstyleoption_cast<const QStyleOptionViewItem *>(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) { |