The VM window has a number of checkbox menu items that have a tri-state logic: They either reflect the global default as long as the per-vm setting is still -1 or they show the per-vm setting as enabled or disabled. Since they only listen to the per-vm dconf setting, they will not be updated if the global default changes. Extend add_gsettings_handle() to accept an iterable of handles for whose tiggering of a notification should trigger an update of object state and wire the menu items in question to be updated on global defaults change as well. Signed-off-by: Michael Weiser <michael.weiser@xxxxxx> --- virtManager/baseclass.py | 5 ++++- virtManager/object/domain.py | 16 ++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/virtManager/baseclass.py b/virtManager/baseclass.py index b2c90263..451e8a8a 100644 --- a/virtManager/baseclass.py +++ b/virtManager/baseclass.py @@ -174,7 +174,10 @@ class vmmGObject(GObject.GObject): return GObject.GObject.emit(self, signal_name, *args) def add_gsettings_handle(self, handle): - self._gsettings_handles.append(handle) + if hasattr(handle, '__iter__'): + self._gsettings_handles.extend(handle) + else: + self._gsettings_handles.append(handle) def remove_gsettings_handle(self, handle): self.config.remove_notifier(handle) self._gsettings_handles.remove(handle) diff --git a/virtManager/object/domain.py b/virtManager/object/domain.py index ea6fad62..590babec 100644 --- a/virtManager/object/domain.py +++ b/virtManager/object/domain.py @@ -1571,8 +1571,9 @@ class vmmDomain(vmmLibvirtObject): ################## def on_console_scaling_changed(self, *args, **kwargs): - return self.config.listen_pervm(self.get_uuid(), "/scaling", - *args, **kwargs) + return (self.config.listen_pervm(self.get_uuid(), "/scaling", + *args, **kwargs), + self.config.on_console_scaling_changed(*args, *kwargs)) def set_console_scaling(self, value): self.config.set_pervm(self.get_uuid(), "/scaling", value) def get_console_scaling(self): @@ -1582,8 +1583,9 @@ class vmmDomain(vmmLibvirtObject): return ret def on_console_resizeguest_changed(self, *args, **kwargs): - return self.config.listen_pervm(self.get_uuid(), "/resize-guest", - *args, **kwargs) + return (self.config.listen_pervm(self.get_uuid(), "/resize-guest", + *args, **kwargs), + self.config.on_console_resizeguest_changed(*args, *kwargs)) def set_console_resizeguest(self, value): self.config.set_pervm(self.get_uuid(), "/resize-guest", value) def get_console_resizeguest(self): @@ -1608,9 +1610,11 @@ class vmmDomain(vmmLibvirtObject): ("", -1)) def on_sync_guest_time_on_resume_changed(self, *args, **kwargs): - return self.config.listen_pervm(self.get_uuid(), + return (self.config.listen_pervm(self.get_uuid(), "/sync-guest-time-on-resume", - *args, **kwargs) + *args, **kwargs), + self.config.on_sync_guest_time_on_resume_changed( + *args, **kwargs)) def set_sync_guest_time_on_resume(self, value): self.config.set_pervm(self.get_uuid(), "/sync-guest-time-on-resume", value) -- 2.24.0 _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list