| ... |
... |
@@ -537,11 +537,24 @@ def _on_global_search_toggle(self, button: Gtk.ToggleButton) -> None: |
|
537
|
537
|
self._set_listbox(self._ui.listbox)
|
|
538
|
538
|
self._global_search_listbox.remove_all()
|
|
539
|
539
|
|
|
540
|
|
- def _on_search_changed(self, entry: Gtk.SearchEntry) -> None:
|
|
|
540
|
+ def _on_search_changed(self, search_entry: Gtk.SearchEntry) -> None:
|
|
|
541
|
+ self._show_search_entry_error(False)
|
|
|
542
|
+
|
|
541
|
543
|
if self._global_search_active():
|
|
542
|
544
|
return
|
|
543
|
545
|
|
|
544
|
|
- search_text = entry.get_text()
|
|
|
546
|
+ search_text = search_entry.get_text()
|
|
|
547
|
+ if not search_text:
|
|
|
548
|
+ self._remove_new_jid_row()
|
|
|
549
|
+ return
|
|
|
550
|
+
|
|
|
551
|
+ try:
|
|
|
552
|
+ validate_jid(search_text)
|
|
|
553
|
+ except ValueError:
|
|
|
554
|
+ self._show_search_entry_error(True)
|
|
|
555
|
+ self._remove_new_jid_row()
|
|
|
556
|
+ return
|
|
|
557
|
+
|
|
545
|
558
|
if '@' in search_text:
|
|
546
|
559
|
self._add_new_jid_row()
|
|
547
|
560
|
self._update_new_jid_rows(search_text)
|
| ... |
... |
@@ -549,6 +562,15 @@ def _on_search_changed(self, entry: Gtk.SearchEntry) -> None: |
|
549
|
562
|
self._remove_new_jid_row()
|
|
550
|
563
|
self._ui.listbox.invalidate_filter()
|
|
551
|
564
|
|
|
|
565
|
+ def _show_search_entry_error(self, state: bool):
|
|
|
566
|
+ icon_name = 'dialog-warning-symbolic' if state else None
|
|
|
567
|
+ self._ui.search_entry.set_icon_from_icon_name(
|
|
|
568
|
+ Gtk.EntryIconPosition.SECONDARY,
|
|
|
569
|
+ icon_name)
|
|
|
570
|
+ self._ui.search_entry.set_icon_tooltip_text(
|
|
|
571
|
+ Gtk.EntryIconPosition.SECONDARY,
|
|
|
572
|
+ _('Invalid Address'))
|
|
|
573
|
+
|
|
552
|
574
|
def _add_new_jid_row(self) -> None:
|
|
553
|
575
|
if self.new_contact_row_visible:
|
|
554
|
576
|
return
|