Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilipp Oeser <info@graphics-engineer.com>2021-10-19 17:24:23 +0300
committerPhilipp Oeser <info@graphics-engineer.com>2021-10-20 12:36:33 +0300
commit25c173ffd12c0b46de4cc9919b8dbcc125f7e5ec (patch)
tree44694ba0e2b902a1b7401addefe2b390f0e64ba9 /source/blender/editors/screen
parent2bcf93bbbeb9e32f680c37a1e0054ff16cb00ef0 (diff)
Tracking: support editing all selected tracks
This patch adds a "selected_movieclip_tracks" context member and enables editing properties of multiple selected tracks via the usual Alt-click editing (as well as the "Copy To Selected" operator). Both use UI_context_copy_to_selected_list() to gather a list of other selected items [which are now taken via said new context member]. Strictly speaking, this could be done without the context member as well [just gathering other selected tracks in UI_context_copy_to_selected_list() without relying on a context member], but this might come in handy in other places (e.g. Addons). note: some could be desired for markers (e.g. editing pattern/search areas of all selected track markers, but since this is burried in a uiTemplate, this is a bit more work for another patch). Differential Revision: https://developer.blender.org/D12923
Diffstat (limited to 'source/blender/editors/screen')
-rw-r--r--source/blender/editors/screen/screen_context.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/source/blender/editors/screen/screen_context.c b/source/blender/editors/screen/screen_context.c
index 3d447d90626..a8c63027254 100644
--- a/source/blender/editors/screen/screen_context.c
+++ b/source/blender/editors/screen/screen_context.c
@@ -49,11 +49,13 @@
#include "BKE_gpencil.h"
#include "BKE_layer.h"
#include "BKE_object.h"
+#include "BKE_tracking.h"
#include "RNA_access.h"
#include "ED_anim_api.h"
#include "ED_armature.h"
+#include "ED_clip.h"
#include "ED_gpencil.h"
#include "SEQ_select.h"
@@ -99,6 +101,7 @@ const char *screen_context_dir[] = {
"active_nla_track",
"active_nla_strip",
"selected_nla_strips", /* nla editor */
+ "selected_movieclip_tracks",
"gpencil_data",
"gpencil_data_owner", /* grease pencil data */
"annotation_data",
@@ -709,6 +712,33 @@ static eContextResult screen_ctx_selected_nla_strips(const bContext *C, bContext
}
return CTX_RESULT_NO_DATA;
}
+static eContextResult screen_ctx_selected_movieclip_tracks(const bContext *C,
+ bContextDataResult *result)
+{
+ SpaceClip *space_clip = CTX_wm_space_clip(C);
+ if (space_clip == NULL) {
+ return CTX_RESULT_NO_DATA;
+ }
+ MovieClip *clip = ED_space_clip_get_clip(space_clip);
+ if (clip == NULL) {
+ return CTX_RESULT_NO_DATA;
+ }
+ MovieTracking *tracking = &clip->tracking;
+ if (tracking == NULL) {
+ return CTX_RESULT_NO_DATA;
+ }
+
+ ListBase *tracks_list = BKE_tracking_get_active_tracks(tracking);
+ LISTBASE_FOREACH (MovieTrackingTrack *, track, tracks_list) {
+ if (!TRACK_SELECTED(track)) {
+ continue;
+ }
+ CTX_data_list_add(result, &clip->id, &RNA_MovieTrackingTrack, track);
+ }
+
+ CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION);
+ return CTX_RESULT_OK;
+}
static eContextResult screen_ctx_gpencil_data(const bContext *C, bContextDataResult *result)
{
wmWindow *win = CTX_wm_window(C);
@@ -1143,6 +1173,7 @@ static void ensure_ed_screen_context_functions(void)
register_context_function("active_nla_track", screen_ctx_active_nla_track);
register_context_function("active_nla_strip", screen_ctx_active_nla_strip);
register_context_function("selected_nla_strips", screen_ctx_selected_nla_strips);
+ register_context_function("selected_movieclip_tracks", screen_ctx_selected_movieclip_tracks);
register_context_function("gpencil_data", screen_ctx_gpencil_data);
register_context_function("gpencil_data_owner", screen_ctx_gpencil_data_owner);
register_context_function("annotation_data", screen_ctx_annotation_data);