diff --git a/src/qt/qt_machinestatus.cpp b/src/qt/qt_machinestatus.cpp index 15aa51a7c..23df27150 100644 --- a/src/qt/qt_machinestatus.cpp +++ b/src/qt/qt_machinestatus.cpp @@ -366,6 +366,10 @@ hdd_count(int bus) void MachineStatus::refreshIcons() { + /* Check if icons should show activity. */ + if (!update_icons) + return; + for (size_t i = 0; i < FDD_NUM; ++i) { d->fdd[i].setActive(machine_status.fdd[i].active); d->fdd[i].setEmpty(machine_status.fdd[i].empty); @@ -399,6 +403,23 @@ MachineStatus::refreshIcons() } } +void +MachineStatus::clearActivity() +{ + for (auto &fdd : d->fdd) + fdd.setActive(false); + for (auto &cdrom : d->cdrom) + cdrom.setActive(false); + for (auto &zip : d->zip) + zip.setActive(false); + for (auto &mo : d->mo) + mo.setActive(false); + for (auto &hdd : d->hdds) + hdd.setActive(false); + for (auto &net : d->net) + net.setActive(false); +} + void MachineStatus::refresh(QStatusBar *sbar) { diff --git a/src/qt/qt_machinestatus.hpp b/src/qt/qt_machinestatus.hpp index c2e51819a..cf706180d 100644 --- a/src/qt/qt_machinestatus.hpp +++ b/src/qt/qt_machinestatus.hpp @@ -70,6 +70,7 @@ public: static void iterateNIC(const std::function &cb); QString getMessage(); + void clearActivity(); public slots: void refresh(QStatusBar *sbar); void message(const QString &msg); diff --git a/src/qt/qt_mainwindow.cpp b/src/qt/qt_mainwindow.cpp index bf3ef4014..102363414 100644 --- a/src/qt/qt_mainwindow.cpp +++ b/src/qt/qt_mainwindow.cpp @@ -2231,6 +2231,9 @@ MainWindow::on_actionUpdate_status_bar_icons_triggered() { update_icons ^= 1; ui->actionUpdate_status_bar_icons->setChecked(update_icons); + + /* Prevent icons staying when disabled during activity. */ + status->clearActivity(); } void