[RFC PATCH v2 6/7] virtManager: config: Correctly reflect global defaults change

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux Virtualization]     [KVM Development]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]     [Video 4 Linux]

  Powered by Linux