From 984f6582c573db72c3d7a965aa4d6fa98b4d65e3 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 2 Aug 2023 19:07:04 +0530 Subject: [PATCH] Preserve current after rename --- src/calibre/gui2/dialogs/data_files_manager.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/calibre/gui2/dialogs/data_files_manager.py b/src/calibre/gui2/dialogs/data_files_manager.py index c090dc4b0c..cde6f92e58 100644 --- a/src/calibre/gui2/dialogs/data_files_manager.py +++ b/src/calibre/gui2/dialogs/data_files_manager.py @@ -98,6 +98,12 @@ class Files(QAbstractListModel): def item_at(self, rownum): return self.files[rownum] + def rownum_for_relpath(self, relpath): + for i, e in enumerate(self.files): + if e.relpath == relpath: + return i + return -1 + def data(self, index, role): row = index.row() if row >= len(self.files): @@ -277,6 +283,12 @@ class DataFilesManager(Dialog): self.db.rename_extra_files(self.book_id, {e.relpath: newrelpath}, replace=True) with self.preserve_state(): self.files.refresh() + row = self.files.rownum_for_relpath(newrelpath) + if row > -1: + idx = self.files.index(row) + self.fview.setCurrentIndex(idx) + self.fview.selectionModel().select(idx, QItemSelectionModel.SelectionFlag.SelectCurrent) + self.fview.scrollTo(idx) if __name__ == '__main__':