From 5f927e2ea093ac38dd9e49c97f2b7beaf65568d3 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 25 Apr 2021 20:56:46 +0530 Subject: [PATCH] E-book viewer: When suggesting a default bookmark title, use the name of the current chapter. Fixes #1851908 [Suggest a name for the bookmark](https://bugs.launchpad.net/calibre/+bug/1851908) --- src/calibre/gui2/viewer/bookmarks.py | 3 ++- src/calibre/gui2/viewer/toc.py | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/viewer/bookmarks.py b/src/calibre/gui2/viewer/bookmarks.py index 66a73916eb..d0592f9469 100644 --- a/src/calibre/gui2/viewer/bookmarks.py +++ b/src/calibre/gui2/viewer/bookmarks.py @@ -92,6 +92,7 @@ class BookmarkManager(QWidget): self.l = l = QGridLayout(self) l.setContentsMargins(0, 0, 0, 0) self.setLayout(l) + self.toc = parent.toc self.bookmarks_list = bl = BookmarksList(self) bl.itemChanged.connect(self.item_changed) @@ -340,7 +341,7 @@ class BookmarkManager(QWidget): import_current_bookmarks(imported) def create_new_bookmark(self, pos_data): - base_default_title = _('Bookmark') + base_default_title = self.toc.model().title_for_current_node or _('Bookmark') all_titles = {bm['title'] for bm in self.get_bookmarks()} c = 0 while True: diff --git a/src/calibre/gui2/viewer/toc.py b/src/calibre/gui2/viewer/toc.py index 633ad0105a..453579439e 100644 --- a/src/calibre/gui2/viewer/toc.py +++ b/src/calibre/gui2/viewer/toc.py @@ -227,7 +227,6 @@ class TOC(QStandardItemModel): for t in toc['children']: self.appendRow(TOCItem(t, 0, depth_first, normal_font, emphasis_font)) self.node_id_map = {x.node_id: x for x in self.all_items} - self.currently_viewed_entry = None def find_items(self, query): for item in self.all_items: @@ -284,6 +283,12 @@ class TOC(QStandardItemModel): def viewed_nodes(self): return tuple(node for node in self.all_items if node.is_being_viewed) + @property + def title_for_current_node(self): + for node in reversed(self.all_items): + if node.is_being_viewed: + return node.title + @property def as_plain_text(self): lines = []