Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/space_sequencer/sequencer_edit.c
| Show First 20 Lines • Show All 438 Lines • ▼ Show 20 Lines | Sequence *find_nearest_seq(Scene *scene, View2D *v2d, int *hand, const int mval[2]) | ||||
| return NULL; | return NULL; | ||||
| } | } | ||||
| static bool seq_is_parent(Sequence *par, Sequence *seq) | static bool seq_is_parent(Sequence *par, Sequence *seq) | ||||
| { | { | ||||
| return ((par->seq1 == seq) || (par->seq2 == seq) || (par->seq3 == seq)); | return ((par->seq1 == seq) || (par->seq2 == seq) || (par->seq3 == seq)); | ||||
| } | } | ||||
| static bool seq_is_predecessor(Sequence *pred, Sequence *seq) | |||||
| { | |||||
| if (!pred) { | |||||
| return 0; | |||||
| } | |||||
| if (pred == seq) { | |||||
| return 0; | |||||
| } | |||||
| else if (seq_is_parent(pred, seq)) { | |||||
| return 1; | |||||
| } | |||||
| else if (pred->seq1 && seq_is_predecessor(pred->seq1, seq)) { | |||||
| return 1; | |||||
| } | |||||
| else if (pred->seq2 && seq_is_predecessor(pred->seq2, seq)) { | |||||
| return 1; | |||||
| } | |||||
| else if (pred->seq3 && seq_is_predecessor(pred->seq3, seq)) { | |||||
| return 1; | |||||
| } | |||||
| return 0; | |||||
| } | |||||
| void ED_sequencer_deselect_all(Scene *scene) | void ED_sequencer_deselect_all(Scene *scene) | ||||
| { | { | ||||
| Sequence *seq; | Sequence *seq; | ||||
| Editing *ed = BKE_sequencer_editing_get(scene, false); | Editing *ed = BKE_sequencer_editing_get(scene, false); | ||||
| if (ed == NULL) { | if (ed == NULL) { | ||||
| return; | return; | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 114 Lines • ▼ Show 20 Lines | int seq_effect_find_selected(Scene *scene, | ||||
| * for 3 strips: the last-strip should be sequence3 */ | * for 3 strips: the last-strip should be sequence3 */ | ||||
| if (seq3 != NULL && seq2 != NULL) { | if (seq3 != NULL && seq2 != NULL) { | ||||
| Sequence *tmp = seq2; | Sequence *tmp = seq2; | ||||
| seq2 = seq3; | seq2 = seq3; | ||||
| seq3 = tmp; | seq3 = tmp; | ||||
| } | } | ||||
| switch (BKE_sequence_effect_get_num_inputs(type)) { | switch (BKE_sequence_effect_get_num_inputs(type)) { | ||||
| case 0: | case 0: | ||||
campbellbarton: These changes seem unrelated. | |||||
ISSAuthorUnsubmitted Done Inline ActionsThis change was to report message and cancel operator when reassigning inputs for strips with 0 inputs. With operator cancelled I don't have to make another check if effect has inputs before I do BKE_sequencer_check_recursivity() checks. Though this change affects adding strips, which may be addressed in D6868. I guess I will revert this for now. I forgot what all things I have done there and why exactly. ISS: This change was to report message and cancel operator when reassigning inputs for strips with 0… | |||||
| *selseq1 = *selseq2 = *selseq3 = NULL; | seq1 = seq2 = seq3 = NULL; | ||||
| return 1; /* success */ | break; | ||||
Done Inline Actions*picky* no need to change. campbellbarton: *picky* no need to change. | |||||
| case 1: | case 1: | ||||
| if (seq2 == NULL) { | if (seq2 == NULL) { | ||||
| *error_str = N_("At least one selected sequence strip is needed"); | *error_str = N_("At least one selected sequence strip is needed"); | ||||
| return 0; | return 0; | ||||
| } | } | ||||
| if (seq1 == NULL) { | if (seq1 == NULL) { | ||||
| seq1 = seq2; | seq1 = seq2; | ||||
| } | } | ||||
| if (seq3 == NULL) { | if (seq3 == NULL) { | ||||
| seq3 = seq2; | seq3 = seq2; | ||||
| } | } | ||||
| ATTR_FALLTHROUGH; | ATTR_FALLTHROUGH; | ||||
| case 2: | case 2: | ||||
| if (seq1 == NULL || seq2 == NULL) { | if (seq1 == NULL || seq2 == NULL) { | ||||
| *error_str = N_("2 selected sequence strips are needed"); | *error_str = N_("2 selected sequence strips are needed"); | ||||
| return 0; | return 0; | ||||
| } | } | ||||
| if (seq3 == NULL) { | if (seq3 == NULL) { | ||||
| seq3 = seq2; | seq3 = seq2; | ||||
| } | } | ||||
| break; | break; | ||||
| } | } | ||||
| if (seq1 == NULL && seq2 == NULL && seq3 == NULL) { | if (seq1 == NULL && seq2 == NULL && seq3 == NULL) { | ||||
| *error_str = N_("TODO: in what cases does this happen?"); | *error_str = N_("Active strip does not have inputs"); | ||||
| return 0; | return 0; | ||||
| } | } | ||||
| *selseq1 = seq1; | *selseq1 = seq1; | ||||
| *selseq2 = seq2; | *selseq2 = seq2; | ||||
| *selseq3 = seq3; | *selseq3 = seq3; | ||||
| return 1; | return 1; | ||||
| ▲ Show 20 Lines • Show All 1,438 Lines • ▼ Show 20 Lines | static int sequencer_reassign_inputs_exec(bContext *C, wmOperator *op) | ||||
| const char *error_msg; | const char *error_msg; | ||||
| if (!seq_effect_find_selected( | if (!seq_effect_find_selected( | ||||
| scene, last_seq, last_seq->type, &seq1, &seq2, &seq3, &error_msg)) { | scene, last_seq, last_seq->type, &seq1, &seq2, &seq3, &error_msg)) { | ||||
| BKE_report(op->reports, RPT_ERROR, error_msg); | BKE_report(op->reports, RPT_ERROR, error_msg); | ||||
| return OPERATOR_CANCELLED; | return OPERATOR_CANCELLED; | ||||
| } | } | ||||
| /* see reassigning would create a cycle */ | /* see reassigning would create a cycle */ | ||||
| if (seq_is_predecessor(seq1, last_seq) || seq_is_predecessor(seq2, last_seq) || | if (BKE_sequencer_check_recursivity(seq1, last_seq) || | ||||
| seq_is_predecessor(seq3, last_seq)) { | BKE_sequencer_check_recursivity(seq2, last_seq) || | ||||
| BKE_report(op->reports, RPT_ERROR, "Cannot reassign inputs: no cycles allowed"); | BKE_sequencer_check_recursivity(seq3, last_seq)) { | ||||
| BKE_report(op->reports, RPT_ERROR, "Cannot reassign inputs: recursion detected."); | |||||
| return OPERATOR_CANCELLED; | return OPERATOR_CANCELLED; | ||||
| } | } | ||||
| last_seq->seq1 = seq1; | last_seq->seq1 = seq1; | ||||
| last_seq->seq2 = seq2; | last_seq->seq2 = seq2; | ||||
| last_seq->seq3 = seq3; | last_seq->seq3 = seq3; | ||||
| BKE_sequencer_update_changed_seq_and_deps(scene, last_seq, 1, 1); | BKE_sequencer_update_changed_seq_and_deps(scene, last_seq, 1, 1); | ||||
| ▲ Show 20 Lines • Show All 2,240 Lines • Show Last 20 Lines | |||||
These changes seem unrelated.