Merge branch 'blender-v4.1-release'
This commit is contained in:
commit
dc2577d383
@ -220,6 +220,50 @@ static float update_overlay_strip_position_data(bContext *C, const int mval[2])
|
|||||||
|
|
||||||
static void sequencer_drop_copy(bContext *C, wmDrag *drag, wmDropBox *drop)
|
static void sequencer_drop_copy(bContext *C, wmDrag *drag, wmDropBox *drop)
|
||||||
{
|
{
|
||||||
|
if (g_drop_coords.in_use) {
|
||||||
|
if (!g_drop_coords.has_read_mouse_pos) {
|
||||||
|
/* We didn't read the mouse position, so we need to do it manually here. */
|
||||||
|
int xy[2];
|
||||||
|
wmWindow *win = CTX_wm_window(C);
|
||||||
|
xy[0] = win->eventstate->xy[0];
|
||||||
|
xy[1] = win->eventstate->xy[1];
|
||||||
|
|
||||||
|
ARegion *region = CTX_wm_region(C);
|
||||||
|
int mval[2];
|
||||||
|
/* Convert mouse coordinates to region local coordinates. */
|
||||||
|
mval[0] = xy[0] - region->winrct.xmin;
|
||||||
|
mval[1] = xy[1] - region->winrct.ymin;
|
||||||
|
|
||||||
|
update_overlay_strip_position_data(C, mval);
|
||||||
|
}
|
||||||
|
|
||||||
|
RNA_int_set(drop->ptr, "frame_start", g_drop_coords.start_frame);
|
||||||
|
RNA_int_set(drop->ptr, "channel", g_drop_coords.channel);
|
||||||
|
RNA_boolean_set(drop->ptr, "overlap_shuffle_override", true);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
/* We are dropped inside the preview region. Put the strip on top of the
|
||||||
|
* current displayed frame. */
|
||||||
|
Scene *scene = CTX_data_scene(C);
|
||||||
|
Editing *ed = SEQ_editing_ensure(scene);
|
||||||
|
ListBase *seqbase = SEQ_active_seqbase_get(ed);
|
||||||
|
ListBase *channels = SEQ_channels_displayed_get(ed);
|
||||||
|
SpaceSeq *sseq = CTX_wm_space_seq(C);
|
||||||
|
|
||||||
|
blender::VectorSet strips = SEQ_query_rendered_strips(
|
||||||
|
scene, channels, seqbase, scene->r.cfra, sseq->chanshown);
|
||||||
|
|
||||||
|
/* Get the top most strip channel that is in view. */
|
||||||
|
int max_channel = -1;
|
||||||
|
for (Sequence *seq : strips) {
|
||||||
|
max_channel = max_ii(seq->machine, max_channel);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (max_channel != -1) {
|
||||||
|
RNA_int_set(drop->ptr, "channel", max_channel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ID *id = WM_drag_get_local_ID_or_import_from_asset(C, drag, 0);
|
ID *id = WM_drag_get_local_ID_or_import_from_asset(C, drag, 0);
|
||||||
/* ID dropped. */
|
/* ID dropped. */
|
||||||
if (id != nullptr) {
|
if (id != nullptr) {
|
||||||
@ -267,50 +311,6 @@ static void sequencer_drop_copy(bContext *C, wmDrag *drag, wmDropBox *drop)
|
|||||||
RNA_string_set(&itemptr, "name", file);
|
RNA_string_set(&itemptr, "name", file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g_drop_coords.in_use) {
|
|
||||||
if (!g_drop_coords.has_read_mouse_pos) {
|
|
||||||
/* We didn't read the mouse position, so we need to do it manually here. */
|
|
||||||
int xy[2];
|
|
||||||
wmWindow *win = CTX_wm_window(C);
|
|
||||||
xy[0] = win->eventstate->xy[0];
|
|
||||||
xy[1] = win->eventstate->xy[1];
|
|
||||||
|
|
||||||
ARegion *region = CTX_wm_region(C);
|
|
||||||
int mval[2];
|
|
||||||
/* Convert mouse coordinates to region local coordinates. */
|
|
||||||
mval[0] = xy[0] - region->winrct.xmin;
|
|
||||||
mval[1] = xy[1] - region->winrct.ymin;
|
|
||||||
|
|
||||||
update_overlay_strip_position_data(C, mval);
|
|
||||||
}
|
|
||||||
|
|
||||||
RNA_int_set(drop->ptr, "frame_start", g_drop_coords.start_frame);
|
|
||||||
RNA_int_set(drop->ptr, "channel", g_drop_coords.channel);
|
|
||||||
RNA_boolean_set(drop->ptr, "overlap_shuffle_override", true);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
/* We are dropped inside the preview region. Put the strip on top of the
|
|
||||||
* current displayed frame. */
|
|
||||||
Scene *scene = CTX_data_scene(C);
|
|
||||||
Editing *ed = SEQ_editing_ensure(scene);
|
|
||||||
ListBase *seqbase = SEQ_active_seqbase_get(ed);
|
|
||||||
ListBase *channels = SEQ_channels_displayed_get(ed);
|
|
||||||
SpaceSeq *sseq = CTX_wm_space_seq(C);
|
|
||||||
|
|
||||||
blender::VectorSet strips = SEQ_query_rendered_strips(
|
|
||||||
scene, channels, seqbase, scene->r.cfra, sseq->chanshown);
|
|
||||||
|
|
||||||
/* Get the top most strip channel that is in view. */
|
|
||||||
int max_channel = -1;
|
|
||||||
for (Sequence *seq : strips) {
|
|
||||||
max_channel = max_ii(seq->machine, max_channel);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (max_channel != -1) {
|
|
||||||
RNA_int_set(drop->ptr, "channel", max_channel);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void get_drag_path(const bContext *C, wmDrag *drag, char r_path[FILE_MAX])
|
static void get_drag_path(const bContext *C, wmDrag *drag, char r_path[FILE_MAX])
|
||||||
|
Loading…
Reference in New Issue
Block a user