@@ -295,16 +295,16 @@ def _apply_nested_config_styling(self, manager, resolved_value: bool) -> None:
295295 effect .setOpacity (0.4 )
296296 widget .setGraphicsEffect (effect )
297297
298- # Update provenance button visibility and title label underline
299- self ._update_title_label_styling (manager )
298+ # Update provenance button visibility and checkbox underline
299+ self ._update_enabled_field_title_styling (manager )
300300
301- def _update_title_label_styling (self , manager ) -> None :
301+ def _update_enabled_field_title_styling (self , manager ) -> None :
302302 """
303- Update title label styling for nested configs with enabled fields.
303+ Update title styling for nested configs with enabled fields.
304304
305305 This handles:
306306 - Provenance button visibility (only show when provenance source available)
307- - Title label underline (when enabled field's value differs from signature)
307+ - Checkbox underline (when enabled field's value differs from signature)
308308
309309 Args:
310310 manager: ParameterFormManager instance (nested manager)
@@ -325,11 +325,6 @@ def _update_title_label_styling(self, manager) -> None:
325325 if not group_box :
326326 return
327327
328- # Get title label from GroupBox
329- title_label = getattr (group_box , '_title_label' , None )
330- if not title_label :
331- return
332-
333328 # Update provenance button visibility
334329 # The button is in the title layout, we need to find it
335330 from pyqt_reactive .widgets .shared .clickable_help_components import ProvenanceButton
@@ -339,13 +334,16 @@ def _update_title_label_styling(self, manager) -> None:
339334 logger .debug (f"[TITLE_STYLING] Updated provenance button visibility for { param_name } " )
340335 break
341336
342- # Update title label underline based on signature diff
343- dotted_path = f'{ manager .field_id } .{ param_name } ' if manager .field_id else param_name
344- should_underline = dotted_path in manager .state .signature_diff_fields
345- font = title_label .font ()
346- font .setUnderline (should_underline )
347- title_label .setFont (font )
348- logger .debug (f"[TITLE_STYLING] field_id={ param_name } , should_underline={ should_underline } " )
337+ # Update checkbox underline based on signature diff
338+ # The checkbox is the enabled widget, we need to find it
339+ enabled_widget = manager .widgets .get ('enabled' )
340+ if enabled_widget :
341+ dotted_path = f'{ manager .field_id } .{ param_name } ' if manager .field_id else param_name
342+ should_underline = dotted_path in manager .state .signature_diff_fields
343+ font = enabled_widget .font ()
344+ font .setUnderline (should_underline )
345+ enabled_widget .setFont (font )
346+ logger .debug (f"[TITLE_STYLING] field_id={ param_name } , should_underline={ should_underline } " )
349347
350348 # CRITICAL: Trigger a visual update so opacity effects are rendered
351349 # Qt doesn't automatically render QGraphicsOpacityEffect changes
0 commit comments