diff --git a/src/display-spice.c b/src/display-spice.c
index e91f357..9ef0b2d 100644
--- a/src/display-spice.c
+++ b/src/display-spice.c
@@ -211,6 +211,8 @@ static void _spice_channel_new(SpiceSession *s, SpiceChannel *channel,
g_object_set(self->display,
"grab-keyboard", TRUE,
"grab-mouse", TRUE,
+ "resize-guest", TRUE,
+ "auto-clipboard", TRUE,
NULL);
viewer_add_display_and_realize(display->viewer);
viewer_initialized(display->viewer);
@@ -262,6 +264,7 @@ VirtViewerDisplaySpice* virt_viewer_display_spice_new(VirtViewer *viewer)
self = g_object_new(VIRT_VIEWER_TYPE_DISPLAY_SPICE, NULL);
d = VIRT_VIEWER_DISPLAY(self);
d->viewer = viewer;
+ d->need_align = FALSE;
self->session = spice_session_new();
g_signal_connect(self->session, "channel-new",
diff --git a/src/display-vnc.c b/src/display-vnc.c
index 96bc382..a51a068 100644
--- a/src/display-vnc.c
+++ b/src/display-vnc.c
@@ -264,6 +264,7 @@ VirtViewerDisplayVNC* virt_viewer_display_vnc_new(VirtViewer *viewer)
d->viewer = viewer;
viewer->display = d;
+ d->need_align = TRUE;
d->widget = vnc_display_new();
self->vnc = VNC_DISPLAY(d->widget);
vnc_display_set_keyboard_grab(self->vnc, TRUE);
diff --git a/src/display.h b/src/display.h
index 45931b4..8a23741 100644
--- a/src/display.h
+++ b/src/display.h
@@ -49,6 +49,7 @@ G_BEGIN_DECLS
/* perhaps this become an interface, and be pushed in gtkvnc and spice? */
struct _VirtViewerDisplay {
GObject parent;
+ gboolean need_align;
VirtViewer *viewer;
GtkWidget *widget;
};
diff --git a/src/viewer.c b/src/viewer.c
index 6ec021a..5d63343 100644
--- a/src/viewer.c
+++ b/src/viewer.c
@@ -130,8 +130,15 @@ void viewer_add_display_and_realize(VirtViewer *viewer)
g_return_if_fail(viewer->display->widget != NULL);
notebook = glade_xml_get_widget(viewer->glade, "notebook");
- align = glade_xml_get_widget(viewer->glade, "display-align");
- gtk_container_add(GTK_CONTAINER(align), viewer->display->widget);
+ if (viewer->display->need_align) {
+ align = glade_xml_get_widget(viewer->glade, "display-align");
+ gtk_container_add(GTK_CONTAINER(align), viewer->display->widget);
+ } else {
+ gtk_notebook_remove_page(GTK_NOTEBOOK(notebook), 2);
+ if (gtk_notebook_insert_page(GTK_NOTEBOOK(notebook), viewer->display->widget,
+ NULL, 2) == -1)
+ g_warning("failed to insert a notebook page");
+ }
if (!viewer->window) {
gtk_container_add(GTK_CONTAINER(viewer->container), GTK_WIDGET(notebook));
@@ -763,9 +770,9 @@ static void viewer_show_display(VirtViewer *viewer)
g_return_if_fail(viewer->display->widget != NULL);
notebook = glade_xml_get_widget(viewer->glade, "notebook");
- gtk_notebook_set_current_page(GTK_NOTEBOOK(notebook), 1);
-
gtk_widget_show(viewer->display->widget);
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(notebook),
+ viewer->display->need_align ? 1 : 2);
}
static void viewer_connect_info_free(VirtViewer *viewer)
diff --git a/src/viewer.glade b/src/viewer.glade
index 8195ad5..3bc0aa2 100644
--- a/src/viewer.glade
+++ b/src/viewer.glade
@@ -332,6 +332,23 @@
False
+
+
+
+ 2
+
+
+
+
+ True
+ page 3
+
+
+ tab
+ 2
+ False
+
+
1