[virt-tools-list] [PATCH virt-viewer] Do not resize guest desktop if !auto-resize
Daniel P. Berrange
berrange at redhat.com
Wed Feb 8 17:16:28 UTC 2012
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 :|
More information about the virt-tools-list
mailing list