mirror of
https://gitlab.uni-freiburg.de/opensourcevdi/virt-viewer
synced 2025-12-27 23:00:54 +00:00
viewer: add support for spice resize-guest
And also turn on clipboard sharing.
This commit is contained in:
parent
155a03f9c8
commit
be22c7dcf0
@ -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",
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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;
|
||||
};
|
||||
|
||||
15
src/viewer.c
15
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)
|
||||
|
||||
@ -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>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user