From f44cbe02c17df1f02ad49c63cd784fec0ea02d85 Mon Sep 17 00:00:00 2001 From: fiaxh Date: Sat, 14 May 2022 14:45:59 +0200 Subject: Improve Gtk4 port --- main/src/ui/add_conversation/select_jid_fragment.vala | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'main/src/ui/add_conversation/select_jid_fragment.vala') diff --git a/main/src/ui/add_conversation/select_jid_fragment.vala b/main/src/ui/add_conversation/select_jid_fragment.vala index 58f019c1..a6cf0864 100644 --- a/main/src/ui/add_conversation/select_jid_fragment.vala +++ b/main/src/ui/add_conversation/select_jid_fragment.vala @@ -23,7 +23,7 @@ public class SelectJidFragment : Gtk.Box { private StreamInteractor stream_interactor; private Gee.List accounts; - private ArrayList added_rows = new ArrayList(); + private ArrayList added_rows = new ArrayList(); private ListBox list; private string[]? filter_values; @@ -39,6 +39,7 @@ public class SelectJidFragment : Gtk.Box { list.set_sort_func(sort); list.set_filter_func(filter); + list.set_header_func(header); list.row_selected.connect(check_buttons_active); list.row_selected.connect(() => { done = true; }); // just for notifying entry.changed.connect(() => { set_filter(entry.text); }); @@ -49,7 +50,7 @@ public class SelectJidFragment : Gtk.Box { public void set_filter(string str) { if (entry.text != str) entry.text = str; - foreach (AddListRow row in added_rows) list.remove(row); + foreach (Widget row in added_rows) list.remove(row); added_rows.clear(); filter_values = str == "" ? null : str.split(" "); @@ -59,9 +60,10 @@ public class SelectJidFragment : Gtk.Box { Jid parsed_jid = new Jid(str); if (parsed_jid != null && parsed_jid.localpart != null) { foreach (Account account in accounts) { - AddListRow row = new AddListRow(stream_interactor, parsed_jid, account); - list.append(row); - added_rows.add(row); + var list_row = new Gtk.ListBoxRow(); + list_row.set_child(new AddListRow(stream_interactor, parsed_jid, account)); + list.append(list_row); + added_rows.add(list_row); } } } catch (InvalidJidError ignored) { @@ -108,6 +110,12 @@ public class SelectJidFragment : Gtk.Box { return true; } + private void header(ListBoxRow row, ListBoxRow? before_row) { + if (row.get_header() == null && before_row != null) { + row.set_header(new Separator(Orientation.HORIZONTAL)); + } + } + private class AddListRow : ListRow { public AddListRow(StreamInteractor stream_interactor, Jid jid, Account account) { -- cgit v1.2.3-54-g00ecf