summaryrefslogtreecommitdiff
path: root/src/gui/styles
diff options
context:
space:
mode:
authorTitta Heikkala <titta.heikkala@digia.com>2012-08-16 11:27:57 +0300
committerQt by Nokia <qt-info@nokia.com>2012-08-23 16:38:03 +0200
commitb97d1e01c9c76a1ab87fc791dfb8c5708457286c (patch)
tree2f67063c4302a9eae8fb61a34debbb3e3fed931a /src/gui/styles
parent465c6fe7a16365c2fb7b46b664faaa9c1bacd022 (diff)
downloadqt4-tools-b97d1e01c9c76a1ab87fc791dfb8c5708457286c.tar.gz
Remove warning about non existing paint device engine
The QWindowsVistaStyle::drawPrimitive() method was trying to draw the pixmap for an item in an item view even if the section width was zero or less then zero. This resulted "QPainter::begin: Paint device returned engine == 0, type: 2" error. It's now checked that the width and the height of the section is greater than zero before creating the painter. Task-number: QTBUG-26047 Change-Id: I36dd2792fd505be773951e5ac36b0e3362ec2292 Reviewed-by: Andy Shaw <andy.shaw@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> (cherry picked from commit 929e934969c621d7c1773e4233c14d358de4d385)
Diffstat (limited to 'src/gui/styles')
-rw-r--r--src/gui/styles/qwindowsvistastyle.cpp52
1 files changed, 27 insertions, 25 deletions
diff --git a/src/gui/styles/qwindowsvistastyle.cpp b/src/gui/styles/qwindowsvistastyle.cpp
index 70f17d5fe1..01cd41eaa8 100644
--- a/src/gui/styles/qwindowsvistastyle.cpp
+++ b/src/gui/styles/qwindowsvistastyle.cpp
@@ -772,32 +772,34 @@ void QWindowsVistaStyle::drawPrimitive(PrimitiveElement element, const QStyleOpt
}
if (hover || selected) {
- QString key = QString::fromLatin1("qvdelegate-%1-%2-%3-%4-%5").arg(sectionSize.width())
- .arg(sectionSize.height()).arg(selected).arg(active).arg(hover);
- if (!QPixmapCache::find(key, pixmap)) {
- pixmap = QPixmap(sectionSize);
- pixmap.fill(Qt::transparent);
-
- int state;
- if (selected && hover)
- state = LISS_HOTSELECTED;
- else if (selected && !active)
- state = LISS_SELECTEDNOTFOCUS;
- else if (selected)
- state = LISS_SELECTED;
- else
- state = LISS_HOT;
-
- QPainter pixmapPainter(&pixmap);
- XPThemeData theme(d->treeViewHelper(), &pixmapPainter, QLatin1String("TREEVIEW"),
- LVP_LISTITEM, state, QRect(0, 0, sectionSize.width(), sectionSize.height()));
- if (theme.isValid()) {
- d->drawBackground(theme);
- } else {
- QWindowsXPStyle::drawPrimitive(PE_PanelItemViewItem, option, painter, widget);
- break;;
+ if (sectionSize.width() > 0 && sectionSize.height() > 0) {
+ QString key = QString::fromLatin1("qvdelegate-%1-%2-%3-%4-%5").arg(sectionSize.width())
+ .arg(sectionSize.height()).arg(selected).arg(active).arg(hover);
+ if (!QPixmapCache::find(key, pixmap)) {
+ pixmap = QPixmap(sectionSize);
+ pixmap.fill(Qt::transparent);
+
+ int state;
+ if (selected && hover)
+ state = LISS_HOTSELECTED;
+ else if (selected && !active)
+ state = LISS_SELECTEDNOTFOCUS;
+ else if (selected)
+ state = LISS_SELECTED;
+ else
+ state = LISS_HOT;
+
+ QPainter pixmapPainter(&pixmap);
+ XPThemeData theme(d->treeViewHelper(), &pixmapPainter, QLatin1String("TREEVIEW"),
+ LVP_LISTITEM, state, QRect(0, 0, sectionSize.width(), sectionSize.height()));
+ if (theme.isValid()) {
+ d->drawBackground(theme);
+ } else {
+ QWindowsXPStyle::drawPrimitive(PE_PanelItemViewItem, option, painter, widget);
+ break;;
+ }
+ QPixmapCache::insert(key, pixmap);
}
- QPixmapCache::insert(key, pixmap);
}
if (vopt->showDecorationSelected) {