From 48e43221314e58cc1fb0da3c25f70095040f5d55 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 14 Sep 2023 12:32:41 +0530 Subject: [PATCH] E-book viewer: Allow clearing list of recently opened books from the open button's popup menu itself. Fixes #2034760 [[Enhancement] E-book viewer: "Open e-book" toolbar button should have a "Clear recent list" item](https://bugs.launchpad.net/calibre/+bug/2034760) --- src/calibre/gui2/viewer/toolbars.py | 6 ++++++ src/calibre/gui2/viewer/web_view.py | 2 +- src/pyj/read_book/open_book.pyj | 7 ++++--- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/calibre/gui2/viewer/toolbars.py b/src/calibre/gui2/viewer/toolbars.py index 5fda1ac28c..b61f6d35e4 100644 --- a/src/calibre/gui2/viewer/toolbars.py +++ b/src/calibre/gui2/viewer/toolbars.py @@ -328,6 +328,12 @@ class ActionsToolBar(ToolBar): self.open_book_at_path.emit, path)) else: self.web_view.remove_recently_opened(path) + if len(m.actions()) > 0: + m.addSeparator() + m.addAction(_('Clear list of recently opened books'), self.clear_recently_opened) + + def clear_recently_opened(self): + self.web_view.remove_recently_opened() def on_view_created(self, data): self.default_color_schemes = data['default_color_schemes'] diff --git a/src/calibre/gui2/viewer/web_view.py b/src/calibre/gui2/viewer/web_view.py index 845abaa0d6..3463738370 100644 --- a/src/calibre/gui2/viewer/web_view.py +++ b/src/calibre/gui2/viewer/web_view.py @@ -748,5 +748,5 @@ class WebView(RestartingWebEngineView): def repair_after_fullscreen_switch(self): self.execute_when_ready('repair_after_fullscreen_switch') - def remove_recently_opened(self, path): + def remove_recently_opened(self, path=''): self.generic_action('remove-recently-opened', {'path': path}) diff --git a/src/pyj/read_book/open_book.pyj b/src/pyj/read_book/open_book.pyj index 26b5025a66..bfd2abd6cc 100644 --- a/src/pyj/read_book/open_book.pyj +++ b/src/pyj/read_book/open_book.pyj @@ -81,9 +81,10 @@ def remove_recently_opened(path): sd = get_session_data() rl = sd.get('standalone_recently_opened') newl = v'[]' - for entry in rl: - if entry.key is not path: - newl.push(entry) + if path: + for entry in rl: + if entry.key is not path: + newl.push(entry) sd.set('standalone_recently_opened', newl) if current_container_id: container = document.getElementById(current_container_id)