From 19638bffd116d728bb8c8acc12cbff68636767f2 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 4 Jan 2018 11:19:37 +0530 Subject: [PATCH] Tag browser: Fix position not bing preserved when deleting books. Fixes #1740387 [[Enhancement] Working with lists](https://bugs.launchpad.net/calibre/+bug/1740387) --- src/calibre/gui2/actions/delete.py | 13 ++++++------- src/calibre/gui2/tag_browser/ui.py | 2 +- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/calibre/gui2/actions/delete.py b/src/calibre/gui2/actions/delete.py index dab8cf3dae..25a4111bb8 100644 --- a/src/calibre/gui2/actions/delete.py +++ b/src/calibre/gui2/actions/delete.py @@ -73,8 +73,7 @@ class MultiDeleter(QObject): # {{{ self.pd = None self.model.db.commit() self.model.db.clean() - self.model.books_deleted() - self.gui.tags_view.recount() + self.model.books_deleted() # calls recount on the tag browser self.callback(self.deleted_ids) if self.failures: msg = ['==> '+x[1]+'\n'+x[2] for x in self.failures] @@ -182,14 +181,14 @@ class DeleteAction(InterfaceAction): self.gui.library_view.model().refresh_ids([book_id]) self.gui.library_view.model().current_changed(self.gui.library_view.currentIndex(), self.gui.library_view.currentIndex()) - self.gui.tags_view.recount() + self.gui.tags_view.recount_with_position_based_index() def restore_format(self, book_id, original_fmt): self.gui.current_db.restore_original_format(book_id, original_fmt) self.gui.library_view.model().refresh_ids([book_id]) self.gui.library_view.model().current_changed(self.gui.library_view.currentIndex(), self.gui.library_view.currentIndex()) - self.gui.tags_view.recount() + self.gui.tags_view.recount_with_position_based_index() def delete_selected_formats(self, *args): ids = self._get_selected_ids() @@ -205,7 +204,7 @@ class DeleteAction(InterfaceAction): m.current_changed(self.gui.library_view.currentIndex(), self.gui.library_view.currentIndex()) if ids: - self.gui.tags_view.recount() + self.gui.tags_view.recount_with_position_based_index() def delete_all_but_selected_formats(self, *args): ids = self._get_selected_ids() @@ -235,7 +234,7 @@ class DeleteAction(InterfaceAction): m.current_changed(self.gui.library_view.currentIndex(), self.gui.library_view.currentIndex()) if ids: - self.gui.tags_view.recount() + self.gui.tags_view.recount_with_position_based_index() def delete_all_formats(self, *args): ids = self._get_selected_ids() @@ -258,7 +257,7 @@ class DeleteAction(InterfaceAction): self.gui.library_view.model().current_changed(self.gui.library_view.currentIndex(), self.gui.library_view.currentIndex()) if ids: - self.gui.tags_view.recount() + self.gui.tags_view.recount_with_position_based_index() def remove_matching_books_from_device(self, *args): if not self.gui.device_manager.is_device_present: diff --git a/src/calibre/gui2/tag_browser/ui.py b/src/calibre/gui2/tag_browser/ui.py index 2148f47554..2ff16b362a 100644 --- a/src/calibre/gui2/tag_browser/ui.py +++ b/src/calibre/gui2/tag_browser/ui.py @@ -69,7 +69,7 @@ class TagBrowserMixin(object): # {{{ m.addAction(name, partial(self.do_tags_list_edit, None, cat)) def init_tag_browser_mixin(self, db): - self.library_view.model().count_changed_signal.connect(self.tags_view.recount) + self.library_view.model().count_changed_signal.connect(self.tags_view.recount_with_position_based_index) self.tags_view.set_database(db, self.alter_tb) self.tags_view.tags_marked.connect(self.search.set_search_string) self.tags_view.tags_list_edit.connect(self.do_tags_list_edit)