mirror of https://github.com/odrling/Aegisub
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) {
|
void FoldController::ClearFoldsAt(std::vector<AssDialogue *> const& lines) {
|
||||||
DoForFoldsAt(lines, [&](AssDialogue &line) {
|
DoForFoldsAt(lines, [&](AssDialogue &line) {
|
||||||
line.Fold.extraExists = false; line.Fold.valid = false;
|
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);
|
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) {
|
void FoldController::OpenFoldsAt(std::vector<AssDialogue *> const& lines) {
|
||||||
DoForFoldsAt(lines, [&](AssDialogue &line) {
|
DoForFoldsAt(lines, [&](AssDialogue &line) {
|
||||||
line.Fold.collapsed = false;
|
line.Fold.collapsed = false;
|
||||||
|
if (line.Fold.counterpart)
|
||||||
|
line.Fold.counterpart->Fold.collapsed = line.Fold.collapsed;
|
||||||
});
|
});
|
||||||
context->ass->Commit(_("open folds"), AssFile::COMMIT_FOLD);
|
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) {
|
void FoldController::CloseFoldsAt(std::vector<AssDialogue *> const& lines) {
|
||||||
DoForFoldsAt(lines, [&](AssDialogue &line) {
|
DoForFoldsAt(lines, [&](AssDialogue &line) {
|
||||||
line.Fold.collapsed = true;
|
line.Fold.collapsed = true;
|
||||||
|
if (line.Fold.counterpart)
|
||||||
|
line.Fold.counterpart->Fold.collapsed = line.Fold.collapsed;
|
||||||
});
|
});
|
||||||
context->ass->Commit(_("close folds"), AssFile::COMMIT_FOLD);
|
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) {
|
void FoldController::ToggleFoldsAt(std::vector<AssDialogue *> const& lines) {
|
||||||
DoForFoldsAt(lines, [&](AssDialogue &line) {
|
DoForFoldsAt(lines, [&](AssDialogue &line) {
|
||||||
line.Fold.collapsed = !line.Fold.collapsed;
|
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);
|
context->ass->Commit(_("toggle folds"), AssFile::COMMIT_FOLD);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue