From 4f0982c7d5d5302398d57157529231cc374508e0 Mon Sep 17 00:00:00 2001 From: Niels Martin Hansen Date: Thu, 24 Jun 2010 20:48:49 +0000 Subject: [PATCH] "Intelligently" append dialogue lines to the end of the Events section instead of to the absolute end of file. This will make appending lines slower if attachments are present, but much safer. Updates #1211. Originally committed to SVN as r4598. --- aegisub/src/auto4_lua_assfile.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/aegisub/src/auto4_lua_assfile.cpp b/aegisub/src/auto4_lua_assfile.cpp index 233df42e3..86de10394 100644 --- a/aegisub/src/auto4_lua_assfile.cpp +++ b/aegisub/src/auto4_lua_assfile.cpp @@ -776,7 +776,17 @@ namespace Automation4 { for (int i = 1; i <= n; i++) { lua_pushvalue(L, i); AssEntry *e = LuaToAssEntry(L); - laf->ass->Line.push_back(e); + if (e->GetType() == ENTRY_DIALOGUE) { + // find insertion point, looking backwards + std::list::iterator it = laf->ass->Line.end(); + do { --it; } while ((*it)->GetType() != ENTRY_DIALOGUE); + // found last dialogue entry in file, move one past + ++it; + laf->ass->Line.insert(it, e); + } + else { + laf->ass->Line.push_back(e); + } } return 0;