diff --git a/src/app/browser/window/tab/item/page/navigation/bookmark.rs b/src/app/browser/window/tab/item/page/navigation/bookmark.rs index 140bfcbc..e0d3cdaf 100644 --- a/src/app/browser/window/tab/item/page/navigation/bookmark.rs +++ b/src/app/browser/window/tab/item/page/navigation/bookmark.rs @@ -41,17 +41,11 @@ impl Bookmark { let profile = self.profile.clone(); let query = self.request.text(); let title = title.map(|t| t.to_string()); - gtk::glib::spawn_future_local(async move { - button.set_sensitive(false); // lock - let has_bookmark = gtk::gio::spawn_blocking(move || { - profile.bookmark.toggle(&query, title.as_deref()).unwrap() - }) - .await - .unwrap(); - button.set_icon_name(icon_name(has_bookmark)); - button.set_tooltip_text(Some(tooltip_text(has_bookmark))); - button.set_sensitive(true); - }); // may take a while + button.set_sensitive(false); // lock + let has_bookmark = profile.bookmark.toggle(&query, title.as_deref()).unwrap(); + button.set_icon_name(icon_name(has_bookmark)); + button.set_tooltip_text(Some(tooltip_text(has_bookmark))); + button.set_sensitive(true); } } @@ -76,10 +70,7 @@ fn update(profile: &Arc, button: &Button, request: gtk::glib::GString) let button = button.clone(); gtk::glib::spawn_future_local(async move { button.set_sensitive(false); // lock - let has_bookmark = - gtk::gio::spawn_blocking(move || profile.bookmark.is_match_request(&request)) - .await - .unwrap(); + let has_bookmark = profile.bookmark.is_match_request(&request); button.set_icon_name(icon_name(has_bookmark)); button.set_tooltip_text(Some(tooltip_text(has_bookmark))); button.set_sensitive(true); diff --git a/src/app/browser/window/tab/item/page/navigation/request/suggestion.rs b/src/app/browser/window/tab/item/page/navigation/request/suggestion.rs index 88946c59..2695aae8 100644 --- a/src/app/browser/window/tab/item/page/navigation/request/suggestion.rs +++ b/src/app/browser/window/tab/item/page/navigation/request/suggestion.rs @@ -170,31 +170,26 @@ impl Suggestion { let list_store = self.list_store.clone(); let profile = self.profile.clone(); gtk::glib::spawn_future_local(async move { - let list_items: Vec<(GString, GString, bool, GString)> = - gtk::gio::spawn_blocking(move || { - profile - .history - .contains_request(&query, limit) - .into_iter() - .sorted_by(|a, b| Ord::cmp(&b.opened.count, &a.opened.count)) - .map(|item| { - let subtitle = highlight(&item.request, &query); - let title = match item.title { - Some(title) => highlight(&title, &query), - None => subtitle.clone(), - }; - ( - title, - subtitle, - profile.bookmark.is_match_request(&item.request), - item.request, - ) - }) - .sorted_by(|a, b| Ord::cmp(&b.2, &a.2)) // bookmark first - .collect() + let list_items: Vec<(GString, GString, bool, GString)> = profile + .history + .contains_request(&query, limit) + .into_iter() + .sorted_by(|a, b| Ord::cmp(&b.opened.count, &a.opened.count)) + .map(|item| { + let subtitle = highlight(&item.request, &query); + let title = match item.title { + Some(title) => highlight(&title, &query), + None => subtitle.clone(), + }; + ( + title, + subtitle, + profile.bookmark.is_match_request(&item.request), + item.request, + ) }) - .await - .unwrap(); + .sorted_by(|a, b| Ord::cmp(&b.2, &a.2)) // bookmark first + .collect(); if list_items.is_empty() { popover.popdown(); } else {