diff --git a/src/virt-viewer-display-spice.c b/src/virt-viewer-display-spice.c index 00fcfae..48f07e3 100644 --- a/src/virt-viewer-display-spice.c +++ b/src/virt-viewer-display-spice.c @@ -250,6 +250,20 @@ virt_viewer_display_spice_size_allocate(VirtViewerDisplaySpice *self, self->priv->auto_resize = AUTO_RESIZE_NEVER; } +static void +zoom_level_changed(VirtViewerDisplaySpice *self, + GParamSpec *pspec G_GNUC_UNUSED, + VirtViewerApp *app G_GNUC_UNUSED) +{ + GtkAllocation allocation; + + if (self->priv->auto_resize != AUTO_RESIZE_NEVER) + return; + + gtk_widget_get_allocation(GTK_WIDGET(self), &allocation); + virt_viewer_display_spice_resize(self, &allocation, TRUE); +} + static void enable_accel_changed(VirtViewerApp *app, GParamSpec *pspec G_GNUC_UNUSED, @@ -338,6 +352,8 @@ virt_viewer_display_spice_new(VirtViewerSessionSpice *session, G_CALLBACK(enable_accel_changed), self, 0); virt_viewer_signal_connect_object(self, "notify::fullscreen", G_CALLBACK(fullscreen_changed), app, 0); + virt_viewer_signal_connect_object(self, "notify::zoom-level", + G_CALLBACK(zoom_level_changed), app, 0); fullscreen_changed(self, NULL, app); enable_accel_changed(app, NULL, self); diff --git a/src/virt-viewer-display.c b/src/virt-viewer-display.c index 253d96a..6c5b56a 100644 --- a/src/virt-viewer-display.c +++ b/src/virt-viewer-display.c @@ -566,6 +566,7 @@ void virt_viewer_display_set_zoom_level(VirtViewerDisplay *display, priv->zoom_level = zoom; virt_viewer_display_queue_resize(display); + g_object_notify(G_OBJECT(display), "zoom-level"); }