diff --git a/tagstudio/src/qt/modals/folders_to_tags.py b/tagstudio/src/qt/modals/folders_to_tags.py index a0b9b355..ff32e5eb 100644 --- a/tagstudio/src/qt/modals/folders_to_tags.py +++ b/tagstudio/src/qt/modals/folders_to_tags.py @@ -226,7 +226,7 @@ class FoldersToTagsModal(QWidget): def on_apply(self, event): folders_to_tags(self.library) self.close() - self.driver.preview_panel.update_widgets() + self.driver.preview_panel.update_widgets(update_preview=False) def on_open(self, event): for i in reversed(range(self.scroll_layout.count())): diff --git a/tagstudio/src/qt/ts_qt.py b/tagstudio/src/qt/ts_qt.py index f42e5b2d..198f4c29 100644 --- a/tagstudio/src/qt/ts_qt.py +++ b/tagstudio/src/qt/ts_qt.py @@ -463,7 +463,7 @@ class QtDriver(DriverMixin, QObject): self.autofill_action.triggered.connect( lambda: ( self.run_macros(MacroID.AUTOFILL, self.selected), - self.preview_panel.update_widgets(), + self.preview_panel.update_widgets(update_preview=False), ) ) macros_menu.addAction(self.autofill_action) @@ -638,7 +638,6 @@ class QtDriver(DriverMixin, QObject): self.main_window.pagination.index.connect(lambda i: self.page_move(page_id=i)) self.splash.finish(self.main_window) - self.preview_panel.update_widgets() def show_grid_filenames(self, value: bool): for thumb in self.item_thumbs: @@ -678,6 +677,13 @@ class QtDriver(DriverMixin, QObject): self.settings.setValue(SettingItems.LAST_LIBRARY, str(self.lib.library_dir)) self.settings.sync() + # Reset library state + self.preview_panel.update_widgets() + self.main_window.searchField.setText("") + scrollbar: QScrollArea = self.main_window.scrollArea + scrollbar.verticalScrollBar().setValue(0) + self.filter = FilterState.show_all() + self.lib.close() self.thumb_job_queue.queue.clear() @@ -748,7 +754,7 @@ class QtDriver(DriverMixin, QObject): item.thumb_button.set_selected(True) self.set_macro_menu_viability() - self.preview_panel.update_widgets() + self.preview_panel.update_widgets(update_preview=False) def clear_select_action_callback(self): self.selected.clear() @@ -761,7 +767,7 @@ class QtDriver(DriverMixin, QObject): def show_tag_database(self): self.modal = PanelModal( widget=TagDatabasePanel(self.lib), - done_callback=self.preview_panel.update_widgets, + done_callback=lambda: self.preview_panel.update_widgets(update_preview=False), has_save=False, ) Translations.translate_with_setter(self.modal.setTitle, "tag_manager.title") @@ -1421,6 +1427,9 @@ class QtDriver(DriverMixin, QObject): ) self.main_window.repaint() + if self.lib.library_dir: + self.close_library() + open_status: LibraryStatus = None try: open_status = self.lib.open_library(path) diff --git a/tagstudio/src/qt/widgets/item_thumb.py b/tagstudio/src/qt/widgets/item_thumb.py index 423b8f49..beaa51d3 100644 --- a/tagstudio/src/qt/widgets/item_thumb.py +++ b/tagstudio/src/qt/widgets/item_thumb.py @@ -502,7 +502,7 @@ class ItemThumb(FlowWidget): self.lib.remove_tags_from_entry(entry_id, tag_id) if self.driver.preview_panel.is_open: - self.driver.preview_panel.update_widgets() + self.driver.preview_panel.update_widgets(update_preview=False) def mouseMoveEvent(self, event): # noqa: N802 if event.buttons() is not Qt.MouseButton.LeftButton: diff --git a/tagstudio/src/qt/widgets/preview_panel.py b/tagstudio/src/qt/widgets/preview_panel.py index 13c5626c..3c60490f 100644 --- a/tagstudio/src/qt/widgets/preview_panel.py +++ b/tagstudio/src/qt/widgets/preview_panel.py @@ -131,8 +131,13 @@ class PreviewPanel(QWidget): root_layout.addWidget(splitter) root_layout.addWidget(add_buttons_container) - def update_widgets(self) -> bool: - """Render the panel widgets with the newest data from the Library.""" + def update_widgets(self, update_preview: bool = True) -> bool: + """Render the panel widgets with the newest data from the Library. + + Args: + update_preview(bool): Should the file preview be updated? + (Only works with one or more items selected) + """ # No Items Selected try: if len(self.driver.selected) == 0: @@ -151,8 +156,9 @@ class PreviewPanel(QWidget): filepath: Path = self.lib.library_dir / entry.path ext: str = filepath.suffix.lower() - stats: dict = self.thumb.update_preview(filepath, ext) - self.file_attrs.update_stats(filepath, ext, stats) + if update_preview: + stats: dict = self.thumb.update_preview(filepath, ext) + self.file_attrs.update_stats(filepath, ext, stats) self.file_attrs.update_date_label(filepath) self.fields.update_from_entry(entry_id) self.update_add_tag_button(entry_id) diff --git a/tagstudio/src/qt/widgets/tag_box.py b/tagstudio/src/qt/widgets/tag_box.py index 82d664ec..6b8a206b 100644 --- a/tagstudio/src/qt/widgets/tag_box.py +++ b/tagstudio/src/qt/widgets/tag_box.py @@ -63,7 +63,7 @@ class TagBoxWidget(FieldWidget): tag_widget.on_remove.connect( lambda tag_id=tag.id: ( self.remove_tag(tag_id), - self.driver.preview_panel.update_widgets(), + self.driver.preview_panel.update_widgets(update_preview=False), ) ) tag_widget.on_edit.connect(lambda t=tag: self.edit_tag(t)) @@ -77,7 +77,7 @@ class TagBoxWidget(FieldWidget): build_tag_panel, tag.name, # TODO - display name including parent tags "Edit Tag", - done_callback=self.driver.preview_panel.update_widgets, + done_callback=lambda: self.driver.preview_panel.update_widgets(update_preview=False), has_save=True, ) # TODO - this was update_tag()