@@ -177,6 +177,9 @@ class QtDriver(DriverMixin, QObject):
177177
178178 SIGTERM = Signal ()
179179
180+ favorite_updated = Signal (bool )
181+ archived_updated = Signal (bool )
182+
180183 tag_manager_panel : PanelModal | None = None
181184 color_manager_panel : TagColorManager | None = None
182185 ignore_modal : PanelModal | None = None
@@ -357,8 +360,9 @@ def start(self) -> None:
357360 self .tag_manager_panel = PanelModal (
358361 widget = TagDatabasePanel (self , self .lib ),
359362 title = Translations ["tag_manager.title" ],
360- done_callback = lambda checked = False ,
361- s = self .selected : self .main_window .preview_panel .set_selection (s , update_preview = False ),
363+ done_callback = lambda checked = False : (
364+ self .main_window .preview_panel .set_selection (self .selected , update_preview = False )
365+ ),
362366 has_save = False ,
363367 )
364368
@@ -369,9 +373,9 @@ def start(self) -> None:
369373 self .add_tag_modal = TagSearchModal (self .lib , is_tag_chooser = True )
370374 self .add_tag_modal .tsp .set_driver (self )
371375 self .add_tag_modal .tsp .tag_chosen .connect (
372- lambda t , s = self . selected : (
373- self .add_tags_to_selected_callback (t ),
374- self .main_window .preview_panel .set_selection (s ),
376+ lambda chosen_tag : (
377+ self .add_tags_to_selected_callback ([ chosen_tag ] ),
378+ self .main_window .preview_panel .set_selection (self . selected ),
375379 )
376380 )
377381
@@ -559,12 +563,12 @@ def create_about_modal():
559563
560564 self .main_window .search_field .textChanged .connect (self .update_completions_list )
561565
562- self .main_window . preview_panel . field_containers_widget . archived_updated .connect (
566+ self .archived_updated .connect (
563567 lambda hidden : self .update_badges (
564568 {BadgeType .ARCHIVED : hidden }, origin_id = 0 , add_tags = False
565569 )
566570 )
567- self .main_window . preview_panel . field_containers_widget . favorite_updated .connect (
571+ self .favorite_updated .connect (
568572 lambda hidden : self .update_badges (
569573 {BadgeType .FAVORITE : hidden }, origin_id = 0 , add_tags = False
570574 )
@@ -800,6 +804,19 @@ def backup_library(self):
800804 )
801805 )
802806
807+ def emit_badge_signals (self , tag_ids : list [int ] | set [int ], emit_on_absent : bool = True ):
808+ """Emit any connected signals for updating badge icons."""
809+ logger .info ("[emit_badge_signals] Emitting" , tag_ids = tag_ids , emit_on_absent = emit_on_absent )
810+ if TAG_ARCHIVED in tag_ids :
811+ self .archived_updated .emit (True ) # noqa: FBT003
812+ elif emit_on_absent :
813+ self .archived_updated .emit (False ) # noqa: FBT003
814+
815+ if TAG_FAVORITE in tag_ids :
816+ self .favorite_updated .emit (True ) # noqa: FBT003
817+ elif emit_on_absent :
818+ self .favorite_updated .emit (False ) # noqa: FBT003
819+
803820 def add_tag_action_callback (self ):
804821 panel = BuildTagPanel (self .lib )
805822 self .modal = PanelModal (
@@ -848,9 +865,10 @@ def clear_select_action_callback(self):
848865 self .main_window .preview_panel .set_selection (self .selected )
849866
850867 def add_tags_to_selected_callback (self , tag_ids : list [int ]):
851- selected = self .selected
868+ selected : list [ int ] = self .selected
852869 self .main_window .thumb_layout .add_tags (selected , tag_ids )
853870 self .lib .add_tags_to_entries (selected , tag_ids )
871+ self .emit_badge_signals (tag_ids )
854872
855873 def delete_files_callback (self , origin_path : str | Path , origin_id : int | None = None ):
856874 """Callback to send on or more files to the system trash.
0 commit comments