mirror of
https://github.com/odrling/Aegisub
synced 2025-04-11 22:56:02 +02:00
folding: Also update counterpart for fold operations
This wasn't necessary before since the internal representation of folds is be checked for consistency after each commit, but after the switch to extradata fold operations would leave the extradata in an invalid state. This isn't technically a problem, but it does leave more extradata entries lying around than necessary, and it can trip up automation scripts that aren't prepared for inconsistent fold state.
This commit is contained in:
parent
64b92a95ac
commit
58d6ab520b
@ -326,6 +326,10 @@ bool FoldController::HasFolds() {
|
||||
void FoldController::ClearFoldsAt(std::vector<AssDialogue *> const& lines) {
|
||||
DoForFoldsAt(lines, [&](AssDialogue &line) {
|
||||
line.Fold.extraExists = false; line.Fold.valid = false;
|
||||
if (line.Fold.counterpart) {
|
||||
line.Fold.counterpart->Fold.extraExists = false;
|
||||
line.Fold.counterpart->Fold.valid = false;
|
||||
}
|
||||
});
|
||||
context->ass->Commit(_("clear folds"), AssFile::COMMIT_FOLD);
|
||||
}
|
||||
@ -333,6 +337,8 @@ void FoldController::ClearFoldsAt(std::vector<AssDialogue *> const& lines) {
|
||||
void FoldController::OpenFoldsAt(std::vector<AssDialogue *> const& lines) {
|
||||
DoForFoldsAt(lines, [&](AssDialogue &line) {
|
||||
line.Fold.collapsed = false;
|
||||
if (line.Fold.counterpart)
|
||||
line.Fold.counterpart->Fold.collapsed = line.Fold.collapsed;
|
||||
});
|
||||
context->ass->Commit(_("open folds"), AssFile::COMMIT_FOLD);
|
||||
}
|
||||
@ -340,6 +346,8 @@ void FoldController::OpenFoldsAt(std::vector<AssDialogue *> const& lines) {
|
||||
void FoldController::CloseFoldsAt(std::vector<AssDialogue *> const& lines) {
|
||||
DoForFoldsAt(lines, [&](AssDialogue &line) {
|
||||
line.Fold.collapsed = true;
|
||||
if (line.Fold.counterpart)
|
||||
line.Fold.counterpart->Fold.collapsed = line.Fold.collapsed;
|
||||
});
|
||||
context->ass->Commit(_("close folds"), AssFile::COMMIT_FOLD);
|
||||
}
|
||||
@ -347,6 +355,8 @@ void FoldController::CloseFoldsAt(std::vector<AssDialogue *> const& lines) {
|
||||
void FoldController::ToggleFoldsAt(std::vector<AssDialogue *> const& lines) {
|
||||
DoForFoldsAt(lines, [&](AssDialogue &line) {
|
||||
line.Fold.collapsed = !line.Fold.collapsed;
|
||||
if (line.Fold.counterpart)
|
||||
line.Fold.counterpart->Fold.collapsed = line.Fold.collapsed;
|
||||
});
|
||||
context->ass->Commit(_("toggle folds"), AssFile::COMMIT_FOLD);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user