QWindows11Style: Fix transparency for overlapping ItemView editing
Fixes: QTBUG-120254 Change-Id: Iabaee612f5a0613cbbcafe566b4a14d01cefa47c Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> (cherry picked from commit 1a559261966f334e40ccd6d081302974e5b2b059) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
ed898efac7
commit
5dfec88838
@ -1520,6 +1520,7 @@ void QWindows11Style::drawControl(ControlElement element, const QStyleOption *op
|
||||
}
|
||||
case QStyle::CE_ItemViewItem: {
|
||||
if (const QStyleOptionViewItem *vopt = qstyleoption_cast<const QStyleOptionViewItem *>(option)) {
|
||||
const QAbstractItemView *view = qobject_cast<const QAbstractItemView *>(widget);
|
||||
QRect checkRect = proxy()->subElementRect(SE_ItemViewItemCheckIndicator, vopt, widget);
|
||||
QRect iconRect = proxy()->subElementRect(SE_ItemViewItemDecoration, vopt, widget);
|
||||
QRect textRect = proxy()->subElementRect(SE_ItemViewItemText, vopt, widget);
|
||||
@ -1542,6 +1543,14 @@ void QWindows11Style::drawControl(ControlElement element, const QStyleOption *op
|
||||
|
||||
if ((vopt->state & State_Selected || vopt->state & State_MouseOver) && !(isTreeView && vopt->state & State_MouseOver) && vopt->showDecorationSelected) {
|
||||
painter->setBrush(WINUI3Colors[colorSchemeIndex][subtleHighlightColor]);
|
||||
QWidget *editorWidget = view->indexWidget(view->currentIndex());
|
||||
if (editorWidget) {
|
||||
QPalette pal = editorWidget->palette();
|
||||
QColor editorBgColor = vopt->backgroundBrush == Qt::NoBrush ? vopt->palette.color(widget->backgroundRole()) : vopt->backgroundBrush.color();
|
||||
editorBgColor.setAlpha(255);
|
||||
pal.setColor(editorWidget->backgroundRole(),editorBgColor);
|
||||
editorWidget->setPalette(pal);
|
||||
}
|
||||
} else {
|
||||
painter->setBrush(vopt->backgroundBrush);
|
||||
}
|
||||
@ -1587,7 +1596,6 @@ void QWindows11Style::drawControl(ControlElement element, const QStyleOption *op
|
||||
vopt->icon.paint(painter, iconRect, vopt->decorationAlignment, mode, state);
|
||||
|
||||
painter->setPen(QPen(option->palette.buttonText().color()));
|
||||
const QAbstractItemView* view = qobject_cast<const QAbstractItemView*>(widget);
|
||||
if (!view->isPersistentEditorOpen(vopt->index))
|
||||
d->viewItemDrawText(painter, vopt, textRect);
|
||||
if (vopt->state & State_Selected && (vopt->viewItemPosition == QStyleOptionViewItem::Beginning || vopt->viewItemPosition == QStyleOptionViewItem::OnlyOne || vopt->viewItemPosition == QStyleOptionViewItem::Invalid)) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user