summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGaute Hope <eg@gaute.vetsj.com>2018-09-13 20:49:48 +0200
committerGaute Hope <eg@gaute.vetsj.com>2018-09-13 20:49:48 +0200
commit49279ad7a1463b13b82162fa18b76797595a2962 (patch)
treec397b075706e4871dab7d97aaf437b1911d7c90d
parent20b91716828af6dc2335e334ca4742495acd9526 (diff)
fix #548: correctly clear messages and focus state when loading new thread
-rw-r--r--src/modes/thread_view/page_client.cc10
-rw-r--r--src/modes/thread_view/webextension/tvextension.cc8
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);
}