On Sat, Jul 23, 2016 at 12:05 AM, Jonathon Jongsma <jjongsma@xxxxxxxxxx> wrote: > When using client-side decorations, as well as in certain other > situations (wayland, and windows in some cases), the window gradually > resizes larger and larger. > > This is caused by a change in how gtk interprets the sizes passed to > gtk_window_resize(), particularly when client-side decorations (CSD) are > involved. For example, In the past this size was assumed to include the > size of the CSD, but now it it assumes that the sizes only represent the > size of the window's content, without any decorations. However, > gtk_widget_get_preferred_size() (when called on a GtkWindow*), returns a > size that includes the size of the CSD. So > virt_viewer_window_queue_resize() was essentially growing the window by > the size of the CSD every time it was called. > > To work around this issue, we need to calculate the preferred size of > the window's child, not the size of the entire window (including CSD). > Then we add the width of the window's border (just to be safe) and pass > those values to gtk_window_resize(). Acked-by: Fabiano Fidêncio <fidencio@xxxxxxxxxx> > --- > src/virt-viewer-window.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/src/virt-viewer-window.c b/src/virt-viewer-window.c > index 695bfaf..ca3c4b2 100644 > --- a/src/virt-viewer-window.c > +++ b/src/virt-viewer-window.c > @@ -462,10 +462,14 @@ virt_viewer_window_queue_resize(VirtViewerWindow *self) > { > VirtViewerWindowPrivate *priv = self->priv; > GtkRequisition nat; > + GtkWidget *child; > + guint border; > > + border = gtk_container_get_border_width(GTK_CONTAINER(priv->window)); > + child = gtk_bin_get_child(GTK_BIN(priv->window)); > gtk_window_set_default_size(GTK_WINDOW(priv->window), -1, -1); > - gtk_widget_get_preferred_size(priv->window, NULL, &nat); > - gtk_window_resize(GTK_WINDOW(priv->window), nat.width, nat.height); > + gtk_widget_get_preferred_size(child, NULL, &nat); > + gtk_window_resize(GTK_WINDOW(priv->window), nat.width + border, nat.height + border); > } > > static void > -- > 2.7.4 > > _______________________________________________ > virt-tools-list mailing list > virt-tools-list@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/virt-tools-list _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list