UI: Theme: Shared regions

Continuing recent attempts to combine theme settings
and reduce complexity. part of #140360
This PR adds new root panel in theme called "Regions" which for now
includes two subpanels:

# Asset Shelf
This is just moving asset shelf from root to regions, where
it's more appropriate and less noisy.
No functional changes. (alternative to #144267)

# Channels
Previously known as "Theme Space List", or "Source List",
but in user interface we refer this region as "Channels".
This region is shared by all animation/video editors, and each had
a separate panel for theme properties. Now they're combined, and all
editors follow settings defined in Regions -> Channels.

Additionally, "Source List Title" property, which was never used is removed.
Properties are also renamed to be more intuitive and shorter.

# Toolbar / Sidebar
Previously was registered separately on every single editor. This allowed
for some extra customization, but in 5.0 need for this is reduced very much,
because elements drawn in those regions (tabs & tools) are also generalized,
so it makes sense to want same background color for them as well.

> This replaces 46 properties with 5, reducing the total by 41.
> Videos in PR

Pull Request: https://projects.blender.org/blender/blender/pulls/145609
This commit is contained in:
Nika Kutsniashvili
2025-09-12 13:22:50 +02:00
committed by Nika Kutsniashvili
parent 1a666b5722
commit 534b5f1f4f
9 changed files with 191 additions and 427 deletions

View File

@@ -277,6 +277,21 @@ const bTheme U_theme_default = {
.panel_text = RGBA(0xe6e6e6ff),
.panel_active = RGBA(0x4772b3ff),
},
.regions = {
.asset_shelf = {
.back = RGBA(0x303030ff),
.header_back = RGBA(0x1d1d1dff),
},
.channels = {
.back = RGBA(0x1d1d1dff),
.text = RGBA(0xb8b8b8ff),
.text_selected = RGBA(0xffaf23ff),
},
.sidebars = {
.back = RGBA(0x30303000),
.tab_back = RGBA(0x18181800),
}
},
.common = {
.anim = {
.playhead = RGBA(0x4772b3ff),
@@ -326,8 +341,6 @@ const bTheme U_theme_default = {
.header = RGBA(0x303030b3),
.header_text = RGBA(0xeeeeeeff),
.header_text_hi = RGBA(0xffffffff),
.tab_back = RGBA(0x1d1d1d00),
.button = RGBA(0x303030ff),
.vertex_size = 3,
.outline_width = 1,
.facedot_size = 4,
@@ -342,8 +355,6 @@ const bTheme U_theme_default = {
.header = RGBA(0x303030b3),
.header_text = RGBA(0xeeeeeeff),
.header_text_hi = RGBA(0xffffffff),
.tab_back = RGBA(0x18181800),
.button = RGBA(0x30303000),
.grid = RGBA(0x54545480),
.wire = RGBA(0x000000ff),
.wire_edit = RGBA(0x000000ff),
@@ -416,8 +427,6 @@ const bTheme U_theme_default = {
.header = RGBA(0x303030b3),
.header_text = RGBA(0xeeeeeeff),
.header_text_hi = RGBA(0xffffffff),
.tab_back = RGBA(0x18181800),
.button = RGBA(0x30303000),
.hilite = RGBA(0x4772b3ff),
.vertex_size = 3,
.outline_width = 1,
@@ -432,12 +441,6 @@ const bTheme U_theme_default = {
.header = RGBA(0x303030b3),
.header_text = RGBA(0xeeeeeeff),
.header_text_hi = RGBA(0xffffffff),
.tab_back = RGBA(0x18181800),
.button = RGBA(0x30303000),
.list = RGBA(0x1d1d1dff),
.list_title = RGBA(0xffffffff),
.list_text = RGBA(0xb8b8b8ff),
.list_text_hi = RGBA(0xffaf23ff),
.shade1 = RGBA(0x96969600),
.shade2 = RGBA(0x12121264),
.grid = RGBA(0x1a1a1aff),
@@ -480,12 +483,6 @@ const bTheme U_theme_default = {
.header = RGBA(0x303030b3),
.header_text = RGBA(0xeeeeeeff),
.header_text_hi = RGBA(0xffffffff),
.tab_back = RGBA(0x18181800),
.button = RGBA(0x22222200),
.list = RGBA(0x1d1d1dff),
.list_title = RGBA(0xffffffff),
.list_text = RGBA(0xb8b8b8ff),
.list_text_hi = RGBA(0xffaf23ff),
.shade1 = RGBA(0xc0c0c000),
.shade2 = RGBA(0x1d1d1d99),
.hilite = RGBA(0x60c04044),
@@ -509,12 +506,6 @@ const bTheme U_theme_default = {
.header = RGBA(0x303030b3),
.header_text = RGBA(0xeeeeeeff),
.header_text_hi = RGBA(0xffffffff),
.tab_back = RGBA(0x18181800),
.button = RGBA(0x30303000),
.list = RGBA(0x1d1d1dff),
.list_title = RGBA(0xffffffff),
.list_text = RGBA(0xb8b8b8ff),
.list_text_hi = RGBA(0xffaf23ff),
.shade1 = RGBA(0x96969600),
.grid = RGBA(0x2a2a2aff),
.strip = RGBA(0x0d0d0d80),
@@ -545,12 +536,6 @@ const bTheme U_theme_default = {
.header = RGBA(0x303030b3),
.header_text = RGBA(0xeeeeeeff),
.header_text_hi = RGBA(0xffffffff),
.tab_back = RGBA(0x18181800),
.button = RGBA(0x30303000),
.list = RGBA(0x18181800),
.list_title = RGBA(0xffffffff),
.list_text = RGBA(0xffffffff),
.list_text_hi = RGBA(0xffffffff),
.shade1 = RGBA(0xa0a0a000),
.grid = RGBA(0x303030ff),
.vertex_select = RGBA(0xff8500ff),
@@ -591,8 +576,6 @@ const bTheme U_theme_default = {
.header = RGBA(0x303030b3),
.header_text = RGBA(0xeeeeeeff),
.header_text_hi = RGBA(0xffffffff),
.tab_back = RGBA(0x18181800),
.button = RGBA(0x30303000),
.grid = RGBA(0x303030ff),
.wire_edit = RGBA(0xc0c0c0ff),
.vertex_select = RGBA(0xff8500ff),
@@ -627,8 +610,6 @@ const bTheme U_theme_default = {
.header = RGBA(0x303030b3),
.header_text = RGBA(0xeeeeeeff),
.header_text_hi = RGBA(0xffffffff),
.tab_back = RGBA(0x18181800),
.button = RGBA(0x30303000),
.shade2 = RGBA(0x4d4d4de6),
.hilite = RGBA(0x71a8ffff),
.grid = RGBA(0x1d1d1dff),
@@ -672,12 +653,6 @@ const bTheme U_theme_default = {
.header = RGBA(0x1d1d1db3),
.header_text = RGBA(0xeeeeeeff),
.header_text_hi = RGBA(0xffffffff),
.tab_back = RGBA(0x18181800),
.button = RGBA(0x30303000),
.list = RGBA(0x303030ff),
.list_title = RGBA(0xffffffff),
.list_text = RGBA(0xb8b8b8ff),
.list_text_hi = RGBA(0xffaf23ff),
.shade2 = RGBA(0x7f7f7f64),
.grid = RGBA(0x28282800),
.wire = RGBA(0x1a1a1aff),
@@ -724,8 +699,6 @@ const bTheme U_theme_default = {
.header = RGBA(0x303030b3),
.header_text = RGBA(0xeeeeeeff),
.header_text_hi = RGBA(0xffffffff),
.tab_back = RGBA(0x30303000),
.button = RGBA(0x303030ff),
.vertex_size = 3,
.outline_width = 1,
.facedot_size = 4,
@@ -756,12 +729,6 @@ const bTheme U_theme_default = {
.header = RGBA(0x303030b3),
.header_text = RGBA(0xeeeeeeff),
.header_text_hi = RGBA(0xffffffff),
.tab_back = RGBA(0x18181800),
.button = RGBA(0x30303000),
.list = RGBA(0x303030ff),
.list_title = RGBA(0xffffff00),
.list_text = RGBA(0xb8b8b8ff),
.list_text_hi = RGBA(0xffaf23ff),
.grid = RGBA(0x181818ff),
.time_scrub_background = RGBA(0x181818ff),
.vertex_size = 3,
@@ -814,12 +781,6 @@ const bTheme U_theme_default = {
.header = RGBA(0x303030b3),
.header_text = RGBA(0xeeeeeeff),
.header_text_hi = RGBA(0xffffffff),
.tab_back = RGBA(0x18181800),
.button = RGBA(0x30303000),
.list = RGBA(0x303030ff),
.list_title = RGBA(0xc3c3c3ff),
.list_text = RGBA(0xb8b8b8ff),
.list_text_hi = RGBA(0xffaf23ff),
.hilite = RGBA(0x80808080),
.active = RGBA(0x3b5689ff),
.vertex_size = 3,
@@ -832,10 +793,6 @@ const bTheme U_theme_default = {
.edited_object = RGBA(0x00806266),
.row_alternate = RGBA(0xffffff04),
},
.asset_shelf = {
.header_back = RGBA(0x1d1d1dff),
.back = RGBA(0x303030ff),
},
.tarm = {
{
.solid = RGBA(0x9a0000ff),

View File

@@ -383,6 +383,32 @@
</wcol_tab>
</ThemeUserInterface>
</user_interface>
<regions>
<ThemeRegions>
<asset_shelf>
<ThemeRegionsAssetShelf
back="#999999ff"
header_back="#adadadff"
>
</ThemeRegionsAssetShelf>
</asset_shelf>
<channels>
<ThemeRegionsChannels
back="#adadad"
text="#050505"
text_selected="#ffffff"
>
</ThemeRegionsChannels>
</channels>
<sidebars>
<ThemeRegionsSidebars
back="#b3b3b300"
tab_back="#b3b3b300"
>
</ThemeRegionsSidebars>
</sidebars>
</ThemeRegions>
</regions>
<common>
<ThemeCommon>
<anim>
@@ -500,13 +526,6 @@
outline_width="1"
object_origin_size="6"
>
<space_region>
<ThemeSpaceRegionGeneric
button="#b3b3b300"
tab_back="#b3b3b300"
>
</ThemeSpaceRegionGeneric>
</space_region>
<space>
<ThemeSpaceGradient
title="#000000"
@@ -550,22 +569,6 @@
>
</ThemeSpaceGeneric>
</space>
<space_list>
<ThemeSpaceListGeneric
list="#adadad"
list_title="#000000"
list_text="#050505"
list_text_hi="#ffffff"
>
</ThemeSpaceListGeneric>
</space_list>
<space_region>
<ThemeSpaceRegionGeneric
button="#b3b3b300"
tab_back="#b3b3b300"
>
</ThemeSpaceRegionGeneric>
</space_region>
</ThemeGraphEditor>
</graph_editor>
<file_browser>
@@ -585,13 +588,6 @@
>
</ThemeSpaceGeneric>
</space>
<space_region>
<ThemeSpaceRegionGeneric
button="#b3b3b300"
tab_back="#b3b3b300"
>
</ThemeSpaceRegionGeneric>
</space_region>
</ThemeFileBrowser>
</file_browser>
<nla_editor>
@@ -626,22 +622,6 @@
>
</ThemeSpaceGeneric>
</space>
<space_list>
<ThemeSpaceListGeneric
list="#adadad"
list_title="#000000"
list_text="#000000"
list_text_hi="#ffffff"
>
</ThemeSpaceListGeneric>
</space_list>
<space_region>
<ThemeSpaceRegionGeneric
button="#b3b3b300"
tab_back="#b3b3b300"
>
</ThemeSpaceRegionGeneric>
</space_region>
</ThemeNLAEditor>
</nla_editor>
<dopesheet_editor>
@@ -669,22 +649,6 @@
>
</ThemeSpaceGeneric>
</space>
<space_list>
<ThemeSpaceListGeneric
list="#adadad"
list_title="#000000"
list_text="#000000"
list_text_hi="#ffffff"
>
</ThemeSpaceListGeneric>
</space_list>
<space_region>
<ThemeSpaceRegionGeneric
button="#b3b3b300"
tab_back="#b3b3b300"
>
</ThemeSpaceRegionGeneric>
</space_region>
</ThemeDopeSheet>
</dopesheet_editor>
<image_editor>
@@ -727,13 +691,6 @@
>
</ThemeSpaceGeneric>
</space>
<space_region>
<ThemeSpaceRegionGeneric
button="#b3b3b300"
tab_back="#b3b3b300"
>
</ThemeSpaceRegionGeneric>
</space_region>
</ThemeImageEditor>
</image_editor>
<sequence_editor>
@@ -772,22 +729,6 @@
>
</ThemeSpaceGeneric>
</space>
<space_list>
<ThemeSpaceListGeneric
list="#b3b3b3"
list_title="#747474"
list_text="#333333"
list_text_hi="#747474"
>
</ThemeSpaceListGeneric>
</space_list>
<space_region>
<ThemeSpaceRegionGeneric
button="#b3b3b300"
tab_back="#b3b3b300"
>
</ThemeSpaceRegionGeneric>
</space_region>
</ThemeSequenceEditor>
</sequence_editor>
<properties>
@@ -807,13 +748,6 @@
>
</ThemeSpaceGeneric>
</space>
<space_region>
<ThemeSpaceRegionGeneric
button="#303030ff"
tab_back="#a6a6a6ff"
>
</ThemeSpaceRegionGeneric>
</space_region>
</ThemeProperties>
</properties>
<text_editor>
@@ -843,13 +777,6 @@
>
</ThemeSpaceGeneric>
</space>
<space_region>
<ThemeSpaceRegionGeneric
button="#b3b3b300"
tab_back="#b3b3b300"
>
</ThemeSpaceRegionGeneric>
</space_region>
</ThemeTextEditor>
</text_editor>
<node_editor>
@@ -897,13 +824,6 @@
>
</ThemeSpaceGeneric>
</space>
<space_region>
<ThemeSpaceRegionGeneric
button="#b3b3b300"
tab_back="#b3b3b300"
>
</ThemeSpaceRegionGeneric>
</space_region>
</ThemeNodeEditor>
</node_editor>
<outliner>
@@ -972,13 +892,6 @@
>
</ThemeSpaceGeneric>
</space>
<space_region>
<ThemeSpaceRegionGeneric
button="#b3b3b300"
tab_back="#b3b3b300"
>
</ThemeSpaceRegionGeneric>
</space_region>
</ThemePreferences>
</preferences>
<console>
@@ -1034,22 +947,6 @@
>
</ThemeSpaceGeneric>
</space>
<space_list>
<ThemeSpaceListGeneric
list="#666666"
list_title="#000000"
list_text="#000000"
list_text_hi="#ffffff"
>
</ThemeSpaceListGeneric>
</space_list>
<space_region>
<ThemeSpaceRegionGeneric
button="#b3b3b300"
tab_back="#b3b3b300"
>
</ThemeSpaceRegionGeneric>
</space_region>
</ThemeClipEditor>
</clip_editor>
<topbar>
@@ -1100,22 +997,8 @@
>
</ThemeSpaceGeneric>
</space>
<space_region>
<ThemeSpaceRegionGeneric
button="#b3b3b300"
tab_back="#b3b3b300"
>
</ThemeSpaceRegionGeneric>
</space_region>
</ThemeSpreadsheet>
</spreadsheet>
<asset_shelf>
<ThemeAssetShelf
header_back="#adadadff"
back="#999999ff"
>
</ThemeAssetShelf>
</asset_shelf>
<bone_color_sets>
<ThemeBoneColorSet
normal="#9a0000"

View File

@@ -963,7 +963,6 @@ class USERPREF_MT_interface_theme_presets(Menu):
# Prevent untrusted XML files "escaping" from these types.
preset_xml_secure_types = {
"Theme",
"ThemeAssetShelf",
"ThemeBoneColorSet",
"ThemeClipEditor",
"ThemeCollectionColor",
@@ -983,11 +982,14 @@ class USERPREF_MT_interface_theme_presets(Menu):
"ThemeOutliner",
"ThemePreferences",
"ThemeProperties",
"ThemeRegions",
"ThemeRegionsAssetShelf",
"ThemeRegionsChannels",
"ThemeRegionsSidebars",
"ThemeSequenceEditor",
"ThemeSpaceGeneric",
"ThemeSpaceGradient",
"ThemeSpaceListGeneric",
"ThemeSpaceRegionGeneric",
"ThemeSpreadsheet",
"ThemeStatusBar",
"ThemeStripColor",

View File

@@ -27,7 +27,7 @@
/* Blender file format version. */
#define BLENDER_FILE_VERSION BLENDER_VERSION
#define BLENDER_FILE_SUBVERSION 77
#define BLENDER_FILE_SUBVERSION 78
/* 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

@@ -93,13 +93,6 @@ static void do_versions_theme(const UserDef *userdef, bTheme *btheme)
btheme->space_node.grid_levels = U_theme_default.space_node.grid_levels;
}
if (!USER_VERSION_ATLEAST(302, 9)) {
FROM_DEFAULT_V4_UCHAR(space_sequencer.list);
FROM_DEFAULT_V4_UCHAR(space_sequencer.list_title);
FROM_DEFAULT_V4_UCHAR(space_sequencer.list_text);
FROM_DEFAULT_V4_UCHAR(space_sequencer.list_text_hi);
}
if (!USER_VERSION_ATLEAST(306, 3)) {
FROM_DEFAULT_V4_UCHAR(space_view3d.face_retopology);
}
@@ -113,11 +106,6 @@ static void do_versions_theme(const UserDef *userdef, bTheme *btheme)
FROM_DEFAULT_V4_UCHAR(space_node.node_zone_repeat);
}
if (!USER_VERSION_ATLEAST(400, 14)) {
FROM_DEFAULT_V4_UCHAR(asset_shelf.back);
FROM_DEFAULT_V4_UCHAR(asset_shelf.header_back);
}
if (!USER_VERSION_ATLEAST(400, 24)) {
FROM_DEFAULT_V4_UCHAR(tui.wcol_list_item.inner_sel);
FROM_DEFAULT_V4_UCHAR(space_sequencer.transition);
@@ -150,11 +138,6 @@ static void do_versions_theme(const UserDef *userdef, bTheme *btheme)
&userdef->themes, btheme, "Theme", '.', offsetof(bTheme, name), sizeof(btheme->name));
}
if (!USER_VERSION_ATLEAST(402, 21)) {
FROM_DEFAULT_V4_UCHAR(asset_shelf.back);
FROM_DEFAULT_V4_UCHAR(asset_shelf.header_back);
}
if (!USER_VERSION_ATLEAST(402, 47)) {
FROM_DEFAULT_V4_UCHAR(space_view3d.time_gp_keyframe);
}
@@ -219,27 +202,6 @@ static void do_versions_theme(const UserDef *userdef, bTheme *btheme)
FROM_DEFAULT_V4_UCHAR(space_node.node_zone_closure);
}
if (!USER_VERSION_ATLEAST(500, 5)) {
FROM_DEFAULT_V4_UCHAR(space_properties.tab_back);
FROM_DEFAULT_V4_UCHAR(space_view3d.tab_back);
FROM_DEFAULT_V4_UCHAR(space_file.tab_back);
FROM_DEFAULT_V4_UCHAR(space_graph.tab_back);
FROM_DEFAULT_V4_UCHAR(space_info.tab_back);
FROM_DEFAULT_V4_UCHAR(space_action.tab_back);
FROM_DEFAULT_V4_UCHAR(space_nla.tab_back);
FROM_DEFAULT_V4_UCHAR(space_sequencer.tab_back);
FROM_DEFAULT_V4_UCHAR(space_image.tab_back);
FROM_DEFAULT_V4_UCHAR(space_text.tab_back);
FROM_DEFAULT_V4_UCHAR(space_outliner.tab_back);
FROM_DEFAULT_V4_UCHAR(space_node.tab_back);
FROM_DEFAULT_V4_UCHAR(space_preferences.tab_back);
FROM_DEFAULT_V4_UCHAR(space_console.tab_back);
FROM_DEFAULT_V4_UCHAR(space_clip.tab_back);
FROM_DEFAULT_V4_UCHAR(space_topbar.tab_back);
FROM_DEFAULT_V4_UCHAR(space_statusbar.tab_back);
FROM_DEFAULT_V4_UCHAR(space_spreadsheet.tab_back);
}
if (!USER_VERSION_ATLEAST(500, 6)) {
/* Match the selected/unselected outline colors. */
copy_v4_v4_uchar(btheme->tui.wcol_box.outline_sel, U_theme_default.tui.wcol_box.outline);
@@ -297,15 +259,6 @@ static void do_versions_theme(const UserDef *userdef, bTheme *btheme)
FROM_DEFAULT_V4_UCHAR(space_node.nodeclass_vector);
}
if (!USER_VERSION_ATLEAST(500, 16)) {
FROM_DEFAULT_V4_UCHAR(asset_shelf.header_back);
FROM_DEFAULT_V4_UCHAR(asset_shelf.back);
}
if (!USER_VERSION_ATLEAST(500, 18)) {
FROM_DEFAULT_V4_UCHAR(space_preferences.button);
}
if (!USER_VERSION_ATLEAST(500, 19)) {
btheme->tui.menu_shadow_fac = U_theme_default.tui.menu_shadow_fac;
btheme->tui.menu_shadow_width = U_theme_default.tui.menu_shadow_width;
@@ -316,11 +269,6 @@ static void do_versions_theme(const UserDef *userdef, bTheme *btheme)
FROM_DEFAULT_V4_UCHAR(tui.panel_text);
}
if (!USER_VERSION_ATLEAST(500, 25)) {
FROM_DEFAULT_V4_UCHAR(space_properties.tab_back);
FROM_DEFAULT_V4_UCHAR(space_properties.button);
}
if (!USER_VERSION_ATLEAST(500, 29)) {
FROM_DEFAULT_V4_UCHAR(space_node.console_output);
}
@@ -403,6 +351,16 @@ static void do_versions_theme(const UserDef *userdef, bTheme *btheme)
FROM_DEFAULT_V4_UCHAR(tui.panel_active);
}
if (!USER_VERSION_ATLEAST(500, 78)) {
FROM_DEFAULT_V4_UCHAR(regions.channels.back);
FROM_DEFAULT_V4_UCHAR(regions.channels.text);
FROM_DEFAULT_V4_UCHAR(regions.channels.text_selected);
FROM_DEFAULT_V4_UCHAR(regions.asset_shelf.back);
FROM_DEFAULT_V4_UCHAR(regions.asset_shelf.header_back);
FROM_DEFAULT_V4_UCHAR(regions.sidebars.back);
FROM_DEFAULT_V4_UCHAR(regions.sidebars.tab_back);
}
/**
* Always bump subversion in BKE_blender_version.h when adding versioning
* code here, and wrap it inside a USER_VERSION_ATLEAST check.

View File

@@ -78,8 +78,6 @@ enum ThemeColorID {
TH_PANEL_OUTLINE,
TH_PANEL_ACTIVE,
TH_BUTBACK,
TH_SHADE1,
TH_SHADE2,
TH_HILITE,

View File

@@ -175,22 +175,22 @@ const uchar *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colorid)
cp = ts->back;
}
else if (g_theme_state.regionid == RGN_TYPE_CHANNELS) {
cp = ts->list;
cp = btheme->regions.channels.back;
}
else if (ELEM(g_theme_state.regionid, RGN_TYPE_HEADER, RGN_TYPE_FOOTER)) {
cp = ts->header;
}
else if (g_theme_state.regionid == RGN_TYPE_NAV_BAR) {
cp = ts->tab_back;
cp = btheme->regions.sidebars.tab_back;
}
else if (g_theme_state.regionid == RGN_TYPE_ASSET_SHELF) {
cp = btheme->asset_shelf.back;
cp = btheme->regions.asset_shelf.back;
}
else if (g_theme_state.regionid == RGN_TYPE_ASSET_SHELF_HEADER) {
cp = btheme->asset_shelf.header_back;
cp = btheme->regions.asset_shelf.header_back;
}
else {
cp = ts->button;
cp = btheme->regions.sidebars.back;
}
copy_v4_v4_uchar(back, cp);
@@ -214,7 +214,7 @@ const uchar *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colorid)
cp = btheme->tui.panel_text;
}
else if (g_theme_state.regionid == RGN_TYPE_CHANNELS) {
cp = ts->list_text;
cp = btheme->regions.channels.text;
}
else if (ELEM(g_theme_state.regionid,
RGN_TYPE_HEADER,
@@ -229,7 +229,7 @@ const uchar *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colorid)
break;
case TH_TEXT_HI:
if (g_theme_state.regionid == RGN_TYPE_CHANNELS) {
cp = ts->list_text_hi;
cp = btheme->regions.channels.text_selected;
}
else if (ELEM(g_theme_state.regionid,
RGN_TYPE_HEADER,
@@ -243,14 +243,11 @@ const uchar *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colorid)
}
break;
case TH_TITLE:
if (ELEM(g_theme_state.regionid, RGN_TYPE_UI, RGN_TYPE_TOOLS) ||
if (ELEM(g_theme_state.regionid, RGN_TYPE_UI, RGN_TYPE_TOOLS, RGN_TYPE_CHANNELS) ||
ELEM(g_theme_state.spacetype, SPACE_PROPERTIES, SPACE_USERPREF))
{
cp = btheme->tui.panel_title;
}
else if (g_theme_state.regionid == RGN_TYPE_CHANNELS) {
cp = ts->list_title;
}
else if (ELEM(g_theme_state.regionid,
RGN_TYPE_HEADER,
RGN_TYPE_FOOTER,
@@ -290,10 +287,6 @@ const uchar *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colorid)
cp = btheme->tui.panel_active;
break;
case TH_BUTBACK:
cp = ts->button;
break;
case TH_TAB_TEXT:
cp = btheme->tui.wcol_tab.text;
break;
@@ -314,7 +307,7 @@ const uchar *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colorid)
break;
case TH_TAB_BACK:
/* Tab background is set per editor. */
cp = ts->tab_back;
cp = btheme->regions.sidebars.tab_back;
break;
case TH_SHADE1:

View File

@@ -106,6 +106,29 @@ typedef struct uiStyle {
char _pad0[2];
} uiStyle;
typedef struct ThemeRegionsAssetShelf {
unsigned char back[4];
unsigned char header_back[4];
} ThemeRegionsAssetShelf;
typedef struct ThemeRegionsChannels {
unsigned char back[4];
unsigned char text[4];
unsigned char text_selected[4];
char _pad0[4];
} ThemeRegionsChannels;
typedef struct ThemeRegionsSidebars {
unsigned char back[4];
unsigned char tab_back[4];
} ThemeRegionsSidebars;
typedef struct ThemeRegions {
ThemeRegionsAssetShelf asset_shelf;
ThemeRegionsChannels channels;
ThemeRegionsSidebars sidebars;
} ThemeRegions;
typedef struct ThemeCommonAnim {
unsigned char playhead[4];
unsigned char preview_range[4];
@@ -251,11 +274,6 @@ typedef struct ThemeUI {
} ThemeUI;
typedef struct ThemeAssetShelf {
unsigned char header_back[4];
unsigned char back[4];
} ThemeAssetShelf;
/* try to put them all in one, if needed a special struct can be created as well
* for example later on, when we introduce wire colors for ob types or so...
*/
@@ -279,24 +297,11 @@ typedef struct ThemeSpace {
unsigned char header_title[4];
unsigned char header_text[4];
unsigned char header_text_hi[4];
/* region tabs */
unsigned char tab_back[4];
char _pad2[4];
/* button/tool regions */
/** Region background. */
unsigned char button[4];
unsigned char _pad3[4];
/* List-view regions. */
/** Region background. */
unsigned char list[4];
/** Panel title. */
unsigned char list_title[4];
unsigned char list_text[4];
unsigned char list_text_hi[4];
unsigned char shade1[4];
unsigned char shade2[4];
@@ -512,6 +517,7 @@ typedef struct bTheme {
ThemeUI tui;
ThemeRegions regions;
ThemeCommon common;
/**
@@ -537,8 +543,6 @@ typedef struct bTheme {
ThemeSpace space_statusbar;
ThemeSpace space_spreadsheet;
ThemeAssetShelf asset_shelf;
/* 20 sets of bone colors for this theme */
ThemeWireColor tarm[20];
// ThemeWireColor tobj[20];

View File

@@ -1038,16 +1038,6 @@ static PointerRNA rna_Theme_space_gradient_get(PointerRNA *ptr)
return RNA_pointer_create_with_parent(*ptr, &RNA_ThemeSpaceGradient, ptr->data);
}
static PointerRNA rna_Theme_space_region_generic_get(PointerRNA *ptr)
{
return RNA_pointer_create_with_parent(*ptr, &RNA_ThemeSpaceRegionGeneric, ptr->data);
}
static PointerRNA rna_Theme_space_list_generic_get(PointerRNA *ptr)
{
return RNA_pointer_create_with_parent(*ptr, &RNA_ThemeSpaceListGeneric, ptr->data);
}
static const EnumPropertyItem *rna_userdef_audio_device_itemf(bContext * /*C*/,
PointerRNA * /*ptr*/,
PropertyRNA * /*prop*/,
@@ -2160,6 +2150,101 @@ static void rna_def_userdef_theme_ui(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_userdef_theme_update_icons");
}
/* Asset Shelf region */
static void rna_def_userdef_theme_regions_asset_shelf(BlenderRNA *brna)
{
StructRNA *srna;
PropertyRNA *prop;
srna = RNA_def_struct(brna, "ThemeRegionsAssetShelf", nullptr);
RNA_def_struct_ui_text(srna, "Asset Shelf Region Theme", "Theme settings for asset shelves");
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, "header_back", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 4);
RNA_def_property_ui_text(prop, "Header Background", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
}
/* Channels region */
static void rna_def_userdef_theme_regions_channels(BlenderRNA *brna)
{
StructRNA *srna;
PropertyRNA *prop;
srna = RNA_def_struct(brna, "ThemeRegionsChannels", nullptr);
RNA_def_struct_ui_text(srna, "Source List Region Settings", "");
prop = RNA_def_property(srna, "back", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 3);
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, "Text", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
prop = RNA_def_property(srna, "text_selected", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Selected Text", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
}
/* Sidebar & Toolbar region */
static void rna_def_userdef_theme_regions_sidebars(BlenderRNA *brna)
{
StructRNA *srna;
PropertyRNA *prop;
srna = RNA_def_struct(brna, "ThemeRegionsSidebars", nullptr);
RNA_def_struct_ui_text(srna, "Sidebar & Toolbar 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, "tab_back", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 4);
RNA_def_property_ui_text(prop, "Navigation/Tabs Background", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
}
static void rna_def_userdef_theme_regions(BlenderRNA *brna)
{
StructRNA *srna;
PropertyRNA *prop;
rna_def_userdef_theme_regions_channels(brna);
rna_def_userdef_theme_regions_asset_shelf(brna);
rna_def_userdef_theme_regions_sidebars(brna);
srna = RNA_def_struct(brna, "ThemeRegions", nullptr);
RNA_def_struct_ui_text(srna,
"Shared Region Properties",
"Theme settings for regions that are common among editors");
prop = RNA_def_property(srna, "asset_shelf", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_NEVER_NULL);
RNA_def_property_ui_text(prop, "Asset Shelf", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
prop = RNA_def_property(srna, "channels", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_NEVER_NULL);
RNA_def_property_ui_text(prop, "Channels", "");
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", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
}
static void rna_def_userdef_theme_common_anim(BlenderRNA *brna)
{
StructRNA *srna;
@@ -2476,59 +2561,6 @@ static void rna_def_userdef_theme_space_generic(BlenderRNA *brna)
rna_def_userdef_theme_space_common(srna);
}
/* sidebar / toolbar region */
static void rna_def_userdef_theme_space_region_generic(BlenderRNA *brna)
{
StructRNA *srna;
PropertyRNA *prop;
srna = RNA_def_struct(brna, "ThemeSpaceRegionGeneric", nullptr);
RNA_def_struct_sdna(srna, "ThemeSpace");
RNA_def_struct_ui_text(srna, "Theme Space Region Settings", "");
prop = RNA_def_property(srna, "button", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 4);
RNA_def_property_ui_text(prop, "Region Background", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
/* tabs */
prop = RNA_def_property(srna, "tab_back", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 4);
RNA_def_property_ui_text(prop, "Navigation/Tabs Background", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
}
/* list / channels */
static void rna_def_userdef_theme_space_list_generic(BlenderRNA *brna)
{
StructRNA *srna;
PropertyRNA *prop;
srna = RNA_def_struct(brna, "ThemeSpaceListGeneric", nullptr);
RNA_def_struct_sdna(srna, "ThemeSpace");
RNA_def_struct_ui_text(srna, "Theme Space List Settings", "");
prop = RNA_def_property(srna, "list", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Source List", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
prop = RNA_def_property(srna, "list_title", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Source List Title", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
prop = RNA_def_property(srna, "list_text", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Source List Text", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
prop = RNA_def_property(srna, "list_text_hi", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Source List Text Highlight", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
}
static void rna_def_userdef_theme_spaces_main(StructRNA *srna)
{
PropertyRNA *prop;
@@ -2551,49 +2583,6 @@ static void rna_def_userdef_theme_spaces_gradient(StructRNA *srna)
RNA_def_property_ui_text(prop, "Theme Space", "Settings for space");
}
static void rna_def_userdef_theme_spaces_region_main(StructRNA *srna)
{
PropertyRNA *prop;
prop = RNA_def_property(srna, "space_region", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_NEVER_NULL);
RNA_def_property_struct_type(prop, "ThemeSpaceRegionGeneric");
RNA_def_property_pointer_funcs(
prop, "rna_Theme_space_region_generic_get", nullptr, nullptr, nullptr);
RNA_def_property_ui_text(prop, "Toolbar/Sidebar", "Settings for space region");
}
static void rna_def_userdef_theme_spaces_list_main(StructRNA *srna)
{
PropertyRNA *prop;
prop = RNA_def_property(srna, "space_list", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_NEVER_NULL);
RNA_def_property_struct_type(prop, "ThemeSpaceListGeneric");
RNA_def_property_pointer_funcs(
prop, "rna_Theme_space_list_generic_get", nullptr, nullptr, nullptr);
RNA_def_property_ui_text(prop, "Theme Space List", "Settings for space list");
}
static void rna_def_userdef_theme_asset_shelf(BlenderRNA *brna)
{
StructRNA *srna;
PropertyRNA *prop;
srna = RNA_def_struct(brna, "ThemeAssetShelf", nullptr);
RNA_def_struct_ui_text(srna, "Theme Asset Shelf Color", "Theme settings for asset shelves");
prop = RNA_def_property(srna, "header_back", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 4);
RNA_def_property_ui_text(prop, "Header Background", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
prop = RNA_def_property(srna, "back", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 4);
RNA_def_property_ui_text(prop, "Main Region Background", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
}
static void rna_def_userdef_theme_spaces_vertex(StructRNA *srna,
const bool has_vertex_active,
const bool has_vertex_attributes)
@@ -2778,7 +2767,6 @@ static void rna_def_userdef_theme_space_view3d(BlenderRNA *brna)
RNA_def_struct_sdna(srna, "ThemeSpace");
RNA_def_struct_ui_text(srna, "Theme 3D Viewport", "Theme settings for the 3D viewport");
rna_def_userdef_theme_spaces_region_main(srna);
rna_def_userdef_theme_spaces_gradient(srna);
/* General Viewport options */
@@ -3040,8 +3028,6 @@ static void rna_def_userdef_theme_space_graph(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "Theme Graph Editor", "Theme settings for the graph editor");
rna_def_userdef_theme_spaces_main(srna);
rna_def_userdef_theme_spaces_list_main(srna);
rna_def_userdef_theme_spaces_region_main(srna);
prop = RNA_def_property(srna, "grid", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 3);
@@ -3074,7 +3060,6 @@ static void rna_def_userdef_theme_space_file(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "Theme File Browser", "Theme settings for the File Browser");
rna_def_userdef_theme_spaces_main(srna);
rna_def_userdef_theme_spaces_region_main(srna);
prop = RNA_def_property(srna, "selected_file", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_float_sdna(prop, nullptr, "hilite");
@@ -3148,7 +3133,6 @@ static void rna_def_userdef_theme_space_userpref(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "Theme Preferences", "Theme settings for the Blender Preferences");
rna_def_userdef_theme_spaces_main(srna);
rna_def_userdef_theme_spaces_region_main(srna);
}
static void rna_def_userdef_theme_space_console(BlenderRNA *brna)
@@ -3282,7 +3266,6 @@ static void rna_def_userdef_theme_space_text(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "Theme Text Editor", "Theme settings for the Text Editor");
rna_def_userdef_theme_spaces_main(srna);
rna_def_userdef_theme_spaces_region_main(srna);
prop = RNA_def_property(srna, "line_numbers", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_float_sdna(prop, nullptr, "line_numbers");
@@ -3378,7 +3361,6 @@ static void rna_def_userdef_theme_space_node(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "Theme Node Editor", "Theme settings for the Node Editor");
rna_def_userdef_theme_spaces_main(srna);
rna_def_userdef_theme_spaces_region_main(srna);
prop = RNA_def_property(srna, "grid", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 3);
@@ -3580,7 +3562,6 @@ static void rna_def_userdef_theme_space_buts(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
rna_def_userdef_theme_spaces_main(srna);
rna_def_userdef_theme_spaces_region_main(srna);
}
static void rna_def_userdef_theme_space_image(BlenderRNA *brna)
@@ -3595,7 +3576,6 @@ static void rna_def_userdef_theme_space_image(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "Theme Image Editor", "Theme settings for the Image Editor");
rna_def_userdef_theme_spaces_main(srna);
rna_def_userdef_theme_spaces_region_main(srna);
prop = RNA_def_property(srna, "grid", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 4);
@@ -3700,8 +3680,6 @@ static void rna_def_userdef_theme_space_seq(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "Theme Sequence Editor", "Theme settings for the Sequence Editor");
rna_def_userdef_theme_spaces_main(srna);
rna_def_userdef_theme_spaces_list_main(srna);
rna_def_userdef_theme_spaces_region_main(srna);
prop = RNA_def_property(srna, "grid", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 3);
@@ -3847,8 +3825,6 @@ static void rna_def_userdef_theme_space_action(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "Theme Dope Sheet", "Theme settings for the Dope Sheet");
rna_def_userdef_theme_spaces_main(srna);
rna_def_userdef_theme_spaces_list_main(srna);
rna_def_userdef_theme_spaces_region_main(srna);
prop = RNA_def_property(srna, "grid", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 3);
@@ -3924,8 +3900,6 @@ static void rna_def_userdef_theme_space_nla(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "Theme Nonlinear Animation", "Theme settings for the NLA Editor");
rna_def_userdef_theme_spaces_main(srna);
rna_def_userdef_theme_spaces_list_main(srna);
rna_def_userdef_theme_spaces_region_main(srna);
prop = RNA_def_property(srna, "grid", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 3);
@@ -4117,8 +4091,6 @@ static void rna_def_userdef_theme_space_clip(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "Theme Clip Editor", "Theme settings for the Movie Clip Editor");
rna_def_userdef_theme_spaces_main(srna);
rna_def_userdef_theme_spaces_list_main(srna);
rna_def_userdef_theme_spaces_region_main(srna);
prop = RNA_def_property(srna, "grid", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 4);
@@ -4252,7 +4224,6 @@ static void rna_def_userdef_theme_space_spreadsheet(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
rna_def_userdef_theme_spaces_main(srna);
rna_def_userdef_theme_spaces_region_main(srna);
}
static void rna_def_userdef_themes(BlenderRNA *brna)
@@ -4263,8 +4234,8 @@ static void rna_def_userdef_themes(BlenderRNA *brna)
static const EnumPropertyItem active_theme_area[] = {
{0, "USER_INTERFACE", ICON_WORKSPACE, "User Interface", ""},
{19, "STYLE", ICON_FONTPREVIEW, "Text Style", ""},
{26, "REGIONS", ICON_NONE, "Regions", ""},
{25, "COMMON", ICON_NONE, "Common", ""},
{24, "ASSET_SHELF", ICON_ASSET_MANAGER, "Asset Shelf", ""},
{1, "VIEW_3D", ICON_VIEW3D, "3D Viewport", ""},
{4, "DOPESHEET_EDITOR", ICON_ACTION, "Dope Sheet/Timeline", ""},
{16, "FILE_BROWSER", ICON_FILEBROWSER, "File/Asset Browser", ""},
@@ -4318,6 +4289,11 @@ static void rna_def_userdef_themes(BlenderRNA *brna)
RNA_def_property_struct_type(prop, "ThemeUserInterface");
RNA_def_property_ui_text(prop, "User Interface", "");
prop = RNA_def_property(srna, "regions", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_NEVER_NULL);
RNA_def_property_struct_type(prop, "ThemeRegions");
RNA_def_property_ui_text(prop, "Regions", "Theme properties for common editor regions");
prop = RNA_def_property(srna, "common", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_NEVER_NULL);
RNA_def_property_struct_type(prop, "ThemeCommon");
@@ -4433,11 +4409,6 @@ static void rna_def_userdef_themes(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Spreadsheet", "");
/* end space types */
prop = RNA_def_property(srna, "asset_shelf", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_NEVER_NULL);
RNA_def_property_struct_type(prop, "ThemeAssetShelf");
RNA_def_property_ui_text(prop, "Asset Shelf", "Settings for asset shelf");
prop = RNA_def_property(srna, "bone_color_sets", PROP_COLLECTION, PROP_NONE);
RNA_def_property_flag(prop, PROP_NEVER_NULL);
RNA_def_property_collection_sdna(prop, nullptr, "tarm", "");
@@ -4651,12 +4622,11 @@ static void rna_def_userdef_dothemes(BlenderRNA *brna)
rna_def_userdef_theme_ui_style(brna);
rna_def_userdef_theme_ui(brna);
rna_def_userdef_theme_regions(brna);
rna_def_userdef_theme_common(brna);
rna_def_userdef_theme_space_generic(brna);
rna_def_userdef_theme_space_gradient(brna);
rna_def_userdef_theme_space_list_generic(brna);
rna_def_userdef_theme_space_region_generic(brna);
rna_def_userdef_theme_space_view3d(brna);
rna_def_userdef_theme_space_graph(brna);
@@ -4676,7 +4646,6 @@ static void rna_def_userdef_dothemes(BlenderRNA *brna)
rna_def_userdef_theme_space_topbar(brna);
rna_def_userdef_theme_space_statusbar(brna);
rna_def_userdef_theme_space_spreadsheet(brna);
rna_def_userdef_theme_asset_shelf(brna);
rna_def_userdef_theme_colorset(brna);
rna_def_userdef_theme_collection_color(brna);
rna_def_userdef_theme_strip_color(brna);