diff options
author | Gaute Hope <eg@gaute.vetsj.com> | 2018-09-13 20:49:48 +0200 |
---|---|---|
committer | Gaute Hope <eg@gaute.vetsj.com> | 2018-09-13 20:49:48 +0200 |
commit | 49279ad7a1463b13b82162fa18b76797595a2962 (patch) | |
tree | c397b075706e4871dab7d97aaf437b1911d7c90d | |
parent | 20b91716828af6dc2335e334ca4742495acd9526 (diff) |
fix #548: correctly clear messages and focus state when loading new thread
-rw-r--r-- | src/modes/thread_view/page_client.cc | 10 | ||||
-rw-r--r-- | src/modes/thread_view/webextension/tvextension.cc | 8 |
2 files changed, 15 insertions, 3 deletions
diff --git a/src/modes/thread_view/page_client.cc b/src/modes/thread_view/page_client.cc index 0e768cd..a1b7977 100644 --- a/src/modes/thread_view/page_client.cc +++ b/src/modes/thread_view/page_client.cc @@ -167,14 +167,18 @@ namespace Astroid { LOG (debug) << "pc: got ack (s: " << ack.success () << ") , focus: " << ack.focus().mid () << ", e: " << ack.focus().element (); if (!ack.focus().mid ().empty () && ack.focus().element () >= 0) { - thread_view->focused_message = *std::find_if ( + auto it = std::find_if ( thread_view->mthread->messages.begin (), thread_view->mthread->messages.end (), [&] (auto &m) { return ack.focus().mid () == m->safe_mid (); }); - thread_view->state[thread_view->focused_message].current_element = ack.focus().element (); + if (it != thread_view->mthread->messages.end ()) { + thread_view->focused_message = *it; - thread_view->unread_check (); + thread_view->state[thread_view->focused_message].current_element = ack.focus().element (); + + thread_view->unread_check (); + } } } diff --git a/src/modes/thread_view/webextension/tvextension.cc b/src/modes/thread_view/webextension/tvextension.cc index e2cd028..45b0a8e 100644 --- a/src/modes/thread_view/webextension/tvextension.cc +++ b/src/modes/thread_view/webextension/tvextension.cc @@ -594,6 +594,14 @@ void AstroidExtension::clear_messages (AstroidMessages::ClearMessage &) { g_object_unref (container); g_object_unref (d); + /* reset */ + focused_message = ""; + focused_element = -1; + messages.clear (); + state = AstroidMessages::State(); + allow_remote_resources = false; + indent_messages = false; + ack (true); } |