From 5c3995f5d69015b2b1df82af6f634b594a90cc96 Mon Sep 17 00:00:00 2001 From: pax Date: Sun, 5 Apr 2026 04:30:40 -0500 Subject: [PATCH] Fix right-click: select visually without activating preview Right-click selects the thumbnail (border highlight) but doesn't trigger post_selected/activated, so preview stays on current post. Added hover border highlight. Removed _last_activated_index guard. --- booru_viewer/gui/app.py | 9 +-------- booru_viewer/gui/grid.py | 9 +++++++++ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/booru_viewer/gui/app.py b/booru_viewer/gui/app.py index 0f99bb4..50df7cb 100644 --- a/booru_viewer/gui/app.py +++ b/booru_viewer/gui/app.py @@ -671,7 +671,6 @@ class BooruApp(QMainWindow): self._run_async(_search) def _on_search_done(self, posts: list) -> None: - self._last_activated_index = -1 self._posts = posts self._status.showMessage(f"{len(posts)} results") thumbs = self._grid.set_posts(len(posts)) @@ -769,8 +768,6 @@ class BooruApp(QMainWindow): # -- Post selection / preview -- - _last_activated_index = -1 - def _on_post_selected(self, index: int) -> None: multi = self._grid.selected_indices if len(multi) > 1: @@ -783,9 +780,7 @@ class BooruApp(QMainWindow): ) if self._info_panel.isVisible(): self._info_panel.set_post(post) - if index != self._last_activated_index: - self._last_activated_index = index - self._on_post_activated(index) + self._on_post_activated(index) def _on_post_activated(self, index: int) -> None: if 0 <= index < len(self._posts): @@ -1270,13 +1265,11 @@ class BooruApp(QMainWindow): self._db.set_setting("blacklist_enabled", "1") self._preview.clear() self._status.showMessage(f"Blacklisted: {tag}") - self._last_activated_index = -1 self._do_search() elif action == bl_post_action: self._db.add_blacklisted_post(post.file_url) self._preview.clear() self._status.showMessage(f"Post #{post.id} blacklisted") - self._last_activated_index = -1 self._do_search() @staticmethod diff --git a/booru_viewer/gui/grid.py b/booru_viewer/gui/grid.py index b21fc91..623b499 100644 --- a/booru_viewer/gui/grid.py +++ b/booru_viewer/gui/grid.py @@ -119,6 +119,8 @@ class ThumbnailWidget(QWidget): pen = QPen(highlight, BORDER_WIDTH) elif self._multi_selected: pen = QPen(highlight.darker(150), BORDER_WIDTH) + elif self._hover: + pen = QPen(highlight.lighter(150), 1) else: pen = QPen(mid, 1) p.setPen(pen) @@ -376,6 +378,13 @@ class ThumbnailGrid(QScrollArea): if self._multi_selected and index in self._multi_selected: self.multi_context_requested.emit(sorted(self._multi_selected), pos) else: + # Select visually but don't activate (no preview change) + self._clear_multi() + if 0 <= self._selected_index < len(self._thumbs): + self._thumbs[self._selected_index].set_selected(False) + self._selected_index = index + self._thumbs[index].set_selected(True) + self.ensureWidgetVisible(self._thumbs[index]) self.context_requested.emit(index, pos) def select_all(self) -> None: