aboutsummaryrefslogtreecommitdiff
path: root/src/Body.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Body.cpp')
-rw-r--r--src/Body.cpp18
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 {