UI: Add check for null widgetForAction result

In some cases, `QToolbar::widgetForAction` may return `nullptr`. This
causes a crash on affected system.

To mitigate this, we check for `widgetForAction` result and skip
operating on a NULL widget.
This commit is contained in:
Ilya Melamed 2023-02-10 14:52:15 +03:00 committed by Jim
parent d831e9403f
commit 213ce75328
2 changed files with 13 additions and 0 deletions

View file

@ -412,6 +412,10 @@ void RefreshToolBarStyling(QToolBar *toolBar)
{
for (QAction *action : toolBar->actions()) {
QWidget *widget = toolBar->widgetForAction(action);
if (!widget)
continue;
widget->style()->unpolish(widget);
widget->style()->polish(widget);
}

View file

@ -587,6 +587,9 @@ void OBSBasic::copyActionsDynamicProperties()
for (QAction *x : ui->scenesToolbar->actions()) {
QWidget *temp = ui->scenesToolbar->widgetForAction(x);
if (!temp)
continue;
for (QByteArray &y : x->dynamicPropertyNames()) {
temp->setProperty(y, x->property(y));
}
@ -595,6 +598,9 @@ void OBSBasic::copyActionsDynamicProperties()
for (QAction *x : ui->sourcesToolbar->actions()) {
QWidget *temp = ui->sourcesToolbar->widgetForAction(x);
if (!temp)
continue;
for (QByteArray &y : x->dynamicPropertyNames()) {
temp->setProperty(y, x->property(y));
}
@ -603,6 +609,9 @@ void OBSBasic::copyActionsDynamicProperties()
for (QAction *x : ui->mixerToolbar->actions()) {
QWidget *temp = ui->mixerToolbar->widgetForAction(x);
if (!temp)
continue;
for (QByteArray &y : x->dynamicPropertyNames()) {
temp->setProperty(y, x->property(y));
}