Save the initial start and end times of lines before adjusting them to
avoid negative line durations, so that if further changes to the edit
boxes make the adjustment unneccesary the original values can be
restored. This Fixes the problem where changing a line visible from
frames 800-900 to 800-901 would actually result in 90-901, due to the
end frame briefly being 90.
Originally committed to SVN as r6741.
Char hook events propagate by default, removing the need for the event
filter to make key down events propagate, which was causing some funny
issues.
On Windows, the char hook handler runs before menu accelerators, fixing
a bug where Default context hotkeys would override more specific ones
when they appeared on a menu. Unfortunately, this is not the case on
GTK, so the dumb accelerator-disabling hack is still required.
Originally committed to SVN as r6724.
Return wxNullColor rather than the original color on cancel so that the
calling code can actually tell if it was cancelled.
If one of the subs edit box color buttons is cancelled, undo the changes
made rather than restoring the original text of the active line. This
makes the cancel button actually work with multiple lines selected, and
eliminates some undo state noise.
Closes#1465.
Originally committed to SVN as r6663.
Despite special-casing zero-length input, wxString("") takes over four
times as long as wxString() - and on a 10k line script, this change cuts
AssFile's copy constructor's runtime in half.
Originally committed to SVN as r6401.
Scintilla's modification notifications don't expose enough information
to do a very good job of deciding when to group changes with previous
ones, but it does expose when Scintilla thinks undo groups should end,
so just use that.
This should significantly improve the behavior of undo when editing
lines in the edit box.
Originally committed to SVN as r6370.
Handle switching from placeholder/normal mode when the value is changed
externally (such as from the active line changing) in addition to on
focus/blur, and improve behavior when the user sets the text to the
placeholder text.
Originally committed to SVN as r6321.
The size of the contents is not updated until after SubsEditBox::OnSize
is called, so the wrapping logic was being done based on the previous
available area, rather than the new size.
Originally committed to SVN as r6284.
This still isn't a very good place for the functionality, but it breaks
SubsEditCtrl's dependency on SubtitlesGrid.
Originally committed to SVN as r6275.
Remove some unused or constant arguments and simplify some overly
convoluted logic.
Check for whether timecodes are open rather than whether video is open
to determine if by-frame mode is enabled.
Operate on a project context rather than using VideoContext::Get().
Use non-event-generating setter methods rather than a boolean ready
variable.
Make all member variables private and add setters rather than relying on
the client code calling Update when appropriate.
Eliminate flickering in overwrite mode.
Originally committed to SVN as r6056.
Convert all coordinates within the visual tools to Vector2D, which has
been significantly extended. Eliminates a lot of issues with accumulated
rounding errors and simplifies a lot of code.
Modernize the visual tools' interactions with the rest of Aegisub by
connecting to signals directly rather than routing everything through
the video display and converting the main visual tool mode toolbar to
the command system.
Extract all references to OpenGL from the visual tools and move them to
OpenGLWrapper as a first step towards making it possible to implement an
alternative video renderer. In the process, eliminate all uses of OpenGL
immediate mode.
Fix a bunch of minor issues and general instability.
Originally committed to SVN as r5823.
Switch to a bitmask with much more finely-grained information about what
changed in the commit, fixing a few potential correctness problems and
significantly improving the performance of several scenarios where commits
are spammed very frequently.
Originally committed to SVN as r5590.