From 107dfac46f28c160d01fc63828937da94148c985 Mon Sep 17 00:00:00 2001 From: Charles Haley Date: Wed, 20 Nov 2024 16:50:03 +0000 Subject: [PATCH] Make the "back" button in the HTML document viewer position the viewport to where it was when a URL was clicked. --- src/calibre/gui2/dialogs/template_dialog.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/dialogs/template_dialog.py b/src/calibre/gui2/dialogs/template_dialog.py index 6549fea680..ee2fd57e9a 100644 --- a/src/calibre/gui2/dialogs/template_dialog.py +++ b/src/calibre/gui2/dialogs/template_dialog.py @@ -108,10 +108,14 @@ class DocViewer(Dialog): if not self.back_stack: info_dialog(self, _('Go back'), _('No function to go back to'), show=True) else: - name = self.back_stack.pop() + place = self.back_stack.pop() if not self.back_stack: self.back_button.setEnabled(False) - self.show_function(name) + if isinstance(place, int): + self.show_all_functions() + self.doc_viewer_widget.verticalScrollBar().setSliderPosition(place) + else: + self.show_function(place) def url_clicked(self, qurl): if qurl.scheme().startswith('http'): @@ -120,6 +124,9 @@ class DocViewer(Dialog): if self.last_function is not None: self.back_stack.append(self.last_function) self.back_button.setEnabled(True) + else: + self.back_stack.append(self.doc_viewer_widget.verticalScrollBar().sliderPosition()) + self.back_button.setEnabled(True) self.show_function(qurl.path()) def english_cb_state_changed(self):