diff --git a/src/widgets/header_row.py b/src/widgets/header_row.py index a789a75..39cf0fe 100644 --- a/src/widgets/header_row.py +++ b/src/widgets/header_row.py @@ -30,14 +30,23 @@ class HeaderRow(Gtk.Box): value_entry = Gtk.Template.Child() remove_button = Gtk.Template.Child() - # Signal emitted when remove button clicked + # Signals __gsignals__ = { - 'remove-requested': (GObject.SIGNAL_RUN_FIRST, None, ()) + 'remove-requested': (GObject.SIGNAL_RUN_FIRST, None, ()), + 'changed': (GObject.SIGNAL_RUN_FIRST, None, ()) } def __init__(self): super().__init__() + # Connect to entry changes to emit our own changed signal + self.key_entry.connect('changed', self._on_entry_changed) + self.value_entry.connect('changed', self._on_entry_changed) + + def _on_entry_changed(self, entry): + """Handle changes to key or value entries.""" + self.emit('changed') + @Gtk.Template.Callback() def on_remove_clicked(self, button): """Handle remove button click.""" diff --git a/src/window.py b/src/window.py index e93bc08..bfcd043 100644 --- a/src/window.py +++ b/src/window.py @@ -837,6 +837,7 @@ class RosterWindow(Adw.ApplicationWindow): row = HeaderRow() row.set_header(key, value) row.connect('remove-requested', self._on_header_remove) + row.connect('changed', self._on_request_changed) self.headers_listbox.append(row) # Mark as changed if we're adding a non-empty header