diff --git a/booru_viewer/gui/app.py b/booru_viewer/gui/app.py index 80e5e16..9cc8dfa 100644 --- a/booru_viewer/gui/app.py +++ b/booru_viewer/gui/app.py @@ -1371,6 +1371,7 @@ class BooruApp(QMainWindow): if self._db.get_setting_bool("clear_cache_on_exit"): from ..core.cache import clear_cache clear_cache(clear_images=True, clear_thumbnails=True) + self._db.clear_search_history() self._db.close() super().closeEvent(event) diff --git a/booru_viewer/gui/search.py b/booru_viewer/gui/search.py index 144e34a..d597643 100644 --- a/booru_viewer/gui/search.py +++ b/booru_viewer/gui/search.py @@ -121,8 +121,29 @@ class SearchBar(QWidget): saved_header.setEnabled(False) saved_actions = {} for sid, name, query in saved: - a = menu.addAction(f" {name} ({query})") - saved_actions[id(a)] = (sid, query) + row = QWidget() + 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() # History @@ -177,10 +198,6 @@ class SearchBar(QWidget): if clear_action and action == clear_action: 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: if not self._db: