Make QAbstractItemView::itemOptions properly initialize a V4 option
authorGiuseppe D'Angelo <dangelog@gmail.com>
Thu, 2 Feb 2012 17:48:31 +0000 (17:48 +0000)
committerQt by Nokia <qt-info@nokia.com>
Fri, 3 Feb 2012 00:23:52 +0000 (01:23 +0100)
Since the QStyleOptionViewItem now contains the V4 fields, they
must be properly initialized when calling itemOptions.

Change-Id: I1346e6887d2d9a7eb29cc458fa4eede0b815001c
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
src/widgets/itemviews/qabstractitemview.cpp

index 98a17a5..ff3de30 100644 (file)
@@ -3608,38 +3608,37 @@ void QAbstractItemView::startDrag(Qt::DropActions supportedActions)
 QStyleOptionViewItem QAbstractItemView::viewOptions() const
 {
     Q_D(const QAbstractItemView);
-    QStyleOptionViewItem option;
-    option.init(this);
+    return d->viewOptionsV4();
+}
+
+QStyleOptionViewItemV4 QAbstractItemViewPrivate::viewOptionsV4() const
+{
+    Q_Q(const QAbstractItemView);
+    QStyleOptionViewItemV4 option;
+    option.init(q);
     option.state &= ~QStyle::State_MouseOver;
-    option.font = font();
+    option.font = q->font();
 
 #ifndef Q_WS_MAC
     // On mac the focus appearance follows window activation
     // not widget activation
-    if (!hasFocus())
+    if (!q->hasFocus())
         option.state &= ~QStyle::State_Active;
 #endif
 
     option.state &= ~QStyle::State_HasFocus;
-    if (d->iconSize.isValid()) {
-        option.decorationSize = d->iconSize;
+    if (iconSize.isValid()) {
+        option.decorationSize = iconSize;
     } else {
-        int pm = style()->pixelMetric(QStyle::PM_SmallIconSize, 0, this);
+        int pm = q->style()->pixelMetric(QStyle::PM_SmallIconSize, 0, q);
         option.decorationSize = QSize(pm, pm);
     }
     option.decorationPosition = QStyleOptionViewItem::Left;
     option.decorationAlignment = Qt::AlignCenter;
     option.displayAlignment = Qt::AlignLeft|Qt::AlignVCenter;
-    option.textElideMode = d->textElideMode;
+    option.textElideMode = textElideMode;
     option.rect = QRect();
-    option.showDecorationSelected = style()->styleHint(QStyle::SH_ItemView_ShowDecorationSelected, 0, this);
-    return option;
-}
-
-QStyleOptionViewItemV4 QAbstractItemViewPrivate::viewOptionsV4() const
-{
-    Q_Q(const QAbstractItemView);
-    QStyleOptionViewItemV4 option = q->viewOptions();
+    option.showDecorationSelected = q->style()->styleHint(QStyle::SH_ItemView_ShowDecorationSelected, 0, q);
     if (wrapItemText)
         option.features = QStyleOptionViewItemV2::WrapText;
     option.locale = q->locale();