aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/QuickMedia.cpp14
-rw-r--r--src/plugins/Matrix.cpp4
2 files changed, 12 insertions, 6 deletions
diff --git a/src/QuickMedia.cpp b/src/QuickMedia.cpp
index 937510c..3867237 100644
--- a/src/QuickMedia.cpp
+++ b/src/QuickMedia.cpp
@@ -982,8 +982,14 @@ namespace QuickMedia {
after_submit_handler();
if(tabs[selected_tab].page->clear_search_after_submit() && tabs[selected_tab].search_bar) {
- tabs[selected_tab].search_bar->clear();
- tabs[selected_tab].search_bar->onTextUpdateCallback("");
+ if(!tabs[selected_tab].search_bar->get_text().empty()) {
+ tabs[selected_tab].search_bar->clear();
+ tabs[selected_tab].search_bar->onTextUpdateCallback("");
+ } else {
+ int selected_item_index = tabs[selected_tab].body->get_selected_item();
+ tabs[selected_tab].body->select_first_item();
+ tabs[selected_tab].body->set_selected_item(selected_item_index, false);
+ }
}
if(tabs[selected_tab].page->is_single_page()) {
@@ -3484,9 +3490,9 @@ namespace QuickMedia {
bool fetched_enough_messages = false;
bool initial_prev_messages_fetch = true;
- auto fetch_more_previous_messages_if_needed = [this, &all_messages, &current_room, &fetched_enough_messages, &previous_messages_future]() {
+ auto fetch_more_previous_messages_if_needed = [this, &all_messages, &current_room, &fetched_enough_messages, &previous_messages_future, &initial_prev_messages_fetch]() {
if(!fetched_enough_messages && !previous_messages_future.ready()) {
- bool fetch_latest_messages = !matrix->is_initial_sync_finished();
+ bool fetch_latest_messages = !matrix->is_initial_sync_finished() && initial_prev_messages_fetch;
if(all_messages.size() < 10) {
previous_messages_future = [this, &current_room, fetch_latest_messages]() {
Messages messages;
diff --git a/src/plugins/Matrix.cpp b/src/plugins/Matrix.cpp
index 50296a8..b99aa02 100644
--- a/src/plugins/Matrix.cpp
+++ b/src/plugins/Matrix.cpp
@@ -469,7 +469,7 @@ namespace QuickMedia {
void MatrixRoomsPage::on_navigate_to_page(Body *body) {
if(search_bar)
body->filter_search_fuzzy(search_bar->get_text());
- sort_room_body_items(body->items);
+ //sort_room_body_items(body->items);
}
void MatrixRoomsPage::update() {
@@ -521,7 +521,7 @@ namespace QuickMedia {
// Swap order of rooms in body list to put rooms with mentions at the top and then unread messages and then all the other rooms
// TODO: Optimize with hash map instead of linear search? or cache the index
std::lock_guard<std::mutex> lock(mutex);
-#if 0
+#if 1
BodyItem *room_body_item = static_cast<BodyItem*>(room->userdata);
int room_body_index = body->get_index_by_body_item(room_body_item);
if(room_body_index != -1) {