UI: Make selected track color in Movie Clip Editor themeable

Selected tracks in the Movie Clip Editor's Dope Sheet used hard-coded color.
Added a new theme property for them, and previously hard-coded color is now just a default.

Pull Request: https://projects.blender.org/blender/blender/pulls/144265
This commit is contained in:
Nika Kutsniashvili
2025-08-28 19:12:11 +02:00
committed by Nika Kutsniashvili
parent fa61e3b9b8
commit ea47231a7b
9 changed files with 24 additions and 8 deletions

View File

@@ -793,6 +793,7 @@ const bTheme U_theme_default = {
.path_keyframe_after = RGBA(0xc4c4ffff),
.gp_vertex_size = 1,
.metadatatext = RGBA(0xffffffff),
.track_selected = RGBA(0xe7f7e74d),
},
.space_topbar = {
.back = RGBA(0x18181800),

View File

@@ -1033,7 +1033,7 @@
strips_selected="#ff8c00"
metadatabg="#000000"
metadatatext="#ffffff"
preview_range="#a14d0066"
track_selected="#e7f7e74d"
>
<space>
<ThemeSpaceGeneric

View File

@@ -27,7 +27,7 @@
/* Blender file format version. */
#define BLENDER_FILE_VERSION BLENDER_VERSION
#define BLENDER_FILE_SUBVERSION 67
#define BLENDER_FILE_SUBVERSION 68
/* Minimum Blender version that supports reading file written with the current
* version. Older Blender versions will test this and cancel loading the file, showing a warning to

View File

@@ -394,6 +394,10 @@ static void do_versions_theme(const UserDef *userdef, bTheme *btheme)
btheme->common.curves.handle_vertex_size = U_theme_default.common.curves.handle_vertex_size;
}
if (!USER_VERSION_ATLEAST(500, 68)) {
FROM_DEFAULT_V4_UCHAR(space_clip.track_selected);
}
/**
* Always bump subversion in BKE_blender_version.h when adding versioning
* code here, and wrap it inside a USER_VERSION_ATLEAST check.

View File

@@ -159,6 +159,7 @@ enum ThemeColorID {
TH_STRIP,
TH_STRIP_SELECT,
TH_TRACK_SELECT,
TH_KEYTYPE_KEYFRAME, /* KEYTYPES */
TH_KEYTYPE_KEYFRAME_SELECT,

View File

@@ -489,6 +489,9 @@ const uchar *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colorid)
case TH_STRIP_SELECT:
cp = ts->strip_select;
break;
case TH_TRACK_SELECT:
cp = ts->track_selected;
break;
case TH_KEYTYPE_KEYFRAME:
cp = ts->keytype_keyframe;
break;

View File

@@ -38,7 +38,7 @@
#include "clip_intern.hh" /* own include */
static void track_channel_color(MovieTrackingTrack *track,
const float default_color[3],
bool default_color,
float color[3])
{
if (track->flag & TRACK_CUSTOMCOLOR) {
@@ -49,7 +49,7 @@ static void track_channel_color(MovieTrackingTrack *track,
}
else {
if (default_color) {
copy_v3_v3(color, default_color);
UI_GetThemeColor4fv(TH_TRACK_SELECT, color);
}
else {
UI_GetThemeColor3fv(TH_HEADER, color);
@@ -150,9 +150,8 @@ void clip_draw_dopesheet_main(SpaceClip *sc, ARegion *region, Scene *scene)
/* selection background */
if (sel) {
float color[4] = {0.0f, 0.0f, 0.0f, 0.3f};
float default_color[4] = {0.8f, 0.93f, 0.8f, 0.3f};
track_channel_color(track, default_color, color);
track_channel_color(track, true, color);
immUniformColor4fv(color);
immRectf(pos_id,
@@ -330,7 +329,7 @@ void clip_draw_dopesheet_channels(const bContext *C, ARegion *region)
{
MovieTrackingTrack *track = channel->track;
float color[3];
track_channel_color(track, nullptr, color);
track_channel_color(track, false, color);
immUniformColor3fv(color);
immRectf(pos,

View File

@@ -319,7 +319,6 @@ typedef struct ThemeSpace {
unsigned char time_keyframe[4], time_gp_keyframe[4];
unsigned char freestyle_edge_mark[4], freestyle_face_mark[4];
unsigned char time_scrub_background[4];
char _pad10[4];
unsigned char nurb_uline[4], nurb_vline[4];
unsigned char act_spline[4], nurb_sel_uline[4], nurb_sel_vline[4];
@@ -453,6 +452,9 @@ typedef struct ThemeSpace {
unsigned char metadatabg[4];
unsigned char metadatatext[4];
/** For Movie Clip Editor. */
unsigned char track_selected[4];
} ThemeSpace;
/* Viewport Background Gradient Types. */

View File

@@ -4275,6 +4275,12 @@ static void rna_def_userdef_theme_space_clip(BlenderRNA *brna)
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Metadata Text", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
prop = RNA_def_property(srna, "track_selected", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_float_sdna(prop, nullptr, "track_selected");
RNA_def_property_array(prop, 4);
RNA_def_property_ui_text(prop, "Selected Tracks", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
}
static void rna_def_userdef_theme_space_topbar(BlenderRNA *brna)