From ef1dd33682ae26b4af1343aaecf443e7cd883674 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Thu, 1 Oct 2020 22:21:14 +0200 Subject: Matrix: implement mention/reply notifications --- src/Body.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'src/Body.cpp') 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();) { -- cgit v1.2.3