Resolves: rhbz#1462778 page thumbnails disappear after "invert colors"

Also fixes the upgrade path from f26 to rawhide.

Original patch from Caolán McNamara for f26.
This commit is contained in:
Debarshi Ray 2017-06-19 17:26:23 +01:00 committed by Debarshi Ray
parent e79b35cbba
commit 39c74dd970
2 changed files with 89 additions and 3 deletions

View File

@ -0,0 +1,82 @@
From 6480c7039bdf7e8f15f7d1415460db255910c40b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Nelson=20Ben=C3=ADtez=20Le=C3=B3n?=
<nbenitezl+gnome@gmail.com>
Date: Sun, 28 May 2017 22:35:05 +0500
Subject: [PATCH] sidebar-thumbnails: fix clunky scrolling
Caused by GtkIconView doing an invalidate and relayout of *all*
items in the view anytime we update model data in any indiviual
item (which happens with all the items that are getting in and out
of the scrolling area while we scroll). This caused GtkIconView to
machine-gunned us with "size-allocate" signals, a signal we were
using to update thumbnails when the sidebar is resized.
Fixed by connecting to the GtkTreeModel "row-changed" signal before
GtkIconView does it, and stop emission from there.
As we don't depend now on "size-allocate" signals to show thumbnails
while we scroll, just queue a draw on the icon view when a
thumbnail finish rendering.
Thanks Jose Aliste for first spotting the problem.
https://bugzilla.gnome.org/show_bug.cgi?id=691448
---
shell/ev-sidebar-thumbnails.c | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/shell/ev-sidebar-thumbnails.c b/shell/ev-sidebar-thumbnails.c
index 253eabf..c22e92e 100644
--- a/shell/ev-sidebar-thumbnails.c
+++ b/shell/ev-sidebar-thumbnails.c
@@ -802,9 +802,26 @@ ev_sidebar_thumbnails_device_scale_factor_changed_cb (EvSidebarThumbnails *sideb
}
static void
+ev_sidebar_thumbnails_row_changed (GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ gpointer data)
+{
+ guint signal_id;
+
+ signal_id = GPOINTER_TO_UINT (data);
+
+ /* PREVENT GtkIconView "row-changed" handler to be reached, as it will
+ * perform a full invalidate and relayout of all items, See bug:
+ * https://bugzilla.gnome.org/show_bug.cgi?id=691448#c9 */
+ g_signal_stop_emission (model, signal_id, 0);
+}
+
+static void
ev_sidebar_thumbnails_init (EvSidebarThumbnails *ev_sidebar_thumbnails)
{
EvSidebarThumbnailsPrivate *priv;
+ guint signal_id;
priv = ev_sidebar_thumbnails->priv = EV_SIDEBAR_THUMBNAILS_GET_PRIVATE (ev_sidebar_thumbnails);
@@ -814,6 +831,11 @@ ev_sidebar_thumbnails_init (EvSidebarThumbnails *ev_sidebar_thumbnails)
G_TYPE_BOOLEAN,
EV_TYPE_JOB_THUMBNAIL);
+ signal_id = g_signal_lookup ("row-changed", GTK_TYPE_TREE_MODEL);
+ g_signal_connect (GTK_TREE_MODEL (priv->list_store), "row-changed",
+ G_CALLBACK (ev_sidebar_thumbnails_row_changed),
+ GUINT_TO_POINTER (signal_id));
+
priv->swindow = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (priv->swindow),
@@ -962,6 +984,8 @@ thumbnail_job_completed_callback (EvJobThumbnail *job,
COLUMN_JOB, NULL,
-1);
cairo_surface_destroy (surface);
+
+ gtk_widget_queue_draw (priv->icon_view);
}
static void
--
2.9.3

View File

@ -5,7 +5,7 @@
Name: evince
Version: 3.24.0
Release: 2%{?dist}
Release: 3%{?dist}
Summary: Document viewer
License: GPLv2+ and GPLv3+ and LGPLv2+ and MIT and Afmparse
@ -18,9 +18,10 @@ Patch2: 0001-Resolves-rhbz-1404656-crash-on-opening-second-evince.patch
#https://bugzilla.gnome.org/show_bug.cgi?id=766749
Patch3: 0001-Resolves-deb-762530-rhbz-1061177-add-man-pages.patch
Patch4: 0001-Resolves-rhbz-1358249-page-up-down.patch
Patch5: 0001-Revert-Bump-poppler-requirements-to-0.33.0.patch
Patch5: 0001-sidebar-thumbnails-fix-clunky-scrolling.patch
Patch6: 0001-Revert-Bump-poppler-requirements-to-0.33.0.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1468488
Patch6: evince-libarchive-gnome-3-24.patch
Patch7: evince-libarchive-gnome-3-24.patch
BuildRequires: pkgconfig(adwaita-icon-theme)
BuildRequires: pkgconfig(gio-unix-2.0) >= %{glib2_version}
@ -268,6 +269,9 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas >&/dev/null ||:
%{_libdir}/mozilla/plugins/libevbrowserplugin.so
%changelog
* Tue Jul 25 2017 Debarshi Ray <rishi@fedoraproject.org> - 3.24.0-3
- Resolves: rhbz#1462778 page thumbnails disappear after "invert colors"
* Fri Jul 07 2017 Bastien Nocera <bnocera@redhat.com> - 3.24.0-2
+ evince-3.24.0-2
- Use libarchive to handle compressed comics documents