diff options
Diffstat (limited to 'src/QuickMedia.cpp')
-rw-r--r-- | src/QuickMedia.cpp | 38 |
1 files changed, 21 insertions, 17 deletions
diff --git a/src/QuickMedia.cpp b/src/QuickMedia.cpp index c533186..10224e2 100644 --- a/src/QuickMedia.cpp +++ b/src/QuickMedia.cpp @@ -2812,7 +2812,10 @@ namespace QuickMedia { while (current_page == PageType::CHAT_LOGIN) { while (window.pollEvent(event)) { - if(event.type == sf::Event::Resized) { + if (event.type == sf::Event::Closed) { + current_page = PageType::EXIT; + window.close(); + } else if(event.type == sf::Event::Resized) { window_size.x = event.size.width; window_size.y = event.size.height; sf::FloatRect visible_area(0, 0, window_size.x, window_size.y); @@ -2904,6 +2907,8 @@ namespace QuickMedia { else { body_item->thumbnail_url = message->user->avatar_url; body_item->thumbnail_mask_type = ThumbnailMaskType::CIRCLE; + // if construct is not configured to use ImageMagic then it wont give thumbnails of size 32x32 even when requested and the spec says that the server SHOULD do that + body_item->thumbnail_size = sf::Vector2i(32, 32); } // TODO: Show image thumbnail inline instead of url to image and showing it as the thumbnail of the body item body_item->url = message->url; @@ -3346,8 +3351,17 @@ namespace QuickMedia { // TODO: What if these never end up referencing events? clean up automatically after a while? std::unordered_map<std::shared_ptr<RoomData>, Messages> unreferenced_event_by_room; + auto set_body_as_deleted = [](Message *message, BodyItem *body_item) { + body_item->embedded_item = nullptr; + body_item->embedded_item_status = EmbeddedItemStatus::NONE; + body_item->thumbnail_url = message->user->avatar_url; + body_item->thumbnail_mask_type = ThumbnailMaskType::CIRCLE; + body_item->set_description_color(sf::Color::White); + body_item->thumbnail_size = sf::Vector2i(32, 32); + }; + // TODO: Optimize with hash map? - auto resolve_unreferenced_events_with_body_items = [&unreferenced_event_by_room, ¤t_room, &find_body_item_by_event_id](std::shared_ptr<BodyItem> *body_items, size_t num_body_items) { + auto resolve_unreferenced_events_with_body_items = [&set_body_as_deleted, &unreferenced_event_by_room, ¤t_room, &find_body_item_by_event_id](std::shared_ptr<BodyItem> *body_items, size_t num_body_items) { auto &unreferenced_events = unreferenced_event_by_room[current_room]; for(auto it = unreferenced_events.begin(); it != unreferenced_events.end(); ) { auto &message = *it; @@ -3356,13 +3370,8 @@ namespace QuickMedia { auto body_item = find_body_item_by_event_id(body_items, num_body_items, message->related_event_id); if(body_item) { body_item->set_description(message->body); - if(message->related_event_type == RelatedEventType::REDACTION) { - body_item->embedded_item = nullptr; - body_item->embedded_item_status = EmbeddedItemStatus::NONE; - body_item->thumbnail_url = message->user->avatar_url; - body_item->thumbnail_mask_type = ThumbnailMaskType::NONE; - body_item->set_description_color(sf::Color::White); - } + if(message->related_event_type == RelatedEventType::REDACTION) + set_body_as_deleted(message.get(), body_item.get()); it = unreferenced_events.erase(it); } else { ++it; @@ -3374,7 +3383,7 @@ namespace QuickMedia { }; // TODO: Optimize with hash map? - auto modify_related_messages_in_current_room = [&unreferenced_event_by_room, ¤t_room, &find_body_item_by_event_id, &tabs](Messages &messages) { + auto modify_related_messages_in_current_room = [&set_body_as_deleted, &unreferenced_event_by_room, ¤t_room, &find_body_item_by_event_id, &tabs](Messages &messages) { auto &unreferenced_events = unreferenced_event_by_room[current_room]; auto &body_items = tabs[MESSAGES_TAB_INDEX].body->items; for(auto &message : messages) { @@ -3383,13 +3392,8 @@ namespace QuickMedia { auto body_item = find_body_item_by_event_id(body_items.data(), body_items.size(), message->related_event_id); if(body_item) { body_item->set_description(message->body); - if(message->related_event_type == RelatedEventType::REDACTION) { - body_item->embedded_item = nullptr; - body_item->embedded_item_status = EmbeddedItemStatus::NONE; - body_item->thumbnail_url = message->user->avatar_url; - body_item->thumbnail_mask_type = ThumbnailMaskType::NONE; - body_item->set_description_color(sf::Color::White); - } + if(message->related_event_type == RelatedEventType::REDACTION) + set_body_as_deleted(message.get(), body_item.get()); } else { unreferenced_events.push_back(message); } |