Commit e060c5ae authored by Germán Poo-Caamaño's avatar Germán Poo-Caamaño

Revert "browser-plugin: Remove browser-plugin support"

This reverts commit f6204768.

Reverting the browser-plugin as I became aware of actual
users of this feature.
parent 1bae070a
......@@ -25,6 +25,10 @@ if ENABLE_PREVIEWER
SUBDIRS += previewer
endif
if ENABLE_BROWSER_PLUGIN
SUBDIRS += browser-plugin
endif
NULL =
pkgconfigdir = $(libdir)/pkgconfig
......
This diff is collapsed.
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright © 2014 Igalia S.L.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.
This program is distributed in the hope conf it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<gresources>
<gresource prefix="/org/gnome/evince/browser">
<file alias="ui/evince-browser.css" compressed="true">evince-browser.css</file>
<file alias="ui/thumbnail-frame.png" compressed="true">thumbnail-frame.png</file>
</gresource>
</gresources>
/*
* Copyright (C) 2014 Igalia S.L.
*
* Evince is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* Evince is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef EvBrowserPlugin_h
#define EvBrowserPlugin_h
#include <evince-document.h>
#include <evince-view.h>
#include "EvMemoryUtils.h"
#include "npapi.h"
#include "npruntime.h"
typedef union _XEvent XEvent;
struct EvBrowserPluginClass;
class EvBrowserPlugin: public NPObject {
public:
static EvBrowserPlugin* create(NPP);
static const char *nameString();
static const char *descriptionString();
// NPP API
NPError initialize(NPMIMEType, uint16_t mode, int16_t argc, char *argn[], char *argv[], NPSavedData *);
NPError setWindow(NPWindow *);
NPError newStream(NPMIMEType, NPStream *, NPBool seekable, uint16_t *stype);
NPError destroyStream(NPStream *, NPReason);
void streamAsFile(NPStream *, const char *fname);
int32_t writeReady(NPStream *);
int32_t write(NPStream *, int32_t offset, int32_t len, void *buffer);
void print(NPPrint *);
int16_t handleEvent(XEvent *);
void urlNotify(const char *url, NPReason, void *notifyData);
// Viewer API
EvDocumentModel *model() const { return m_model; }
unsigned currentPage() const;
unsigned pageCount() const;
double zoom() const;
void setZoom(double scale);
void goToPreviousPage();
void goToNextPage();
void goToPage(unsigned page);
void goToPage(const char *pageLabel);
void activateLink(EvLink *);
bool isContinuous() const;
void setContinuous(bool);
void toggleContinuous();
bool isDual() const;
void setDual(bool);
void toggleDual();
void zoomIn();
void zoomOut();
EvSizingMode sizingMode() const;
void setSizingMode(EvSizingMode);
void download() const;
void print() const;
bool toolbarVisible() const;
void setToolbarVisible(bool);
bool canDownload() const;
void setSearchModeEnabled(bool);
void search(EvJobFind *);
enum SearchDirection { Next, Previous };
void search(SearchDirection);
void clearSearch();
void restartSearch();
private:
EvBrowserPlugin(NPP);
virtual ~EvBrowserPlugin();
// Scripting interface
static NPObject *allocate(NPP, NPClass *);
static void deallocate(NPObject *);
static void invalidate(NPObject *);
static bool hasMethod(NPObject *, NPIdentifier name);
static bool invoke(NPObject *, NPIdentifier name, const NPVariant *args, uint32_t argCount, NPVariant *result);
static bool hasProperty(NPObject *, NPIdentifier name);
static bool getProperty(NPObject *, NPIdentifier name, NPVariant *);
static bool setProperty(NPObject *, NPIdentifier name, const NPVariant *);
NPP m_NPP;
GtkWidget *m_window;
EvDocumentModel *m_model;
EvView *m_view;
GtkWidget *m_toolbar;
unique_gptr<char> m_url;
static EvBrowserPluginClass s_pluginClass;
};
#endif // EvBrowserPlugin_h
This diff is collapsed.
This diff is collapsed.
/*
* Copyright (C) 2014 Igalia S.L.
*
* Evince is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* Evince is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef EvBrowserPluginToolbar_h
#define EvBrowserPluginToolbar_h
#include "EvBrowserPlugin.h"
#include <gtk/gtk.h>
#include <evince-view.h>
G_BEGIN_DECLS
#define EV_TYPE_BROWSER_PLUGIN_TOOLBAR (ev_browser_plugin_toolbar_get_type())
#define EV_BROWSER_PLUGIN_TOOLBAR(object) (G_TYPE_CHECK_INSTANCE_CAST((object), EV_TYPE_BROWSER_PLUGIN_TOOLBAR, EvBrowserPluginToolbar))
#define EV_IS_BROWSER_PLUGIN_TOOLBAR(object) (G_TYPE_CHECK_INSTANCE_TYPE((object), EV_TYPE_BROWSER_PLUGIN_TOOLBAR))
#define EV_BROWSER_PLUGIN_TOOLBAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), EV_TYPE_BROWSER_PLUGIN_TOOLBAR, EvBrowserPluginToolbarClass))
#define EV_IS_BROWSER_PLUGIN_TOOLBAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), EV_TYPE_BROWSER_PLUGIN_TOOLBAR))
#define EV_BROWSER_PLUGIN_TOOLBAR_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS((object), EV_TYPE_BROWSER_PLUGIN_TOOLBAR, EvBrowserPluginToolbarClass))
typedef struct _EvBrowserPluginToolbar EvBrowserPluginToolbar;
typedef struct _EvBrowserPluginToolbarClass EvBrowserPluginToolbarClass;
typedef struct _EvBrowserPluginToolbarPrivate EvBrowserPluginToolbarPrivate;
struct _EvBrowserPluginToolbar {
GtkToolbar base_instance;
EvBrowserPluginToolbarPrivate *priv;
};
struct _EvBrowserPluginToolbarClass {
GtkToolbarClass base_class;
};
GType ev_browser_plugin_toolbar_get_type (void);
GtkWidget *ev_browser_plugin_toolbar_new (EvBrowserPlugin *plugin);
G_END_DECLS
#endif // EvBrowserPluginToolbar_h
/*
* Copyright (C) 2014 Igalia S.L.
*
* Evince is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* Evince is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef EvMemoryUtils_h
#define EvMemoryUtils_h
#include <glib.h>
#include <memory>
template<typename T>
struct unique_gptr_deleter {
void operator()(T* ptr) const { g_free(ptr); }
};
template<typename T>
using unique_gptr = std::unique_ptr<T, unique_gptr_deleter<T>>;
#endif // EvMemoryUtils_h
plugindir = $(BROWSER_PLUGIN_DIR)
plugin_LTLIBRARIES = libevbrowserplugin.la
npapi_sources = \
npapi/npapi.h \
npapi/npfunctions.h \
npapi/npruntime.h \
npapi/nptypes.h
libevbrowserplugin_la_SOURCES = \
$(npapi_sources) \
EvBrowserPluginMain.cpp \
EvBrowserPlugin.h \
EvBrowserPlugin.cpp \
EvBrowserPluginToolbar.h \
EvBrowserPluginToolbar.cpp \
EvMemoryUtils.h
nodist_libevbrowserplugin_la_SOURCES = \
EvBrowserPluginResources.c
libevbrowserplugin_la_CPPFLAGS = \
-I$(top_srcdir) \
-I$(top_srcdir)/browser-plugin/npapi \
-I$(top_srcdir)/libdocument \
-I$(top_srcdir)/libview \
-I$(top_srcdir)/libmisc \
-DGNOMELOCALEDIR=\"$(datadir)/locale\" \
-DEVINCE_COMPILATION \
-DXP_UNIX \
-DMOZ_X11 \
$(BROWSER_PLUGIN_CFLAGS) \
$(AM_CPPFLAGS)
libevbrowserplugin_la_CXXFLAGS = \
-std=c++11 \
-fno-exceptions \
-fno-strict-aliasing \
-fno-rtti \
$(AM_CXXFLAGS)
libevbrowserplugin_la_LDFLAGS = \
-avoid-version \
-export-symbols $(top_srcdir)/browser-plugin/plugin.symbols \
-module \
-no-undefined \
-Wl,-z,nodelete \
$(AM_LDFLAGS)
libevbrowserplugin_la_LIBADD = \
$(top_builddir)/libdocument/libevdocument3.la \
$(top_builddir)/libview/libevview3.la \
$(top_builddir)/libmisc/libevmisc.la \
$(BROWSER_PLUGIN_LIBS)
EvBrowserPluginResources.c: EvBrowserPlugin.gresource.xml Makefile $(shell $(GLIB_COMPILE_RESOURCES) --generate-dependencies --sourcedir=$(srcdir) --sourcedir=$(top_srcdir)/data $(srcdir)/EvBrowserPlugin.gresource.xml)
$(AM_V_GEN) XMLLINT=$(XMLLINT) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --sourcedir=$(top_srcdir)/data --generate-source $<
EXTRA_DIST = \
EvBrowserPlugin.gresource.xml \
evince-browser.css \
plugin.symbols
CLEANFILES = \
EvBrowserPluginResources.c
-include $(top_srcdir)/git.mk
.content-view.document-page {
border-style: solid;
border-width: 3px 3px 6px 4px;
border-image: url("resource:///org/gnome/evince/browser/ui/thumbnail-frame.png") 3 3 6 4;
background-color: @theme_bg_color;
}
EvView {
background-color: @theme_bg_color;
}
EvView:selected {
background-color: @theme_selected_bg_color;
}
EvView.document-page {
background-color: white;
padding: 0;
}
sources = files(
'EvBrowserPlugin.cpp',
'EvBrowserPluginMain.cpp',
'EvBrowserPluginToolbar.cpp',
)
resource_data = files(
'../data/thumbnail-frame.png',
'evince-browser.css',
)
resource = 'EvBrowserPlugin'
sources += gnome.compile_resources(
resource + 'Resources',
resource + '.gresource.xml',
source_dir: data_dir,
dependencies: resource_data,
export: true,
)
incs = [
top_inc,
include_directories('npapi'),
]
cflags = [
'-DGNOMELOCALEDIR="@0@"'.format(ev_localedir),
'-DEVINCE_COMPILATION',
'-DMOZ_X11',
'-DXP_UNIX',
]
cppflags = cflags + cc.get_supported_arguments([
'-std=c++11',
'-fno-exceptions',
'-fno-strict-aliasing',
'-fno-rtti',
])
symbol_map = join_paths(meson.current_source_dir(), 'plugin-symbol.map')
ldflag = cpp.get_supported_link_arguments([
'-Wl,--version-script,' + symbol_map,
'-Wl,-z,nodelete',
])
shared_module(
'evbrowserplugin',
sources: sources,
include_directories: incs,
dependencies: libevmisc_dep,
cpp_args: cppflags,
install: true,
install_dir: browser_plugin_dir,
)
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef nptypes_h_
#define nptypes_h_
/*
* Header file for ensuring that C99 types ([u]int32_t, [u]int64_t and bool) and
* true/false macros are available.
*/
#if defined(WIN32) || defined(OS2)
/*
* Win32 and OS/2 don't know C99, so define [u]int_16/32/64 here. The bool
* is predefined tho, both in C and C++.
*/
typedef short int16_t;
typedef unsigned short uint16_t;
typedef int int32_t;
typedef unsigned int uint32_t;
typedef long long int64_t;
typedef unsigned long long uint64_t;
#elif defined(_AIX) || defined(__sun) || defined(__osf__) || defined(IRIX) || defined(HPUX)
/*
* AIX and SunOS ship a inttypes.h header that defines [u]int32_t,
* but not bool for C.
*/
#include <inttypes.h>
#ifndef __cplusplus
typedef int bool;
#define true 1
#define false 0
#endif
#elif defined(bsdi) || defined(FREEBSD) || defined(OPENBSD)
/*
* BSD/OS, FreeBSD, and OpenBSD ship sys/types.h that define int32_t and
* u_int32_t.
*/
#include <sys/types.h>
/*
* BSD/OS ships no header that defines uint32_t, nor bool (for C)
*/
#if defined(bsdi)
typedef u_int32_t uint32_t;
typedef u_int64_t uint64_t;
#if !defined(__cplusplus)
typedef int bool;
#define true 1
#define false 0
#endif
#else
/*
* FreeBSD and OpenBSD define uint32_t and bool.
*/
#include <inttypes.h>
#include <stdbool.h>
#endif
#elif defined(BEOS)
#include <inttypes.h>
#else
/*
* For those that ship a standard C99 stdint.h header file, include
* it. Can't do the same for stdbool.h tho, since some systems ship
* with a stdbool.h file that doesn't compile!
*/
#include <stdint.h>
#ifndef __cplusplus
#if !defined(__GNUC__) || (__GNUC__ > 2 || __GNUC_MINOR__ > 95)
#include <stdbool.h>
#else
/*
* GCC 2.91 can't deal with a typedef for bool, but a #define
* works.
*/
#define bool int
#define true 1
#define false 0
#endif
#endif
#endif
#endif /* nptypes_h_ */
NP_GetMIMEDescription
NP_GetValue
NP_Initialize
NP_Shutdown
This diff is collapsed.
<html>
<head>
<title>Evince Browser Plugin Test: Iframe</title>
</head>
<body>
<h1>PDF document inside an Iframe</h1>
<button onclick="document.getElementById('container').setAttribute('style', 'display: none');">Hide</button>
<button onclick="document.getElementById('container').setAttribute('style', 'display: block');">Show</button>
<div id="container">
<iframe id="frame" src="test.pdf" width="450" height="450"/>
</div>
</body>
</html>
<html>
<head>
<title>Evince Browser Plugin Test: InitialValues</title>
</head>
<body>
<h1>Default</h1>
<object data="test.pdf" type="application/pdf" widtH="600" height="300">
The pdf could not be rendered.
</object>
<h1>toolbar='false'</h1>
<object data="test.pdf" type="application/pdf" width="600" height="300" toolbar="false">
The pdf could not be rendered.
</object>
<h1>currentPage="2"</h1>
<object data="test.pdf" type="application/pdf" width="600" height="300" currentPage="2">
The pdf could not be rendered.
</object>
<h1>zoomMode="fit-page"</h1>
<object data="test.pdf" type="application/pdf" width="600" height="300" zoomMode="fit-page">
The pdf could not be rendered.
</object>
<h1>continuous="false" dual="true"</h1>
<object data="test.pdf" type="application/pdf" width="600" height="300" continuous="false" dual="true">
The pdf could not be rendered.
</object>
<h1>zoom="2.0"</h1>
<object data="test.pdf" type="application/pdf" width="600" height="300" zoom="2.0">
The pdf could not be rendered.
</object>
</body>
</html>
<html>
<head>
<title>Evince Browser Plugin Test: Local PDF document</title>
</head>
<body>
<h1>Local PDF document</h1>
<object data="test.pdf" type="application/pdf" width="600" height="600">
The pdf could not be rendered.
</object>
</body>
</html>
<html>
<head>
<title>Evince Browser Plugin Test: Multiple PDF documents</title>
</head>
<body>
<h1>Local PDF document</h1>
<object data="test.pdf" type="application/pdf" width="600" height="600">
The pdf could not be rendered.
</object>
<h1>Remote PDF document</h1>
<object data="http://plugindoc.mozdev.org/testpages/test.pdf"
type="application/pdf" width="600" height="600">
The pdf could not be rendered.
</object>
</body>
</html>
<html>
<head>
<title>Evince Browser Plugin Test: Remote document</title>
</head>
<body>
<h1>Remote PDF document</h1>
<object data="http://plugindoc.mozdev.org/testpages/test.pdf" type="application/pdf" width="640" height="480">
The pdf could not be rendered.
</object>
</body>
</html>
<html>
<head>
<title>Evince Browser Plugin Test: Scripting</title>
<script>
function updateProperties() {
document.getElementById('currentPage').textContent = document._pdf.currentPage;
document.getElementById('pageCount').textContent = document._pdf.pageCount;
document.getElementById('zoom').textContent = document._pdf.zoom;
document.getElementById('continuous').textContent = document._pdf.continuous;
document.getElementById('dual').textContent = document._pdf.dual;
document.getElementById('zoomMode').textContent = document._pdf.zoomMode;
document.getElementById('toolbar').textContent = document._pdf.toolbar;
}
function init() {
document._pdf = document.getElementById('pdf');
setInterval(updateProperties, 500);
}
document.addEventListener("DOMContentLoaded", init, false);
</script>
</head>
<body>
<h1>PDF document controlled by JavaScript</h1>
<object id="pdf" data="test.pdf" type="application/pdf" width="600" height="300">
The pdf could not be rendered.
</object>
<br>
<button onclick="document._pdf.currentPage--;">currentPage--</button>
<button onclick="document._pdf.currentPage++;">currentPage++</button>
<button onclick="document._pdf.zoomIn();">Zoom In</button>
<button onclick="document._pdf.zoomOut();">Zoom In</button>
<button onclick="document._pdf.zoom+=0.1;">zoom+=0.1</button>
<button onclick="document._pdf.zoom-=0.1;">zoom-=0.1</button>
<button onclick="document._pdf.zoom=1;">zoom=1</button>
<button onclick="document._pdf.toggleContinuous();">Toggle Continuous</button>
<button onclick="document._pdf.continuous=true;">continuous=true</button>
<button onclick="document._pdf.continuous=false;">continuous=false</button>
<button onclick="document._pdf.toggleDual();">Toggle Dual</button>
<button onclick="document._pdf.dual=true;">dual=true</button>
<button onclick="document._pdf.dual=false;">dual=false</button>
<button onclick="document._pdf.zoomMode='fit-page';">zoomMode='fit-page'</button>
<button onclick="document._pdf.zoomMode='fit-width';">zoomMode='fit-width'</button>
<button onclick="document._pdf.zoomMode='auto';">zoomMode='auto'</button>
<button onclick="document._pdf.print();">Print</button>
<button onclick="document._pdf.download();">Download</button>
<button onclick="document._pdf.toolbar=true;">toolbar=true</button>
<button onclick="document._pdf.toolbar=false;">toolbar=false</button>
<table>
<tr><th>currentPage:</th><td id="currentPage"></td></tr>
<tr><th>pageCount:</th><td id="pageCount"></td></tr>
<tr><th>zoom:</th><td id="zoom"></td></tr>
<tr><th>continuous:</th><td id="continuous"></td></tr>
<tr><th>dual:</th><td id="dual"></td></tr>
<tr><th>zoomMode:</th><td id="zoomMode"></td></tr>
<tr><th>toolbar:</th><td id="toolbar"></td></tr>
</table>
</body>
</html>
......@@ -500,6 +500,31 @@ PREVIEWER_LIBS="$PREVIEWER_LIBS $GTKUNIXPRINT_LIBS -lz"
AC_SUBST(PREVIEWER_CFLAGS)
AC_SUBST(PREVIEWER_LIBS)
# **************
# Browser Plugin
# **************
AC_ARG_ENABLE([browser-plugin],
[AS_HELP_STRING([--disable-browser-plugin],
[Disable the Browser Plugin])],
[],
[enable_browser_plugin=no])
if test x$enable_browser_plugin = "xyes" ; then
PKG_CHECK_MODULES([BROWSER_PLUGIN],[gtk+-3.0 >= $GTK_REQUIRED gthread-2.0 gio-2.0 >= $GLIB_REQUIRED])
if test -z "${BROWSER_PLUGIN_DIR}"; then
BROWSER_PLUGIN_DIR="\${libdir}/mozilla/plugins"
fi
AC_ARG_VAR([BROWSER_PLUGIN_DIR],[Where to install the plugin to])
fi
AM_CONDITIONAL([ENABLE_BROWSER_PLUGIN],[test "$enable_browser_plugin" = "yes"])
BROWSER_PLUGIN_CFLAGS="$BROWSER_PLUGIN_CFLAGS $DEBUG_FLAGS"
AC_SUBST(BROWSER_PLUGIN_CFLAGS)
AC_SUBST(BROWSER_PLUGIN_LIBS)
# ***
# GIR
# ***
......@@ -919,6 +944,7 @@ backend/tiff/Makefile
backend/xps/evince-xpsdocument.metainfo.xml.in
backend/xps/xpsdocument.evince-backend.desktop.in
backend/xps/Makefile
browser-plugin/Makefile
cut-n-paste/Makefile
cut-n-paste/gimpcellrenderertoggle/Makefile
cut-n-paste/synctex/Makefile
......@@ -991,6 +1017,7 @@ Viewer ...................: $enable_viewer
Previewer ................: $enable_previewer
Thumbnailer ..............: $enable_thumbnailer
Nautilus Extensions.......: $enable_nautilus
Browser Plugin............: $enable_browser_plugin
BACKENDS
......
......@@ -457,6 +457,17 @@ if enable_previewer
subdir('previewer')
endif
# *** Browser Plugin ***
enable_browser_plugin = get_option('browser_plugin')
if enable_browser_plugin
browser_plugin_dir = get_option('browser_plugin_dir')
if not browser_plugin_dir.startswith('/')
browser_plugin_dir = join_paths(ev_libdir, browser_plugin_dir)
endif
subdir('browser-plugin')
endif
subdir('data')
headers = files(
......@@ -505,6 +516,7 @@ output += 'Viewer ...................: ' + enable_viewer.to_string() + '\n'
output += 'Previewer ................: ' + enable_previewer.to_string() + '\n'
output += 'Thumbnailer ..............: ' + enable_thumbnailer.to_string() + '\n'
output += 'Nautilus Extensions ......: ' + enable_nautilus.to_string() + '\n'
output += 'Browser Plugin ...........: ' + enable_browser_plugin.to_string() + '\n\n\n'
output += 'BACKENDS\n\n'
output += 'Comics ...................: ' + enable_comics.to_string() + '\n'
output += 'DJVU .....................: ' + enable_djvu.to_string() + '\n'
......
......@@ -20,6 +20,7 @@ backend/tiff/tiff-document.c
backend/tiff/tiffdocument.evince-backend.desktop.in.in
backend/xps/evince-xpsdocument.metainfo.xml.in.in
backend/xps/xpsdocument.evince-backend.desktop.in.in
browser-plugin/EvBrowserPluginToolbar.cpp
data/org.gnome.Evince.desktop.in.in
data/org.gnome.Evince.gschema.xml
data/org.gnome.Evince-previewer.desktop.in.in
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment