diff --git a/src/qt/qt_harddiskdialog.cpp b/src/qt/qt_harddiskdialog.cpp index 91179cdbc..3040db9c3 100644 --- a/src/qt/qt_harddiskdialog.cpp +++ b/src/qt/qt_harddiskdialog.cpp @@ -39,6 +39,7 @@ extern "C" { #include #include #include +#include #include "qt_harddrive_common.hpp" #include "qt_settings_bus_tracking.hpp" @@ -608,6 +609,7 @@ void HarddiskDialog::onExistingFileSelected(const QString &fileName) { } void HarddiskDialog::recalcSize() { + if (disallowSizeModifications) return; uint64_t size = (static_cast(cylinders_) * static_cast(heads_) * static_cast(sectors_)) << 9; ui->lineEditSize->setText(QString::number(size >> 20)); } @@ -731,6 +733,7 @@ void HarddiskDialog::on_comboBoxBus_currentIndexChanged(int index) { } void HarddiskDialog::on_lineEditSize_textEdited(const QString &text) { + disallowSizeModifications = true; uint32_t size = text.toUInt(); /* This is needed to ensure VHD standard compliance. */ hdd_image_calc_chs(&cylinders_, &heads_, §ors_, size); @@ -742,6 +745,8 @@ void HarddiskDialog::on_lineEditSize_textEdited(const QString &text) { checkAndAdjustCylinders(); checkAndAdjustHeads(); checkAndAdjustSectors(); + + disallowSizeModifications = false; } void HarddiskDialog::on_lineEditCylinders_textEdited(const QString &text) { diff --git a/src/qt/qt_harddiskdialog.hpp b/src/qt/qt_harddiskdialog.hpp index 408726f63..f876d35dd 100644 --- a/src/qt/qt_harddiskdialog.hpp +++ b/src/qt/qt_harddiskdialog.hpp @@ -49,6 +49,8 @@ private: uint32_t max_sectors = 0; uint32_t max_heads = 0; uint32_t max_cylinders = 0; + + bool disallowSizeModifications = false; bool checkAndAdjustCylinders(); bool checkAndAdjustHeads();