Add delete buttons to saved searches, clear history on exit

- Saved searches now have an x button to remove them individually
- Session cache mode clears search history but keeps saved searches
This commit is contained in:
pax 2026-04-04 20:09:59 -05:00
parent 043f36ef99
commit a3e114c5b3
2 changed files with 24 additions and 6 deletions

View File

@ -1371,6 +1371,7 @@ class BooruApp(QMainWindow):
if self._db.get_setting_bool("clear_cache_on_exit"): if self._db.get_setting_bool("clear_cache_on_exit"):
from ..core.cache import clear_cache from ..core.cache import clear_cache
clear_cache(clear_images=True, clear_thumbnails=True) clear_cache(clear_images=True, clear_thumbnails=True)
self._db.clear_search_history()
self._db.close() self._db.close()
super().closeEvent(event) super().closeEvent(event)

View File

@ -121,8 +121,29 @@ class SearchBar(QWidget):
saved_header.setEnabled(False) saved_header.setEnabled(False)
saved_actions = {} saved_actions = {}
for sid, name, query in saved: for sid, name, query in saved:
a = menu.addAction(f" {name} ({query})") row = QWidget()
saved_actions[id(a)] = (sid, query) row_layout = QHBoxLayout(row)
row_layout.setContentsMargins(8, 2, 4, 2)
label = QPushButton(f"{name} ({query})")
label.setFlat(True)
label.setStyleSheet("text-align: left; border: none; padding: 2px 4px;")
delete_btn = QPushButton("x")
delete_btn.setFixedWidth(20)
delete_btn.setFlat(True)
delete_btn.setToolTip("Remove saved search")
row_layout.addWidget(label, stretch=1)
row_layout.addWidget(delete_btn)
wa = QWidgetAction(menu)
wa.setDefaultWidget(row)
menu.addAction(wa)
label.clicked.connect(lambda checked, q=query, m=menu: (
self._input.setText(q), self._do_search(), m.close()
))
delete_btn.clicked.connect(lambda checked, s=sid, m=menu: (
self._db.remove_saved_search(s), m.close(), self._show_history_menu()
))
menu.addSeparator() menu.addSeparator()
# History # History
@ -177,10 +198,6 @@ class SearchBar(QWidget):
if clear_action and action == clear_action: if clear_action and action == clear_action:
self._db.clear_search_history() self._db.clear_search_history()
elif saved and id(action) in saved_actions:
_, query = saved_actions[id(action)]
self._input.setText(query)
self._do_search()
def _save_current_search(self) -> None: def _save_current_search(self) -> None:
if not self._db: if not self._db: