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)

This commit is contained in:
Kovid Goyal 2022-09-27 12:13:24 +05:30
parent 7ceb4caa8c
commit 497b8e4803
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 7 additions and 2 deletions

View File

@ -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()

View File

@ -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):