diff --git a/release/datafiles/userdef/userdef_default_theme.c b/release/datafiles/userdef/userdef_default_theme.c
index 97b1ff58712..077c587be9a 100644
--- a/release/datafiles/userdef/userdef_default_theme.c
+++ b/release/datafiles/userdef/userdef_default_theme.c
@@ -287,17 +287,21 @@ const bTheme U_theme_default = {
.text = RGBA(0xb8b8b8ff),
.text_selected = RGBA(0xffaf23ff),
},
+ .scrubbing = {
+ .back = RGBA(0x161616ff),
+ .text = RGBA(0xc3c3c3ff),
+ .time_marker = RGBA(0xffffff4d),
+ .time_marker_selected = RGBA(0xffffffb3),
+ },
.sidebars = {
.back = RGBA(0x30303000),
.tab_back = RGBA(0x18181800),
- }
+ },
},
.common = {
.anim = {
.playhead = RGBA(0x4772b3ff),
.preview_range = RGBA(0xa14d0066),
- .time_marker = RGBA(0xffffff4d),
- .time_marker_selected = RGBA(0xffffffb3),
.channels = RGBA(0x194e8080),
.channels_sub = RGBA(0x0f2c4d80),
.channel_group = RGBA(0x1a332d37),
@@ -448,7 +452,6 @@ const bTheme U_theme_default = {
.vertex = RGBA(0x000000ff),
.vertex_select = RGBA(0xff8500ff),
.vertex_active = RGBA(0xffffffff),
- .time_scrub_background = RGBA(0x161616ff),
.vertex_size = 6,
.outline_width = 1,
.facedot_size = 4,
@@ -486,7 +489,6 @@ const bTheme U_theme_default = {
.header_text_hi = RGBA(0xffffffff),
.shade1 = RGBA(0xc0c0c000),
.grid = RGBA(0x161616ff),
- .time_scrub_background = RGBA(0x1d1d1dff),
.ds_ipoline = RGBA(0x94e575cc),
.keyborder = RGBA(0x000000ff),
.keyborder_select = RGBA(0x000000ff),
@@ -509,7 +511,6 @@ const bTheme U_theme_default = {
.grid = RGBA(0x2a2a2aff),
.strip = RGBA(0x0d0d0d80),
.strip_select = RGBA(0xff8c00ff),
- .time_scrub_background = RGBA(0x161616ff),
.keyborder = RGBA(0x000000ff),
.keyborder_select = RGBA(0x000000ff),
.vertex_size = 3,
@@ -540,7 +541,6 @@ const bTheme U_theme_default = {
.bone_pose = RGBA(0x50c8ff50),
.before_current_frame = RGBA(0xf22e23ff),
.after_current_frame = RGBA(0x78f244ff),
- .time_scrub_background = RGBA(0x121212ff),
.keyborder = RGBA(0x000000ff),
.keyborder_select = RGBA(0x000000ff),
.vertex_size = 3,
@@ -728,7 +728,6 @@ const bTheme U_theme_default = {
.header_text = RGBA(0xeeeeeeff),
.header_text_hi = RGBA(0xffffffff),
.grid = RGBA(0x181818ff),
- .time_scrub_background = RGBA(0x181818ff),
.vertex_size = 3,
.outline_width = 1,
.facedot_size = 4,
diff --git a/scripts/presets/interface_theme/Blender_Light.xml b/scripts/presets/interface_theme/Blender_Light.xml
index fd11ed05a57..3f09efcb613 100644
--- a/scripts/presets/interface_theme/Blender_Light.xml
+++ b/scripts/presets/interface_theme/Blender_Light.xml
@@ -400,6 +400,15 @@
>
+
+
+
+
diff --git a/scripts/startup/bl_ui/space_userpref.py b/scripts/startup/bl_ui/space_userpref.py
index 292d6e1256d..8e670a4472b 100644
--- a/scripts/startup/bl_ui/space_userpref.py
+++ b/scripts/startup/bl_ui/space_userpref.py
@@ -985,6 +985,7 @@ class USERPREF_MT_interface_theme_presets(Menu):
"ThemeRegions",
"ThemeRegionsAssetShelf",
"ThemeRegionsChannels",
+ "ThemeRegionsScrubbing",
"ThemeRegionsSidebars",
"ThemeSequenceEditor",
"ThemeSpaceGeneric",
diff --git a/source/blender/blenkernel/BKE_blender_version.h b/source/blender/blenkernel/BKE_blender_version.h
index 7a8f17aa9f0..6b13f9efbab 100644
--- a/source/blender/blenkernel/BKE_blender_version.h
+++ b/source/blender/blenkernel/BKE_blender_version.h
@@ -27,7 +27,7 @@
/* Blender file format version. */
#define BLENDER_FILE_VERSION BLENDER_VERSION
-#define BLENDER_FILE_SUBVERSION 79
+#define BLENDER_FILE_SUBVERSION 80
/* 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
diff --git a/source/blender/blenloader/intern/versioning_userdef.cc b/source/blender/blenloader/intern/versioning_userdef.cc
index fa005614d55..05a67191fd7 100644
--- a/source/blender/blenloader/intern/versioning_userdef.cc
+++ b/source/blender/blenloader/intern/versioning_userdef.cc
@@ -302,8 +302,6 @@ static void do_versions_theme(const UserDef *userdef, bTheme *btheme)
if (!USER_VERSION_ATLEAST(500, 56)) {
FROM_DEFAULT_V4_UCHAR(common.anim.playhead);
- FROM_DEFAULT_V4_UCHAR(common.anim.time_marker);
- FROM_DEFAULT_V4_UCHAR(common.anim.time_marker_selected);
FROM_DEFAULT_V4_UCHAR(common.anim.channel_group);
FROM_DEFAULT_V4_UCHAR(common.anim.channel_group_active);
}
@@ -362,6 +360,13 @@ static void do_versions_theme(const UserDef *userdef, bTheme *btheme)
FROM_DEFAULT_V4_UCHAR(common.anim.channel_selected);
}
+ if (!USER_VERSION_ATLEAST(500, 80)) {
+ FROM_DEFAULT_V4_UCHAR(regions.scrubbing.back);
+ FROM_DEFAULT_V4_UCHAR(regions.scrubbing.text);
+ FROM_DEFAULT_V4_UCHAR(regions.scrubbing.time_marker);
+ FROM_DEFAULT_V4_UCHAR(regions.scrubbing.time_marker_selected);
+ }
+
/**
* Always bump subversion in BKE_blender_version.h when adding versioning
* code here, and wrap it inside a USER_VERSION_ATLEAST check.
diff --git a/source/blender/editors/animation/anim_markers.cc b/source/blender/editors/animation/anim_markers.cc
index 1f70dcfe84e..412f2fd05e0 100644
--- a/source/blender/editors/animation/anim_markers.cc
+++ b/source/blender/editors/animation/anim_markers.cc
@@ -401,11 +401,11 @@ void debug_markers_print_list(ListBase *markers)
static void marker_color_get(const TimeMarker *marker, uchar *r_text_color, uchar *r_line_color)
{
if (marker->flag & SELECT) {
- UI_GetThemeColor4ubv(TH_TEXT_HI, r_text_color);
+ UI_GetThemeColor4ubv(TH_TIME_MARKER_LINE_SELECTED, r_text_color);
UI_GetThemeColor4ubv(TH_TIME_MARKER_LINE_SELECTED, r_line_color);
}
else {
- UI_GetThemeColor4ubv(TH_TEXT, r_text_color);
+ UI_GetThemeColor4ubv(TH_TIME_MARKER_LINE, r_text_color);
UI_GetThemeColor4ubv(TH_TIME_MARKER_LINE, r_line_color);
}
}
@@ -502,7 +502,7 @@ static void draw_marker(const uiFontStyle *fstyle,
UI_GetThemeColor4ubv(TH_TIME_MARKER_LINE_SELECTED, marker_color);
}
else {
- UI_GetThemeColor4ubv(TH_TEXT, marker_color);
+ UI_GetThemeColor4ubv(TH_TIME_MARKER_LINE, marker_color);
}
UI_icon_draw_ex(xpos - (0.5f * UI_ICON_SIZE) - (0.5f * U.pixelsize),
diff --git a/source/blender/editors/animation/time_scrub_ui.cc b/source/blender/editors/animation/time_scrub_ui.cc
index f5831fceeb8..be12cff9da2 100644
--- a/source/blender/editors/animation/time_scrub_ui.cc
+++ b/source/blender/editors/animation/time_scrub_ui.cc
@@ -211,11 +211,11 @@ void ED_time_scrub_draw(const ARegion *region,
numbers_rect.ymin = get_centered_text_y(&scrub_region_rect) - 4 * UI_SCALE_FAC;
if (discrete_frames) {
UI_view2d_draw_scale_x__discrete_frames_or_seconds(
- region, v2d, &numbers_rect, scene, display_seconds, TH_TEXT);
+ region, v2d, &numbers_rect, scene, display_seconds, TH_TIME_SCRUB_TEXT);
}
else {
UI_view2d_draw_scale_x__frames_or_seconds(
- region, v2d, &numbers_rect, scene, display_seconds, TH_TEXT);
+ region, v2d, &numbers_rect, scene, display_seconds, TH_TIME_SCRUB_TEXT);
}
GPU_matrix_pop_projection();
diff --git a/source/blender/editors/include/UI_resources.hh b/source/blender/editors/include/UI_resources.hh
index 9d8b9205807..76486d4a40c 100644
--- a/source/blender/editors/include/UI_resources.hh
+++ b/source/blender/editors/include/UI_resources.hh
@@ -118,6 +118,7 @@ enum ThemeColorID {
TH_FRAME_BEFORE,
TH_FRAME_AFTER,
TH_TIME_SCRUB_BACKGROUND,
+ TH_TIME_SCRUB_TEXT,
TH_TIME_MARKER_LINE,
TH_TIME_MARKER_LINE_SELECTED,
TH_TIME_GP_KEYFRAME,
diff --git a/source/blender/editors/interface/resources.cc b/source/blender/editors/interface/resources.cc
index 190d83caa70..c3832d806b2 100644
--- a/source/blender/editors/interface/resources.cc
+++ b/source/blender/editors/interface/resources.cc
@@ -323,13 +323,16 @@ const uchar *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colorid)
cp = ts->grid;
break;
case TH_TIME_SCRUB_BACKGROUND:
- cp = ts->time_scrub_background;
+ cp = btheme->regions.scrubbing.back;
+ break;
+ case TH_TIME_SCRUB_TEXT:
+ cp = btheme->regions.scrubbing.text;
break;
case TH_TIME_MARKER_LINE:
- cp = btheme->common.anim.time_marker;
+ cp = btheme->regions.scrubbing.time_marker;
break;
case TH_TIME_MARKER_LINE_SELECTED:
- cp = btheme->common.anim.time_marker_selected;
+ cp = btheme->regions.scrubbing.time_marker_selected;
break;
case TH_VIEW_OVERLAY:
cp = ts->view_overlay;
diff --git a/source/blender/makesdna/DNA_theme_types.h b/source/blender/makesdna/DNA_theme_types.h
index cb593d99616..5a919253438 100644
--- a/source/blender/makesdna/DNA_theme_types.h
+++ b/source/blender/makesdna/DNA_theme_types.h
@@ -118,6 +118,12 @@ typedef struct ThemeRegionsChannels {
char _pad0[4];
} ThemeRegionsChannels;
+typedef struct ThemeRegionsScrubbing {
+ unsigned char back[4];
+ unsigned char text[4];
+ unsigned char time_marker[4], time_marker_selected[4];
+} ThemeRegionsScrubbing;
+
typedef struct ThemeRegionsSidebars {
unsigned char back[4];
unsigned char tab_back[4];
@@ -126,6 +132,7 @@ typedef struct ThemeRegionsSidebars {
typedef struct ThemeRegions {
ThemeRegionsAssetShelf asset_shelf;
ThemeRegionsChannels channels;
+ ThemeRegionsScrubbing scrubbing;
ThemeRegionsSidebars sidebars;
} ThemeRegions;
@@ -133,8 +140,6 @@ typedef struct ThemeCommonAnim {
unsigned char playhead[4];
unsigned char preview_range[4];
- unsigned char time_marker[4], time_marker_selected[4];
-
unsigned char channels[4], channels_sub[4];
unsigned char channel_group[4], channel_group_active[4];
unsigned char channel[4], channel_selected[4];
@@ -301,8 +306,6 @@ typedef struct ThemeSpace {
char _pad2[4];
/* button/tool regions */
- unsigned char _pad3[4];
-
unsigned char shade1[4];
unsigned char shade2[4];
@@ -332,7 +335,6 @@ typedef struct ThemeSpace {
unsigned char before_current_frame[4], after_current_frame[4];
unsigned char time_gp_keyframe[4];
unsigned char freestyle_edge_mark[4], freestyle_face_mark[4];
- unsigned char time_scrub_background[4];
unsigned char nurb_uline[4], nurb_vline[4];
unsigned char act_spline[4], nurb_sel_uline[4], nurb_sel_vline[4];
@@ -380,7 +382,7 @@ typedef struct ThemeSpace {
float keyframe_scale_fac;
unsigned char editmesh_active[4];
- char _pad6[1];
+ char _pad3[1];
unsigned char clipping_border_3d[4];
diff --git a/source/blender/makesdna/intern/dna_rename_defs.h b/source/blender/makesdna/intern/dna_rename_defs.h
index 0e2cc73b2fb..36adba13c3d 100644
--- a/source/blender/makesdna/intern/dna_rename_defs.h
+++ b/source/blender/makesdna/intern/dna_rename_defs.h
@@ -230,7 +230,6 @@ DNA_STRUCT_RENAME_MEMBER(SurfaceDeformModifierData, numverts, bind_verts_num)
DNA_STRUCT_RENAME_MEMBER(Text, name, filepath)
DNA_STRUCT_RENAME_MEMBER(TextVars, align_y, align_y_legacy)
DNA_STRUCT_RENAME_MEMBER(TextVars, text, text_legacy)
-DNA_STRUCT_RENAME_MEMBER(ThemeSpace, scrubbing_background, time_scrub_background)
DNA_STRUCT_RENAME_MEMBER(ThemeSpace, show_back_grad, background_type)
DNA_STRUCT_RENAME_MEMBER(UVProjectModifierData, num_projectors, projectors_num)
DNA_STRUCT_RENAME_MEMBER(UnifiedPaintSettings, unprojected_radius, unprojected_size)
diff --git a/source/blender/makesrna/intern/rna_userdef.cc b/source/blender/makesrna/intern/rna_userdef.cc
index a3d7cb1640e..64b77a6e7ca 100644
--- a/source/blender/makesrna/intern/rna_userdef.cc
+++ b/source/blender/makesrna/intern/rna_userdef.cc
@@ -2195,6 +2195,37 @@ static void rna_def_userdef_theme_regions_channels(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
}
+/* Scrubbing / Markers region */
+static void rna_def_userdef_theme_regions_scrubbing(BlenderRNA *brna)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+ srna = RNA_def_struct(brna, "ThemeRegionsScrubbing", nullptr);
+ RNA_def_struct_ui_text(srna, "Scrubbing & Markers Region Settings", "");
+
+ prop = RNA_def_property(srna, "back", PROP_FLOAT, PROP_COLOR_GAMMA);
+ RNA_def_property_array(prop, 4);
+ RNA_def_property_ui_text(prop, "Background", "");
+ RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
+
+ prop = RNA_def_property(srna, "text", PROP_FLOAT, PROP_COLOR_GAMMA);
+ RNA_def_property_array(prop, 3);
+ RNA_def_property_ui_text(prop, "Timestamp", "");
+ RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
+
+ /* Marker properties */
+ prop = RNA_def_property(srna, "time_marker", PROP_FLOAT, PROP_COLOR_GAMMA);
+ RNA_def_property_array(prop, 4);
+ RNA_def_property_ui_text(prop, "Marker", "");
+ RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
+
+ prop = RNA_def_property(srna, "time_marker_selected", PROP_FLOAT, PROP_COLOR_GAMMA);
+ RNA_def_property_array(prop, 4);
+ RNA_def_property_ui_text(prop, "Marker Selected", "");
+ RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
+}
+
/* Sidebar & Toolbar region */
static void rna_def_userdef_theme_regions_sidebars(BlenderRNA *brna)
{
@@ -2222,6 +2253,7 @@ static void rna_def_userdef_theme_regions(BlenderRNA *brna)
rna_def_userdef_theme_regions_channels(brna);
rna_def_userdef_theme_regions_asset_shelf(brna);
+ rna_def_userdef_theme_regions_scrubbing(brna);
rna_def_userdef_theme_regions_sidebars(brna);
srna = RNA_def_struct(brna, "ThemeRegions", nullptr);
@@ -2239,6 +2271,11 @@ static void rna_def_userdef_theme_regions(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Channels", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
+ prop = RNA_def_property(srna, "scrubbing", PROP_POINTER, PROP_NONE);
+ RNA_def_property_flag(prop, PROP_NEVER_NULL);
+ RNA_def_property_ui_text(prop, "Scrubbing / Markers", "");
+ RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
+
prop = RNA_def_property(srna, "sidebars", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_NEVER_NULL);
RNA_def_property_ui_text(prop, "Toolbar / Sidebar", "");
@@ -2266,17 +2303,6 @@ static void rna_def_userdef_theme_common_anim(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Preview Range", "Color of preview range overlay");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
- /* Marker properties */
- prop = RNA_def_property(srna, "time_marker", PROP_FLOAT, PROP_COLOR_GAMMA);
- RNA_def_property_array(prop, 4);
- RNA_def_property_ui_text(prop, "Marker Line", "");
- RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
-
- prop = RNA_def_property(srna, "time_marker_selected", PROP_FLOAT, PROP_COLOR_GAMMA);
- RNA_def_property_array(prop, 4);
- RNA_def_property_ui_text(prop, "Marker Line Selected", "");
- RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
-
/* Channel properties */
prop = RNA_def_property(srna, "channels", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 4);
@@ -3042,11 +3068,6 @@ static void rna_def_userdef_theme_space_graph(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Grid", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
- prop = RNA_def_property(srna, "time_scrub_background", PROP_FLOAT, PROP_COLOR_GAMMA);
- RNA_def_property_array(prop, 4);
- RNA_def_property_ui_text(prop, "Scrubbing/Markers Region", "");
- RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
-
rna_def_userdef_theme_spaces_vertex(srna, true, false);
}
@@ -3762,11 +3783,6 @@ static void rna_def_userdef_theme_space_seq(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Selected Strips", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
- prop = RNA_def_property(srna, "time_scrub_background", PROP_FLOAT, PROP_COLOR_GAMMA);
- RNA_def_property_array(prop, 4);
- RNA_def_property_ui_text(prop, "Scrubbing/Markers Region", "");
- RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
-
prop = RNA_def_property(srna, "keyframe_border", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_float_sdna(prop, nullptr, "keyborder");
RNA_def_property_array(prop, 4);
@@ -3833,11 +3849,6 @@ static void rna_def_userdef_theme_space_action(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Grid", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
- prop = RNA_def_property(srna, "time_scrub_background", PROP_FLOAT, PROP_COLOR_GAMMA);
- RNA_def_property_array(prop, 4);
- RNA_def_property_ui_text(prop, "Scrubbing/Markers Region", "");
- RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
-
prop = RNA_def_property(srna, "keyframe_border", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_float_sdna(prop, nullptr, "keyborder");
RNA_def_property_array(prop, 4);
@@ -3987,11 +3998,6 @@ static void rna_def_userdef_theme_space_nla(BlenderRNA *brna)
RNA_def_property_array(prop, 4);
RNA_def_property_ui_text(prop, "Keyframe Border Selected", "Color of selected keyframe border");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
-
- prop = RNA_def_property(srna, "time_scrub_background", PROP_FLOAT, PROP_COLOR_GAMMA);
- RNA_def_property_array(prop, 4);
- RNA_def_property_ui_text(prop, "Scrubbing/Markers Region", "");
- RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
}
static void rna_def_userdef_theme_colorset(BlenderRNA *brna)
@@ -4140,11 +4146,6 @@ static void rna_def_userdef_theme_space_clip(BlenderRNA *brna)
prop, "Path Keyframe After", "Color of keyframes on a path after current frame");
RNA_def_property_update(prop, 0, "rna_userdef_update");
- prop = RNA_def_property(srna, "time_scrub_background", PROP_FLOAT, PROP_COLOR_GAMMA);
- RNA_def_property_array(prop, 4);
- RNA_def_property_ui_text(prop, "Scrubbing/Markers Region", "");
- RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
-
prop = RNA_def_property(srna, "metadatabg", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_float_sdna(prop, nullptr, "metadatabg");
RNA_def_property_array(prop, 3);