For whatever reason this was sometimes being done after the commit,
which resulted in a lot of code only working by coincidence when the
grid commit handler happened to be the first one to be called.
It's quite rare to actually want a multi-frame line followed by a
single-frame line; in most cases they're either all a single frame (in
which case this behaves the same as it always has), or they're all
multi-line, in which case this should be more convenient.
The local docs it tries to open don't actually exists and if they're
ever added, the help contents command opens them anyway so I'm not sure
what the intended purpose of the command ever was.
Reverse iterators behave differently from regular iterators when
swapping (regular iterators continue to point at the same elements,
while reverse iterators do not), so instead use regular iterators with a
negative step for shifting down.
If the text being pasted can be parsed as ASS dialogue events, then do
so even if the edit box is focused since it's rather unlikely that
the user actually wants ASS subtitle events in their subs.
Set it to the first line not part of the selection after the selection
begins if there are any, and the last line remaining in the file if not
(i.e. the last line before the selection).
Closes#1595.
Add SubsController, which deals with things like what subtitle file is
currently open, rather than the contents of the current subtitle file.
Move the rest of the relevant logic from FrameMain there in addition to
all of the stuff from AssFile.
Use boost::filesystem::path for all paths, and std::string for all other
strings, converting to/from wxString as close to the actual uses of wx
as possible.
Where possible, replace the uses of non-UI wxWidgets functionality with
the additions to the standard library in C++11, or the equivalents in
boost.
Move the path token management logic to libaegisub (and rewrite it in
the process).
Add a basic thread pool based on asio and std::thread to libaegisub.
This touches nearly every file in the project and a nontrivial amount of
code had to be rewritten entirely, so there's probably a lot of broken
stuff.
This seems to be what most users expect, rather than pasting downwards
from the active line, and is what pre-3.0 versions did as long as the
selection was continuous (since it pasted over from the first selected
line rather than the active line).
Nearly all of the files including main.h are doing so only for OPT_GET
and friends, which are rather unrelated to the main things that main.h
declares.