viewer: add support for spice resize-guest

And also turn on clipboard sharing.
This commit is contained in:
Marc-André Lureau 2010-11-30 15:57:23 +01:00
parent 155a03f9c8
commit be22c7dcf0
5 changed files with 33 additions and 4 deletions

View File

@ -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",

View File

@ -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);

View File

@ -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;
};

View File

@ -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)

View File

@ -332,6 +332,23 @@
<property name="tab_fill">False</property>
</packing>
</child>
<child>
<placeholder/>
<packing>
<property name="position">2</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label3">
<property name="visible">True</property>
<property name="label" translatable="yes">page 3</property>
</widget>
<packing>
<property name="type">tab</property>
<property name="position">2</property>
<property name="tab_fill">False</property>
</packing>
</child>
</widget>
<packing>
<property name="position">1</property>