From 7f7a08f44bed5e6bbe3a7cd65d642d4fe1d61c7b Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 9 Jan 2016 09:48:17 +0530 Subject: [PATCH] E-book viewer: Disallow hyphenation in documents that use mathematical typesetting as the hyphenation breaks that typesetting --- src/calibre/ebooks/oeb/display/mathjax.coffee | 1 + src/calibre/gui2/viewer/documentview.py | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/calibre/ebooks/oeb/display/mathjax.coffee b/src/calibre/ebooks/oeb/display/mathjax.coffee index 14633b8fbc..cef4ede52d 100644 --- a/src/calibre/ebooks/oeb/display/mathjax.coffee +++ b/src/calibre/ebooks/oeb/display/mathjax.coffee @@ -74,6 +74,7 @@ class MathJax if script != null or document.getElementsByTagName('math').length > 0 this.math_present = true this.load_mathjax(user_config) + return this.math_present after_resize: () -> if not this.math_present or this.hub == null diff --git a/src/calibre/gui2/viewer/documentview.py b/src/calibre/gui2/viewer/documentview.py index e17240177a..09728655cf 100644 --- a/src/calibre/gui2/viewer/documentview.py +++ b/src/calibre/gui2/viewer/documentview.py @@ -108,6 +108,7 @@ class Document(QWebPage): # {{{ self.js_loader = JavaScriptLoader( dynamic_coffeescript=self.debug_javascript) self.in_fullscreen_mode = False + self.math_present = False self.setLinkDelegationPolicy(self.DelegateAllLinks) self.scroll_marks = [] @@ -232,7 +233,7 @@ class Document(QWebPage): # {{{ @property def hyphenatable(self): # Qt fails to render soft hyphens correctly on windows xp - return not isxp and self.hyphenate and getattr(self, 'loaded_lang', '') + return not isxp and self.hyphenate and getattr(self, 'loaded_lang', '') and not self.math_present @pyqtSlot() def init_hyphenate(self): @@ -257,6 +258,7 @@ class Document(QWebPage): # {{{ self.javascript('window.paged_display.read_document_margins()') self.set_bottom_padding(0) self.fit_images() + self.math_present = self.javascript('window.mathjax.check_for_math()', bool) self.init_hyphenate() self.javascript('full_screen.save_margins()') if self.in_fullscreen_mode: @@ -267,7 +269,6 @@ class Document(QWebPage): # {{{ evaljs = self.mainFrame().evaluateJavaScript for pl in self.all_viewer_plugins: pl.run_javascript(evaljs) - self.javascript('window.mathjax.check_for_math()') self.first_load = False def colors(self):