aboutsummaryrefslogtreecommitdiff
path: root/src/Body.cpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2021-05-20 19:06:14 +0200
committerdec05eba <dec05eba@protonmail.com>2021-05-20 19:06:14 +0200
commit5b11322c33ef61d3aa8d6bc9c9bc0355f35afa52 (patch)
tree1a36d304bfc9350d008787aa8c284adb7d92bc2d /src/Body.cpp
parent3609429b3d8fccd99994dde015b6516376e6835b (diff)
Restrict image size to body size
Diffstat (limited to 'src/Body.cpp')
-rw-r--r--src/Body.cpp20
1 files changed, 15 insertions, 5 deletions
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<ThumbnailData> 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))