Ensure widgets are always updated on the main thread

Fixes crashes and widget freezes
This commit is contained in:
Dan Paulat 2024-10-27 09:02:29 -05:00
parent 194638f759
commit ac40fd93b7
3 changed files with 48 additions and 35 deletions

View file

@ -494,12 +494,11 @@ void MainWindow::on_actionOpenNexrad_triggered()
map::MapWidget* currentMap = p->activeMap_;
// Make sure the parent window properly repaints on close
connect(
dialog,
&QFileDialog::finished,
this,
[this]() { update(); },
Qt::QueuedConnection);
connect(dialog,
&QFileDialog::finished,
this,
static_cast<void (MainWindow::*)()>(&MainWindow::update),
Qt::QueuedConnection);
connect(
dialog,
@ -560,12 +559,11 @@ void MainWindow::on_actionOpenTextEvent_triggered()
dialog->setAttribute(Qt::WA_DeleteOnClose);
// Make sure the parent window properly repaints on close
connect(
dialog,
&QFileDialog::finished,
this,
[this]() { update(); },
Qt::QueuedConnection);
connect(dialog,
&QFileDialog::finished,
this,
static_cast<void (MainWindow::*)()>(&MainWindow::update),
Qt::QueuedConnection);
connect(dialog,
&QFileDialog::fileSelected,
@ -1003,7 +1001,8 @@ void MainWindowImpl::ConnectAnimationSignals()
{
for (auto map : maps_)
{
map->update();
QMetaObject::invokeMethod(
map, static_cast<void (QWidget::*)()>(&QWidget::update));
}
});
connect(timelineManager_.get(),