diff options
author | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2013-03-28 12:33:32 +0100 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2013-03-28 12:33:32 +0100 |
commit | ad809526d63b2c6a1dd94282fa0a807f72ee580d (patch) | |
tree | 05501efa0dae0b4b8cf72d254efbbbab2ad3cb2d /src/widgets/itemviews | |
parent | 9149f31aeaf3fce0c5ba5c20da0b9f2b56368abb (diff) | |
parent | c7cca2dd74bcfb0a2020fbb537fd47b50b2775c0 (diff) |
Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
src/plugins/platforms/qnx/qqnxtheme.cpp
src/widgets/dialogs/qfileinfogatherer.cpp
src/widgets/dialogs/qfilesystemmodel.cpp
Change-Id: Ifa536969c4beafcdfeebbf6beda1674b86750be8
Diffstat (limited to 'src/widgets/itemviews')
-rw-r--r-- | src/widgets/itemviews/qitemdelegate.cpp | 3 | ||||
-rw-r--r-- | src/widgets/itemviews/qstyleditemdelegate.cpp | 12 |
2 files changed, 12 insertions, 3 deletions
diff --git a/src/widgets/itemviews/qitemdelegate.cpp b/src/widgets/itemviews/qitemdelegate.cpp index ea474f14ab..f2c3c4702f 100644 --- a/src/widgets/itemviews/qitemdelegate.cpp +++ b/src/widgets/itemviews/qitemdelegate.cpp @@ -1299,6 +1299,9 @@ QStyleOptionViewItem QItemDelegate::setOptions(const QModelIndex &index, if (value.canConvert<QBrush>()) opt.palette.setBrush(QPalette::Text, qvariant_cast<QBrush>(value)); + // disable style animations for checkboxes etc. within itemviews (QTBUG-30146) + opt.styleObject = 0; + return opt; } diff --git a/src/widgets/itemviews/qstyleditemdelegate.cpp b/src/widgets/itemviews/qstyleditemdelegate.cpp index 2b3ea35cb0..b121800c31 100644 --- a/src/widgets/itemviews/qstyleditemdelegate.cpp +++ b/src/widgets/itemviews/qstyleditemdelegate.cpp @@ -355,7 +355,10 @@ void QStyledItemDelegate::initStyleOption(QStyleOptionViewItem *option, else mode = QIcon::Normal; QIcon::State state = option->state & QStyle::State_Open ? QIcon::On : QIcon::Off; - option->decorationSize = option->icon.actualSize(option->decorationSize, mode, state); + QSize actualSize = option->icon.actualSize(option->decorationSize, mode, state); + // For highdpi icons actualSize might be larger than decorationSize, which we don't want. Clamp it to decorationSize. + option->decorationSize = QSize(qMin(option->decorationSize.width(), actualSize.width()), + qMin(option->decorationSize.height(), actualSize.height())); break; } case QVariant::Color: { @@ -367,13 +370,13 @@ void QStyledItemDelegate::initStyleOption(QStyleOptionViewItem *option, case QVariant::Image: { QImage image = qvariant_cast<QImage>(value); option->icon = QIcon(QPixmap::fromImage(image)); - option->decorationSize = image.size(); + option->decorationSize = image.size() / image.devicePixelRatio(); break; } case QVariant::Pixmap: { QPixmap pixmap = qvariant_cast<QPixmap>(value); option->icon = QIcon(pixmap); - option->decorationSize = pixmap.size(); + option->decorationSize = pixmap.size() / pixmap.devicePixelRatio(); break; } default: @@ -388,6 +391,9 @@ void QStyledItemDelegate::initStyleOption(QStyleOptionViewItem *option, } option->backgroundBrush = qvariant_cast<QBrush>(index.data(Qt::BackgroundRole)); + + // disable style animations for checkboxes etc. within itemviews (QTBUG-30146) + option->styleObject = 0; } /*! |