diff options
author | dec05eba <dec05eba@protonmail.com> | 2020-10-22 04:52:32 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2020-10-22 04:52:32 +0200 |
commit | 42ef59ef17cb0a56c6ac1d8f220db7ca461c5411 (patch) | |
tree | 26f875e7e81f2a5cd47afa59e49e7ada729dfa3b /src | |
parent | 0d8293a5647c2bb10228658f0910515b38ff0d64 (diff) |
Matrix: temporary disable vim keys that interfer with room search, also include embedded item when pressing enter
Diffstat (limited to 'src')
-rw-r--r-- | src/Body.cpp | 8 | ||||
-rw-r--r-- | src/NetUtils.cpp | 5 | ||||
-rw-r--r-- | src/QuickMedia.cpp | 44 |
3 files changed, 29 insertions, 28 deletions
diff --git a/src/Body.cpp b/src/Body.cpp index 6b7826d..f1c101f 100644 --- a/src/Body.cpp +++ b/src/Body.cpp @@ -476,14 +476,14 @@ namespace QuickMedia { else strftime(time_str, sizeof(time_str) - 1, "%a %b %d %H:%M:%S %Y", message_tm); */ - strftime(time_str, sizeof(time_str) - 1, "%H:%M:%S", message_tm); + strftime(time_str, sizeof(time_str) - 1, "%a %b %d %H:%M", message_tm); if(body_item->timestamp_text) body_item->timestamp_text->setString(time_str); else - body_item->timestamp_text = std::make_unique<sf::Text>(time_str, *font, 14); + body_item->timestamp_text = std::make_unique<sf::Text>(time_str, *font, 10); - body_item->timestamp_text->setFillColor(sf::Color(185, 190, 198)); + body_item->timestamp_text->setFillColor(sf::Color(185, 190, 198, 100)); } } @@ -702,7 +702,7 @@ namespace QuickMedia { } if(item->timestamp_text) { - item->timestamp_text->setPosition(std::floor(item_pos.x + size.x - item->timestamp_text->getLocalBounds().width - padding_x), timestamp_text_y + 4.0f); + item->timestamp_text->setPosition(std::floor(item_pos.x + size.x - item->timestamp_text->getLocalBounds().width - padding_x), timestamp_text_y + 8.0f); window.draw(*item->timestamp_text); } diff --git a/src/NetUtils.cpp b/src/NetUtils.cpp index e87c42c..4d5a940 100644 --- a/src/NetUtils.cpp +++ b/src/NetUtils.cpp @@ -105,9 +105,7 @@ namespace QuickMedia { // Implementation follows URI standard: https://tools.ietf.org/html/rfc3986#section-2.2 // TODO: Maybe check if the TLD only contains valid characters (is_alpha)? - std::vector<std::string> extract_urls(const std::string &str) { - std::vector<std::string> urls; - + void extract_urls(const std::string &str, std::vector<std::string> &urls) { size_t url_start = std::string::npos; size_t url_dot_index = std::string::npos; // str.size() is fine, we want to include the NULL character so we can extract url at the end of the string @@ -135,6 +133,5 @@ namespace QuickMedia { } } } - return urls; } }
\ No newline at end of file diff --git a/src/QuickMedia.cpp b/src/QuickMedia.cpp index 48ef01b..d0a93fe 100644 --- a/src/QuickMedia.cpp +++ b/src/QuickMedia.cpp @@ -108,7 +108,7 @@ static bool vsync_set = false; static bool test_vsync(Display *disp, Window window) { unsigned int swap = 0; glXQueryDrawable(disp, window, GLX_SWAP_INTERVAL_EXT, &swap); - printf("The swap interval is %u\n", swap); + fprintf(stderr, "The swap interval is %u\n", swap); return swap == 1; } @@ -3180,7 +3180,7 @@ namespace QuickMedia { room_search_bar.onTextSubmitCallback = [this, &tabs, &selected_tab, ¤t_room, &room_name_text, &modify_related_messages_in_current_room, &room_avatar_thumbnail_data, - &read_marker_timeout_ms, &redraw] + &read_marker_timeout_ms, &redraw, &room_search_bar] (const std::string&) { BodyItem *selected_item = tabs[ROOMS_TAB_INDEX].body->get_selected(); @@ -3209,9 +3209,11 @@ namespace QuickMedia { read_marker_timeout_ms = 0; redraw = true; + room_search_bar.clear(); + tabs[ROOMS_TAB_INDEX].body->filter_search_fuzzy(""); }; - Entry chat_input("Press m or i to begin writing a message...", font.get(), cjk_font.get()); + Entry chat_input("Press m to begin writing a message...", font.get(), cjk_font.get()); chat_input.draw_background = false; chat_input.set_editable(false); @@ -3468,12 +3470,10 @@ namespace QuickMedia { } else if(event.type == sf::Event::Resized || event.type == sf::Event::GainedFocus) { redraw = true; } else if(event.type == sf::Event::KeyPressed && chat_state == ChatState::NAVIGATING) { - if(event.key.code == sf::Keyboard::Up || event.key.code == sf::Keyboard::PageUp || event.key.code == sf::Keyboard::Home || event.key.code == sf::Keyboard::K) - { + if(event.key.code == sf::Keyboard::Up || event.key.code == sf::Keyboard::PageUp || event.key.code == sf::Keyboard::Home){ bool hit_top = false; switch(event.key.code) { case sf::Keyboard::Up: - case sf::Keyboard::K: hit_top = !tabs[selected_tab].body->select_previous_item(); break; case sf::Keyboard::PageUp: @@ -3498,15 +3498,15 @@ namespace QuickMedia { return messages; }); } - } else if(event.key.code == sf::Keyboard::Down || event.key.code == sf::Keyboard::J) { + } else if(event.key.code == sf::Keyboard::Down) { tabs[selected_tab].body->select_next_item(); } else if(event.key.code == sf::Keyboard::PageDown) { tabs[selected_tab].body->select_next_page(); } else if(event.key.code == sf::Keyboard::End) { tabs[selected_tab].body->select_last_item(); - } else if((event.key.code == sf::Keyboard::Left || event.key.code == sf::Keyboard::H) && synced) { + } else if((event.key.code == sf::Keyboard::Left) && synced && selected_tab > 0) { tabs[selected_tab].body->clear_cache(); - selected_tab = std::max(0, selected_tab - 1); + --selected_tab; read_marker_timer.restart(); redraw = true; if(typing && current_room) { @@ -3514,9 +3514,9 @@ namespace QuickMedia { typing = false; typing_futures.push_back(std::async(typing_async_func, false, current_room)); } - } else if((event.key.code == sf::Keyboard::Right || event.key.code == sf::Keyboard::L) && synced) { + } else if((event.key.code == sf::Keyboard::Right) && synced && selected_tab < (int)tabs.size() - 1) { tabs[selected_tab].body->clear_cache(); - selected_tab = std::min((int)tabs.size() - 1, selected_tab + 1); + ++selected_tab; read_marker_timer.restart(); redraw = true; if(typing && current_room) { @@ -3555,9 +3555,10 @@ namespace QuickMedia { } // TODO: If content type is a file, show file-manager prompt where it should be saved and asynchronously save it instead - - const std::string &message_str = selected->get_description(); - std::vector<std::string> urls = extract_urls(message_str); + std::vector<std::string> urls; + extract_urls(selected->get_description(), urls); + if(selected->embedded_item) + extract_urls(selected->embedded_item->get_description(), urls); if(urls.size() == 1) { launch_url(urls[0]); } else if(urls.size() > 1) { @@ -3584,12 +3585,15 @@ namespace QuickMedia { } else if(event.key.code == sf::Keyboard::End) { url_selection_body.select_last_item(); } else if(event.key.code == sf::Keyboard::Left) { - // TODO: Clear url_selection_body? - selected_tab = std::max(0, selected_tab - 1); - chat_state = ChatState::NAVIGATING; + if(selected_tab > 0) { + --selected_tab; + chat_state = ChatState::NAVIGATING; + } } else if(event.key.code == sf::Keyboard::Right) { - selected_tab = std::min((int)tabs.size() - 1, selected_tab + 1); - chat_state = ChatState::NAVIGATING; + if(selected_tab < (int)tabs.size() - 1) { + ++selected_tab; + chat_state = ChatState::NAVIGATING; + } } else if(event.key.code == sf::Keyboard::Escape) { url_selection_body.clear_items(); chat_state = ChatState::NAVIGATING; @@ -3605,7 +3609,7 @@ namespace QuickMedia { chat_input.set_editable(false); } - if(event.key.code == sf::Keyboard::M || event.key.code == sf::Keyboard::I) { + if(event.key.code == sf::Keyboard::M) { chat_input.set_editable(true); chat_state = ChatState::TYPING_MESSAGE; } |