diff --git a/qubesmanager/settings.py b/qubesmanager/settings.py index a1221f2..bcbe578 100644 --- a/qubesmanager/settings.py +++ b/qubesmanager/settings.py @@ -270,6 +270,15 @@ class VMSettingsWindow(ui_settingsdlg.Ui_SettingsDialog, QtWidgets.QDialog): def apply(self): self.save_changes() + # these signals must be disconnected to avoid unintended behavior + # on refreshing the drop-downs + self.netVM.currentIndexChanged.disconnect() + self.kernel.currentIndexChanged.disconnect() + self.default_dispvm.currentIndexChanged.disconnect() + + self.__init_basic_tab__() + self.__init_advanced_tab__() + def save_and_apply(self): self.save_changes() self.done(0) diff --git a/qubesmanager/utils.py b/qubesmanager/utils.py index 11b7cf1..52c4bd6 100644 --- a/qubesmanager/utils.py +++ b/qubesmanager/utils.py @@ -45,6 +45,11 @@ def prepare_choice(widget, holder, propname, choice, default, allow_none=False, transform=None): # for newly created vms, set propname to None + # clear the widget, so that prepare_choice functions can be used + # to refresh widget values + while widget.count() > 0: + widget.removeItem(0) + debug( 'prepare_choice(widget={widget!r}, ' 'holder={holder!r}, '