From 5b11322c33ef61d3aa8d6bc9c9bc0355f35afa52 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Thu, 20 May 2021 19:06:14 +0200 Subject: Restrict image size to body size --- src/Body.cpp | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'src/Body.cpp') diff --git a/src/Body.cpp b/src/Body.cpp index 72974fa..1b1d35a 100644 --- a/src/Body.cpp +++ b/src/Body.cpp @@ -500,6 +500,16 @@ namespace QuickMedia { if(frame_time > 2.0f) frame_time = 2.0f; + if(selected_item >= (int)items.size()) + selected_item = (int)items.size() - 1; + + if(selected_item < 0) + selected_item = 0; + + if(prev_selected_item < 0 || prev_selected_item >= (int)items.size()) { + prev_selected_item = selected_item; + } + body_pos = pos; bool body_size_changed = std::abs(size.x - body_size.x) > 0.1f || std::abs(size.y - body_size.y) > 0.1f; if(body_size_changed) { @@ -613,10 +623,6 @@ namespace QuickMedia { } } - if(prev_selected_item < 0 || prev_selected_item >= (int)items.size()) { - prev_selected_item = selected_item; - } - const int prev_body_item_index = get_previous_visible_item(selected_item); bool selected_merge_with_previous = !items.empty() && body_item_merge_handler && body_item_merge_handler(prev_body_item_index == -1 ? nullptr : items[prev_body_item_index].get(), items[selected_item].get()); @@ -1202,6 +1208,8 @@ namespace QuickMedia { if(draw_thumbnails && !merge_with_previous && !item->thumbnail_url.empty()) item_thumbnail = AsyncImageLoader::get_instance().get_thumbnail(item->thumbnail_url, item->thumbnail_is_local, thumbnail_size); + thumbnail_size = clamp_to_size_x(thumbnail_size, sf::Vector2i(size.x, thumbnail_size.y)); + if(body_item_render_callback && include_embedded_item) body_item_render_callback(item); @@ -1393,11 +1401,13 @@ namespace QuickMedia { item->last_drawn_time = elapsed_time_sec; sf::Vector2i content_size = get_item_thumbnail_size(item); + float image_height = 0.0f; float text_offset_x = padding_x; if(draw_thumbnails && load_texture && !item->thumbnail_url.empty() && !merge_with_previous) { - image_height = content_size.y; std::shared_ptr item_thumbnail = AsyncImageLoader::get_instance().get_thumbnail(item->thumbnail_url, item->thumbnail_is_local, content_size); + content_size = clamp_to_size_x(content_size, sf::Vector2i(width, content_size.y)); + image_height = content_size.y; if(item_thumbnail && item_thumbnail->loading_state == LoadingState::FINISHED_LOADING && item_thumbnail->image->getSize().x > 0 && item_thumbnail->image->getSize().y > 0) { if(!item_thumbnail->texture.loadFromImage(*item_thumbnail->image)) -- cgit v1.2.3