Compare commits
No commits in common. 'c9' and 'i8c' have entirely different histories.
@ -1 +1 @@
|
|||||||
67c0f99cdb64f0b919e5f50604ab1824caf3d4ca SOURCES/evince-40.5.tar.xz
|
230997237a449bc71b2c6769f5d30a2d616fba03 SOURCES/evince-3.28.4.tar.xz
|
||||||
|
@ -1 +1 @@
|
|||||||
SOURCES/evince-40.5.tar.xz
|
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
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
@ -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
|
||||||
|
|
@ -0,0 +1,203 @@
|
|||||||
|
From 1f250861fa2ec6a7117f183459e62ac285d85db6 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Marek Kasik <mkasik@redhat.com>
|
||||||
|
Date: Tue, 2 Mar 2021 18:40:56 +0100
|
||||||
|
Subject: [PATCH] window: Show password dialog again
|
||||||
|
|
||||||
|
Show password dialog when trying to open a document for which we've
|
||||||
|
cancelled a password dialog before in recent view.
|
||||||
|
|
||||||
|
This is achieved by adding a signal "cancelled" to EvPasswordView since
|
||||||
|
only successfull entering of password was signaled before by "unlock" signal.
|
||||||
|
|
||||||
|
We also need to unregister current document with EvApplication and clear its uri
|
||||||
|
there to be able to open other documents in current window.
|
||||||
|
---
|
||||||
|
shell/ev-application.c | 16 ++++++++++++++++
|
||||||
|
shell/ev-application.h | 1 +
|
||||||
|
shell/ev-password-view.c | 14 ++++++++++++++
|
||||||
|
shell/ev-password-view.h | 3 ++-
|
||||||
|
shell/ev-window.c | 23 ++++++++++++++++++++++-
|
||||||
|
5 files changed, 55 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
From ef2d7ca9734c6a2e3ba0a80279d944352d355295 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tom Schoonjans <Tom.Schoonjans@rfi.ac.uk>
|
||||||
|
Date: Wed, 9 Jun 2021 06:39:48 +0100
|
||||||
|
Subject: [PATCH] ev-application: fix compilation error when DBus is disabled
|
||||||
|
|
||||||
|
---
|
||||||
|
shell/ev-application.c | 2 ++
|
||||||
|
1 file changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/shell/ev-application.c b/shell/ev-application.c
|
||||||
|
index 23871d9a..7a3b69ba 100644
|
||||||
|
--- a/shell/ev-application.c
|
||||||
|
+++ b/shell/ev-application.c
|
||||||
|
@@ -539,6 +539,7 @@ ev_application_unregister_uri (EvApplication *application,
|
||||||
|
g_error_free (error);
|
||||||
|
} else {
|
||||||
|
g_variant_unref (value);
|
||||||
|
+ application->doc_registered = FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* ENABLE_DBUS */
|
||||||
|
@@ -1166,6 +1167,23 @@ ev_application_get_uri (EvApplication *application)
|
||||||
|
return application->uri;
|
||||||
|
}
|
||||||
|
|
||||||
|
+/**
|
||||||
|
+ * ev_application_clear_uri:
|
||||||
|
+ * @application: The instance of the application.
|
||||||
|
+ *
|
||||||
|
+ * This unregisters current uri and clears it so that another document
|
||||||
|
+ * can be opened in this instance. E.g. after cancelled password dialog
|
||||||
|
+ * in recent view.
|
||||||
|
+ */
|
||||||
|
+void
|
||||||
|
+ev_application_clear_uri (EvApplication *application)
|
||||||
|
+{
|
||||||
|
+#ifdef ENABLE_DBUS
|
||||||
|
+ ev_application_unregister_uri (application, application->uri);
|
||||||
|
+#endif
|
||||||
|
+ g_clear_pointer (&application->uri, g_free);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* ev_application_get_media_keys:
|
||||||
|
* @application: The instance of the application.
|
||||||
|
diff --git a/shell/ev-application.h b/shell/ev-application.h
|
||||||
|
index 00a7a18b..f9b43ab3 100644
|
||||||
|
--- a/shell/ev-application.h
|
||||||
|
+++ b/shell/ev-application.h
|
||||||
|
@@ -66,6 +66,7 @@ void ev_application_open_uri_list (EvApplication *application,
|
||||||
|
gboolean ev_application_has_window (EvApplication *application);
|
||||||
|
guint ev_application_get_n_windows (EvApplication *application);
|
||||||
|
const gchar * ev_application_get_uri (EvApplication *application);
|
||||||
|
+void ev_application_clear_uri (EvApplication *application);
|
||||||
|
GObject *ev_application_get_media_keys (EvApplication *application);
|
||||||
|
|
||||||
|
const gchar *ev_application_get_dot_dir (EvApplication *application,
|
||||||
|
diff --git a/shell/ev-password-view.c b/shell/ev-password-view.c
|
||||||
|
index 9a916d55..0dab3c51 100644
|
||||||
|
--- a/shell/ev-password-view.c
|
||||||
|
+++ b/shell/ev-password-view.c
|
||||||
|
@@ -38,6 +38,7 @@
|
||||||
|
|
||||||
|
enum {
|
||||||
|
UNLOCK,
|
||||||
|
+ CANCELLED,
|
||||||
|
LAST_SIGNAL
|
||||||
|
};
|
||||||
|
struct _EvPasswordViewPrivate {
|
||||||
|
@@ -91,6 +92,15 @@ ev_password_view_class_init (EvPasswordViewClass *class)
|
||||||
|
g_cclosure_marshal_VOID__VOID,
|
||||||
|
G_TYPE_NONE, 0);
|
||||||
|
|
||||||
|
+ password_view_signals[CANCELLED] =
|
||||||
|
+ g_signal_new ("cancelled",
|
||||||
|
+ G_TYPE_FROM_CLASS (g_object_class),
|
||||||
|
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
|
||||||
|
+ G_STRUCT_OFFSET (EvPasswordViewClass, cancelled),
|
||||||
|
+ NULL, NULL,
|
||||||
|
+ g_cclosure_marshal_VOID__VOID,
|
||||||
|
+ G_TYPE_NONE, 0);
|
||||||
|
+
|
||||||
|
g_type_class_add_private (g_object_class, sizeof (EvPasswordViewPrivate));
|
||||||
|
|
||||||
|
g_object_class->finalize = ev_password_view_finalize;
|
||||||
|
@@ -183,6 +193,10 @@ ev_password_dialog_got_response (GtkDialog *dialog,
|
||||||
|
g_strdup (gtk_entry_get_text (GTK_ENTRY (password_view->priv->password_entry)));
|
||||||
|
|
||||||
|
g_signal_emit (password_view, password_view_signals[UNLOCK], 0);
|
||||||
|
+ } else if (response_id == GTK_RESPONSE_CANCEL ||
|
||||||
|
+ response_id == GTK_RESPONSE_CLOSE ||
|
||||||
|
+ response_id == GTK_RESPONSE_DELETE_EVENT) {
|
||||||
|
+ g_signal_emit (password_view, password_view_signals[CANCELLED], 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
gtk_widget_destroy (GTK_WIDGET (dialog));
|
||||||
|
diff --git a/shell/ev-password-view.h b/shell/ev-password-view.h
|
||||||
|
index c3fc5bbc..e279c612 100644
|
||||||
|
--- a/shell/ev-password-view.h
|
||||||
|
+++ b/shell/ev-password-view.h
|
||||||
|
@@ -40,7 +40,8 @@ struct _EvPasswordViewClass {
|
||||||
|
GtkViewportClass parent_class;
|
||||||
|
|
||||||
|
/* signals */
|
||||||
|
- void (*unlock) (EvPasswordView *self);
|
||||||
|
+ void (*unlock) (EvPasswordView *self);
|
||||||
|
+ void (*cancelled) (EvPasswordView *self);
|
||||||
|
};
|
||||||
|
|
||||||
|
GType ev_password_view_get_type (void) G_GNUC_CONST;
|
||||||
|
diff --git a/shell/ev-window.c b/shell/ev-window.c
|
||||||
|
index 077d577d..f728fa77 100644
|
||||||
|
--- a/shell/ev-window.c
|
||||||
|
+++ b/shell/ev-window.c
|
||||||
|
@@ -239,6 +239,8 @@ typedef struct {
|
||||||
|
|
||||||
|
/* Send to */
|
||||||
|
gboolean has_mailto_handler;
|
||||||
|
+
|
||||||
|
+ gboolean password_view_cancelled;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define EV_WINDOW_GET_PRIVATE(object) \
|
||||||
|
@@ -1804,6 +1806,7 @@ ev_window_password_view_unlock (EvWindow *ev_window)
|
||||||
|
password = ev_password_view_get_password (EV_PASSWORD_VIEW (ev_window->priv->password_view));
|
||||||
|
ev_job_load_set_password (EV_JOB_LOAD (ev_window->priv->load_job), password);
|
||||||
|
ev_job_scheduler_push_job (ev_window->priv->load_job, EV_JOB_PRIORITY_NONE);
|
||||||
|
+ ev_window->priv->password_view_cancelled = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
@@ -1821,6 +1824,18 @@ ev_window_clear_load_job (EvWindow *ev_window)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+static void
|
||||||
|
+ev_window_password_view_cancelled (EvWindow *ev_window)
|
||||||
|
+{
|
||||||
|
+ EvWindowPrivate *priv = ev_window->priv;
|
||||||
|
+
|
||||||
|
+ priv->password_view_cancelled = TRUE;
|
||||||
|
+ if (ev_window_is_recent_view (ev_window)) {
|
||||||
|
+ ev_window_clear_load_job (ev_window);
|
||||||
|
+ ev_application_clear_uri (EV_APP);
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static void
|
||||||
|
ev_window_clear_reload_job (EvWindow *ev_window)
|
||||||
|
{
|
||||||
|
@@ -2395,7 +2410,8 @@ ev_window_open_uri (EvWindow *ev_window,
|
||||||
|
g_strdup (search_string) : NULL;
|
||||||
|
|
||||||
|
if (ev_window->priv->uri &&
|
||||||
|
- g_ascii_strcasecmp (ev_window->priv->uri, uri) == 0) {
|
||||||
|
+ g_ascii_strcasecmp (ev_window->priv->uri, uri) == 0 &&
|
||||||
|
+ !ev_window->priv->password_view_cancelled) {
|
||||||
|
ev_window_reload_document (ev_window, dest);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
@@ -7643,11 +7659,16 @@ ev_window_init (EvWindow *ev_window)
|
||||||
|
allow_links_change_zoom);
|
||||||
|
ev_view_set_model (EV_VIEW (ev_window->priv->view), ev_window->priv->model);
|
||||||
|
|
||||||
|
+ ev_window->priv->password_view_cancelled = FALSE;
|
||||||
|
ev_window->priv->password_view = ev_password_view_new (GTK_WINDOW (ev_window));
|
||||||
|
g_signal_connect_swapped (ev_window->priv->password_view,
|
||||||
|
"unlock",
|
||||||
|
G_CALLBACK (ev_window_password_view_unlock),
|
||||||
|
ev_window);
|
||||||
|
+ g_signal_connect_swapped (ev_window->priv->password_view,
|
||||||
|
+ "cancelled",
|
||||||
|
+ G_CALLBACK (ev_window_password_view_cancelled),
|
||||||
|
+ ev_window);
|
||||||
|
g_signal_connect_object (ev_window->priv->view, "focus_in_event",
|
||||||
|
G_CALLBACK (view_actions_focus_in_cb),
|
||||||
|
ev_window, 0);
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -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);
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
From 9756fdca2efe71738d02792e839862cb5f0a0244 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Marek Kasik <mkasik@redhat.com>
|
||||||
|
Date: Tue, 16 Feb 2021 17:15:20 +0100
|
||||||
|
Subject: [PATCH] window: Use tmp dir as containing folder for non-native file
|
||||||
|
|
||||||
|
Show the temporary directory containing the downloaded document
|
||||||
|
as containing folder for documents from remote URIs.
|
||||||
|
|
||||||
|
It fails currently since it can not open remote URIs.
|
||||||
|
---
|
||||||
|
shell/ev-window.c | 4 ++++
|
||||||
|
1 file changed, 4 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/shell/ev-window.c b/shell/ev-window.c
|
||||||
|
index ba282e18..a1bc55f0 100644
|
||||||
|
--- a/shell/ev-window.c
|
||||||
|
+++ b/shell/ev-window.c
|
||||||
|
@@ -3290,6 +3290,10 @@ ev_window_cmd_open_containing_folder (GSimpleAction *action,
|
||||||
|
}
|
||||||
|
|
||||||
|
file = g_file_new_for_uri (window->priv->uri);
|
||||||
|
+ if (!g_file_is_native (file)) {
|
||||||
|
+ g_object_unref (file);
|
||||||
|
+ file = g_file_new_for_uri (ev_document_get_uri (window->priv->document));
|
||||||
|
+ }
|
||||||
|
list.next = list.prev = NULL;
|
||||||
|
list.data = file;
|
||||||
|
|
||||||
|
--
|
||||||
|
2.30.2
|
||||||
|
|
@ -0,0 +1,55 @@
|
|||||||
|
From 7c6c930f7fa164700d089d646dc8300340ca4600 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Nelson=20Ben=C3=ADtez=20Le=C3=B3n?= <nbenitezl@gmail.com>
|
||||||
|
Date: Mon, 6 Apr 2020 14:38:53 -0400
|
||||||
|
Subject: [PATCH] EvFormField: allow text entries to handle clicks
|
||||||
|
|
||||||
|
so the user can interact with the text entry for
|
||||||
|
eg. placing text cursor in an arbitrary position
|
||||||
|
|
||||||
|
Fixes #1364
|
||||||
|
---
|
||||||
|
libview/ev-view.c | 14 ++++++++++++++
|
||||||
|
1 file changed, 14 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/libview/ev-view.c b/libview/ev-view.c
|
||||||
|
index f73f0ce9..1ebcb584 100644
|
||||||
|
--- a/libview/ev-view.c
|
||||||
|
+++ b/libview/ev-view.c
|
||||||
|
@@ -2497,6 +2497,14 @@ ev_view_form_field_text_focus_out (GtkWidget *widget,
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
+static gboolean
|
||||||
|
+ev_view_form_field_text_button_pressed (GtkWidget *widget,
|
||||||
|
+ GdkEventButton *event,
|
||||||
|
+ gpointer data)
|
||||||
|
+{
|
||||||
|
+ return GDK_EVENT_STOP;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static GtkWidget *
|
||||||
|
ev_view_form_field_text_create_widget (EvView *view,
|
||||||
|
EvFormField *field)
|
||||||
|
@@ -2536,6 +2544,9 @@ ev_view_form_field_text_create_widget (EvView *view,
|
||||||
|
g_signal_connect_after (text, "activate",
|
||||||
|
G_CALLBACK (ev_view_form_field_destroy),
|
||||||
|
view);
|
||||||
|
+ g_signal_connect_after (text, "button-press-event",
|
||||||
|
+ G_CALLBACK (ev_view_form_field_text_button_pressed),
|
||||||
|
+ NULL);
|
||||||
|
break;
|
||||||
|
case EV_FORM_FIELD_TEXT_MULTILINE: {
|
||||||
|
GtkTextBuffer *buffer;
|
||||||
|
@@ -2554,6 +2565,9 @@ ev_view_form_field_text_create_widget (EvView *view,
|
||||||
|
g_signal_connect (buffer, "changed",
|
||||||
|
G_CALLBACK (ev_view_form_field_text_changed),
|
||||||
|
field);
|
||||||
|
+ g_signal_connect_after (text, "button-press-event",
|
||||||
|
+ G_CALLBACK (ev_view_form_field_text_button_pressed),
|
||||||
|
+ NULL);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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
|
||||||
|
|
@ -1,31 +0,0 @@
|
|||||||
From ad28a28e94c63c9ed44d01cf274e487ec85f2a46 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Marek Kasik <mkasik@redhat.com>
|
|
||||||
Date: Wed, 13 Oct 2021 11:00:07 +0200
|
|
||||||
Subject: [PATCH] Remove "Quit" from shortcuts page
|
|
||||||
|
|
||||||
The shortcut "Ctrl + q" does not do anything.
|
|
||||||
---
|
|
||||||
shell/help-overlay.ui | 7 -------
|
|
||||||
1 file changed, 7 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/shell/help-overlay.ui b/shell/help-overlay.ui
|
|
||||||
index d2057348..ced1dd56 100644
|
|
||||||
--- a/shell/help-overlay.ui
|
|
||||||
+++ b/shell/help-overlay.ui
|
|
||||||
@@ -396,13 +396,6 @@
|
|
||||||
<property name="accelerator"><Primary>W</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
- <child>
|
|
||||||
- <object class="GtkShortcutsShortcut">
|
|
||||||
- <property name="visible">True</property>
|
|
||||||
- <property name="title" translatable="yes" context="shortcut window">Quit</property>
|
|
||||||
- <property name="accelerator"><Primary>Q</property>
|
|
||||||
- </object>
|
|
||||||
- </child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkShortcutsShortcut">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
--
|
|
||||||
2.31.1
|
|
||||||
|
|
Loading…
Reference in new issue