diff options
Diffstat (limited to 'src/Body.cpp')
-rw-r--r-- | src/Body.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/Body.cpp b/src/Body.cpp index 803cece..ffafb90 100644 --- a/src/Body.cpp +++ b/src/Body.cpp @@ -141,6 +141,7 @@ namespace QuickMedia { thumbnail_max_size.y = 141; sf::Vector2f loading_icon_size(loading_icon.getTexture()->getSize().x, loading_icon.getTexture()->getSize().y); loading_icon.setOrigin(loading_icon_size.x * 0.5f, loading_icon_size.y * 0.5f); + render_selected_item_bg = !is_touch_enabled(); } Body::~Body() { @@ -398,31 +399,37 @@ namespace QuickMedia { bool Body::on_event(const sf::RenderWindow &window, const sf::Event &event, bool keyboard_navigation) { if(keyboard_navigation && event.type == sf::Event::KeyPressed && !event.key.alt) { if(event.key.code == sf::Keyboard::Up || (event.key.control && event.key.code == sf::Keyboard::K)) { + render_selected_item_bg = true; bool top_reached = select_previous_item(); if(!top_reached && on_top_reached) on_top_reached(); return true; } else if(event.key.code == sf::Keyboard::Down || (event.key.control && event.key.code == sf::Keyboard::J)) { + render_selected_item_bg = true; bool bottom_reached = select_next_item(); if(!bottom_reached && on_bottom_reached) on_bottom_reached(); return true; } else if(event.key.code == sf::Keyboard::Home) { + render_selected_item_bg = true; select_first_item(); if(on_top_reached) on_top_reached(); return true; } else if(event.key.code == sf::Keyboard::End) { + render_selected_item_bg = true; select_last_item(); if(on_bottom_reached) on_bottom_reached(); return true; } else if(event.key.code == sf::Keyboard::PageUp) { + render_selected_item_bg = true; bool top_reached = select_previous_page(); if(!top_reached && on_top_reached) on_top_reached(); return true; } else if(event.key.code == sf::Keyboard::PageDown) { + render_selected_item_bg = true; bool bottom_reached = select_next_page(); if(!bottom_reached && on_bottom_reached) on_bottom_reached(); @@ -445,6 +452,7 @@ namespace QuickMedia { mouse_click_pos = mouse_pos; mouse_press_pixels_moved_abs = 0.0; has_scrolled_with_input = true; + render_selected_item_bg = false; return true; } else if(event.type == sf::Event::MouseButtonReleased && event.mouseButton.button == sf::Mouse::Left && mouse_left_pressed) { mouse_left_pressed = false; @@ -456,6 +464,7 @@ namespace QuickMedia { mouse_press_pixels_moved_abs += std::sqrt(mouse_pos_diff.x*mouse_pos_diff.x + mouse_pos_diff.y*mouse_pos_diff.y); mouse_pos_raw.x = event.mouseMove.x; mouse_pos_raw.y = event.mouseMove.y; + render_selected_item_bg = false; return true; } @@ -1093,7 +1102,7 @@ namespace QuickMedia { void Body::draw_item(sf::RenderWindow &window, BodyItem *item, const sf::Vector2f &pos, const sf::Vector2f &size, const float item_height, const int item_index, const Json::Value &content_progress, bool include_embedded_item, bool merge_with_previous) { sf::Vector2i thumbnail_size = get_item_thumbnail_size(item); std::shared_ptr<ThumbnailData> item_thumbnail; - if(draw_thumbnails && !item->thumbnail_url.empty()) + 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); if(body_item_render_callback && include_embedded_item) @@ -1116,7 +1125,7 @@ namespace QuickMedia { //item_separator.setPosition(item_pos + sf::Vector2f(10.0f, std::floor(item_height + spacing_y * 0.5f))); //window.draw(item_separator); - if(item_index == selected_item) { + if(render_selected_item_bg && item_index == selected_item) { item_background.set_position(item_pos); item_background.set_size(sf::Vector2f(size.x, item_height)); item_background.draw(window); @@ -1134,7 +1143,7 @@ namespace QuickMedia { auto image_scale = get_ratio(image_size_f, new_image_size); image.setScale(image_scale); image.setPosition(item_pos + sf::Vector2f(image_padding_x, padding_y)); - if(thumbnail_mask_shader && item->thumbnail_mask_type == ThumbnailMaskType::CIRCLE) { + if(!is_touch_enabled() && thumbnail_mask_shader && item->thumbnail_mask_type == ThumbnailMaskType::CIRCLE) { thumbnail_mask_shader->setUniform("resolution", new_image_size); window.draw(image, thumbnail_mask_shader); } else { |