diff --git a/resources/compiled_coffeescript.zip b/resources/compiled_coffeescript.zip index 7338550993..f1d9889985 100644 Binary files a/resources/compiled_coffeescript.zip and b/resources/compiled_coffeescript.zip differ diff --git a/src/calibre/ebooks/oeb/display/utils.coffee b/src/calibre/ebooks/oeb/display/utils.coffee index 9891e6ed58..31763f10bd 100644 --- a/src/calibre/ebooks/oeb/display/utils.coffee +++ b/src/calibre/ebooks/oeb/display/utils.coffee @@ -136,6 +136,16 @@ class CalibreUtils # }}} + setup_epub_reading_system: (name, version, layout, features) -> # {{{ + window.navigator.epubReadingSystem = { + 'name':name, 'version':version, 'layoutStyle':layout, + 'hasFeature': (feature, version=1.0) -> + if (version == null or version == 1.0) and feature.toLowerCase() in features + return true + return false + } + # }}} + if window? window.calibre_utils = new CalibreUtils() diff --git a/src/calibre/gui2/viewer/documentview.py b/src/calibre/gui2/viewer/documentview.py index 4443e04f66..1487fd8686 100644 --- a/src/calibre/gui2/viewer/documentview.py +++ b/src/calibre/gui2/viewer/documentview.py @@ -7,6 +7,7 @@ __docformat__ = 'restructuredtext en' import os, math, json from base64 import b64encode from functools import partial +from future_builtins import map from PyQt5.Qt import ( QSize, QSizePolicy, QUrl, Qt, pyqtProperty, QPainter, QPalette, QBrush, @@ -30,7 +31,7 @@ from calibre.gui2.viewer.inspector import WebInspector from calibre.gui2.viewer.gestures import GestureHandler from calibre.gui2.viewer.footnote import Footnotes from calibre.ebooks.oeb.display.webview import load_html -from calibre.constants import isxp, iswindows, DEBUG +from calibre.constants import isxp, iswindows, DEBUG, __version__ # }}} def apply_settings(settings, opts): @@ -207,6 +208,9 @@ class Document(QWebPage): # {{{ evaljs = self.mainFrame().evaluateJavaScript self.loaded_lang = self.js_loader(evaljs, self.current_language, self.hyphenate_default_lang) + evaljs('window.calibre_utils.setup_epub_reading_system(%s, %s, %s, %s)' % tuple(map(json.dumps, ( + 'calibre-desktop', __version__, 'paginated' if self.in_paged_mode else 'scrolling', + 'dom-manipulation layout-changes mouse-events keyboard-events'.split())))) mjpath = P(u'viewer/mathjax').replace(os.sep, '/') if iswindows: mjpath = u'/' + mjpath