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