[virt-tools-list] [PATCH virt-viewer] Do not resize guest desktop if !auto-resize
Marc-André Lureau
marcandre.lureau at gmail.com
Wed Feb 8 16:07:07 UTC 2012
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));
--
1.7.7.6
More information about the virt-tools-list
mailing list