[Bf-blender-cvs] [d8edc2c6345] blender-v3.0-release: VSE: Disable interactivity in combined view

Richard Antalik noreply at git.blender.org
Tue Nov 30 11:16:20 CET 2021


Commit: d8edc2c6345306b943d73d2806bea18b67c66bc3
Author: Richard Antalik
Date:   Tue Nov 30 11:09:58 2021 +0100
Branches: blender-v3.0-release
https://developer.blender.org/rBd8edc2c6345306b943d73d2806bea18b67c66bc3

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

===================================================================

M	release/scripts/startup/bl_ui/space_sequencer.py
M	release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
M	source/blender/editors/space_sequencer/sequencer_draw.c
M	source/blender/editors/space_sequencer/sequencer_edit.c
M	source/blender/editors/space_sequencer/sequencer_intern.h
M	source/blender/editors/space_sequencer/sequencer_select.c
M	source/blender/editors/space_sequencer/sequencer_view.c
M	source/blender/editors/transform/transform_convert_sequencer_image.c

===================================================================

diff --git a/release/scripts/startup/bl_ui/space_sequencer.py b/release/scripts/startup/bl_ui/space_sequencer.py
index 7117f28c1a7..32ada453b50 100644
--- a/release/scripts/startup/bl_ui/space_sequencer.py
+++ b/release/scripts/startup/bl_ui/space_sequencer.py
@@ -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()
 
diff --git a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
index 2253dfa5f5d..889155f1858 100644
--- a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
@@ -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,
diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c
index 2bbc346fb50..896b64d97af 100644
--- a/source/blender/editors/space_sequencer/sequencer_draw.c
+++ b/source/blender/editors/space_sequencer/sequencer_draw.c
@@ -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;
   }
diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c
index 899c2f6b4f4..ce538961875 100644
--- a/source/blender/editors/space_sequencer/sequencer_edit.c
+++ b/source/blender/editors/space_sequencer/sequencer_edit.c
@@ -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;
diff --git a/source/blender/editors/space_sequencer/sequencer_intern.h b/source/blender/editors/space_sequencer/sequencer_intern.h
index 5982a0a8993..37f17de08a0 100644
--- a/source/blender/editors/space_sequencer/sequencer_intern.h
+++ b/source/blender/editors/space_sequencer/sequencer_intern.h
@@ -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. */
diff --git a/source/blender/editors/space_sequencer/sequencer_select.c b/source/blender/editors/space_sequencer/sequencer_select.c
index 8a8a24f08ff..cf18429862e 100644
--- a/source/blender/editors/space_sequencer/sequencer_select.c
+++ b/source/blender/editors/space_sequencer/sequencer_select.c
@@ -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;
diff --git a/source/blender/editors/space_sequencer/sequencer_view.c b/source/blender/editors/space_sequencer/sequencer_view.c
index 2d2e7de7135..360aa2253de 100644
--- a/source/blender/editors/space_sequencer/sequencer_view.c
+++ b/sourc

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list