summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@gmail.com>2012-02-08 17:13:06 +0000
committerDaniel P. Berrange <berrange@redhat.com>2012-02-08 17:15:20 +0000
commitbbf040b777019a26cccc6cca7f12e6add7a8e2a4 (patch)
treec72f0e0b3ea50331797310c5d22164912ca140bc /src
parentf87cdc9e24c0ba3af977c5de4824b2b8fd22b989 (diff)
downloadvirt-viewer-bbf040b777019a26cccc6cca7f12e6add7a8e2a4.tar.gz
virt-viewer-bbf040b777019a26cccc6cca7f12e6add7a8e2a4.tar.xz
virt-viewer-bbf040b777019a26cccc6cca7f12e6add7a8e2a4.zip
Do not resize guest desktop if !auto-resize
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.
Diffstat (limited to 'src')
-rw-r--r--src/virt-viewer-display-spice.c3
-rw-r--r--src/virt-viewer-display.c16
-rw-r--r--src/virt-viewer-display.h3
-rw-r--r--src/virt-viewer-window.c3
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 e444c64..fca1b07 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
@@ -901,6 +903,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));