import evince-3.28.4-8.el8
This commit is contained in:
commit
655a91ce4a
1
.evince.metadata
Normal file
1
.evince.metadata
Normal file
@ -0,0 +1 @@
|
|||||||
|
230997237a449bc71b2c6769f5d30a2d616fba03 SOURCES/evince-3.28.4.tar.xz
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
SOURCES/evince-3.28.4.tar.xz
|
@ -0,0 +1,86 @@
|
|||||||
|
From 8e20f99f5d73175112b37203ba127519db90aff0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
||||||
|
Date: Tue, 10 Jan 2017 15:10:44 +0000
|
||||||
|
Subject: [PATCH] Resolves: deb#762530 rhbz#1061177 add man pages
|
||||||
|
|
||||||
|
for evince-previewer and evince-thumbnailer
|
||||||
|
---
|
||||||
|
data/Makefile.am | 2 +-
|
||||||
|
data/evince-previewer.1 | 24 ++++++++++++++++++++++++
|
||||||
|
data/evince-thumbnailer.1 | 20 ++++++++++++++++++++
|
||||||
|
3 files changed, 45 insertions(+), 1 deletion(-)
|
||||||
|
create mode 100644 data/evince-previewer.1
|
||||||
|
create mode 100644 data/evince-thumbnailer.1
|
||||||
|
|
||||||
|
diff --git a/data/Makefile.am b/data/Makefile.am
|
||||||
|
index 44fcf33..a45a3cb 100644
|
||||||
|
--- a/data/Makefile.am
|
||||||
|
+++ b/data/Makefile.am
|
||||||
|
@@ -7,7 +7,7 @@ install-data-local: update-icon-cache
|
||||||
|
# man file
|
||||||
|
#
|
||||||
|
|
||||||
|
-man_MANS=evince.1
|
||||||
|
+man_MANS=evince.1 evince-previewer.1 evince-thumbnailer.1
|
||||||
|
|
||||||
|
#
|
||||||
|
# UI descriptions
|
||||||
|
diff --git a/data/evince-previewer.1 b/data/evince-previewer.1
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..1841509
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/data/evince-previewer.1
|
||||||
|
@@ -0,0 +1,24 @@
|
||||||
|
+.TH evince\-previewer 1 2015\-07\-28
|
||||||
|
+.SH NAME
|
||||||
|
+evince\-previewer \- show a printing preview of PostScript and PDF documents
|
||||||
|
+.SH SYNOPSIS
|
||||||
|
+\fBevince\-previewer\fR [options] \fBinput\fR
|
||||||
|
+.SH DESCRIPTION
|
||||||
|
+evince\-previewer is a GNOME program to
|
||||||
|
+show a printing preview from PostScript (PS), Portable Document Format
|
||||||
|
+(PDF), DjVu and DVI files.
|
||||||
|
+.SH OPTIONS
|
||||||
|
+evince\-previewer obeys all normal GNOME and GTK+ command line options.
|
||||||
|
+The application options are
|
||||||
|
+.TP
|
||||||
|
+\fB\-u, \-\-unlink\-tempfile\fR
|
||||||
|
+Delete the temporary file
|
||||||
|
+.TP
|
||||||
|
+\fB\-p, \-\-print-settings=FILE\fR
|
||||||
|
+Print settings file
|
||||||
|
+.SH "SEE ALSO"
|
||||||
|
+\fBevince\fR(1),
|
||||||
|
+\fBgnome\-options\fR(7),
|
||||||
|
+\fBgtk\-options\fR(7).
|
||||||
|
+.PP
|
||||||
|
+https://wiki.gnome.org/Apps/Evince
|
||||||
|
diff --git a/data/evince-thumbnailer.1 b/data/evince-thumbnailer.1
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..25ddfec
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/data/evince-thumbnailer.1
|
||||||
|
@@ -0,0 +1,20 @@
|
||||||
|
+.TH evince\-thumbnailer 1 2007\-01\-15
|
||||||
|
+.SH NAME
|
||||||
|
+evince\-thumbnailer \- create png thumbnails from PostScript and PDF documents
|
||||||
|
+.SH SYNOPSIS
|
||||||
|
+\fBevince\-thumbnailer\fR [\-s \fBsize\fR] \fBinput\fR \fBoutput\fR
|
||||||
|
+.SH DESCRIPTION
|
||||||
|
+evince\-thumbnailer is a GNOME program to
|
||||||
|
+create thumbnails from PostScript (PS), Portable Document Format
|
||||||
|
+(PDF), DjVu and DVI files.
|
||||||
|
+.SH OPTIONS
|
||||||
|
+evince obeys all normal GNOME and GTK+
|
||||||
|
+command line options. The only option \-s \fIsize
|
||||||
|
+\fRmakes it possible to choose the vertical size
|
||||||
|
+of the created thumbnail.
|
||||||
|
+.SH "SEE ALSO"
|
||||||
|
+\fBevince\fR(1),
|
||||||
|
+\fBgnome\-options\fR(7),
|
||||||
|
+\fBgtk\-options\fR(7).
|
||||||
|
+.PP
|
||||||
|
+http://www.gnome.org/projects/evince/
|
||||||
|
--
|
||||||
|
2.9.3
|
||||||
|
|
@ -0,0 +1,55 @@
|
|||||||
|
From 22b047c3db84a34fc5fb5076474640bcd3917c73 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
||||||
|
Date: Fri, 17 Feb 2017 09:28:18 +0000
|
||||||
|
Subject: [PATCH] Revert "Bump poppler requirements to 0.33.0"
|
||||||
|
|
||||||
|
This reverts commit 5a4912bdbbf3c8000e77a093cf366276eeb56283.
|
||||||
|
---
|
||||||
|
backend/pdf/ev-poppler.cc | 4 ++++
|
||||||
|
configure.ac | 7 ++++++-
|
||||||
|
2 files changed, 10 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/backend/pdf/ev-poppler.cc b/backend/pdf/ev-poppler.cc
|
||||||
|
index 214094f..f3a6510 100644
|
||||||
|
--- a/backend/pdf/ev-poppler.cc
|
||||||
|
+++ b/backend/pdf/ev-poppler.cc
|
||||||
|
@@ -3508,7 +3508,11 @@ pdf_document_annotations_save_annotation (EvDocumentAnnotations *document_annota
|
||||||
|
poppler_rect.y2 = height - ev_rect.y1;
|
||||||
|
|
||||||
|
if (poppler_annot_markup_has_popup (markup))
|
||||||
|
+#ifdef HAVE_POPPLER_ANNOT_MARKUP_SET_POPUP_RECTANGLE
|
||||||
|
poppler_annot_markup_set_popup_rectangle (markup, &poppler_rect);
|
||||||
|
+#else
|
||||||
|
+ poppler_annot_markup_set_popup (markup, &poppler_rect);
|
||||||
|
+#endif
|
||||||
|
else
|
||||||
|
poppler_annot_markup_set_popup (markup, &poppler_rect);
|
||||||
|
}
|
||||||
|
diff --git a/configure.ac b/configure.ac
|
||||||
|
index 23a390f..a01392a 100644
|
||||||
|
--- a/configure.ac
|
||||||
|
+++ b/configure.ac
|
||||||
|
@@ -536,7 +536,7 @@ AC_ARG_ENABLE([pdf],
|
||||||
|
[enable_pdf=yes])
|
||||||
|
|
||||||
|
if test "x$enable_pdf" = "xyes"; then
|
||||||
|
- POPPLER_REQUIRED=0.33.0
|
||||||
|
+ POPPLER_REQUIRED=0.24.0
|
||||||
|
PKG_CHECK_MODULES(POPPLER, poppler-glib >= $POPPLER_REQUIRED libxml-2.0 >= $LIBXML_REQUIRED,enable_pdf=yes,enable_pdf=no)
|
||||||
|
|
||||||
|
if test "x$enable_pdf" = "xyes"; then
|
||||||
|
@@ -549,6 +549,11 @@ if test "x$enable_pdf" = "xyes"; then
|
||||||
|
if test x$enable_cairo_ps = xyes; then
|
||||||
|
AC_DEFINE([HAVE_CAIRO_PS], [1], [defined if cairo-ps is available])
|
||||||
|
fi
|
||||||
|
+
|
||||||
|
+ evince_save_LIBS=$LIBS
|
||||||
|
+ LIBS="$LIBS $POPPLER_LIBS"
|
||||||
|
+ AC_CHECK_FUNCS(poppler_annot_markup_set_popup_rectangle)
|
||||||
|
+ LIBS=$evince_save_LIBS
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR("PDF support is disabled since poppler-glib library version $POPPLER_REQUIRED or newer not found")
|
||||||
|
fi
|
||||||
|
--
|
||||||
|
2.9.3
|
||||||
|
|
76
SOURCES/evince-3.21.4-NPNVToolKit.patch
Normal file
76
SOURCES/evince-3.21.4-NPNVToolKit.patch
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
--- evince-3.21.92/browser-plugin/EvBrowserPluginMain.cpp
|
||||||
|
+++ evince-3.21.92/browser-plugin/EvBrowserPluginMain.cpp
|
||||||
|
@@ -38,11 +38,40 @@ static EvBrowserPlugin *pluginForInstanc
|
||||||
|
return static_cast<EvBrowserPlugin *>(instance->pdata);
|
||||||
|
}
|
||||||
|
|
||||||
|
+static gboolean gtkToolkitIsCompatible(NPP instance)
|
||||||
|
+{
|
||||||
|
+ NPNToolkitType toolkit_type = NPNVGtk12;
|
||||||
|
+ NPError error;
|
||||||
|
+
|
||||||
|
+ error = browser->getvalue(instance, NPNVToolkit, &toolkit_type);
|
||||||
|
+
|
||||||
|
+ if (error == NPERR_NO_ERROR &&
|
||||||
|
+ (toolkit_type == NPNVGtk12 ||
|
||||||
|
+ toolkit_type == NPNVGtk2))
|
||||||
|
+ return FALSE;
|
||||||
|
+ else
|
||||||
|
+ return TRUE;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16_t mode, int16_t argc, char *argn[], char *argv[], NPSavedData *savedData)
|
||||||
|
{
|
||||||
|
if (!instance)
|
||||||
|
return NPERR_INVALID_INSTANCE_ERROR;
|
||||||
|
|
||||||
|
+ if (!gtkToolkitIsCompatible(instance))
|
||||||
|
+ return NPERR_GENERIC_ERROR;
|
||||||
|
+
|
||||||
|
+ GBytes *resourceData = g_resources_lookup_data("/org/gnome/evince/browser/ui/evince-browser.css", G_RESOURCE_LOOKUP_FLAGS_NONE, nullptr);
|
||||||
|
+ if (resourceData) {
|
||||||
|
+ GtkCssProvider *cssProvider = gtk_css_provider_new();
|
||||||
|
+
|
||||||
|
+ gtk_css_provider_load_from_data(cssProvider, static_cast<const gchar *>(g_bytes_get_data(resourceData, nullptr)), g_bytes_get_size(resourceData), nullptr);
|
||||||
|
+ g_bytes_unref(resourceData);
|
||||||
|
+
|
||||||
|
+ gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), GTK_STYLE_PROVIDER(cssProvider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
|
||||||
|
+ g_object_unref(cssProvider);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
return EvBrowserPlugin::create(instance)->initialize(pluginType, mode, argc, argn, argv, savedData);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -197,6 +226,11 @@ NPError NP_Initialize(NPNetscapeFuncs *b
|
||||||
|
if ((browserFuncs->version >> 8) > NP_VERSION_MAJOR)
|
||||||
|
return NPERR_INCOMPATIBLE_VERSION_ERROR;
|
||||||
|
|
||||||
|
+ browser = browserFuncs;
|
||||||
|
+
|
||||||
|
+ if (!gtkToolkitIsCompatible(NULL))
|
||||||
|
+ return NPERR_GENERIC_ERROR;
|
||||||
|
+
|
||||||
|
if (!ev_init())
|
||||||
|
return NPERR_GENERIC_ERROR;
|
||||||
|
|
||||||
|
@@ -207,20 +241,8 @@ NPError NP_Initialize(NPNetscapeFuncs *b
|
||||||
|
return NPERR_GENERIC_ERROR;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
- browser = browserFuncs;
|
||||||
|
initializePluginFuncs(pluginFuncs);
|
||||||
|
|
||||||
|
- GBytes *resourceData = g_resources_lookup_data("/org/gnome/evince/browser/ui/evince-browser.css", G_RESOURCE_LOOKUP_FLAGS_NONE, nullptr);
|
||||||
|
- if (resourceData) {
|
||||||
|
- GtkCssProvider *cssProvider = gtk_css_provider_new();
|
||||||
|
-
|
||||||
|
- gtk_css_provider_load_from_data(cssProvider, static_cast<const gchar *>(g_bytes_get_data(resourceData, nullptr)), g_bytes_get_size(resourceData), nullptr);
|
||||||
|
- g_bytes_unref(resourceData);
|
||||||
|
-
|
||||||
|
- gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), GTK_STYLE_PROVIDER(cssProvider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
|
||||||
|
- g_object_unref(cssProvider);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
return NPERR_NO_ERROR;
|
||||||
|
}
|
||||||
|
|
72
SOURCES/evince-3.28.2-TIFFReadRGBAImageOriented.patch
Normal file
72
SOURCES/evince-3.28.2-TIFFReadRGBAImageOriented.patch
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
From 3e38d5ad724a042eebadcba8c2d57b0f48b7a8c7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jason Crain <jcrain@src.gnome.org>
|
||||||
|
Date: Mon, 15 Apr 2019 23:06:36 -0600
|
||||||
|
Subject: [PATCH] tiff: Handle failure from TIFFReadRGBAImageOriented
|
||||||
|
|
||||||
|
The TIFFReadRGBAImageOriented function returns zero if it was unable to
|
||||||
|
read the image. Return NULL in this case instead of displaying
|
||||||
|
uninitialized memory.
|
||||||
|
|
||||||
|
Fixes #1129
|
||||||
|
---
|
||||||
|
backend/tiff/tiff-document.c | 28 ++++++++++++++++++----------
|
||||||
|
1 file changed, 18 insertions(+), 10 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/backend/tiff/tiff-document.c b/backend/tiff/tiff-document.c
|
||||||
|
index 7715031b..38bb3bd8 100644
|
||||||
|
--- a/backend/tiff/tiff-document.c
|
||||||
|
+++ b/backend/tiff/tiff-document.c
|
||||||
|
@@ -292,18 +292,22 @@ tiff_document_render (EvDocument *document,
|
||||||
|
g_warning("Failed to allocate memory for rendering.");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
-
|
||||||
|
+
|
||||||
|
+ if (!TIFFReadRGBAImageOriented (tiff_document->tiff,
|
||||||
|
+ width, height,
|
||||||
|
+ (uint32 *)pixels,
|
||||||
|
+ orientation, 0)) {
|
||||||
|
+ g_warning ("Failed to read TIFF image.");
|
||||||
|
+ g_free (pixels);
|
||||||
|
+ return NULL;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
surface = cairo_image_surface_create_for_data (pixels,
|
||||||
|
CAIRO_FORMAT_RGB24,
|
||||||
|
width, height,
|
||||||
|
rowstride);
|
||||||
|
cairo_surface_set_user_data (surface, &key,
|
||||||
|
pixels, (cairo_destroy_func_t)g_free);
|
||||||
|
-
|
||||||
|
- TIFFReadRGBAImageOriented (tiff_document->tiff,
|
||||||
|
- width, height,
|
||||||
|
- (uint32 *)pixels,
|
||||||
|
- orientation, 0);
|
||||||
|
pop_handlers ();
|
||||||
|
|
||||||
|
/* Convert the format returned by libtiff to
|
||||||
|
@@ -384,13 +388,17 @@ tiff_document_get_thumbnail (EvDocument *document,
|
||||||
|
if (!pixels)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
+ if (!TIFFReadRGBAImageOriented (tiff_document->tiff,
|
||||||
|
+ width, height,
|
||||||
|
+ (uint32 *)pixels,
|
||||||
|
+ ORIENTATION_TOPLEFT, 0)) {
|
||||||
|
+ g_free (pixels);
|
||||||
|
+ return NULL;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
pixbuf = gdk_pixbuf_new_from_data (pixels, GDK_COLORSPACE_RGB, TRUE, 8,
|
||||||
|
width, height, rowstride,
|
||||||
|
(GdkPixbufDestroyNotify) g_free, NULL);
|
||||||
|
- TIFFReadRGBAImageOriented (tiff_document->tiff,
|
||||||
|
- width, height,
|
||||||
|
- (uint32 *)pixels,
|
||||||
|
- ORIENTATION_TOPLEFT, 0);
|
||||||
|
pop_handlers ();
|
||||||
|
|
||||||
|
ev_render_context_compute_scaled_size (rc, width, height * (x_res / y_res),
|
||||||
|
--
|
||||||
|
2.21.0
|
||||||
|
|
465
SOURCES/evince-3.28.2-covscan.patch
Normal file
465
SOURCES/evince-3.28.2-covscan.patch
Normal file
@ -0,0 +1,465 @@
|
|||||||
|
--- evince-3.28.2/backend/comics/comics-document.c
|
||||||
|
+++ evince-3.28.2/backend/comics/comics-document.c
|
||||||
|
@@ -453,23 +453,27 @@ comics_document_render_pixbuf (EvDocumen
|
||||||
|
|
||||||
|
name = ev_archive_get_entry_pathname (comics_document->archive);
|
||||||
|
if (g_strcmp0 (name, page_path) == 0) {
|
||||||
|
- size_t size = ev_archive_get_entry_size (comics_document->archive);
|
||||||
|
+ gint64 size = ev_archive_get_entry_size (comics_document->archive);
|
||||||
|
char *buf;
|
||||||
|
ssize_t read;
|
||||||
|
|
||||||
|
- buf = g_malloc (size);
|
||||||
|
- read = ev_archive_read_data (comics_document->archive, buf, size, &error);
|
||||||
|
- if (read <= 0) {
|
||||||
|
- if (read < 0) {
|
||||||
|
- g_warning ("Fatal error reading '%s' in archive: %s", name, error->message);
|
||||||
|
- g_error_free (error);
|
||||||
|
+ if (size < 0) {
|
||||||
|
+ g_warning ("Wrong size of entry '%s'.", name);
|
||||||
|
+ } else {
|
||||||
|
+ buf = g_malloc (size);
|
||||||
|
+ read = ev_archive_read_data (comics_document->archive, buf, size, &error);
|
||||||
|
+ if (read <= 0) {
|
||||||
|
+ if (read < 0) {
|
||||||
|
+ g_warning ("Fatal error reading '%s' in archive: %s", name, error->message);
|
||||||
|
+ g_error_free (error);
|
||||||
|
+ } else {
|
||||||
|
+ g_warning ("Read an empty file from the archive");
|
||||||
|
+ }
|
||||||
|
} else {
|
||||||
|
- g_warning ("Read an empty file from the archive");
|
||||||
|
+ gdk_pixbuf_loader_write (loader, (guchar *) buf, size, NULL);
|
||||||
|
}
|
||||||
|
- } else {
|
||||||
|
- gdk_pixbuf_loader_write (loader, (guchar *) buf, size, NULL);
|
||||||
|
+ g_free (buf);
|
||||||
|
}
|
||||||
|
- g_free (buf);
|
||||||
|
gdk_pixbuf_loader_close (loader, NULL);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
--- evince-3.28.2/backend/pdf/ev-poppler.cc
|
||||||
|
+++ evince-3.28.2/backend/pdf/ev-poppler.cc
|
||||||
|
@@ -859,6 +859,7 @@ pdf_document_get_info (EvDocument *docum
|
||||||
|
break;
|
||||||
|
case POPPLER_PAGE_LAYOUT_TWO_COLUMN_RIGHT:
|
||||||
|
info->layout = EV_DOCUMENT_LAYOUT_TWO_COLUMN_RIGHT;
|
||||||
|
+ break;
|
||||||
|
case POPPLER_PAGE_LAYOUT_TWO_PAGE_LEFT:
|
||||||
|
info->layout = EV_DOCUMENT_LAYOUT_TWO_PAGE_LEFT;
|
||||||
|
break;
|
||||||
|
--- evince-3.28.2/cut-n-paste/libgd/gd-two-lines-renderer.c
|
||||||
|
+++ evince-3.28.2/cut-n-paste/libgd/gd-two-lines-renderer.c
|
||||||
|
@@ -281,7 +281,7 @@ gd_two_lines_renderer_render (GtkCellRen
|
||||||
|
GtkStyleContext *context;
|
||||||
|
gint line_one_height;
|
||||||
|
GtkStateFlags state;
|
||||||
|
- GdkRectangle area, render_area = *cell_area;
|
||||||
|
+ GdkRectangle area, render_area;
|
||||||
|
gint xpad, ypad, x_offset_1, x_offset_2, y_offset;
|
||||||
|
PangoLayout *layout_one, *layout_two;
|
||||||
|
PangoRectangle layout_rect;
|
||||||
|
--- evince-3.28.2/cut-n-paste/synctex/synctex_parser.c
|
||||||
|
+++ evince-3.28.2/cut-n-paste/synctex/synctex_parser.c
|
||||||
|
@@ -2878,6 +2878,7 @@ int _synctex_open(const char * output, c
|
||||||
|
build_output[0] = '\0';
|
||||||
|
} else {
|
||||||
|
if (build_output != strcpy(build_output,output)) {
|
||||||
|
+ free(build_output);
|
||||||
|
return -4;
|
||||||
|
}
|
||||||
|
build_output[lpc-output]='\0';
|
||||||
|
@@ -2886,15 +2887,18 @@ int _synctex_open(const char * output, c
|
||||||
|
/* Append a path separator if necessary. */
|
||||||
|
if (!SYNCTEX_IS_PATH_SEPARATOR(build_output[strlen(build_directory)-1])) {
|
||||||
|
if (build_output != strcat(build_output,"/")) {
|
||||||
|
+ free(build_output);
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* Append the last path component of the output. */
|
||||||
|
if (build_output != strcat(build_output,lpc)) {
|
||||||
|
+ free(build_output);
|
||||||
|
return -3;
|
||||||
|
}
|
||||||
|
return __synctex_open(build_output,synctex_name_ref,file_ref,add_quotes,io_mode_ref);
|
||||||
|
}
|
||||||
|
+ free(build_output);
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
--- evince-3.28.2/cut-n-paste/synctex/synctex_parser_utils.c
|
||||||
|
+++ evince-3.28.2/cut-n-paste/synctex/synctex_parser_utils.c
|
||||||
|
@@ -292,6 +292,7 @@ char * _synctex_merge_strings(const char
|
||||||
|
size_t len = strlen(temp);
|
||||||
|
if(UINT_MAX-len<size) {
|
||||||
|
_synctex_error("! _synctex_merge_strings: Capacity exceeded.");
|
||||||
|
+ va_end(arg);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
size+=len;
|
||||||
|
@@ -312,6 +313,7 @@ char * _synctex_merge_strings(const char
|
||||||
|
_synctex_error("! _synctex_merge_strings: Copy problem");
|
||||||
|
free(result);
|
||||||
|
result = NULL;
|
||||||
|
+ va_end(arg);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
dest += size;
|
||||||
|
@@ -393,7 +395,7 @@ int _synctex_get_name(const char * outpu
|
||||||
|
free(dir_name);
|
||||||
|
dir_name = NULL;
|
||||||
|
free(core_name);
|
||||||
|
- dir_name = NULL;
|
||||||
|
+ core_name = NULL;
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
dir_name[size] = '\0';
|
||||||
|
@@ -487,6 +489,12 @@ int _synctex_get_name(const char * outpu
|
||||||
|
/* set up the returned values */
|
||||||
|
* synctex_name_ref = synctex_name;
|
||||||
|
* io_mode_ref = io_mode;
|
||||||
|
+ free(dir_name);
|
||||||
|
+ dir_name = NULL;
|
||||||
|
+ free(core_name);
|
||||||
|
+ core_name = NULL;
|
||||||
|
+ free(quoted_core_name);
|
||||||
|
+ quoted_core_name = NULL;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return -1;/* bad argument */
|
||||||
|
--- evince-3.28.2/cut-n-paste/unarr/rar/filter-rar.c
|
||||||
|
+++ evince-3.28.2/cut-n-paste/unarr/rar/filter-rar.c
|
||||||
|
@@ -273,8 +273,10 @@ static struct RARFilter *rar_create_filt
|
||||||
|
filter->prog = prog;
|
||||||
|
filter->globaldatalen = globaldatalen > RARProgramSystemGlobalSize ? globaldatalen : RARProgramSystemGlobalSize;
|
||||||
|
filter->globaldata = calloc(1, filter->globaldatalen);
|
||||||
|
- if (!filter->globaldata)
|
||||||
|
+ if (!filter->globaldata) {
|
||||||
|
+ free (filter);
|
||||||
|
return NULL;
|
||||||
|
+ }
|
||||||
|
if (globaldata)
|
||||||
|
memcpy(filter->globaldata, globaldata, globaldatalen);
|
||||||
|
if (registers)
|
||||||
|
--- evince-3.28.2/libdocument/ev-document.c
|
||||||
|
+++ evince-3.28.2/libdocument/ev-document.c
|
||||||
|
@@ -496,6 +496,9 @@ ev_document_load_stream (EvDocument
|
||||||
|
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
|
||||||
|
|
||||||
|
klass = EV_DOCUMENT_GET_CLASS (document);
|
||||||
|
+
|
||||||
|
+ g_return_val_if_fail (klass != NULL, FALSE);
|
||||||
|
+
|
||||||
|
if (!klass->load_stream) {
|
||||||
|
g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
|
||||||
|
"Backend does not support loading from stream");
|
||||||
|
@@ -544,6 +547,9 @@ ev_document_load_gfile (EvDocument
|
||||||
|
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
|
||||||
|
|
||||||
|
klass = EV_DOCUMENT_GET_CLASS (document);
|
||||||
|
+
|
||||||
|
+ g_return_val_if_fail (klass != NULL, FALSE);
|
||||||
|
+
|
||||||
|
if (!klass->load_gfile) {
|
||||||
|
g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
|
||||||
|
"Backend does not support loading from GFile");
|
||||||
|
@@ -867,6 +873,9 @@ ev_document_get_backend_info (EvDocument
|
||||||
|
g_return_val_if_fail (EV_IS_DOCUMENT (document), FALSE);
|
||||||
|
|
||||||
|
klass = EV_DOCUMENT_GET_CLASS (document);
|
||||||
|
+
|
||||||
|
+ g_return_val_if_fail (klass != NULL, FALSE);
|
||||||
|
+
|
||||||
|
if (klass->get_backend_info == NULL)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
--- evince-3.28.2/libview/ev-pixbuf-cache.c
|
||||||
|
+++ evince-3.28.2/libview/ev-pixbuf-cache.c
|
||||||
|
@@ -337,6 +337,11 @@ job_finished_cb (EvJob *job,
|
||||||
|
|
||||||
|
job_info = find_job_cache (pixbuf_cache, job_render->page);
|
||||||
|
|
||||||
|
+ if (job_info == NULL) {
|
||||||
|
+ g_warning ("Job info not found.");
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (ev_job_is_failed (job)) {
|
||||||
|
job_info->job = NULL;
|
||||||
|
g_object_unref (job);
|
||||||
|
@@ -721,6 +726,11 @@ add_job_if_needed (EvPixbufCache *pixbuf
|
||||||
|
gint device_scale = get_device_scale (pixbuf_cache);
|
||||||
|
gint width, height;
|
||||||
|
|
||||||
|
+ if (job_info == NULL) {
|
||||||
|
+ g_warning ("Adding job with NULL info.");
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (job_info->job)
|
||||||
|
return;
|
||||||
|
|
||||||
|
--- evince-3.28.2/libview/ev-print-operation.c
|
||||||
|
+++ evince-3.28.2/libview/ev-print-operation.c
|
||||||
|
@@ -181,6 +181,7 @@ ev_print_operation_set_current_page (EvP
|
||||||
|
EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
|
||||||
|
|
||||||
|
g_return_if_fail (EV_IS_PRINT_OPERATION (op));
|
||||||
|
+ g_return_if_fail (class != NULL);
|
||||||
|
g_return_if_fail (current_page >= 0);
|
||||||
|
|
||||||
|
class->set_current_page (op, current_page);
|
||||||
|
@@ -193,6 +194,7 @@ ev_print_operation_set_print_settings (E
|
||||||
|
EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
|
||||||
|
|
||||||
|
g_return_if_fail (EV_IS_PRINT_OPERATION (op));
|
||||||
|
+ g_return_if_fail (class != NULL);
|
||||||
|
g_return_if_fail (GTK_IS_PRINT_SETTINGS (print_settings));
|
||||||
|
|
||||||
|
class->set_print_settings (op, print_settings);
|
||||||
|
@@ -210,6 +212,7 @@ ev_print_operation_get_print_settings (E
|
||||||
|
EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
|
||||||
|
|
||||||
|
g_return_val_if_fail (EV_IS_PRINT_OPERATION (op), NULL);
|
||||||
|
+ g_return_val_if_fail (class != NULL, NULL);
|
||||||
|
|
||||||
|
return class->get_print_settings (op);
|
||||||
|
}
|
||||||
|
@@ -221,6 +224,7 @@ ev_print_operation_set_default_page_setu
|
||||||
|
EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
|
||||||
|
|
||||||
|
g_return_if_fail (EV_IS_PRINT_OPERATION (op));
|
||||||
|
+ g_return_if_fail (class != NULL);
|
||||||
|
g_return_if_fail (GTK_IS_PAGE_SETUP (page_setup));
|
||||||
|
|
||||||
|
class->set_default_page_setup (op, page_setup);
|
||||||
|
@@ -238,6 +242,7 @@ ev_print_operation_get_default_page_setu
|
||||||
|
EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
|
||||||
|
|
||||||
|
g_return_val_if_fail (EV_IS_PRINT_OPERATION (op), NULL);
|
||||||
|
+ g_return_val_if_fail (class != NULL, NULL);
|
||||||
|
|
||||||
|
return class->get_default_page_setup (op);
|
||||||
|
}
|
||||||
|
@@ -249,6 +254,7 @@ ev_print_operation_set_job_name (EvPrint
|
||||||
|
EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
|
||||||
|
|
||||||
|
g_return_if_fail (EV_IS_PRINT_OPERATION (op));
|
||||||
|
+ g_return_if_fail (class != NULL);
|
||||||
|
g_return_if_fail (job_name != NULL);
|
||||||
|
|
||||||
|
class->set_job_name (op, job_name);
|
||||||
|
@@ -260,6 +266,7 @@ ev_print_operation_get_job_name (EvPrint
|
||||||
|
EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
|
||||||
|
|
||||||
|
g_return_val_if_fail (EV_IS_PRINT_OPERATION (op), NULL);
|
||||||
|
+ g_return_val_if_fail (class != NULL, NULL);
|
||||||
|
|
||||||
|
return class->get_job_name (op);
|
||||||
|
}
|
||||||
|
@@ -271,6 +278,7 @@ ev_print_operation_run (EvPrintOperation
|
||||||
|
EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
|
||||||
|
|
||||||
|
g_return_if_fail (EV_IS_PRINT_OPERATION (op));
|
||||||
|
+ g_return_if_fail (class != NULL);
|
||||||
|
|
||||||
|
class->run (op, parent);
|
||||||
|
}
|
||||||
|
@@ -281,6 +289,7 @@ ev_print_operation_cancel (EvPrintOperat
|
||||||
|
EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
|
||||||
|
|
||||||
|
g_return_if_fail (EV_IS_PRINT_OPERATION (op));
|
||||||
|
+ g_return_if_fail (class != NULL);
|
||||||
|
|
||||||
|
class->cancel (op);
|
||||||
|
}
|
||||||
|
@@ -292,6 +301,7 @@ ev_print_operation_get_error (EvPrintOpe
|
||||||
|
EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
|
||||||
|
|
||||||
|
g_return_if_fail (EV_IS_PRINT_OPERATION (op));
|
||||||
|
+ g_return_if_fail (class != NULL);
|
||||||
|
|
||||||
|
class->get_error (op, error);
|
||||||
|
}
|
||||||
|
@@ -303,6 +313,7 @@ ev_print_operation_set_embed_page_setup
|
||||||
|
EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
|
||||||
|
|
||||||
|
g_return_if_fail (EV_IS_PRINT_OPERATION (op));
|
||||||
|
+ g_return_if_fail (class != NULL);
|
||||||
|
|
||||||
|
class->set_embed_page_setup (op, embed);
|
||||||
|
}
|
||||||
|
@@ -313,6 +324,7 @@ ev_print_operation_get_embed_page_setup
|
||||||
|
EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
|
||||||
|
|
||||||
|
g_return_val_if_fail (EV_IS_PRINT_OPERATION (op), FALSE);
|
||||||
|
+ g_return_val_if_fail (class != NULL, FALSE);
|
||||||
|
|
||||||
|
return class->get_embed_page_setup (op);
|
||||||
|
}
|
||||||
|
--- evince-3.28.2/libview/ev-timeline.c
|
||||||
|
+++ evince-3.28.2/libview/ev-timeline.c
|
||||||
|
@@ -289,9 +289,15 @@ ev_timeline_new (guint duration)
|
||||||
|
void
|
||||||
|
ev_timeline_start (EvTimeline *timeline)
|
||||||
|
{
|
||||||
|
+ EvTimelineClass *klass;
|
||||||
|
+
|
||||||
|
g_return_if_fail (EV_IS_TIMELINE (timeline));
|
||||||
|
|
||||||
|
- EV_TIMELINE_GET_CLASS (timeline)->start (timeline);
|
||||||
|
+ klass = EV_TIMELINE_GET_CLASS (timeline);
|
||||||
|
+
|
||||||
|
+ g_return_if_fail (klass != NULL);
|
||||||
|
+
|
||||||
|
+ klass->start (timeline);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
--- evince-3.28.2/libview/ev-view.c
|
||||||
|
+++ evince-3.28.2/libview/ev-view.c
|
||||||
|
@@ -1147,7 +1147,7 @@ ensure_rectangle_is_visible (EvView *vie
|
||||||
|
if (rect->x < adj_value) {
|
||||||
|
value = MAX (gtk_adjustment_get_lower (adjustment), rect->x - MARGIN);
|
||||||
|
gtk_adjustment_set_value (view->hadjustment, value);
|
||||||
|
- } else if (rect->x + rect->height > adj_value + allocation.width) {
|
||||||
|
+ } else if (rect->x + rect->width > adj_value + allocation.width) {
|
||||||
|
value = MIN (gtk_adjustment_get_upper (adjustment), rect->x + rect->width -
|
||||||
|
allocation.width + MARGIN);
|
||||||
|
gtk_adjustment_set_value (view->hadjustment, value);
|
||||||
|
@@ -1777,6 +1777,11 @@ goto_fitv_dest (EvView *view, EvLinkDest
|
||||||
|
|
||||||
|
page = ev_link_dest_get_page (dest);
|
||||||
|
|
||||||
|
+ if (page < 0) {
|
||||||
|
+ g_warning ("Link does not contain a page.");
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
left = ev_link_dest_get_left (dest, &change_left);
|
||||||
|
doc_point.x = change_left ? left : 0;
|
||||||
|
doc_point.y = 0;
|
||||||
|
@@ -1813,6 +1818,11 @@ goto_fith_dest (EvView *view, EvLinkDest
|
||||||
|
|
||||||
|
page = ev_link_dest_get_page (dest);
|
||||||
|
|
||||||
|
+ if (page < 0) {
|
||||||
|
+ g_warning ("Link does not contain a page.");
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
top = ev_link_dest_get_top (dest, &change_top);
|
||||||
|
doc_point.x = 0;
|
||||||
|
doc_point.y = change_top ? top : 0;
|
||||||
|
@@ -1846,6 +1856,11 @@ goto_fit_dest (EvView *view, EvLinkDest
|
||||||
|
|
||||||
|
page = ev_link_dest_get_page (dest);
|
||||||
|
|
||||||
|
+ if (page < 0) {
|
||||||
|
+ g_warning ("Link does not contain a page.");
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (view->allow_links_change_zoom) {
|
||||||
|
double zoom;
|
||||||
|
gdouble doc_width, doc_height;
|
||||||
|
--- evince-3.28.2/libview/ev-view-presentation.c
|
||||||
|
+++ evince-3.28.2/libview/ev-view-presentation.c
|
||||||
|
@@ -448,7 +448,7 @@ ev_view_presentation_update_current_page
|
||||||
|
{
|
||||||
|
gint jump;
|
||||||
|
|
||||||
|
- if (page < 0 || page >= ev_document_get_n_pages (pview->document))
|
||||||
|
+ if (page >= ev_document_get_n_pages (pview->document))
|
||||||
|
return;
|
||||||
|
|
||||||
|
ev_view_presentation_animation_cancel (pview);
|
||||||
|
--- evince-3.28.2/shell/ev-sidebar.c
|
||||||
|
+++ evince-3.28.2/shell/ev-sidebar.c
|
||||||
|
@@ -471,18 +471,19 @@ ev_sidebar_add_page (EvSidebar *ev_sid
|
||||||
|
|
||||||
|
|
||||||
|
/* Set the first item added as active */
|
||||||
|
- gtk_tree_model_get_iter_first (ev_sidebar->priv->page_model, &iter);
|
||||||
|
- gtk_tree_model_get (ev_sidebar->priv->page_model,
|
||||||
|
- &iter,
|
||||||
|
- PAGE_COLUMN_TITLE, &label_title,
|
||||||
|
- PAGE_COLUMN_NOTEBOOK_INDEX, &index,
|
||||||
|
- -1);
|
||||||
|
+ if (gtk_tree_model_get_iter_first (ev_sidebar->priv->page_model, &iter)) {
|
||||||
|
+ gtk_tree_model_get (ev_sidebar->priv->page_model,
|
||||||
|
+ &iter,
|
||||||
|
+ PAGE_COLUMN_TITLE, &label_title,
|
||||||
|
+ PAGE_COLUMN_NOTEBOOK_INDEX, &index,
|
||||||
|
+ -1);
|
||||||
|
|
||||||
|
- gtk_menu_set_active (GTK_MENU (ev_sidebar->priv->menu), index);
|
||||||
|
- gtk_label_set_text (GTK_LABEL (ev_sidebar->priv->label), label_title);
|
||||||
|
- gtk_notebook_set_current_page (GTK_NOTEBOOK (ev_sidebar->priv->notebook),
|
||||||
|
- index);
|
||||||
|
- g_free (label_title);
|
||||||
|
+ gtk_menu_set_active (GTK_MENU (ev_sidebar->priv->menu), index);
|
||||||
|
+ gtk_label_set_text (GTK_LABEL (ev_sidebar->priv->label), label_title);
|
||||||
|
+ gtk_notebook_set_current_page (GTK_NOTEBOOK (ev_sidebar->priv->notebook),
|
||||||
|
+ index);
|
||||||
|
+ g_free (label_title);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
--- evince-3.28.2/shell/ev-sidebar-thumbnails.c
|
||||||
|
+++ evince-3.28.2/shell/ev-sidebar-thumbnails.c
|
||||||
|
@@ -658,11 +658,11 @@ ev_sidebar_thumbnails_fill_model (EvSide
|
||||||
|
int i;
|
||||||
|
gint prev_width = -1;
|
||||||
|
gint prev_height = -1;
|
||||||
|
+ cairo_surface_t *loading_icon = NULL;
|
||||||
|
|
||||||
|
for (i = 0; i < sidebar_thumbnails->priv->n_pages; i++) {
|
||||||
|
gchar *page_label;
|
||||||
|
gchar *page_string;
|
||||||
|
- cairo_surface_t *loading_icon = NULL;
|
||||||
|
gint width, height;
|
||||||
|
|
||||||
|
page_label = ev_document_get_page_label (priv->document, i);
|
||||||
|
--- evince-3.28.2/shell/ev-window.c
|
||||||
|
+++ evince-3.28.2/shell/ev-window.c
|
||||||
|
@@ -3121,10 +3121,10 @@ ev_window_load_print_settings_from_metad
|
||||||
|
for (i = 0; i < G_N_ELEMENTS (document_print_settings); i++) {
|
||||||
|
gchar *value = NULL;
|
||||||
|
|
||||||
|
- ev_metadata_get_string (window->priv->metadata,
|
||||||
|
- document_print_settings[i], &value);
|
||||||
|
- gtk_print_settings_set (print_settings,
|
||||||
|
- document_print_settings[i], value);
|
||||||
|
+ if (ev_metadata_get_string (window->priv->metadata,
|
||||||
|
+ document_print_settings[i], &value))
|
||||||
|
+ gtk_print_settings_set (print_settings,
|
||||||
|
+ document_print_settings[i], value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -4705,12 +4705,16 @@ ev_window_cmd_bookmarks_add (GSimpleActi
|
||||||
|
gchar *page_label;
|
||||||
|
|
||||||
|
bm.page = ev_document_model_get_page (window->priv->model);
|
||||||
|
- page_label = ev_document_get_page_label (window->priv->document, bm.page);
|
||||||
|
- bm.title = g_strdup_printf (_("Page %s"), page_label);
|
||||||
|
- g_free (page_label);
|
||||||
|
+ if (bm.page >= 0) {
|
||||||
|
+ page_label = ev_document_get_page_label (window->priv->document, bm.page);
|
||||||
|
+ bm.title = g_strdup_printf (_("Page %s"), page_label);
|
||||||
|
+ g_free (page_label);
|
||||||
|
|
||||||
|
- /* EvBookmarks takes ownership of bookmark */
|
||||||
|
- ev_bookmarks_add (window->priv->bookmarks, &bm);
|
||||||
|
+ /* EvBookmarks takes ownership of bookmark */
|
||||||
|
+ ev_bookmarks_add (window->priv->bookmarks, &bm);
|
||||||
|
+ } else {
|
||||||
|
+ g_warning ("Bookmarking of a page failed.");
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
1429
SOURCES/evince-3.28.4-annotations-a11y-names.patch
Normal file
1429
SOURCES/evince-3.28.4-annotations-a11y-names.patch
Normal file
File diff suppressed because it is too large
Load Diff
36
SOURCES/evince-3.28.4-application-id.patch
Normal file
36
SOURCES/evince-3.28.4-application-id.patch
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
From 9363553a3087c7dbfa93e1d342283600ceb5993b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Marek Kasik <mkasik@redhat.com>
|
||||||
|
Date: Fri, 22 Jun 2018 17:00:20 +0200
|
||||||
|
Subject: shell: Set application-id
|
||||||
|
|
||||||
|
Set "application-id" property for evince's GApplication
|
||||||
|
to "org.gnome.evince.Application".
|
||||||
|
An assertion warning is shown in shell if it is not set.
|
||||||
|
|
||||||
|
Even though we use G_APPLICATION_NON_UNIQUE, the application
|
||||||
|
ID is still required. See:
|
||||||
|
https://bugzilla.gnome.org/show_bug.cgi?id=646985#c2
|
||||||
|
|
||||||
|
Closes: https://gitlab.gnome.org/GNOME/evince/issues/918
|
||||||
|
|
||||||
|
diff --git a/shell/ev-application.c b/shell/ev-application.c
|
||||||
|
index 7d546933..f173d7a4 100644
|
||||||
|
--- a/shell/ev-application.c
|
||||||
|
+++ b/shell/ev-application.c
|
||||||
|
@@ -65,6 +65,7 @@ struct _EvApplicationClass {
|
||||||
|
G_DEFINE_TYPE (EvApplication, ev_application, GTK_TYPE_APPLICATION)
|
||||||
|
|
||||||
|
#ifdef ENABLE_DBUS
|
||||||
|
+#define APPLICATION_DBUS_NAME "org.gnome.evince.Application"
|
||||||
|
#define APPLICATION_DBUS_OBJECT_PATH "/org/gnome/evince/Evince"
|
||||||
|
#define APPLICATION_DBUS_INTERFACE "org.gnome.evince.Application"
|
||||||
|
|
||||||
|
@@ -102,7 +103,7 @@ ev_application_new (void)
|
||||||
|
const GApplicationFlags flags = G_APPLICATION_NON_UNIQUE;
|
||||||
|
|
||||||
|
return g_object_new (EV_TYPE_APPLICATION,
|
||||||
|
- "application-id", NULL,
|
||||||
|
+ "application-id", APPLICATION_DBUS_NAME,
|
||||||
|
"flags", flags,
|
||||||
|
NULL);
|
||||||
|
}
|
62
SOURCES/evince-3.28.4-move-annotations.patch
Normal file
62
SOURCES/evince-3.28.4-move-annotations.patch
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
From 9d6ebdb168f8438449c43e63f38f687e09c8fe4f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Marek Kasik <mkasik@redhat.com>
|
||||||
|
Date: Thu, 5 Mar 2020 13:21:59 +0100
|
||||||
|
Subject: [PATCH] ev-view: Move annotation popup window to new position
|
||||||
|
|
||||||
|
Open annotation popup window at new position if its
|
||||||
|
annotation was moved when the popup window was hidden.
|
||||||
|
This places existing popup window the same way as when
|
||||||
|
it was created.
|
||||||
|
---
|
||||||
|
libview/ev-view.c | 35 +++++++++++++++++++++++++++++++++++
|
||||||
|
1 file changed, 35 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/libview/ev-view.c b/libview/ev-view.c
|
||||||
|
index ffbe1704..43a0410d 100644
|
||||||
|
--- a/libview/ev-view.c
|
||||||
|
+++ b/libview/ev-view.c
|
||||||
|
@@ -3390,6 +3390,41 @@ ev_view_handle_annotation (EvView *view,
|
||||||
|
|
||||||
|
parent = GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (view)));
|
||||||
|
window = ev_view_create_annotation_window (view, annot, parent);
|
||||||
|
+ } else if (window && ev_annotation_markup_has_popup (EV_ANNOTATION_MARKUP (annot))) {
|
||||||
|
+ EvViewWindowChild *child;
|
||||||
|
+ EvMappingList *annots;
|
||||||
|
+ EvRectangle popup_rect;
|
||||||
|
+ EvMapping *mapping;
|
||||||
|
+ GdkPoint view_point;
|
||||||
|
+ EvPoint annotation_corner;
|
||||||
|
+
|
||||||
|
+ child = ev_view_get_window_child (view, window);
|
||||||
|
+ annots = ev_page_cache_get_annot_mapping (view->page_cache,
|
||||||
|
+ ev_annotation_get_page_index (annot));
|
||||||
|
+ mapping = ev_mapping_list_find (annots, annot);
|
||||||
|
+ ev_annotation_markup_get_rectangle (EV_ANNOTATION_MARKUP (annot),
|
||||||
|
+ &popup_rect);
|
||||||
|
+
|
||||||
|
+ popup_rect.x2 = mapping->area.x2 + popup_rect.x2 - popup_rect.x1;
|
||||||
|
+ popup_rect.y2 = mapping->area.y2 + popup_rect.y2 - popup_rect.y1;
|
||||||
|
+ popup_rect.x1 = mapping->area.x2;
|
||||||
|
+ popup_rect.y1 = mapping->area.y2;
|
||||||
|
+ g_object_set (annot,
|
||||||
|
+ "rectangle", &popup_rect,
|
||||||
|
+ "popup_is_open", TRUE,
|
||||||
|
+ NULL);
|
||||||
|
+
|
||||||
|
+ annotation_corner.x = mapping->area.x2;
|
||||||
|
+ annotation_corner.y = mapping->area.y2;
|
||||||
|
+
|
||||||
|
+ _ev_view_transform_doc_point_to_view_point (view,
|
||||||
|
+ ev_annotation_get_page_index (annot),
|
||||||
|
+ &annotation_corner,
|
||||||
|
+ &view_point);
|
||||||
|
+
|
||||||
|
+ ev_view_window_child_move (view, child,
|
||||||
|
+ child->parent_x + view_point.x - view->scroll_x,
|
||||||
|
+ child->parent_y + view_point.y - view->scroll_y);
|
||||||
|
}
|
||||||
|
ev_view_annotation_show_popup_window (view, window);
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.24.1
|
||||||
|
|
395
SOURCES/evince-3.28.4-reset-form-action.patch
Normal file
395
SOURCES/evince-3.28.4-reset-form-action.patch
Normal file
@ -0,0 +1,395 @@
|
|||||||
|
From fe9573da1278463a76b685c5cb3116d6e8241e27 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Marek Kasik <mkasik@redhat.com>
|
||||||
|
Date: Wed, 22 Jul 2020 16:26:17 +0200
|
||||||
|
Subject: [PATCH] Handle reset form action
|
||||||
|
|
||||||
|
Add new type of action EV_LINK_ACTION_TYPE_RESET_FORM for EvLinkAction
|
||||||
|
together with properties "reset-fields" and "exclude-reset-fields".
|
||||||
|
The properties controls which fields are reset and are set in PDF document.
|
||||||
|
This commit extends EvDocumentFormsInterface with new method "reset_form".
|
||||||
|
Check for poppler 0.90.0 or higher when calling its methods for resetting
|
||||||
|
of forms.
|
||||||
|
|
||||||
|
Issue #46
|
||||||
|
---
|
||||||
|
backend/pdf/ev-poppler.cc | 29 ++++++++++
|
||||||
|
libdocument/ev-document-forms.c | 10 ++++
|
||||||
|
libdocument/ev-document-forms.h | 4 ++
|
||||||
|
libdocument/ev-link-action.c | 81 ++++++++++++++++++++++++++++++++-
|
||||||
|
libdocument/ev-link-action.h | 51 +++++++++++----------
|
||||||
|
libview/ev-view.c | 4 ++
|
||||||
|
shell/ev-window.c | 15 ++++++
|
||||||
|
7 files changed, 166 insertions(+), 24 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/backend/pdf/ev-poppler.cc b/backend/pdf/ev-poppler.cc
|
||||||
|
index ee9a5c9f..efffef0b 100644
|
||||||
|
--- a/backend/pdf/ev-poppler.cc
|
||||||
|
+++ b/backend/pdf/ev-poppler.cc
|
||||||
|
@@ -1721,6 +1721,23 @@ ev_link_from_action (PdfDocument *pdf_document,
|
||||||
|
case POPPLER_ACTION_JAVASCRIPT:
|
||||||
|
unimplemented_action = "POPPLER_ACTION_JAVASCRIPT";
|
||||||
|
break;
|
||||||
|
+#if POPPLER_CHECK_VERSION(0, 90, 0)
|
||||||
|
+ case POPPLER_ACTION_RESET_FORM: {
|
||||||
|
+ gboolean exclude_reset_fields;
|
||||||
|
+ GList *reset_fields = NULL;
|
||||||
|
+ GList *iter;
|
||||||
|
+
|
||||||
|
+ for (iter = action->reset_form.fields; iter; iter = iter->next)
|
||||||
|
+ reset_fields = g_list_prepend (reset_fields, g_strdup ((char *) iter->data));
|
||||||
|
+
|
||||||
|
+ exclude_reset_fields = action->reset_form.exclude;
|
||||||
|
+
|
||||||
|
+ /* The action takes the ownership of the list */
|
||||||
|
+ ev_action = ev_link_action_new_reset_form (g_list_reverse (reset_fields),
|
||||||
|
+ exclude_reset_fields);
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
case POPPLER_ACTION_UNKNOWN:
|
||||||
|
unimplemented_action = "POPPLER_ACTION_UNKNOWN";
|
||||||
|
}
|
||||||
|
@@ -2845,6 +2860,17 @@ pdf_document_forms_document_is_modified (EvDocumentForms *document)
|
||||||
|
return PDF_DOCUMENT (document)->forms_modified;
|
||||||
|
}
|
||||||
|
|
||||||
|
+static void
|
||||||
|
+pdf_document_forms_reset_form (EvDocumentForms *document,
|
||||||
|
+ EvLinkAction *action)
|
||||||
|
+{
|
||||||
|
+#if POPPLER_CHECK_VERSION(0, 90, 0)
|
||||||
|
+ poppler_document_reset_form (PDF_DOCUMENT (document)->document,
|
||||||
|
+ ev_link_action_get_reset_fields (action),
|
||||||
|
+ ev_link_action_get_exclude_reset_fields (action));
|
||||||
|
+#endif
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static gchar *
|
||||||
|
pdf_document_forms_form_field_text_get_text (EvDocumentForms *document,
|
||||||
|
EvFormField *field)
|
||||||
|
@@ -3044,6 +3068,7 @@ pdf_document_document_forms_iface_init (EvDocumentFormsInterface *iface)
|
||||||
|
{
|
||||||
|
iface->get_form_fields = pdf_document_forms_get_form_fields;
|
||||||
|
iface->document_is_modified = pdf_document_forms_document_is_modified;
|
||||||
|
+ iface->reset_form = pdf_document_forms_reset_form;
|
||||||
|
iface->form_field_text_get_text = pdf_document_forms_form_field_text_get_text;
|
||||||
|
iface->form_field_text_set_text = pdf_document_forms_form_field_text_set_text;
|
||||||
|
iface->form_field_button_set_state = pdf_document_forms_form_field_button_set_state;
|
||||||
|
diff --git a/libdocument/ev-document-forms.c b/libdocument/ev-document-forms.c
|
||||||
|
index 19417c77..1fe983b1 100644
|
||||||
|
--- a/libdocument/ev-document-forms.c
|
||||||
|
+++ b/libdocument/ev-document-forms.c
|
||||||
|
@@ -45,6 +45,16 @@ ev_document_forms_document_is_modified (EvDocumentForms *document_forms)
|
||||||
|
return (iface->document_is_modified) ? iface->document_is_modified (document_forms) : FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
+void
|
||||||
|
+ev_document_forms_reset_form (EvDocumentForms *document_forms,
|
||||||
|
+ EvLinkAction *action)
|
||||||
|
+{
|
||||||
|
+ EvDocumentFormsInterface *iface = EV_DOCUMENT_FORMS_GET_IFACE (document_forms);
|
||||||
|
+
|
||||||
|
+ if (iface->reset_form)
|
||||||
|
+ iface->reset_form (document_forms, action);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
gchar *
|
||||||
|
ev_document_forms_form_field_text_get_text (EvDocumentForms *document_forms,
|
||||||
|
EvFormField *field)
|
||||||
|
diff --git a/libdocument/ev-document-forms.h b/libdocument/ev-document-forms.h
|
||||||
|
index 198f3eb5..f78dba6b 100644
|
||||||
|
--- a/libdocument/ev-document-forms.h
|
||||||
|
+++ b/libdocument/ev-document-forms.h
|
||||||
|
@@ -82,6 +82,8 @@ struct _EvDocumentFormsInterface
|
||||||
|
const gchar *text);
|
||||||
|
gchar *(* form_field_choice_get_text) (EvDocumentForms *document_forms,
|
||||||
|
EvFormField *field);
|
||||||
|
+ void (* reset_form) (EvDocumentForms *document_forms,
|
||||||
|
+ EvLinkAction *action);
|
||||||
|
};
|
||||||
|
|
||||||
|
GType ev_document_forms_get_type (void) G_GNUC_CONST;
|
||||||
|
@@ -122,6 +124,8 @@ void ev_document_forms_form_field_choice_set_text (EvDocumentFor
|
||||||
|
const gchar *text);
|
||||||
|
gchar *ev_document_forms_form_field_choice_get_text (EvDocumentForms *document_forms,
|
||||||
|
EvFormField *field);
|
||||||
|
+void ev_document_forms_reset_form (EvDocumentForms *document_forms,
|
||||||
|
+ EvLinkAction *action);
|
||||||
|
|
||||||
|
G_END_DECLS
|
||||||
|
|
||||||
|
diff --git a/libdocument/ev-link-action.c b/libdocument/ev-link-action.c
|
||||||
|
index 0e7761d7..cbc5d620 100644
|
||||||
|
--- a/libdocument/ev-link-action.c
|
||||||
|
+++ b/libdocument/ev-link-action.c
|
||||||
|
@@ -32,7 +32,9 @@ enum {
|
||||||
|
PROP_NAME,
|
||||||
|
PROP_SHOW_LIST,
|
||||||
|
PROP_HIDE_LIST,
|
||||||
|
- PROP_TOGGLE_LIST
|
||||||
|
+ PROP_TOGGLE_LIST,
|
||||||
|
+ PROP_RESET_FIELDS,
|
||||||
|
+ PROP_EXCLUDE_RESET_FIELDS
|
||||||
|
};
|
||||||
|
|
||||||
|
struct _EvLinkAction {
|
||||||
|
@@ -55,6 +57,8 @@ struct _EvLinkActionPrivate {
|
||||||
|
GList *show_list;
|
||||||
|
GList *hide_list;
|
||||||
|
GList *toggle_list;
|
||||||
|
+ GList *reset_fields;
|
||||||
|
+ gboolean exclude_reset_fields;
|
||||||
|
};
|
||||||
|
|
||||||
|
G_DEFINE_TYPE (EvLinkAction, ev_link_action, G_TYPE_OBJECT)
|
||||||
|
@@ -155,6 +159,34 @@ ev_link_action_get_toggle_list (EvLinkAction *self)
|
||||||
|
return self->priv->toggle_list;
|
||||||
|
}
|
||||||
|
|
||||||
|
+/**
|
||||||
|
+ * ev_link_action_get_reset_fields:
|
||||||
|
+ * @self: an #EvLinkAction
|
||||||
|
+ *
|
||||||
|
+ * Returns: (transfer none) (element-type gchar *): a list of fields to reset
|
||||||
|
+ */
|
||||||
|
+GList *
|
||||||
|
+ev_link_action_get_reset_fields (EvLinkAction *self)
|
||||||
|
+{
|
||||||
|
+ g_return_val_if_fail (EV_IS_LINK_ACTION (self), NULL);
|
||||||
|
+
|
||||||
|
+ return self->priv->reset_fields;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * ev_link_action_get_exclude_reset_fields:
|
||||||
|
+ * @self: an #EvLinkAction
|
||||||
|
+ *
|
||||||
|
+ * Returns: whether to exclude reset fields when resetting form
|
||||||
|
+ */
|
||||||
|
+gboolean
|
||||||
|
+ev_link_action_get_exclude_reset_fields (EvLinkAction *self)
|
||||||
|
+{
|
||||||
|
+ g_return_val_if_fail (EV_IS_LINK_ACTION (self), NULL);
|
||||||
|
+
|
||||||
|
+ return self->priv->exclude_reset_fields;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static void
|
||||||
|
ev_link_action_get_property (GObject *object,
|
||||||
|
guint prop_id,
|
||||||
|
@@ -193,6 +225,12 @@ ev_link_action_get_property (GObject *object,
|
||||||
|
case PROP_TOGGLE_LIST:
|
||||||
|
g_value_set_pointer (value, self->priv->toggle_list);
|
||||||
|
break;
|
||||||
|
+ case PROP_RESET_FIELDS:
|
||||||
|
+ g_value_set_pointer (value, self->priv->reset_fields);
|
||||||
|
+ break;
|
||||||
|
+ case PROP_EXCLUDE_RESET_FIELDS:
|
||||||
|
+ g_value_set_boolean (value, self->priv->exclude_reset_fields);
|
||||||
|
+ break;
|
||||||
|
default:
|
||||||
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object,
|
||||||
|
prop_id,
|
||||||
|
@@ -241,6 +279,12 @@ ev_link_action_set_property (GObject *object,
|
||||||
|
case PROP_TOGGLE_LIST:
|
||||||
|
self->priv->toggle_list = g_value_get_pointer (value);
|
||||||
|
break;
|
||||||
|
+ case PROP_RESET_FIELDS:
|
||||||
|
+ self->priv->reset_fields = g_value_get_pointer (value);
|
||||||
|
+ break;
|
||||||
|
+ case PROP_EXCLUDE_RESET_FIELDS:
|
||||||
|
+ self->priv->exclude_reset_fields = g_value_get_boolean (value);
|
||||||
|
+ break;
|
||||||
|
default:
|
||||||
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object,
|
||||||
|
prop_id,
|
||||||
|
@@ -296,6 +340,11 @@ ev_link_action_finalize (GObject *object)
|
||||||
|
priv->toggle_list = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (priv->reset_fields) {
|
||||||
|
+ g_list_free_full (priv->reset_fields, g_free);
|
||||||
|
+ priv->reset_fields = NULL;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
G_OBJECT_CLASS (ev_link_action_parent_class)->finalize (object);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -309,6 +358,8 @@ ev_link_action_init (EvLinkAction *ev_link_action)
|
||||||
|
ev_link_action->priv->filename = NULL;
|
||||||
|
ev_link_action->priv->params = NULL;
|
||||||
|
ev_link_action->priv->name = NULL;
|
||||||
|
+ ev_link_action->priv->reset_fields = NULL;
|
||||||
|
+ ev_link_action->priv->exclude_reset_fields = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
@@ -402,6 +453,23 @@ ev_link_action_class_init (EvLinkActionClass *ev_link_action_class)
|
||||||
|
G_PARAM_READWRITE |
|
||||||
|
G_PARAM_CONSTRUCT_ONLY |
|
||||||
|
G_PARAM_STATIC_STRINGS));
|
||||||
|
+ g_object_class_install_property (g_object_class,
|
||||||
|
+ PROP_RESET_FIELDS,
|
||||||
|
+ g_param_spec_pointer ("reset-fields",
|
||||||
|
+ "ResetFields",
|
||||||
|
+ "The list of fields that should be/should not be reset",
|
||||||
|
+ G_PARAM_READWRITE |
|
||||||
|
+ G_PARAM_CONSTRUCT_ONLY |
|
||||||
|
+ G_PARAM_STATIC_STRINGS));
|
||||||
|
+ g_object_class_install_property (g_object_class,
|
||||||
|
+ PROP_EXCLUDE_RESET_FIELDS,
|
||||||
|
+ g_param_spec_boolean ("exclude-reset-fields",
|
||||||
|
+ "ExcludeResetFields",
|
||||||
|
+ "Whether to exclude/include reset-fields when resetting form",
|
||||||
|
+ FALSE,
|
||||||
|
+ G_PARAM_READWRITE |
|
||||||
|
+ G_PARAM_CONSTRUCT_ONLY |
|
||||||
|
+ G_PARAM_STATIC_STRINGS));
|
||||||
|
}
|
||||||
|
|
||||||
|
EvLinkAction *
|
||||||
|
@@ -474,6 +542,17 @@ ev_link_action_new_layers_state (GList *show_list,
|
||||||
|
NULL));
|
||||||
|
}
|
||||||
|
|
||||||
|
+EvLinkAction *
|
||||||
|
+ev_link_action_new_reset_form (GList *reset_fields,
|
||||||
|
+ gboolean exclude_reset_fields)
|
||||||
|
+{
|
||||||
|
+ return EV_LINK_ACTION (g_object_new (EV_TYPE_LINK_ACTION,
|
||||||
|
+ "exclude-reset-fields", exclude_reset_fields,
|
||||||
|
+ "reset-fields", reset_fields,
|
||||||
|
+ "type", EV_LINK_ACTION_TYPE_RESET_FORM,
|
||||||
|
+ NULL));
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* ev_link_action_equal:
|
||||||
|
* @a: a #EvLinkAction
|
||||||
|
diff --git a/libdocument/ev-link-action.h b/libdocument/ev-link-action.h
|
||||||
|
index 3d6c5fd8..4dffeb74 100644
|
||||||
|
--- a/libdocument/ev-link-action.h
|
||||||
|
+++ b/libdocument/ev-link-action.h
|
||||||
|
@@ -47,36 +47,41 @@ typedef enum {
|
||||||
|
EV_LINK_ACTION_TYPE_EXTERNAL_URI,
|
||||||
|
EV_LINK_ACTION_TYPE_LAUNCH,
|
||||||
|
EV_LINK_ACTION_TYPE_NAMED,
|
||||||
|
- EV_LINK_ACTION_TYPE_LAYERS_STATE
|
||||||
|
+ EV_LINK_ACTION_TYPE_LAYERS_STATE,
|
||||||
|
+ EV_LINK_ACTION_TYPE_RESET_FORM
|
||||||
|
/* We'll probably fill this in more as we support the other types of
|
||||||
|
* actions */
|
||||||
|
} EvLinkActionType;
|
||||||
|
|
||||||
|
-GType ev_link_action_get_type (void) G_GNUC_CONST;
|
||||||
|
+GType ev_link_action_get_type (void) G_GNUC_CONST;
|
||||||
|
|
||||||
|
-EvLinkActionType ev_link_action_get_action_type (EvLinkAction *self);
|
||||||
|
-EvLinkDest *ev_link_action_get_dest (EvLinkAction *self);
|
||||||
|
-const gchar *ev_link_action_get_uri (EvLinkAction *self);
|
||||||
|
-const gchar *ev_link_action_get_filename (EvLinkAction *self);
|
||||||
|
-const gchar *ev_link_action_get_params (EvLinkAction *self);
|
||||||
|
-const gchar *ev_link_action_get_name (EvLinkAction *self);
|
||||||
|
-GList *ev_link_action_get_show_list (EvLinkAction *self);
|
||||||
|
-GList *ev_link_action_get_hide_list (EvLinkAction *self);
|
||||||
|
-GList *ev_link_action_get_toggle_list (EvLinkAction *self);
|
||||||
|
+EvLinkActionType ev_link_action_get_action_type (EvLinkAction *self);
|
||||||
|
+EvLinkDest *ev_link_action_get_dest (EvLinkAction *self);
|
||||||
|
+const gchar *ev_link_action_get_uri (EvLinkAction *self);
|
||||||
|
+const gchar *ev_link_action_get_filename (EvLinkAction *self);
|
||||||
|
+const gchar *ev_link_action_get_params (EvLinkAction *self);
|
||||||
|
+const gchar *ev_link_action_get_name (EvLinkAction *self);
|
||||||
|
+GList *ev_link_action_get_show_list (EvLinkAction *self);
|
||||||
|
+GList *ev_link_action_get_hide_list (EvLinkAction *self);
|
||||||
|
+GList *ev_link_action_get_toggle_list (EvLinkAction *self);
|
||||||
|
+GList *ev_link_action_get_reset_fields (EvLinkAction *self);
|
||||||
|
+gboolean ev_link_action_get_exclude_reset_fields (EvLinkAction *self);
|
||||||
|
|
||||||
|
-EvLinkAction *ev_link_action_new_dest (EvLinkDest *dest);
|
||||||
|
-EvLinkAction *ev_link_action_new_remote (EvLinkDest *dest,
|
||||||
|
- const gchar *filename);
|
||||||
|
-EvLinkAction *ev_link_action_new_external_uri (const gchar *uri);
|
||||||
|
-EvLinkAction *ev_link_action_new_launch (const gchar *filename,
|
||||||
|
- const gchar *params);
|
||||||
|
-EvLinkAction *ev_link_action_new_named (const gchar *name);
|
||||||
|
-EvLinkAction *ev_link_action_new_layers_state (GList *show_list,
|
||||||
|
- GList *hide_list,
|
||||||
|
- GList *toggle_list);
|
||||||
|
+EvLinkAction *ev_link_action_new_dest (EvLinkDest *dest);
|
||||||
|
+EvLinkAction *ev_link_action_new_remote (EvLinkDest *dest,
|
||||||
|
+ const gchar *filename);
|
||||||
|
+EvLinkAction *ev_link_action_new_external_uri (const gchar *uri);
|
||||||
|
+EvLinkAction *ev_link_action_new_launch (const gchar *filename,
|
||||||
|
+ const gchar *params);
|
||||||
|
+EvLinkAction *ev_link_action_new_named (const gchar *name);
|
||||||
|
+EvLinkAction *ev_link_action_new_layers_state (GList *show_list,
|
||||||
|
+ GList *hide_list,
|
||||||
|
+ GList *toggle_list);
|
||||||
|
+EvLinkAction *ev_link_action_new_reset_form (GList *fields,
|
||||||
|
+ gboolean exclude_fields);
|
||||||
|
|
||||||
|
-gboolean ev_link_action_equal (EvLinkAction *a,
|
||||||
|
- EvLinkAction *b);
|
||||||
|
+gboolean ev_link_action_equal (EvLinkAction *a,
|
||||||
|
+ EvLinkAction *b);
|
||||||
|
|
||||||
|
G_END_DECLS
|
||||||
|
|
||||||
|
diff --git a/libview/ev-view.c b/libview/ev-view.c
|
||||||
|
index c52ecaf3..e2ca6b5a 100644
|
||||||
|
--- a/libview/ev-view.c
|
||||||
|
+++ b/libview/ev-view.c
|
||||||
|
@@ -2095,6 +2095,7 @@ ev_view_handle_link (EvView *view, EvLink *link)
|
||||||
|
case EV_LINK_ACTION_TYPE_EXTERNAL_URI:
|
||||||
|
case EV_LINK_ACTION_TYPE_LAUNCH:
|
||||||
|
case EV_LINK_ACTION_TYPE_NAMED:
|
||||||
|
+ case EV_LINK_ACTION_TYPE_RESET_FORM:
|
||||||
|
g_signal_emit (view, signals[SIGNAL_EXTERNAL_LINK], 0, action);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
@@ -2167,6 +2168,9 @@ tip_from_link (EvView *view, EvLink *link)
|
||||||
|
case EV_LINK_ACTION_TYPE_NAMED:
|
||||||
|
msg = tip_from_action_named (action);
|
||||||
|
break;
|
||||||
|
+ case EV_LINK_ACTION_TYPE_RESET_FORM:
|
||||||
|
+ msg = g_strdup_printf (_("Reset form"));
|
||||||
|
+ break;
|
||||||
|
default:
|
||||||
|
if (title)
|
||||||
|
msg = g_strdup (title);
|
||||||
|
diff --git a/shell/ev-window.c b/shell/ev-window.c
|
||||||
|
index 1f3ea24d..81a6ede1 100644
|
||||||
|
--- a/shell/ev-window.c
|
||||||
|
+++ b/shell/ev-window.c
|
||||||
|
@@ -6867,6 +6867,18 @@ do_action_named (EvWindow *window, EvLinkAction *action)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+static void
|
||||||
|
+reset_form (EvWindow *window, EvLinkAction *action)
|
||||||
|
+{
|
||||||
|
+ EvWindowPrivate *priv = window->priv;
|
||||||
|
+ EvDocument *document = priv->document;
|
||||||
|
+
|
||||||
|
+ if (EV_IS_DOCUMENT_FORMS (document)) {
|
||||||
|
+ ev_document_forms_reset_form (EV_DOCUMENT_FORMS (document), action);
|
||||||
|
+ ev_view_reload (EV_VIEW (priv->view));
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static void
|
||||||
|
view_external_link_cb (EvWindow *window, EvLinkAction *action)
|
||||||
|
{
|
||||||
|
@@ -6893,6 +6905,9 @@ view_external_link_cb (EvWindow *window, EvLinkAction *action)
|
||||||
|
case EV_LINK_ACTION_TYPE_NAMED:
|
||||||
|
do_action_named (window, action);
|
||||||
|
break;
|
||||||
|
+ case EV_LINK_ACTION_TYPE_RESET_FORM:
|
||||||
|
+ reset_form (window, action);
|
||||||
|
+ break;
|
||||||
|
default:
|
||||||
|
g_assert_not_reached ();
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
1416
SPECS/evince.spec
Normal file
1416
SPECS/evince.spec
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user