Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 11 additions & 15 deletions src/MessageList/FolderPopover/FolderPopover.vala
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

public class Mail.FolderPopover : Gtk.Popover {
private Gtk.SearchEntry search_entry;
private Gtk.ListBox list_box;
private ListStore folder_list;

construct {
search_entry = new Gtk.SearchEntry () {
Expand Down Expand Up @@ -41,10 +41,12 @@ public class Mail.FolderPopover : Gtk.Popover {
placeholder.attach (placeholder_subtitle, 1, 1);
placeholder.show_all ();

list_box = new Gtk.ListBox () {
folder_list = new ListStore (typeof (FolderRow));

var list_box = new Gtk.ListBox () {
activate_on_single_click = true
};
list_box.set_sort_func (sort_func);
list_box.bind_model (folder_list, (obj) => (FolderRow) obj);
list_box.set_filter_func (filter_func);
list_box.set_placeholder (placeholder);

Expand Down Expand Up @@ -79,9 +81,7 @@ public class Mail.FolderPopover : Gtk.Popover {
}

public void set_store (Camel.Store store) {
foreach (var child in list_box.get_children ()) {
child.destroy ();
}
folder_list.remove_all ();

store.get_folder_info.begin (null, Camel.StoreGetFolderInfoFlags.RECURSIVE, GLib.Priority.DEFAULT, null, (obj, res) => {
try {
Expand All @@ -96,7 +96,7 @@ public class Mail.FolderPopover : Gtk.Popover {
private void update (Camel.FolderInfo top, Camel.Store store) {
var folder_info = top;
while (folder_info != null) {
list_box.add (new FolderRow (folder_info, store));
folder_list.insert_sorted (new FolderRow (folder_info, store), sort_func);

if (folder_info.child != null) {
update (folder_info.child, store);
Expand All @@ -105,15 +105,11 @@ public class Mail.FolderPopover : Gtk.Popover {
}
}

private int sort_func (Gtk.ListBoxRow row1, Gtk.ListBoxRow row2) {
if (row1 is FolderRow && row2 is FolderRow) {
var folder_row1 = (FolderRow) row1;
var folder_row2 = (FolderRow) row2;

return folder_row1.pos - folder_row2.pos;
}
private int sort_func (Object row1, Object row2) {
var folder_row1 = (FolderRow) row1;
var folder_row2 = (FolderRow) row2;

return 0;
return folder_row1.pos - folder_row2.pos;
}

private bool filter_func (Gtk.ListBoxRow row) {
Expand Down