From 497b8e48039f8eb39b782536747d62816e69c90c Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 27 Sep 2022 12:13:24 +0530 Subject: [PATCH] Content server: Fix jumping to locations such as bookmarks not working on iPhone/iPad running iOS >= 15. Fixes #1989722 [Calibre Content Server: Opening bookmarks on Safari iOS not working](https://bugs.launchpad.net/calibre/+bug/1989722) --- src/pyj/read_book/viewport.pyj | 4 ++-- src/pyj/utils.pyj | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/pyj/read_book/viewport.pyj b/src/pyj/read_book/viewport.pyj index c2db19f19f..d4d73d4452 100644 --- a/src/pyj/read_book/viewport.pyj +++ b/src/pyj/read_book/viewport.pyj @@ -5,7 +5,7 @@ from __python__ import bound_methods, hash_literals FUNCTIONS = 'x y scroll_to scroll_into_view reset_globals __reset_transforms window_scroll_pos content_size'.split(' ') from read_book.globals import get_boss, viewport_mode_changer -from utils import document_height, document_width, is_ios +from utils import document_height, document_width, ios_major_version class ScrollViewport: @@ -321,7 +321,7 @@ class IOSScrollViewport(ScrollViewport): self.__reset_transforms() -if is_ios: +if 1 < ios_major_version < 15: scroll_viewport = IOSScrollViewport() else: scroll_viewport = ScrollViewport() diff --git a/src/pyj/utils.pyj b/src/pyj/utils.pyj index 362c9aa3ab..df5a9dc74c 100644 --- a/src/pyj/utils.pyj +++ b/src/pyj/utils.pyj @@ -8,9 +8,14 @@ from book_list.theme import get_font_family is_ios = v'!!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform)' +ios_major_version = 0 if !is_ios and v'!!navigator.platform' and window? and window.navigator.platform is 'MacIntel' and window.navigator.maxTouchPoints > 1: # iPad Safari in desktop mode https://stackoverflow.com/questions/57765958/how-to-detect-ipad-and-ipad-os-version-in-ios-13-and-up is_ios = True +if is_ios: + v = v'navigator.appVersion.match(/OS (\d+)/)' + if v and v[1]: + ios_major_version = parseInt(v[1], 10) or 0 def default_context_menu_should_be_allowed(evt):