diff options
Diffstat (limited to 'src/Body.cpp')
-rw-r--r-- | src/Body.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/Body.cpp b/src/Body.cpp index 766542a..c3cbcda 100644 --- a/src/Body.cpp +++ b/src/Body.cpp @@ -261,6 +261,11 @@ namespace QuickMedia { filter_search_fuzzy_item(current_filter, item.get()); } this->items = std::move(items); + if(attach_side == AttachSide::TOP) { + selected_item = 0; + prev_selected_item = selected_item; + page_scroll = 0.0f; + } } void Body::clear_items() { @@ -299,10 +304,6 @@ namespace QuickMedia { items.insert(items.begin() + index, std::move(body_item)); } - void Body::move_items_to(Body *other_body) { - other_body->set_items(std::move(items)); - } - void Body::move_item(size_t src_index, size_t dst_index) { assert(src_index < items.size()); assert(dst_index < items.size()); @@ -1661,11 +1662,20 @@ namespace QuickMedia { } void Body::filter_search_fuzzy_item(const std::string &text, BodyItem *body_item) { + const bool prev_visible = body_item->visible; + body_item->visible = string_find_fuzzy_case_insensitive(body_item->get_title(), text); if(!body_item->visible && !body_item->get_description().empty()) body_item->visible = string_find_fuzzy_case_insensitive(body_item->get_description(), text); if(!body_item->visible && !body_item->get_author().empty()) body_item->visible = string_find_fuzzy_case_insensitive(body_item->get_author(), text); + + if(prev_visible && !body_item->visible) { + clear_body_item_cache(body_item); + // TODO: Make sure the embedded item is not referencing another item in the |items| list + if(body_item->embedded_item) + clear_body_item_cache(body_item->embedded_item.get()); + } } bool Body::no_items_visible() const { |