Fix virt-viewer window gradually getting bigger and bigger
This commit is contained in:
parent
926a661a8e
commit
9ffca9153d
48
0001-Fix-resizing-problem-with-recent-gtk-versions.patch
Normal file
48
0001-Fix-resizing-problem-with-recent-gtk-versions.patch
Normal file
@ -0,0 +1,48 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jonathon Jongsma <jjongsma@redhat.com>
|
||||
Date: Fri, 22 Jul 2016 16:43:41 -0500
|
||||
Subject: [virt-viewer] Fix resizing problem with recent gtk versions
|
||||
|
||||
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().
|
||||
---
|
||||
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 7e6b93f..99fd102 100644
|
||||
--- a/src/virt-viewer-window.c
|
||||
+++ b/src/virt-viewer-window.c
|
||||
@@ -411,10 +411,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
|
@ -17,12 +17,13 @@
|
||||
|
||||
Name: virt-viewer
|
||||
Version: 4.0
|
||||
Release: 1%{?dist}%{?extra_release}
|
||||
Release: 2%{?dist}%{?extra_release}
|
||||
Summary: Virtual Machine Viewer
|
||||
Group: Applications/System
|
||||
License: GPLv2+
|
||||
URL: http://virt-manager.org/
|
||||
Source0: http://virt-manager.org/download/sources/%{name}/%{name}-%{version}.tar.gz
|
||||
Patch0: 0001-Fix-resizing-problem-with-recent-gtk-versions.patch
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
Requires: openssh-clients
|
||||
Requires(post): %{_sbindir}/update-alternatives
|
||||
@ -65,6 +66,7 @@ the display, and libvirt for looking up VNC/SPICE server details.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
%patch0 -p1
|
||||
|
||||
%build
|
||||
|
||||
@ -133,6 +135,10 @@ fi
|
||||
%{_mandir}/man1/remote-viewer.1*
|
||||
|
||||
%changelog
|
||||
* Wed Oct 05 2016 Christophe Fergeau <cfergeau@redhat.com> 4.0-2
|
||||
- Add upstream patch fixing virt-viewer window gradually getting bigger and
|
||||
bigger
|
||||
|
||||
* Thu Jun 30 2016 Daniel P. Berrange <berrange@redhat.com> - 4.0-1
|
||||
- Update to 4.0 release
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user