summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKalev Lember <klember@redhat.com>2016-09-28 09:39:58 +0200
committerKalev Lember <klember@redhat.com>2016-09-28 09:39:58 +0200
commit4384fd8c60f06d4f355a9e29b9cdd181d2962843 (patch)
treee891640317bbfea3e33d877bf0bf99ab1de80330
parentUpdate to 3.22.0 (diff)
downloadgtk3-classic-build-gtk3-4384fd8c60f06d4f355a9e29b9cdd181d2962843.tar.gz
gtk3-classic-build-gtk3-4384fd8c60f06d4f355a9e29b9cdd181d2962843.tar.bz2
gtk3-classic-build-gtk3-4384fd8c60f06d4f355a9e29b9cdd181d2962843.zip
Backport a patch to fix shifted content in totem and gnome-maps
https://bugzilla.redhat.com/show_bug.cgi?id=1377741
-rw-r--r--0001-wayland-Avoid-negative-size-constraints.patch93
-rw-r--r--gtk3.spec9
2 files changed, 101 insertions, 1 deletions
diff --git a/0001-wayland-Avoid-negative-size-constraints.patch b/0001-wayland-Avoid-negative-size-constraints.patch
new file mode 100644
index 0000000..7922462
--- /dev/null
+++ b/0001-wayland-Avoid-negative-size-constraints.patch
@@ -0,0 +1,93 @@
+From dbd0923b5f7b4a7cdea182c8d20085c013c4571c Mon Sep 17 00:00:00 2001
+From: Olivier Fourdan <ofourdan@redhat.com>
+Date: Tue, 27 Sep 2016 16:48:57 +0200
+Subject: [PATCH] wayland: Avoid negative size constraints
+
+Setting the shadow width earlier as done with commit 4cb1b96 to address
+bug 771561 proved to cause unexpected side effects on size_allocate
+signal propagation.
+
+As the window is sized correctly earlier, the size_allocate signal is
+not emitted again in gtk_widget_size_allocate_with_baseline() which
+prevents clutter-gtk from relocating its child widget correctly.
+
+To avoid this issue, revert commit 4cb1b96 but make sure the values
+passed as min and max size is never negative in Wayland as this is a
+protocol error.
+
+With this, the min/max size will be wrong for a short amount of time,
+during the state transition, until the shadow width is updated from
+gdk_window_set_shadow_width().
+
+This approach is much safer and less intrusive than changing the
+size_allocate logic in gtk.
+
+This reverts commit 4cb1b9645e84054c059f174240e8e288c4befe05.
+
+Bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=771915
+---
+ gdk/wayland/gdkwindow-wayland.c | 8 ++++----
+ gtk/gtkwindow.c | 14 --------------
+ 2 files changed, 4 insertions(+), 18 deletions(-)
+
+diff --git a/gdk/wayland/gdkwindow-wayland.c b/gdk/wayland/gdkwindow-wayland.c
+index fa8dbe0..f35c4c8 100644
+--- a/gdk/wayland/gdkwindow-wayland.c
++++ b/gdk/wayland/gdkwindow-wayland.c
+@@ -2992,8 +2992,8 @@ gdk_wayland_window_set_geometry_hints (GdkWindow *window,
+
+ if (geom_mask & GDK_HINT_MIN_SIZE)
+ {
+- width = geometry->min_width - (impl->margin_left + impl->margin_right);
+- height = geometry->min_height - (impl->margin_top + impl->margin_bottom);
++ width = MAX (0, geometry->min_width - (impl->margin_left + impl->margin_right));
++ height = MAX (0, geometry->min_height - (impl->margin_top + impl->margin_bottom));
+ }
+ else
+ {
+@@ -3005,8 +3005,8 @@ gdk_wayland_window_set_geometry_hints (GdkWindow *window,
+
+ if (geom_mask & GDK_HINT_MAX_SIZE)
+ {
+- width = geometry->max_width - (impl->margin_left + impl->margin_right);
+- height = geometry->max_height - (impl->margin_top + impl->margin_bottom);
++ width = MAX (0, geometry->max_width - (impl->margin_left + impl->margin_right));
++ height = MAX (0, geometry->max_height - (impl->margin_top + impl->margin_bottom));
+ }
+ else
+ {
+diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
+index 14a11c3..1a4b14b 100644
+--- a/gtk/gtkwindow.c
++++ b/gtk/gtkwindow.c
+@@ -7529,19 +7529,6 @@ update_window_style_classes (GtkWindow *window)
+ }
+
+ static void
+-update_window_borders (GtkWindow *window)
+-{
+- GtkWindowPrivate *priv = window->priv;
+- GtkBorder window_border = { 0 };
+-
+- if (priv->client_decorated && priv->use_client_shadow)
+- {
+- get_shadow_width (window, &window_border);
+- update_shadow_width (window, &window_border);
+- }
+-}
+-
+-static void
+ popover_size_allocate (GtkWidget *widget,
+ GtkWindowPopover *popover,
+ GtkWindow *window)
+@@ -7811,7 +7798,6 @@ gtk_window_state_event (GtkWidget *widget,
+ {
+ update_window_style_classes (window);
+ update_window_buttons (window);
+- update_window_borders (window);
+ gtk_widget_queue_resize (widget);
+ }
+
+--
+2.7.4
+
diff --git a/gtk3.spec b/gtk3.spec
index 8a4c839..56c78dc 100644
--- a/gtk3.spec
+++ b/gtk3.spec
@@ -18,13 +18,16 @@
Name: gtk3
Version: 3.22.0
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: The GIMP ToolKit (GTK+), a library for creating GUIs for X
License: LGPLv2+
URL: http://www.gtk.org
Source0: http://download.gnome.org/sources/gtk+/3.22/gtk+-%{version}.tar.xz
+# Backported from upstream
+Patch0: 0001-wayland-Avoid-negative-size-constraints.patch
+
BuildRequires: pkgconfig(atk) >= %{atk_version}
BuildRequires: pkgconfig(atk-bridge-2.0)
BuildRequires: pkgconfig(glib-2.0) >= %{glib2_version}
@@ -157,6 +160,7 @@ the functionality of the installed %{name} package.
%prep
%setup -q -n gtk+-%{version}
+%patch0 -p1
%build
@@ -330,6 +334,9 @@ gtk-query-immodules-3.0-%{__isa_bits} --update-cache
%{_datadir}/installed-tests
%changelog
+* Wed Sep 28 2016 Kalev Lember <klember@redhat.com> - 3.22.0-2
+- Backport a patch to fix shifted content in totem and gnome-maps (#1377741)
+
* Tue Sep 20 2016 Kalev Lember <klember@redhat.com> - 3.22.0-1
- Update to 3.22.0
bgstack15