diff options
author | Samuel Gaist <samuel.gaist@edeltech.ch> | 2013-10-17 14:10:46 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-10-17 15:58:32 +0200 |
commit | b329c8ffb960da492d90c7bf70ed93f23fa2d400 (patch) | |
tree | f9672c8613bca4464c678ae42d06e6d35436d5ac /src/widgets | |
parent | c3bf3bd8b74187b44ec91582e1cf2be546a73349 (diff) |
Move the viewOptions code back to public implementation
The code generating the QStyleOptionViewItem has been moved back to the
public implementation and the private QAbstractItemView::viewOptions
calling it (like the Qt 4 implementation does). This makes the item
views behave properly again e.g. QListView drag & drop in Icon mode
gets the correct options to draw the moving items
Task-number: QTBUG-1180
Change-Id: I068861e1485252f12d73f9acaf12933d0ec84e2c
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
Diffstat (limited to 'src/widgets')
-rw-r--r-- | src/widgets/itemviews/qabstractitemview.cpp | 34 | ||||
-rw-r--r-- | src/widgets/itemviews/qlistview.cpp | 18 | ||||
-rw-r--r-- | src/widgets/itemviews/qlistview_p.h | 2 | ||||
-rw-r--r-- | src/widgets/itemviews/qtableview.cpp | 12 | ||||
-rw-r--r-- | src/widgets/itemviews/qtableview_p.h | 2 |
5 files changed, 26 insertions, 42 deletions
diff --git a/src/widgets/itemviews/qabstractitemview.cpp b/src/widgets/itemviews/qabstractitemview.cpp index 35ba1ed74e..d3e6b7ab52 100644 --- a/src/widgets/itemviews/qabstractitemview.cpp +++ b/src/widgets/itemviews/qabstractitemview.cpp @@ -3600,45 +3600,45 @@ void QAbstractItemView::startDrag(Qt::DropActions supportedActions) QStyleOptionViewItem QAbstractItemView::viewOptions() const { Q_D(const QAbstractItemView); - return d->viewOptions(); -} - -QStyleOptionViewItem QAbstractItemViewPrivate::viewOptions() const -{ - Q_Q(const QAbstractItemView); QStyleOptionViewItem option; - option.init(q); + option.init(this); option.state &= ~QStyle::State_MouseOver; - option.font = q->font(); + option.font = font(); #ifndef Q_WS_MAC // On mac the focus appearance follows window activation // not widget activation - if (!q->hasFocus()) + if (!hasFocus()) option.state &= ~QStyle::State_Active; #endif option.state &= ~QStyle::State_HasFocus; - if (iconSize.isValid()) { - option.decorationSize = iconSize; + if (d->iconSize.isValid()) { + option.decorationSize = d->iconSize; } else { - int pm = q->style()->pixelMetric(QStyle::PM_SmallIconSize, 0, q); + int pm = style()->pixelMetric(QStyle::PM_SmallIconSize, 0, this); option.decorationSize = QSize(pm, pm); } option.decorationPosition = QStyleOptionViewItem::Left; option.decorationAlignment = Qt::AlignCenter; option.displayAlignment = Qt::AlignLeft|Qt::AlignVCenter; - option.textElideMode = textElideMode; + option.textElideMode = d->textElideMode; option.rect = QRect(); - option.showDecorationSelected = q->style()->styleHint(QStyle::SH_ItemView_ShowDecorationSelected, 0, q); - if (wrapItemText) + option.showDecorationSelected = style()->styleHint(QStyle::SH_ItemView_ShowDecorationSelected, 0, this); + if (d->wrapItemText) option.features = QStyleOptionViewItem::WrapText; - option.locale = q->locale(); + option.locale = locale(); option.locale.setNumberOptions(QLocale::OmitGroupSeparator); - option.widget = q; + option.widget = this; return option; } +QStyleOptionViewItem QAbstractItemViewPrivate::viewOptions() const +{ + Q_Q(const QAbstractItemView); + return q->viewOptions(); +} + /*! Returns the item view's state. diff --git a/src/widgets/itemviews/qlistview.cpp b/src/widgets/itemviews/qlistview.cpp index 43632c5fa9..8785348d2b 100644 --- a/src/widgets/itemviews/qlistview.cpp +++ b/src/widgets/itemviews/qlistview.cpp @@ -901,20 +901,14 @@ void QListView::startDrag(Qt::DropActions supportedActions) QStyleOptionViewItem QListView::viewOptions() const { Q_D(const QListView); - return d->viewOptions(); -} - -QStyleOptionViewItem QListViewPrivate::viewOptions() const -{ - Q_Q(const QListView); - QStyleOptionViewItem option = QAbstractItemViewPrivate::viewOptions(); - if (!iconSize.isValid()) { // otherwise it was already set in abstractitemview - int pm = (viewMode == QListView::ListMode - ? q->style()->pixelMetric(QStyle::PM_ListViewIconSize, 0, q) - : q->style()->pixelMetric(QStyle::PM_IconViewIconSize, 0, q)); + QStyleOptionViewItem option = QAbstractItemView::viewOptions(); + if (!d->iconSize.isValid()) { // otherwise it was already set in abstractitemview + int pm = (d->viewMode == QListView::ListMode + ? style()->pixelMetric(QStyle::PM_ListViewIconSize, 0, this) + : style()->pixelMetric(QStyle::PM_IconViewIconSize, 0, this)); option.decorationSize = QSize(pm, pm); } - if (viewMode == QListView::IconMode) { + if (d->viewMode == QListView::IconMode) { option.showDecorationSelected = false; option.decorationPosition = QStyleOptionViewItem::Top; option.displayAlignment = Qt::AlignCenter; diff --git a/src/widgets/itemviews/qlistview_p.h b/src/widgets/itemviews/qlistview_p.h index 3d39061bdb..2edbbaae19 100644 --- a/src/widgets/itemviews/qlistview_p.h +++ b/src/widgets/itemviews/qlistview_p.h @@ -391,8 +391,6 @@ public: } } - QStyleOptionViewItem viewOptions() const; - void scrollElasticBandBy(int dx, int dy); QItemViewPaintPairs draggablePaintPairs(const QModelIndexList &indexes, QRect *r) const; diff --git a/src/widgets/itemviews/qtableview.cpp b/src/widgets/itemviews/qtableview.cpp index 34e881571e..2aff170732 100644 --- a/src/widgets/itemviews/qtableview.cpp +++ b/src/widgets/itemviews/qtableview.cpp @@ -1346,20 +1346,14 @@ void QTableView::scrollContentsBy(int dx, int dy) } } -QStyleOptionViewItem QTableViewPrivate::viewOptions() const -{ - QStyleOptionViewItem option = QAbstractItemViewPrivate::viewOptions(); - option.showDecorationSelected = true; - return option; -} - /*! \reimp */ QStyleOptionViewItem QTableView::viewOptions() const { - Q_D(const QTableView); - return d->viewOptions(); + QStyleOptionViewItem option = QAbstractItemView::viewOptions(); + option.showDecorationSelected = true; + return option; } /*! diff --git a/src/widgets/itemviews/qtableview_p.h b/src/widgets/itemviews/qtableview_p.h index 74eb7b7728..555ae50daf 100644 --- a/src/widgets/itemviews/qtableview_p.h +++ b/src/widgets/itemviews/qtableview_p.h @@ -150,8 +150,6 @@ public: void init(); void trimHiddenSelections(QItemSelectionRange *range) const; - QStyleOptionViewItem viewOptions() const; - inline bool isHidden(int row, int col) const { return verticalHeader->isSectionHidden(row) || horizontalHeader->isSectionHidden(col); |