Skip to content

Commit 80696ab

Browse files
authored
fix(ui): use correct max count for search panels (#1524)
1 parent 6dde2cc commit 80696ab

4 files changed

Lines changed: 23 additions & 22 deletions

File tree

‎src/tagstudio/qt/controllers/field_template_search_panel.py‎

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,6 @@ def __init__(
4343
self._unlimited_limit_item_label = Translations["field_template.all_field_templates"]
4444
self._create_and_add_button_key = "field_template.create_add"
4545

46-
@override
47-
def _get_max_limit(self) -> int:
48-
return len(self.__lib.field_templates)
49-
5046
@override
5147
def on_item_create(self, add_to_entry: bool = False) -> None:
5248
"""Opens panel to create a new field template and optionally add it to an entry.

‎src/tagstudio/qt/controllers/search_panel.py‎

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -149,12 +149,6 @@ def on_limit_changed(self, index: int) -> None:
149149
def _get_limit(self) -> tuple[str, int]:
150150
return self._limit_items[self.get_limit_index()]
151151

152-
def _get_previous_limit(self) -> tuple[str, int]:
153-
return self._limit_items[self._previous_limit_index]
154-
155-
def _get_max_limit(self) -> int:
156-
raise NotImplementedError()
157-
158152
def on_search_query_changed(self, query: str) -> None:
159153
self.layout().create_and_add_button.setText(
160154
Translations.format(self._create_and_add_button_key, query=query)
@@ -230,14 +224,7 @@ def update_items(self, query: str | None = None) -> None:
230224
logger.info("[SearchPanel] Search results", results=self._search_results)
231225

232226
# Update every item widget with the new search result data
233-
previous_limit: int = (
234-
self._get_previous_limit()[1] > 0 and self._get_previous_limit()[1]
235-
) or self._get_max_limit()
236-
current_limit: int = (
237-
self._get_limit()[1] > 0 and self._get_limit()[1]
238-
) or self._get_max_limit()
239-
240-
for i in range(0, max(previous_limit, current_limit)):
227+
for i in range(max(len(all_results), self.layout().scroll_layout.count())):
241228
item: T | None = all_results[i] if i < len(all_results) else None
242229
self.set_item_widget(item=item, index=i)
243230

‎src/tagstudio/qt/controllers/tag_search_panel.py‎

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,6 @@ def __init__(
4343
self._unlimited_limit_item_label = Translations["tag.all_tags"]
4444
self._create_and_add_button_key = "tag.create_add"
4545

46-
@override
47-
def _get_max_limit(self) -> int:
48-
return len(self._lib.tags)
49-
5046
@override
5147
def on_item_create(self, add_to_entry: bool = False) -> None:
5248
"""Opens panel to create a new tag and optionally add it to an entry.

‎tests/qt/test_tag_search_panel.py‎

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,28 @@ def test_update_tags(qtbot: QtBot, library: Library):
2121
panel.update_items()
2222

2323

24+
def test_removed_tag_capsules_hidden(qtbot: QtBot, library: Library):
25+
"""Regression test for #1523."""
26+
panel = TagSearchPanel(library, is_chooser=False)
27+
qtbot.addWidget(panel)
28+
29+
# 1. Set view limit to "All Items"
30+
panel.set_limit_index(panel.layout().limit_combobox.count() - 1)
31+
panel.update_items()
32+
33+
# 2. Delete a tag
34+
library.remove_tag(library.tags[-1].id)
35+
panel.update_items()
36+
37+
# 3. Assert that there's the correct number of visible capsules and no duplicates
38+
visible_capsules = [
39+
i
40+
for i in range(panel.layout().scroll_layout.count())
41+
if not panel.get_item_widget(i, library).isHidden()
42+
]
43+
assert len(visible_capsules) == len(library.tags)
44+
45+
2446
def test_capsule_actions_replaced_correctly(qtbot: QtBot, library: Library):
2547
panel = TagSearchPanel(library, view=SearchPanelView(""))
2648
qtbot.addWidget(panel)

0 commit comments

Comments
 (0)