diff options
Diffstat (limited to 'src/QuickMedia.cpp')
-rw-r--r-- | src/QuickMedia.cpp | 44 |
1 files changed, 24 insertions, 20 deletions
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; } |