From c015b1d4f2e76b8678689f878de6353cb8bba61e Mon Sep 17 00:00:00 2001 From: Travis Abendshien <46939827+CyanVoxel@users.noreply.github.com> Date: Thu, 13 Aug 2026 21:57:13 -0700 Subject: [PATCH] fix(ui): shifting no longer resets opacity of added tags --- .../qt/controllers/tag_suggest_box.py | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/tagstudio/qt/controllers/tag_suggest_box.py b/src/tagstudio/qt/controllers/tag_suggest_box.py index e9538d37..19b4eb0d 100644 --- a/src/tagstudio/qt/controllers/tag_suggest_box.py +++ b/src/tagstudio/qt/controllers/tag_suggest_box.py @@ -98,7 +98,26 @@ class TagSuggestBox(SuggestBox[Tag]): else: self._update_hint_icon() - return super()._on_shift_held(held) + # NOTE: This code is similar to the base method, but needs to reference the tag IDs for each + # widget and compare those against the self.added list. + for i in range(0, self.layout().content_layout.count()): + underlined_widget = self.layout().content_layout.itemAt(i).widget() + assert isinstance(underlined_widget, UnderlinedWidget) + + if held and i == self._selection_index: + self._is_shift_held = True + opacity_effect = QGraphicsOpacityEffect(self) + opacity_effect.setOpacity(0.3) + underlined_widget.widget.setGraphicsEffect(opacity_effect) + else: + tag_widget = underlined_widget.widget + if not isinstance(tag_widget, TagWidget): + return + if not tag_widget.tag: + return + if tag_widget.tag.id not in self.added: + self._is_shift_held = False + underlined_widget.widget.setGraphicsEffect(None) # pyright: ignore[reportArgumentType] @override def _update_hint_icon(self) -> None: