On Wed, Feb 08, 2012 at 05:07:07PM +0100, Marc-André Lureau wrote: > If auto-resize is enabled, the guest desktop size will be resized to > match current window*zoom size. > > This can be a problem if the user explicitely set the desktop size to > a different resolution and want to keep it. Disabling auto-resize > sounds like a simple way to allow that. > --- > src/virt-viewer-display-spice.c | 3 +++ > src/virt-viewer-display.c | 16 ++++++++++++++++ > src/virt-viewer-display.h | 3 ++- > src/virt-viewer-window.c | 3 +++ > 4 files changed, 24 insertions(+), 1 deletions(-) > > diff --git a/src/virt-viewer-display-spice.c b/src/virt-viewer-display-spice.c > index 570cdd5..e4f41f9 100644 > --- a/src/virt-viewer-display-spice.c > +++ b/src/virt-viewer-display-spice.c > @@ -160,6 +160,9 @@ virt_viewer_display_spice_size_allocate(VirtViewerDisplaySpice *self, > guint zoom = 100; > guint channelid; > > + if (virt_viewer_display_get_auto_resize(VIRT_VIEWER_DISPLAY(self)) == FALSE) > + return; > + > if (virt_viewer_display_get_zoom(VIRT_VIEWER_DISPLAY(self))) { > zoom = virt_viewer_display_get_zoom_level(VIRT_VIEWER_DISPLAY(self)); > > diff --git a/src/virt-viewer-display.c b/src/virt-viewer-display.c > index a62c289..5b2cdc1 100644 > --- a/src/virt-viewer-display.c > +++ b/src/virt-viewer-display.c > @@ -42,6 +42,7 @@ struct _VirtViewerDisplayPrivate > gint nth_display; > gint show_hint; > VirtViewerSession *session; > + gboolean auto_resize; > }; > > static void virt_viewer_display_size_request(GtkWidget *widget, > @@ -233,6 +234,7 @@ virt_viewer_display_init(VirtViewerDisplay *display) > display->priv->zoom_level = 100; > display->priv->zoom = TRUE; > display->priv->dirty = TRUE; > + display->priv->auto_resize = TRUE; > } > > GtkWidget* > @@ -551,6 +553,20 @@ VirtViewerSession* virt_viewer_display_get_session(VirtViewerDisplay *self) > return self->priv->session; > } > > +void virt_viewer_display_set_auto_resize(VirtViewerDisplay *self, gboolean auto_resize) > +{ > + g_return_if_fail(VIRT_VIEWER_IS_DISPLAY(self)); > + > + self->priv->auto_resize = auto_resize; > +} > + > +gboolean virt_viewer_display_get_auto_resize(VirtViewerDisplay *self) > +{ > + g_return_val_if_fail(VIRT_VIEWER_IS_DISPLAY(self), FALSE); > + > + return self->priv->auto_resize; > +} > + > /* > * Local variables: > * c-indent-level: 4 > diff --git a/src/virt-viewer-display.h b/src/virt-viewer-display.h > index b5a3266..17a3390 100644 > --- a/src/virt-viewer-display.h > +++ b/src/virt-viewer-display.h > @@ -107,7 +107,8 @@ void virt_viewer_display_send_keys(VirtViewerDisplay *display, > GdkPixbuf* virt_viewer_display_get_pixbuf(VirtViewerDisplay *display); > void virt_viewer_display_set_show_hint(VirtViewerDisplay *display, gint hint); > VirtViewerSession* virt_viewer_display_get_session(VirtViewerDisplay *display); > - > +void virt_viewer_display_set_auto_resize(VirtViewerDisplay *display, gboolean auto_resize); > +gboolean virt_viewer_display_get_auto_resize(VirtViewerDisplay *display); > G_END_DECLS > > #endif /* _VIRT_VIEWER_DISPLAY_H */ > diff --git a/src/virt-viewer-window.c b/src/virt-viewer-window.c > index adb45fa..2adb666 100644 > --- a/src/virt-viewer-window.c > +++ b/src/virt-viewer-window.c > @@ -681,6 +681,8 @@ virt_viewer_window_menu_view_resize(GtkWidget *menu, > } else { > priv->auto_resize = FALSE; > } > + > + virt_viewer_display_set_auto_resize(priv->display, priv->auto_resize); > } > > static void > @@ -898,6 +900,7 @@ virt_viewer_window_set_display(VirtViewerWindow *self, VirtViewerDisplay *displa > priv->display = g_object_ref(display); > > virt_viewer_display_set_zoom_level(VIRT_VIEWER_DISPLAY(priv->display), priv->zoomlevel); > + virt_viewer_display_set_auto_resize(VIRT_VIEWER_DISPLAY(priv->display), priv->auto_resize); > > gtk_notebook_append_page(GTK_NOTEBOOK(priv->notebook), GTK_WIDGET(display), NULL); > gtk_widget_show_all(GTK_WIDGET(display)); ACK & applied Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|