From 2a58a4b1a8d826819c87f9a1509578fb9c888109 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 26 Apr 2023 14:09:55 +0530 Subject: [PATCH] Forgot to restore current index before restoring current_id/current_row which was preventing the current column from being preserved --- src/calibre/gui2/library/views.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/calibre/gui2/library/views.py b/src/calibre/gui2/library/views.py index d335ae4eee..044c5fee03 100644 --- a/src/calibre/gui2/library/views.py +++ b/src/calibre/gui2/library/views.py @@ -162,6 +162,7 @@ class PreserveViewState: # {{{ self.current_id = None self.vscroll = self.hscroll = 0 self.original_view = None + self.row = self.col = -1 def __enter__(self): self.init_vals() @@ -171,11 +172,16 @@ class PreserveViewState: # {{{ self.current_id = self.view.current_id self.vscroll = view.verticalScrollBar().value() self.hscroll = view.horizontalScrollBar().value() + ci = self.view.currentIndex() + self.row, self.col = ci.row(), ci.column() except: import traceback traceback.print_exc() def __exit__(self, *args): + ci = self.view.model().index(self.row, self.col) + if ci.isValid(): + self.view.setCurrentIndex(ci) if self.selected_ids or not self.require_selected_ids: if self.current_id is not None: self.view.current_id = self.current_id