diff --git a/fractal-gtk/src/app/backend_loop.rs b/fractal-gtk/src/app/backend_loop.rs index e8920a54364ee046ad80253f16af8df3a2a6361f..d4f731968c42ea5bd228196d0f4a6ed85b8b36aa 100644 --- a/fractal-gtk/src/app/backend_loop.rs +++ b/fractal-gtk/src/app/backend_loop.rs @@ -130,7 +130,7 @@ pub fn backend_loop(rx: Receiver) { APPOP!(set_protocols, (protocols)); } Ok(BKResponse::DirectorySearch(rooms)) => { - APPOP!(set_directory_rooms, (rooms)); + APPOP!(append_directory_rooms, (rooms)); } Ok(BKResponse::JoinRoom) => { diff --git a/fractal-gtk/src/appop/directory.rs b/fractal-gtk/src/appop/directory.rs index 79f982d0d13df2c671417bf3eaf933158e4c1f81..48fd9a4f87cecc3b6521b907a5be03bd88eff13e 100644 --- a/fractal-gtk/src/appop/directory.rs +++ b/fractal-gtk/src/appop/directory.rs @@ -128,16 +128,7 @@ impl AppOp { self.search_rooms(true); } - pub fn set_directory_rooms(&mut self, rooms: Vec) { - for r in rooms.iter() { - if self.directory.contains(r) { - continue; - } - self.directory.push(r.clone()); - } - - self.directory.sort_by_key(|a| -a.n_members); - + pub fn append_directory_rooms(&mut self, rooms: Vec) { let directory = self .ui .builder @@ -157,7 +148,11 @@ impl AppOp { .expect("Can't find directory_column in ui file."); directory_stack.set_visible_child(&directory_column); - for r in self.directory.iter() { + let mut sorted_rooms = rooms.clone(); + sorted_rooms.sort_by_key(|a| -a.n_members); + + for r in sorted_rooms.iter() { + self.directory.push(r.clone()); let rb = widgets::RoomBox::new(&r, &self); let room_widget = rb.widget(); directory.add(&room_widget);