Package: release.debian.org
Severity: normal
User: release.debian....@packages.debian.org
Usertags: unblock

Please unblock package mypaint.

MyPaint 1.2.0-4, currently in unstable for 17 days, contains a targetted fix
for bug 848356. This bug has been assigned a severity of important becuase it
largely makes MyPaint useless in fullscreen mode with the version of
libgtk-3-0 which is due to be relesed with stretch.

Fullscreen mode is a primary way of using this package, and fullscreen state
is remembered across restarts of the app.

Debian bug being targetted:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=848356

This patch originates from upstream:
https://github.com/mypaint/mypaint/commit/c225d1132a7da956a35a32534e91a42d22cdb8e1

This bug is fixed in the latest upstream release (1.2.1),i which will not be
part of stretch, but I've backported and tested this fix for Stretch's 1.2.0.

Upstream bug reference:
https://github.com/mypaint/mypaint/issues/735

There are no unrelated changes in unstable, or included in this unblock.
Please cross-check it with the upstream patch to verify that it is the same
code. This is my first unblock request, so I hope I've mentioned the right
version in the subject and below.

Debdiff follows, as requested.

----------------------------------8<------------------------------------
diff -Nru mypaint-1.2.0/debian/changelog mypaint-1.2.0/debian/changelog
--- mypaint-1.2.0/debian/changelog  2016-11-22 08:02:02.000000000 +0000
+++ mypaint-1.2.0/debian/changelog  2017-02-02 14:39:42.000000000 +0000
@@ -1,3 +1,10 @@
+mypaint (1.2.0-4) unstable; urgency=medium
+
+  * Add debian/patches/fix-gtk-3.22.4-canvas-disappearance.patch to fix
+    fullscreen mode. (Closes: #848356)
+
+ -- Andrew Chadwick <a.t.chadw...@gmail.com>  Thu, 02 Feb 2017 14:39:42 +0000
+
 mypaint (1.2.0-3) unstable; urgency=medium
 
   * Update d/rules to use dh sequencer. Fixes arch-indep FTBFS.
diff -Nru 
mypaint-1.2.0/debian/patches/fix-gtk-3.22.4-canvas-disappearance.patch 
mypaint-1.2.0/debian/patches/fix-gtk-3.22.4-canvas-disappearance.patch
--- mypaint-1.2.0/debian/patches/fix-gtk-3.22.4-canvas-disappearance.patch  
1970-01-01 01:00:00.000000000 +0100
+++ mypaint-1.2.0/debian/patches/fix-gtk-3.22.4-canvas-disappearance.patch  
2017-02-02 13:06:12.000000000 +0000
@@ -0,0 +1,63 @@
+diff --git a/gui/workspace.py b/gui/workspace.py
+index 7f4f4abe..2af856a5 100644
+--- a/gui/workspace.py
++++ b/gui/workspace.py
+@@ -223,6 +223,7 @@ class Workspace (Gtk.VBox, Gtk.Buildable):
+         lpaned.pack1(lscrolls, resize=False, shrink=False)
+         lpaned.pack2(rpaned, resize=True, shrink=False)
+         rpaned.pack2(rscrolls, resize=False, shrink=False)
++        rpaned.pack1(cscrolls, resize=True, shrink=False)
+         self.pack_start(lpaned, True, True, 0)
+         # Autohide
+         self._autohide_enabled = True
+@@ -397,43 +398,21 @@ class Workspace (Gtk.VBox, Gtk.Buildable):
+     def set_canvas(self, widget):
+         """Canvas widget (setter)"""
+         assert self.get_canvas() is None
+-        self._rpaned.pack1(widget, resize=True, shrink=False)
+-        self._update_canvas_scrolledwindow()
++        widget = self._canvas_scrolls.add(widget)
+
+     def get_canvas(self):
+         """Canvas widget (getter)"""
+-        widget = self._rpaned.get_child1()
+-        if widget is self._canvas_scrolls:
+-            widget = widget.get_child()
++        widget = self._canvas_scrolls.get_child()
+         return widget
+
+     def _update_canvas_scrolledwindow(self):
+-        """Update whether the canvas has a surrounding ScrolledWindow
+-
+-        In fullscreen mode, the ScrolledWindow is removed from the widget
+-        hierarchy so that the canvas widget can occupy the full size of the
+-        screen. In nonfullscreen mode, the scrollers provide a pretty frame.
+-        """
+-        canvas = self.get_canvas()
+-        parent = canvas.get_parent()
++        """Update the canvas ScrolledWindow's border."""
++        parent = self._canvas_scrolls
+         if not self._is_fullscreen:
+-            if parent is self._canvas_scrolls:
+-                return
+-            logger.debug("Adding GtkScrolledWindow around canvas")
+-            assert parent is self._rpaned
+-            self._rpaned.remove(canvas)
+-            self._rpaned.pack1(self._canvas_scrolls, resize=True, 
shrink=False)
+-            self._canvas_scrolls.add(canvas)
+-            self._canvas_scrolls.show_all()
++            parent.set_shadow_type(Gtk.ShadowType.NONE)
+         else:
+-            if parent is self._rpaned:
+-                return
+-            logger.debug("Removing GtkScrolledWindow around canvas")
+-            assert parent is self._canvas_scrolls
+-            self._canvas_scrolls.remove(canvas)
+-            self._rpaned.remove(self._canvas_scrolls)
+-            self._rpaned.pack1(canvas, resize=True, shrink=False)
+-            self._canvas_scrolls.hide()
++            parent.set_shadow_type(Gtk.ShadowType.IN)
++        # TODO: this should really be done with CSS now.
+
+     ## Tool widgets
+
diff -Nru mypaint-1.2.0/debian/patches/series 
mypaint-1.2.0/debian/patches/series
--- mypaint-1.2.0/debian/patches/series 2016-11-22 08:02:02.000000000 +0000
+++ mypaint-1.2.0/debian/patches/series 2017-02-02 13:06:23.000000000 +0000
@@ -1 +1,2 @@
 fix-glib-2.48-startup-crash.patch
+fix-gtk-3.22.4-canvas-disappearance.patch
---------------------------------->8------------------------------------

unblock mypaint/1.2.0-4

-- System Information:
Debian Release: 9.0
  APT prefers testing
  APT policy: (900, 'testing'), (50, 'unstable'), (5, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.9.0-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_GB.utf8, LC_CTYPE=en_GB.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Reply via email to