This seems like a better approach to me. ACK. On Tue, 2015-07-14 at 16:13 +0200, Pavel Grunt wrote: > According to the description of virt_viewer_window_resize(): > This code attempts to resize the top level window to be large enough > to contain the entire display desktop at 1:1 ratio. If the local desktop > isn't large enough that it goes as large as possible and lets the display > scale down to fit, maintaining aspect ratio > > The window should be scale down by changing the zoom, not by resizing > the desktop. > > Before this commit the spice-guest would be resized if it does not fit > into the client's screen. This commit changes it, so a spice guest > will not be resized but it will be scaled down. > > Resolves: > https://bugzilla.redhat.com/show_bug.cgi?id=1221501 > --- > src/virt-viewer-window.c | 24 ++++++------------------ > 1 file changed, 6 insertions(+), 18 deletions(-) > > diff --git a/src/virt-viewer-window.c b/src/virt-viewer-window.c > index 153e707..a851022 100644 > --- a/src/virt-viewer-window.c > +++ b/src/virt-viewer-window.c > @@ -430,7 +430,6 @@ virt_viewer_window_resize(VirtViewerWindow *self) > { > GdkRectangle fullscreen; > GdkScreen *screen; > - int width, height; > double desktopAspect; > double screenAspect; > guint desktopWidth, display_width; > @@ -466,30 +465,19 @@ virt_viewer_window_resize(VirtViewerWindow *self) > > if ((display_width > fullscreen.width) || > (display_height > fullscreen.height)) { > + gint new_zoom; > /* Doesn't fit native res, so go as large as possible > maintaining aspect ratio */ > if (screenAspect > desktopAspect) { > - width = fullscreen.height * desktopAspect; > - height = fullscreen.height; > + new_zoom = NORMAL_ZOOM_LEVEL * fullscreen.height / desktopHeight; > } else { > - width = fullscreen.width; > - height = fullscreen.width / desktopAspect; > + new_zoom = NORMAL_ZOOM_LEVEL * fullscreen.width / desktopWidth; > } > - width *= (double) NORMAL_ZOOM_LEVEL / priv->zoomlevel; > - height *= (double) NORMAL_ZOOM_LEVEL / priv->zoomlevel; > + g_debug("scaling down, desktop does not fit into screen"); > + virt_viewer_window_set_zoom_level(self, new_zoom); > } else { > - width = desktopWidth; > - height = desktopHeight; > + virt_viewer_window_queue_resize(self); > } > - > - g_debug("Decided todo %dx%d (desktop is %dx%d, fullscreen is %dx%d", > - width, height, desktopWidth, desktopHeight, > - fullscreen.width, fullscreen.height); > - > - virt_viewer_display_set_desktop_size(VIRT_VIEWER_DISPLAY(priv->display), > - width, height); > - > - virt_viewer_window_queue_resize(self); > } > > static void _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list