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.
This commit is contained in:
pax 2026-04-05 04:30:40 -05:00
parent 05e19ee957
commit 5c3995f5d6
2 changed files with 10 additions and 8 deletions

View File

@ -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,8 +780,6 @@ 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)
def _on_post_activated(self, index: int) -> None:
@ -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

View File

@ -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: