aboutsummaryrefslogtreecommitdiff
path: root/src/QuickMedia.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/QuickMedia.cpp')
-rw-r--r--src/QuickMedia.cpp44
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, &current_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;
}