Skip to content

Commit 857f40f

Browse files
authored
fix: preview panel + main window fixes and optimizations (#700)
* fix: only update file preview when necessary * fix: don't update thumb from tag_box callbacks * fix: reset preview panel and filters when loading new library * fix: clear library state on close; close old library on open * fix: reset scrollbar position on library close
1 parent 16fb029 commit 857f40f

File tree

5 files changed

+27
-12
lines changed

5 files changed

+27
-12
lines changed

tagstudio/src/qt/modals/folders_to_tags.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ def __init__(self, library: "Library", driver: "QtDriver"):
226226
def on_apply(self, event):
227227
folders_to_tags(self.library)
228228
self.close()
229-
self.driver.preview_panel.update_widgets()
229+
self.driver.preview_panel.update_widgets(update_preview=False)
230230

231231
def on_open(self, event):
232232
for i in reversed(range(self.scroll_layout.count())):

tagstudio/src/qt/ts_qt.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -463,7 +463,7 @@ def create_dupe_files_modal():
463463
self.autofill_action.triggered.connect(
464464
lambda: (
465465
self.run_macros(MacroID.AUTOFILL, self.selected),
466-
self.preview_panel.update_widgets(),
466+
self.preview_panel.update_widgets(update_preview=False),
467467
)
468468
)
469469
macros_menu.addAction(self.autofill_action)
@@ -638,7 +638,6 @@ def init_library_window(self):
638638
self.main_window.pagination.index.connect(lambda i: self.page_move(page_id=i))
639639

640640
self.splash.finish(self.main_window)
641-
self.preview_panel.update_widgets()
642641

643642
def show_grid_filenames(self, value: bool):
644643
for thumb in self.item_thumbs:
@@ -678,6 +677,13 @@ def close_library(self, is_shutdown: bool = False):
678677
self.settings.setValue(SettingItems.LAST_LIBRARY, str(self.lib.library_dir))
679678
self.settings.sync()
680679

680+
# Reset library state
681+
self.preview_panel.update_widgets()
682+
self.main_window.searchField.setText("")
683+
scrollbar: QScrollArea = self.main_window.scrollArea
684+
scrollbar.verticalScrollBar().setValue(0)
685+
self.filter = FilterState.show_all()
686+
681687
self.lib.close()
682688

683689
self.thumb_job_queue.queue.clear()
@@ -748,7 +754,7 @@ def select_all_action_callback(self):
748754
item.thumb_button.set_selected(True)
749755

750756
self.set_macro_menu_viability()
751-
self.preview_panel.update_widgets()
757+
self.preview_panel.update_widgets(update_preview=False)
752758

753759
def clear_select_action_callback(self):
754760
self.selected.clear()
@@ -761,7 +767,7 @@ def clear_select_action_callback(self):
761767
def show_tag_database(self):
762768
self.modal = PanelModal(
763769
widget=TagDatabasePanel(self.lib),
764-
done_callback=self.preview_panel.update_widgets,
770+
done_callback=lambda: self.preview_panel.update_widgets(update_preview=False),
765771
has_save=False,
766772
)
767773
Translations.translate_with_setter(self.modal.setTitle, "tag_manager.title")
@@ -1421,6 +1427,9 @@ def open_library(self, path: Path) -> None:
14211427
)
14221428
self.main_window.repaint()
14231429

1430+
if self.lib.library_dir:
1431+
self.close_library()
1432+
14241433
open_status: LibraryStatus = None
14251434
try:
14261435
open_status = self.lib.open_library(path)

tagstudio/src/qt/widgets/item_thumb.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -502,7 +502,7 @@ def toggle_item_tag(
502502
self.lib.remove_tags_from_entry(entry_id, tag_id)
503503

504504
if self.driver.preview_panel.is_open:
505-
self.driver.preview_panel.update_widgets()
505+
self.driver.preview_panel.update_widgets(update_preview=False)
506506

507507
def mouseMoveEvent(self, event): # noqa: N802
508508
if event.buttons() is not Qt.MouseButton.LeftButton:

tagstudio/src/qt/widgets/preview_panel.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -131,8 +131,13 @@ def __init__(self, library: Library, driver: "QtDriver"):
131131
root_layout.addWidget(splitter)
132132
root_layout.addWidget(add_buttons_container)
133133

134-
def update_widgets(self) -> bool:
135-
"""Render the panel widgets with the newest data from the Library."""
134+
def update_widgets(self, update_preview: bool = True) -> bool:
135+
"""Render the panel widgets with the newest data from the Library.
136+
137+
Args:
138+
update_preview(bool): Should the file preview be updated?
139+
(Only works with one or more items selected)
140+
"""
136141
# No Items Selected
137142
try:
138143
if len(self.driver.selected) == 0:
@@ -151,8 +156,9 @@ def update_widgets(self) -> bool:
151156
filepath: Path = self.lib.library_dir / entry.path
152157
ext: str = filepath.suffix.lower()
153158

154-
stats: dict = self.thumb.update_preview(filepath, ext)
155-
self.file_attrs.update_stats(filepath, ext, stats)
159+
if update_preview:
160+
stats: dict = self.thumb.update_preview(filepath, ext)
161+
self.file_attrs.update_stats(filepath, ext, stats)
156162
self.file_attrs.update_date_label(filepath)
157163
self.fields.update_from_entry(entry_id)
158164
self.update_add_tag_button(entry_id)

tagstudio/src/qt/widgets/tag_box.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ def set_tags(self, tags: typing.Iterable[Tag]):
6363
tag_widget.on_remove.connect(
6464
lambda tag_id=tag.id: (
6565
self.remove_tag(tag_id),
66-
self.driver.preview_panel.update_widgets(),
66+
self.driver.preview_panel.update_widgets(update_preview=False),
6767
)
6868
)
6969
tag_widget.on_edit.connect(lambda t=tag: self.edit_tag(t))
@@ -77,7 +77,7 @@ def edit_tag(self, tag: Tag):
7777
build_tag_panel,
7878
tag.name, # TODO - display name including parent tags
7979
"Edit Tag",
80-
done_callback=self.driver.preview_panel.update_widgets,
80+
done_callback=lambda: self.driver.preview_panel.update_widgets(update_preview=False),
8181
has_save=True,
8282
)
8383
# TODO - this was update_tag()

0 commit comments

Comments
 (0)