VSE: Disable interactivity in combined view
Combined view of timeline and preview causes seemingly unpredictable behavior after some operators have been allowed to run in preview region. Disable new features in this combined view, so behavior should be consistent with previous versions. ref: https://developer.blender.org/T92584 Reviewed By: campbellbarton Differential Revision: https://developer.blender.org/D13419
This commit is contained in:
parent
c12d8a72ce
commit
d8edc2c634
|
@ -41,7 +41,7 @@ def _space_view_types(st):
|
|||
view_type = st.view_type
|
||||
return (
|
||||
view_type in {'SEQUENCER', 'SEQUENCER_PREVIEW'},
|
||||
view_type in {'PREVIEW', 'SEQUENCER_PREVIEW'},
|
||||
view_type == 'PREVIEW',
|
||||
)
|
||||
|
||||
|
||||
|
@ -196,10 +196,6 @@ class SEQUENCER_HT_header(Header):
|
|||
row = layout.row(align=True)
|
||||
row.prop(sequencer_tool_settings, "overlap_mode", text="")
|
||||
|
||||
if st.view_type == 'SEQUENCER_PREVIEW':
|
||||
row = layout.row(align=True)
|
||||
row.prop(sequencer_tool_settings, "pivot_point", text="", icon_only=True)
|
||||
|
||||
if st.view_type in {'SEQUENCER', 'SEQUENCER_PREVIEW'}:
|
||||
row = layout.row(align=True)
|
||||
row.prop(tool_settings, "use_snap_sequencer", text="")
|
||||
|
@ -248,7 +244,8 @@ class SEQUENCER_MT_editor_menus(Menu):
|
|||
|
||||
layout.menu("SEQUENCER_MT_strip")
|
||||
|
||||
layout.menu("SEQUENCER_MT_image")
|
||||
if st.view_type in {'SEQUENCER', 'PREVIEW'}:
|
||||
layout.menu("SEQUENCER_MT_image")
|
||||
|
||||
|
||||
class SEQUENCER_PT_gizmo_display(Panel):
|
||||
|
@ -576,10 +573,6 @@ class SEQUENCER_MT_select(Menu):
|
|||
st = context.space_data
|
||||
has_sequencer, has_preview = _space_view_types(st)
|
||||
|
||||
# FIXME: this doesn't work for both preview + window region.
|
||||
if has_preview:
|
||||
layout.operator_context = 'INVOKE_REGION_PREVIEW'
|
||||
|
||||
layout.operator("sequencer.select_all", text="All").action = 'SELECT'
|
||||
layout.operator("sequencer.select_all", text="None").action = 'DESELECT'
|
||||
layout.operator("sequencer.select_all", text="Invert").action = 'INVERT'
|
||||
|
@ -821,7 +814,6 @@ class SEQUENCER_MT_strip_transform(Menu):
|
|||
else:
|
||||
layout.operator_context = 'INVOKE_REGION_WIN'
|
||||
|
||||
# FIXME: mixed preview/sequencer views.
|
||||
if has_preview:
|
||||
layout.operator("transform.translate", text="Move")
|
||||
layout.operator("transform.rotate", text="Rotate")
|
||||
|
@ -917,12 +909,6 @@ class SEQUENCER_MT_strip(Menu):
|
|||
st = context.space_data
|
||||
has_sequencer, has_preview = _space_view_types(st)
|
||||
|
||||
# FIXME: this doesn't work for both preview + window region.
|
||||
if has_preview:
|
||||
layout.operator_context = 'INVOKE_REGION_PREVIEW'
|
||||
else:
|
||||
layout.operator_context = 'INVOKE_REGION_WIN'
|
||||
|
||||
layout.menu("SEQUENCER_MT_strip_transform")
|
||||
layout.separator()
|
||||
|
||||
|
|
|
@ -3153,14 +3153,7 @@ class SEQUENCER_PT_tools_active(ToolSelectPanelHelper, Panel):
|
|||
],
|
||||
'SEQUENCER_PREVIEW': [
|
||||
*_tools_select,
|
||||
_defs_sequencer_generic.cursor,
|
||||
None,
|
||||
_defs_sequencer_generic.translate,
|
||||
_defs_sequencer_generic.rotate,
|
||||
_defs_sequencer_generic.scale,
|
||||
_defs_sequencer_generic.transform,
|
||||
None,
|
||||
_defs_sequencer_generic.sample,
|
||||
*_tools_annotate,
|
||||
None,
|
||||
_defs_sequencer_generic.blade,
|
||||
|
|
|
@ -2097,6 +2097,10 @@ static int sequencer_draw_get_transform_preview_frame(Scene *scene)
|
|||
static void seq_draw_image_origin_and_outline(const bContext *C, Sequence *seq, bool is_active_seq)
|
||||
{
|
||||
SpaceSeq *sseq = CTX_wm_space_seq(C);
|
||||
const ARegion *region = CTX_wm_region(C);
|
||||
if (region->regiontype == RGN_TYPE_PREVIEW && !sequencer_view_preview_only_poll(C)) {
|
||||
return;
|
||||
}
|
||||
if ((seq->flag & SELECT) == 0) {
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -210,7 +210,7 @@ bool sequencer_strip_has_path_poll(bContext *C)
|
|||
(SEQ_HAS_PATH(seq)));
|
||||
}
|
||||
|
||||
bool sequencer_view_preview_poll(bContext *C)
|
||||
bool sequencer_view_has_preview_poll(bContext *C)
|
||||
{
|
||||
SpaceSeq *sseq = CTX_wm_space_seq(C);
|
||||
if (sseq == NULL) {
|
||||
|
@ -231,6 +231,26 @@ bool sequencer_view_preview_poll(bContext *C)
|
|||
return true;
|
||||
}
|
||||
|
||||
bool sequencer_view_preview_only_poll(const bContext *C)
|
||||
{
|
||||
SpaceSeq *sseq = CTX_wm_space_seq(C);
|
||||
if (sseq == NULL) {
|
||||
return false;
|
||||
}
|
||||
if (SEQ_editing_get(CTX_data_scene(C)) == NULL) {
|
||||
return false;
|
||||
}
|
||||
if (!(ELEM(sseq->view, SEQ_VIEW_PREVIEW) && (sseq->mainb == SEQ_DRAW_IMG_IMBUF))) {
|
||||
return false;
|
||||
}
|
||||
ARegion *region = CTX_wm_region(C);
|
||||
if (!(region && region->regiontype == RGN_TYPE_PREVIEW)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool sequencer_view_strips_poll(bContext *C)
|
||||
{
|
||||
SpaceSeq *sseq = CTX_wm_space_seq(C);
|
||||
|
@ -1710,8 +1730,11 @@ static int sequencer_delete_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
|
||||
SEQ_prefetch_stop(scene);
|
||||
|
||||
const bool is_preview = sequencer_view_preview_poll(C);
|
||||
const bool is_preview = sequencer_view_has_preview_poll(C);
|
||||
if (is_preview) {
|
||||
if (!sequencer_view_preview_only_poll(C)) {
|
||||
return OPERATOR_CANCELLED;
|
||||
}
|
||||
SEQ_query_rendered_strips_to_tag(seqbasep, scene->r.cfra, 0);
|
||||
}
|
||||
|
||||
|
@ -3438,7 +3461,7 @@ void SEQUENCER_OT_cursor_set(wmOperatorType *ot)
|
|||
/* api callbacks */
|
||||
ot->exec = sequencer_set_2d_cursor_exec;
|
||||
ot->invoke = sequencer_set_2d_cursor_invoke;
|
||||
ot->poll = sequencer_view_preview_poll;
|
||||
ot->poll = sequencer_view_has_preview_poll;
|
||||
|
||||
/* flags */
|
||||
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
|
||||
|
|
|
@ -110,7 +110,8 @@ bool sequencer_edit_poll(struct bContext *C);
|
|||
/* UNUSED */
|
||||
/* bool sequencer_strip_poll(struct bContext *C); */
|
||||
bool sequencer_strip_has_path_poll(struct bContext *C);
|
||||
bool sequencer_view_preview_poll(struct bContext *C);
|
||||
bool sequencer_view_has_preview_poll(struct bContext *C);
|
||||
bool sequencer_view_preview_only_poll(const struct bContext *C);
|
||||
bool sequencer_view_strips_poll(struct bContext *C);
|
||||
|
||||
/* Externs. */
|
||||
|
|
|
@ -416,8 +416,11 @@ static int sequencer_de_select_all_exec(bContext *C, wmOperator *op)
|
|||
Editing *ed = SEQ_editing_get(scene);
|
||||
Sequence *seq;
|
||||
|
||||
const bool is_preview = sequencer_view_preview_poll(C);
|
||||
const bool is_preview = sequencer_view_has_preview_poll(C);
|
||||
if (is_preview) {
|
||||
if (!sequencer_view_preview_only_poll(C)) {
|
||||
return OPERATOR_CANCELLED;
|
||||
}
|
||||
SEQ_query_rendered_strips_to_tag(ed->seqbasep, scene->r.cfra, 0);
|
||||
}
|
||||
|
||||
|
@ -494,8 +497,11 @@ static int sequencer_select_inverse_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
Editing *ed = SEQ_editing_get(scene);
|
||||
Sequence *seq;
|
||||
|
||||
const bool is_preview = sequencer_view_preview_poll(C);
|
||||
const bool is_preview = sequencer_view_has_preview_poll(C);
|
||||
if (is_preview) {
|
||||
if (!sequencer_view_preview_only_poll(C)) {
|
||||
return OPERATOR_CANCELLED;
|
||||
}
|
||||
SEQ_query_rendered_strips_to_tag(ed->seqbasep, scene->r.cfra, 0);
|
||||
}
|
||||
|
||||
|
@ -866,6 +872,9 @@ static int sequencer_select_exec(bContext *C, wmOperator *op)
|
|||
}
|
||||
|
||||
if (region->regiontype == RGN_TYPE_PREVIEW) {
|
||||
if (!sequencer_view_preview_only_poll(C)) {
|
||||
return OPERATOR_CANCELLED;
|
||||
}
|
||||
const SpaceSeq *sseq = CTX_wm_space_seq(C);
|
||||
if (sseq->mainb != SEQ_DRAW_IMG_IMBUF) {
|
||||
return OPERATOR_CANCELLED;
|
||||
|
@ -1612,6 +1621,9 @@ static int sequencer_box_select_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ARegion *region = CTX_wm_region(C);
|
||||
if (region->regiontype == RGN_TYPE_PREVIEW) {
|
||||
if (!sequencer_view_preview_only_poll(C)) {
|
||||
return OPERATOR_CANCELLED;
|
||||
}
|
||||
seq_box_select_seq_from_preview(C, &rectf, sel_op);
|
||||
sequencer_select_do_updates(C, scene);
|
||||
return OPERATOR_FINISHED;
|
||||
|
@ -1671,6 +1683,11 @@ static int sequencer_box_select_invoke(bContext *C, wmOperator *op, const wmEven
|
|||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
View2D *v2d = &CTX_wm_region(C)->v2d;
|
||||
ARegion *region = CTX_wm_region(C);
|
||||
|
||||
if (region->regiontype == RGN_TYPE_PREVIEW && !sequencer_view_preview_only_poll(C)) {
|
||||
return OPERATOR_CANCELLED;
|
||||
}
|
||||
|
||||
const bool tweak = RNA_boolean_get(op->ptr, "tweak");
|
||||
|
||||
|
@ -2003,8 +2020,11 @@ static int sequencer_select_grouped_exec(bContext *C, wmOperator *op)
|
|||
ListBase *seqbase = SEQ_active_seqbase_get(SEQ_editing_get(scene));
|
||||
Sequence *actseq = SEQ_select_active_get(scene);
|
||||
|
||||
const bool is_preview = sequencer_view_preview_poll(C);
|
||||
const bool is_preview = sequencer_view_has_preview_poll(C);
|
||||
if (is_preview) {
|
||||
if (!sequencer_view_preview_only_poll(C)) {
|
||||
return OPERATOR_CANCELLED;
|
||||
}
|
||||
SEQ_query_rendered_strips_to_tag(seqbase, scene->r.cfra, 0);
|
||||
if (actseq && actseq->tmp_tag == false) {
|
||||
actseq = NULL;
|
||||
|
|
|
@ -405,7 +405,7 @@ void SEQUENCER_OT_view_ghost_border(wmOperatorType *ot)
|
|||
ot->invoke = WM_gesture_box_invoke;
|
||||
ot->exec = view_ghost_border_exec;
|
||||
ot->modal = WM_gesture_box_modal;
|
||||
ot->poll = sequencer_view_preview_poll;
|
||||
ot->poll = sequencer_view_has_preview_poll;
|
||||
ot->cancel = WM_gesture_box_cancel;
|
||||
|
||||
/* Flags. */
|
||||
|
|
|
@ -118,16 +118,17 @@ static void freeSeqData(TransInfo *UNUSED(t),
|
|||
void createTransSeqImageData(TransInfo *t)
|
||||
{
|
||||
Editing *ed = SEQ_editing_get(t->scene);
|
||||
const SpaceSeq *sseq = t->area->spacedata.first;
|
||||
const ARegion *region = t->region;
|
||||
|
||||
if (ed == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
{
|
||||
const SpaceSeq *sseq = t->area->spacedata.first;
|
||||
if (sseq->mainb != SEQ_DRAW_IMG_IMBUF) {
|
||||
return;
|
||||
}
|
||||
if (sseq->mainb != SEQ_DRAW_IMG_IMBUF) {
|
||||
return;
|
||||
}
|
||||
if (region->regiontype == RGN_TYPE_PREVIEW && sseq->view == SEQ_VIEW_SEQUENCE_PREVIEW) {
|
||||
return;
|
||||
}
|
||||
|
||||
ListBase *seqbase = SEQ_active_seqbase_get(ed);
|
||||
|
|
Loading…
Reference in New Issue