QWindowsVistaStyle::drawPrimitive(PE_Frame): fix background clipping
The purpose of PE_Frame is to draw the frame, not the background. The old code tried to check whether a custom base brush was set, and otherwise let the theme draw the background. That didn't work together with CSS background images. This change removes the background drawing from PE_Frame, and let's PE_Widget to draw the background using the base brush that defaults to a color fetched from the theme. Task-number: QTBUG-24783 Change-Id: Iaddfcbd613122a9aed39e77ba05a26f94995f7d2 Reviewed-by: Andy Shaw <andy.shaw@digia.com> Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
This commit is contained in:
parent
3a6d0bbde6
commit
f1e681bed2
@ -537,16 +537,13 @@ void QWindowsVistaStyle::drawPrimitive(PrimitiveElement element, const QStyleOpt
|
||||
XPThemeData theme(widget, painter,
|
||||
QWindowsXPStylePrivate::EditTheme,
|
||||
EP_EDITBORDER_HVSCROLL, stateId, option->rect);
|
||||
uint resolve_mask = option->palette.resolve();
|
||||
if (resolve_mask & (1 << QPalette::Base)) {
|
||||
// Since EP_EDITBORDER_HVSCROLL does not us borderfill, theme.noContent cannot be used for clipping
|
||||
int borderSize = 1;
|
||||
pGetThemeInt(theme.handle(), theme.partId, theme.stateId, TMT_BORDERSIZE, &borderSize);
|
||||
QRegion clipRegion = option->rect;
|
||||
QRegion content = option->rect.adjusted(borderSize, borderSize, -borderSize, -borderSize);
|
||||
clipRegion ^= content;
|
||||
painter->setClipRegion(clipRegion);
|
||||
}
|
||||
// Since EP_EDITBORDER_HVSCROLL does not us borderfill, theme.noContent cannot be used for clipping
|
||||
int borderSize = 1;
|
||||
pGetThemeInt(theme.handle(), theme.partId, theme.stateId, TMT_BORDERSIZE, &borderSize);
|
||||
QRegion clipRegion = option->rect;
|
||||
QRegion content = option->rect.adjusted(borderSize, borderSize, -borderSize, -borderSize);
|
||||
clipRegion ^= content;
|
||||
painter->setClipRegion(clipRegion);
|
||||
d->drawBackground(theme);
|
||||
painter->restore();
|
||||
} else {
|
||||
|
Loading…
x
Reference in New Issue
Block a user