From 04fe9d0617e6d4a5128dde40b9c78177ff485dfa Mon Sep 17 00:00:00 2001 From: Marius Kittler Date: Fri, 12 Apr 2024 10:26:33 +0200 Subject: [PATCH] Avoid crash with Windows 11 style when no widget passed The documentation of `QStyle::drawControl()` states that "The widget argument is optional" so it must not be used unconditionally. Change-Id: I8b5a8ed421c0ae2c667925e448c9a029b6deedfd Reviewed-by: Oliver Wolff (cherry picked from commit 30061e8960eb9d8abb8a98270e3e92beef60d7d3) Reviewed-by: Qt Cherry-pick Bot --- src/plugins/styles/modernwindows/qwindows11style.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/styles/modernwindows/qwindows11style.cpp b/src/plugins/styles/modernwindows/qwindows11style.cpp index 21e6814c70f..45c53b714b3 100644 --- a/src/plugins/styles/modernwindows/qwindows11style.cpp +++ b/src/plugins/styles/modernwindows/qwindows11style.cpp @@ -1629,7 +1629,7 @@ 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()); + QWidget *editorWidget = view ? view->indexWidget(view->currentIndex()) : nullptr; if (editorWidget) { QPalette pal = editorWidget->palette(); QColor editorBgColor = vopt->backgroundBrush == Qt::NoBrush ? vopt->palette.color(widget->backgroundRole()) : vopt->backgroundBrush.color(); @@ -1682,7 +1682,7 @@ void QWindows11Style::drawControl(ControlElement element, const QStyleOption *op vopt->icon.paint(painter, iconRect, vopt->decorationAlignment, mode, state); painter->setPen(QPen(option->palette.buttonText().color())); - if (!view->isPersistentEditorOpen(vopt->index)) + if (!view || !view->isPersistentEditorOpen(vopt->index)) d->viewItemDrawText(painter, vopt, textRect); if (vopt->state & State_Selected && (vopt->viewItemPosition == QStyleOptionViewItem::Beginning