add bookmarks limit option

This commit is contained in:
yggverse 2025-03-08 21:19:58 +02:00
parent ce14920d23
commit 1c4bde4004
3 changed files with 9 additions and 5 deletions

View File

@ -207,7 +207,7 @@ impl Menu for MenuButton {
move |_| {
// Bookmarks
main_bookmarks.remove_all();
for bookmark in profile.bookmark.recent() {
for bookmark in profile.bookmark.recent(None) {
let menu_item = gio::MenuItem::new(Some(&ellipsize(&bookmark.request, LABEL_MAX_LENGTH)), None);
menu_item.set_action_and_target_value(Some(&format!(
"{}.{}",

View File

@ -68,8 +68,8 @@ impl Bookmark {
}
/// Get recent Items vector from `memory`, sorted by `ID` DESC
pub fn recent(&self) -> Vec<Item> {
self.memory.borrow().recent()
pub fn recent(&self, limit: Option<usize>) -> Vec<Item> {
self.memory.borrow().recent(limit)
}
}

View File

@ -40,13 +40,17 @@ impl Memory {
}
/// Get recent Items vector sorted by `ID` DESC
pub fn recent(&self) -> Vec<Item> {
pub fn recent(&self, limit: Option<usize>) -> Vec<Item> {
let mut recent: Vec<Item> = Vec::new();
for item in self
for (i, item) in self
.0
.iter()
.sorted_by(|a, b| Ord::cmp(&b.request, &a.request))
.enumerate()
{
if limit.is_some_and(|l| i > l) {
break;
}
recent.push(item.clone())
}
recent