diff --git a/src/calibre/gui2/viewer/bookmarks.py b/src/calibre/gui2/viewer/bookmarks.py index 57121f015a77..e0cd1b0b95e9 100644 --- a/src/calibre/gui2/viewer/bookmarks.py +++ b/src/calibre/gui2/viewer/bookmarks.py @@ -294,7 +294,11 @@ def create_new_bookmark(self, pos_data): self.edited.emit(bookmarks) def keyPressEvent(self, ev): - if ev.key() == Qt.Key_Escape or get_shortcut_for(self, ev) == 'toggle_bookmarks': + sc = get_shortcut_for(self, ev) + if ev.key() == Qt.Key_Escape or sc == 'toggle_bookmarks': self.toggle_requested.emit() return + if sc == 'new_bookmark': + self.create_requested.emit() + return return QWidget.keyPressEvent(self, ev) diff --git a/src/calibre/gui2/viewer/ui.py b/src/calibre/gui2/viewer/ui.py index b9fc871ec1e7..ba7bf21b4754 100644 --- a/src/calibre/gui2/viewer/ui.py +++ b/src/calibre/gui2/viewer/ui.py @@ -161,6 +161,7 @@ def create_dock(title, name, area, areas=Qt.LeftDockWidgetArea | Qt.RightDockWid self.search_widget.show_search_result.connect(self.web_view.show_search_result) self.web_view.search_result_not_found.connect(self.search_widget.search_result_not_found) self.web_view.toggle_bookmarks.connect(self.toggle_bookmarks) + self.web_view.new_bookmark.connect(self.bookmarks_widget.create_requested) self.web_view.toggle_inspector.connect(self.toggle_inspector) self.web_view.toggle_lookup.connect(self.toggle_lookup) self.web_view.quit.connect(self.quit) diff --git a/src/calibre/gui2/viewer/web_view.py b/src/calibre/gui2/viewer/web_view.py index 995e3a05cbd7..0b128101a08e 100644 --- a/src/calibre/gui2/viewer/web_view.py +++ b/src/calibre/gui2/viewer/web_view.py @@ -248,6 +248,7 @@ class ViewerBridge(Bridge): reload_book = from_js() toggle_toc = from_js() toggle_bookmarks = from_js() + new_bookmark = from_js() toggle_inspector = from_js() toggle_lookup = from_js() show_search = from_js() @@ -438,6 +439,7 @@ class WebView(RestartingWebEngineView): search_result_not_found = pyqtSignal(object) find_next = pyqtSignal(object) toggle_bookmarks = pyqtSignal() + new_bookmark = pyqtSignal() toggle_inspector = pyqtSignal() toggle_lookup = pyqtSignal() quit = pyqtSignal() @@ -489,6 +491,7 @@ def __init__(self, parent=None): self.bridge.search_result_not_found.connect(self.search_result_not_found) self.bridge.find_next.connect(self.find_next) self.bridge.toggle_bookmarks.connect(self.toggle_bookmarks) + self.bridge.new_bookmark.connect(self.new_bookmark) self.bridge.toggle_inspector.connect(self.toggle_inspector) self.bridge.toggle_lookup.connect(self.toggle_lookup) self.bridge.quit.connect(self.quit) diff --git a/src/pyj/read_book/shortcuts.pyj b/src/pyj/read_book/shortcuts.pyj index ad4db1d50f3d..78b0b67a2948 100644 --- a/src/pyj/read_book/shortcuts.pyj +++ b/src/pyj/read_book/shortcuts.pyj @@ -362,6 +362,12 @@ def add_standalone_viewer_shortcuts(): _('Show/hide bookmarks'), ) + sc['new_bookmark'] = desc( + v"['Ctrl+Alt+b']", + 'ui', + _('Create a new bookmark'), + ) + sc['toggle_inspector'] = desc( v"['Ctrl+i']", 'ui', diff --git a/src/pyj/read_book/view.pyj b/src/pyj/read_book/view.pyj index aaf565cb4002..1862a081f111 100644 --- a/src/pyj/read_book/view.pyj +++ b/src/pyj/read_book/view.pyj @@ -427,6 +427,8 @@ class View: ui_operations.toggle_toc() elif data.name is 'toggle_bookmarks': ui_operations.toggle_bookmarks() + elif data.name is 'new_bookmark': + ui_operations.new_bookmark() elif data.name is 'toggle_inspector': ui_operations.toggle_inspector() elif data.name is 'toggle_lookup': diff --git a/src/pyj/viewer-main.pyj b/src/pyj/viewer-main.pyj index a05245457bd0..40b59c243cf7 100644 --- a/src/pyj/viewer-main.pyj +++ b/src/pyj/viewer-main.pyj @@ -355,6 +355,8 @@ if window is window.top: to_python.toggle_toc() ui_operations.toggle_bookmarks = def(): to_python.toggle_bookmarks() + ui_operations.new_bookmark = def(): + to_python.new_bookmark() ui_operations.toggle_inspector = def(): to_python.toggle_inspector() ui_operations.content_file_changed = def(name):