From cbcdbdbf488b73120b2b604343ac64213cdbb1f8 Mon Sep 17 00:00:00 2001
From: dec05eba <dec05eba@protonmail.com>
Date: Sat, 5 Jun 2021 13:20:02 +0200
Subject: Improve card handler, less computation

---
 src/Body.cpp       | 8 +++++---
 src/QuickMedia.cpp | 2 +-
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/Body.cpp b/src/Body.cpp
index 209ba6d..01ae8b7 100644
--- a/src/Body.cpp
+++ b/src/Body.cpp
@@ -1142,9 +1142,8 @@ namespace QuickMedia {
             if(item_index == selected_item)
                 selected_column = drawn_column_index;
 
-            handle_item_render(pos + pos_offset, card_width, card_height, item_index);
-
             if(item->visible && pos_offset.y + card_height > -body_spacing[body_theme].body_padding_vertical && pos_offset.y < size.y) {
+                handle_item_render(pos + pos_offset, card_width, card_height, item_index);
                 sf::View new_view(sf::FloatRect(0.0f, 0.0f, window_size.x, size.y));
                 new_view.setViewport(sf::FloatRect(0.0f, scissor_y / (float)window_size.y, 1.0f, size.y / (float)window_size.y));
                 window.setView(new_view);
@@ -1157,7 +1156,7 @@ namespace QuickMedia {
                 item_background.draw(window);
 
                 {
-                    get_item_height(item, card_max_image_size.x);
+                    get_item_height(item, card_max_image_size.x, true, false, false, item_index);
                     sf::Vector2i thumbnail_size = get_item_thumbnail_size(item);
                     std::shared_ptr<ThumbnailData> item_thumbnail;
                     if(draw_thumbnails && !item->thumbnail_url.empty())
@@ -1249,6 +1248,9 @@ namespace QuickMedia {
                 if(last_visible_item == -1 || item_index > last_visible_item)
                     last_visible_item = item_index;
             } else {
+                if(item_index == selected_item)
+                    handle_item_render(pos + pos_offset, card_width, card_height, item_index);
+
                 if(item->keep_alive_frames == 0) {
                     clear_body_item_cache(item);
                     // TODO: Make sure the embedded item is not referencing another item in the |items| list
diff --git a/src/QuickMedia.cpp b/src/QuickMedia.cpp
index 68a86e0..48d73d5 100644
--- a/src/QuickMedia.cpp
+++ b/src/QuickMedia.cpp
@@ -1056,7 +1056,7 @@ namespace QuickMedia {
         }
 
         if(strcmp(plugin_name, "launcher") == 0) {
-            auto pipe_body = create_body();
+            auto pipe_body = create_body(true);
             pipe_body->items.push_back(create_launcher_body_item("4chan", "4chan", resources_root + "icons/4chan_launcher.png"));
             pipe_body->items.push_back(create_launcher_body_item("Manga (all)", "manga", ""));
             pipe_body->items.push_back(create_launcher_body_item("Mangadex", "mangadex", resources_root + "icons/mangadex_launcher.png"));
-- 
cgit v1.2.3-70-g09d2