summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Gaist <samuel.gaist@edeltech.ch>2013-10-17 14:10:46 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-10-17 15:58:32 +0200
commitb329c8ffb960da492d90c7bf70ed93f23fa2d400 (patch)
treef9672c8613bca4464c678ae42d06e6d35436d5ac
parentc3bf3bd8b74187b44ec91582e1cf2be546a73349 (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>
-rw-r--r--src/widgets/itemviews/qabstractitemview.cpp34
-rw-r--r--src/widgets/itemviews/qlistview.cpp18
-rw-r--r--src/widgets/itemviews/qlistview_p.h2
-rw-r--r--src/widgets/itemviews/qtableview.cpp12
-rw-r--r--src/widgets/itemviews/qtableview_p.h2
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);