aboutsummaryrefslogtreecommitdiff
path: root/src/Body.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Body.cpp')
-rw-r--r--src/Body.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/Body.cpp b/src/Body.cpp
index 843a1b1..673a095 100644
--- a/src/Body.cpp
+++ b/src/Body.cpp
@@ -75,7 +75,8 @@ namespace QuickMedia {
page_scroll(0.0f),
item_background(sf::Vector2f(1.0f, 1.0f), 10.0f, 10),
num_visible_items(0),
- last_item_fully_visible(true)
+ last_item_fully_visible(true),
+ last_fully_visible_item(-1)
{
progress_text.setFillColor(sf::Color::White);
replies_text.setFillColor(sf::Color(129, 162, 190));
@@ -238,6 +239,12 @@ namespace QuickMedia {
return items[selected_item];
}
+ BodyItem* Body::get_last_fully_visible_item() {
+ if(last_fully_visible_item < 0 || last_fully_visible_item >= (int)items.size() || !items[last_fully_visible_item]->visible)
+ return nullptr;
+ return items[last_fully_visible_item].get();
+ }
+
void Body::clamp_selection() {
int num_items = (int)items.size();
if(items.empty())
@@ -291,6 +298,7 @@ namespace QuickMedia {
item_background_shadow.setFillColor(line_seperator_color);
num_visible_items = 0;
last_item_fully_visible = true;
+ last_fully_visible_item = -1;
int num_items = items.size();
if(num_items == 0 || size.y <= 0.0f) {
@@ -413,6 +421,8 @@ namespace QuickMedia {
if((after_pos.y - start_y) + item_height + spacing_y > size.y)
last_item_fully_visible = false;
+ else
+ last_fully_visible_item = i;
if(after_pos.y - start_y >= size.y)
break;
@@ -422,6 +432,9 @@ namespace QuickMedia {
++num_visible_items;
}
+ if(last_fully_visible_item == -1)
+ last_fully_visible_item = selected_item;
+
glDisable(GL_SCISSOR_TEST);
for(auto it = item_thumbnail_textures.begin(); it != item_thumbnail_textures.end();) {