viewers: add explicit signal for desktop resize

this doesn't change any behavior, but it makes things cleaner
by not overloading the size-allocate signal

Signed-off-by: Cole Robinson <crobinso@redhat.com>
This commit is contained in:
Cole Robinson 2024-10-02 11:26:47 -04:00
parent f140ff1836
commit fe09e8f47e
2 changed files with 16 additions and 8 deletions

View File

@ -763,7 +763,10 @@ class vmmConsolePages(vmmGObjectUI):
self._pointer_is_grabbed = False
self.emit("change-title")
def _viewer_allocate_cb(self, src, req):
def _viewer_size_allocate_cb(self, src, req):
self._adjust_viewer_size()
def _viewer_desktop_resolution_changed_cb(self, src):
self._adjust_viewer_size()
def _viewer_keyboard_grab_cb(self, src):
@ -853,7 +856,9 @@ class vmmConsolePages(vmmGObjectUI):
self._viewer.connect("add-display-widget", self._viewer_add_display_cb)
self._viewer.connect("pointer-grab", self._pointer_grabbed_cb)
self._viewer.connect("pointer-ungrab", self._pointer_ungrabbed_cb)
self._viewer.connect("size-allocate", self._viewer_allocate_cb)
self._viewer.connect("size-allocate", self._viewer_size_allocate_cb)
self._viewer.connect("desktop-resolution-changed",
self._viewer_desktop_resolution_changed_cb)
self._viewer.connect("keyboard-grab", self._viewer_keyboard_grab_cb)
self._viewer.connect("keyboard-ungrab", self._viewer_keyboard_grab_cb)
self._viewer.connect("connected", self._viewer_connected_cb)

View File

@ -56,6 +56,7 @@ class Viewer(vmmGObject):
__gsignals__ = {
"add-display-widget": (vmmGObject.RUN_FIRST, None, [object]),
"size-allocate": (vmmGObject.RUN_FIRST, None, [object]),
"desktop-resolution-changed": (vmmGObject.RUN_FIRST, None, []),
"pointer-grab": (vmmGObject.RUN_FIRST, None, []),
"pointer-ungrab": (vmmGObject.RUN_FIRST, None, []),
"keyboard-grab": (vmmGObject.RUN_FIRST, None, []),
@ -169,10 +170,13 @@ class Viewer(vmmGObject):
origres = self._desktop_resolution
newres = (w, h)
if origres != newres:
log.debug("vm=%s resolution changed: orig=%s new=%s",
self._vm.get_name(), origres, newres)
if origres == newres:
return # pragma: no cover
log.debug("vm=%s resolution changed: orig=%s new=%s",
self._vm.get_name(), origres, newres)
self._desktop_resolution = newres
self.emit("desktop-resolution-changed")
def _get_desktop_resolution(self):
ret = self._desktop_resolution or (0, 0)
@ -321,7 +325,7 @@ class VNCViewer(Viewer):
self._display.connect("vnc-auth-failure", self._auth_failure_cb)
self._display.connect("vnc-initialized", self._connected_cb)
self._display.connect("vnc-disconnected", self._disconnected_cb)
self._display.connect("vnc-desktop-resize", self._desktop_resize)
self._display.connect("vnc-desktop-resize", self._desktop_resize_cb)
self._display.show()
@ -341,9 +345,8 @@ class VNCViewer(Viewer):
self._tunnels.unlock()
self._emit_disconnected()
def _desktop_resize(self, src_ignore, w, h):
def _desktop_resize_cb(self, src, w, h):
self._set_desktop_resolution(w, h)
self.emit("size-allocate", None)
def _auth_failure_cb(self, ignore, msg):
log.debug("VNC auth failure. msg=%s", msg)