Dont reload book details locked popups on irrelevant event types

This commit is contained in:
Kovid Goyal 2025-04-03 07:51:25 +05:30
parent 1ba3c5beb3
commit b868167d50
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -36,6 +36,7 @@ from qt.core import (
from calibre import fit_image from calibre import fit_image
from calibre.db.constants import RESOURCE_URL_SCHEME from calibre.db.constants import RESOURCE_URL_SCHEME
from calibre.db.listeners import EventType
from calibre.gui2 import BOOK_DETAILS_DISPLAY_DEBOUNCE_DELAY, NO_URL_FORMATTING, gprefs from calibre.gui2 import BOOK_DETAILS_DISPLAY_DEBOUNCE_DELAY, NO_URL_FORMATTING, gprefs
from calibre.gui2.book_details import DropMixin, create_open_cover_with_menu, details_context_menu_event, render_html, resolved_css, set_html from calibre.gui2.book_details import DropMixin, create_open_cover_with_menu, details_context_menu_event, render_html, resolved_css, set_html
from calibre.gui2.ui import get_gui from calibre.gui2.ui import get_gui
@ -191,11 +192,13 @@ class ListenerSignal(QObject):
# listening to the signal. # listening to the signal.
metadata_changed = pyqtSignal() metadata_changed = pyqtSignal()
listener_object = ListenerSignal() listener_object = ListenerSignal()
def book_metatada_changed(event_type, library_id, event_data): def book_metatada_changed(event_type: EventType, library_id, event_data):
listener_object.metadata_changed.emit() if event_type not in (EventType.book_created, EventType.books_removed, EventType.book_edited, EventType.indexing_progress_changed):
listener_object.metadata_changed.emit()
class BookInfo(QDialog, DropMixin): class BookInfo(QDialog, DropMixin):
@ -327,7 +330,7 @@ class BookInfo(QDialog, DropMixin):
self.fit_cover.stateChanged.connect(self.toggle_cover_fit) self.fit_cover.stateChanged.connect(self.toggle_cover_fit)
if dialog_number == DialogNumbers.Locked: if dialog_number == DialogNumbers.Locked:
get_gui().current_db.new_api.add_listener(book_metatada_changed, check_already_added=True) get_gui().current_db.new_api.add_listener(book_metatada_changed, check_already_added=True)
listener_object.metadata_changed.connect(self.do_update_book_details) listener_object.metadata_changed.connect(self.do_update_book_details, type=Qt.ConnectionType.QueuedConnection)
self.restore_geometry(gprefs, self.geometry_string('book_info_dialog_geometry')) self.restore_geometry(gprefs, self.geometry_string('book_info_dialog_geometry'))
try: try:
self.splitter.restoreState(gprefs.get(self.geometry_string('book_info_dialog_splitter_state'))) self.splitter.restoreState(gprefs.get(self.geometry_string('book_info_dialog_splitter_state')))