diff --git a/release/datafiles/userdef/userdef_default_theme.c b/release/datafiles/userdef/userdef_default_theme.c
index cbe13eac6d9..f56ff3a4dd5 100644
--- a/release/datafiles/userdef/userdef_default_theme.c
+++ b/release/datafiles/userdef/userdef_default_theme.c
@@ -268,6 +268,9 @@ const bTheme U_theme_default = {
.icon_folder = RGBA(0xccad63ff),
.icon_autokey = RGBA(0xab3c48ff),
.panel_roundness = 0.4f,
+ .panel_header = RGBA(0x3d3d3dff),
+ .panel_back = RGBA(0x3d3d3dff),
+ .panel_sub_back = RGBA(0x0000001f),
},
.space_properties = {
.back = RGBA(0x30303000),
@@ -284,11 +287,6 @@ const bTheme U_theme_default = {
.button_text_hi = RGBA(0xffffffff),
.navigation_bar = RGBA(0x1d1d1dff),
.execution_buts = RGBA(0x1d1d1dff),
- .panelcolors = {
- .header = RGBA(0x3d3d3dff),
- .back = RGBA(0x3d3d3dff),
- .sub_back = RGBA(0x0000001f),
- },
.active = RGBA(0x4772b3ff),
.vertex_size = 3,
.outline_width = 1,
@@ -311,11 +309,6 @@ const bTheme U_theme_default = {
.button_text_hi = RGBA(0xffffffff),
.navigation_bar = RGBA(0x1d1d1dff),
.execution_buts = RGBA(0x303030ff),
- .panelcolors = {
- .header = RGBA(0x3d3d3dff),
- .back = RGBA(0x3d3d3dff),
- .sub_back = RGBA(0x0000001f),
- },
.asset_shelf = {
.header_back = RGBA(0x1d1d1dff),
.back = RGBA(0x303030ff),
@@ -411,11 +404,6 @@ const bTheme U_theme_default = {
.button_text_hi = RGBA(0xffffffff),
.navigation_bar = RGBA(0x303030ff),
.execution_buts = RGBA(0x303030ff),
- .panelcolors = {
- .header = RGBA(0x3d3d3dff),
- .back = RGBA(0x3d3d3dff),
- .sub_back = RGBA(0x0000001f),
- },
.hilite = RGBA(0x4772b3ff),
.vertex_size = 3,
.outline_width = 1,
@@ -441,11 +429,6 @@ const bTheme U_theme_default = {
.list_text_hi = RGBA(0xffaf23ff),
.navigation_bar = RGBA(0x1d1d1dff),
.execution_buts = RGBA(0x303030ff),
- .panelcolors = {
- .header = RGBA(0x3d3d3dff),
- .back = RGBA(0x3d3d3dff),
- .sub_back = RGBA(0x0000001f),
- },
.shade1 = RGBA(0x96969600),
.shade2 = RGBA(0x12121264),
.grid = RGBA(0x1a1a1aff),
@@ -491,11 +474,6 @@ const bTheme U_theme_default = {
.button_text_hi = RGBA(0xffffffff),
.navigation_bar = RGBA(0x1d1d1dff),
.execution_buts = RGBA(0x303030ff),
- .panelcolors = {
- .header = RGBA(0x3d3d3dff),
- .back = RGBA(0x3d3d3dff),
- .sub_back = RGBA(0x0000001f),
- },
.vertex_size = 3,
.outline_width = 1,
.facedot_size = 4,
@@ -530,11 +508,6 @@ const bTheme U_theme_default = {
.list_text_hi = RGBA(0xffaf23ff),
.navigation_bar = RGBA(0x1d1d1dff),
.execution_buts = RGBA(0x303030ff),
- .panelcolors = {
- .header = RGBA(0x3d3d3dff),
- .back = RGBA(0x3d3d3dff),
- .sub_back = RGBA(0x0000001f),
- },
.shade1 = RGBA(0xc0c0c000),
.shade2 = RGBA(0x1d1d1d99),
.hilite = RGBA(0x60c04044),
@@ -592,11 +565,6 @@ const bTheme U_theme_default = {
.list_text_hi = RGBA(0xffaf23ff),
.navigation_bar = RGBA(0x1d1d1dff),
.execution_buts = RGBA(0x303030ff),
- .panelcolors = {
- .header = RGBA(0x3d3d3dff),
- .back = RGBA(0x3d3d3dff),
- .sub_back = RGBA(0x0000001f),
- },
.shade1 = RGBA(0x96969600),
.grid = RGBA(0x2a2a2aff),
.strip = RGBA(0x0d0d0d80),
@@ -645,11 +613,6 @@ const bTheme U_theme_default = {
.list_text_hi = RGBA(0xffffffff),
.navigation_bar = RGBA(0x1d1d1dff),
.execution_buts = RGBA(0x303030ff),
- .panelcolors = {
- .header = RGBA(0x3d3d3dff),
- .back = RGBA(0x3d3d3dff),
- .sub_back = RGBA(0x0000001f),
- },
.shade1 = RGBA(0xa0a0a000),
.grid = RGBA(0x303030ff),
.vertex_select = RGBA(0xff8500ff),
@@ -713,11 +676,6 @@ const bTheme U_theme_default = {
.button_text_hi = RGBA(0xffffffff),
.navigation_bar = RGBA(0x1d1d1dff),
.execution_buts = RGBA(0x303030ff),
- .panelcolors = {
- .header = RGBA(0x3d3d3dff),
- .back = RGBA(0x3d3d3dff),
- .sub_back = RGBA(0x0000001f),
- },
.asset_shelf = {
.header_back = RGBA(0x1d1d1dff),
.back = RGBA(0x303030ff),
@@ -771,11 +729,6 @@ const bTheme U_theme_default = {
.button_text_hi = RGBA(0xffffffff),
.navigation_bar = RGBA(0x1d1d1dff),
.execution_buts = RGBA(0x303030ff),
- .panelcolors = {
- .header = RGBA(0x3d3d3dff),
- .back = RGBA(0x3d3d3dff),
- .sub_back = RGBA(0x0000001f),
- },
.shade2 = RGBA(0x4d4d4de6),
.hilite = RGBA(0x71a8ffff),
.grid = RGBA(0x1d1d1dff),
@@ -807,11 +760,6 @@ const bTheme U_theme_default = {
.button_text_hi = RGBA(0xffffffff),
.navigation_bar = RGBA(0x1d1d1dff),
.execution_buts = RGBA(0x303030ff),
- .panelcolors = {
- .header = RGBA(0x3d3d3dff),
- .back = RGBA(0x3d3d3dff),
- .sub_back = RGBA(0x0000001f),
- },
.active = RGBA(0x334d80ff),
.vertex_size = 3,
.outline_width = 1,
@@ -842,11 +790,6 @@ const bTheme U_theme_default = {
.list_text_hi = RGBA(0xffaf23ff),
.navigation_bar = RGBA(0x1d1d1dff),
.execution_buts = RGBA(0x303030ff),
- .panelcolors = {
- .header = RGBA(0x3d3d3dff),
- .back = RGBA(0x3d3d3dff),
- .sub_back = RGBA(0x0000001f),
- },
.shade2 = RGBA(0x7f7f7f64),
.grid = RGBA(0x28282800),
.wire = RGBA(0x1a1a1aff),
@@ -902,11 +845,6 @@ const bTheme U_theme_default = {
.button_text_hi = RGBA(0xffffffff),
.navigation_bar = RGBA(0x303030ff),
.execution_buts = RGBA(0x303030ff),
- .panelcolors = {
- .header = RGBA(0x3d3d3dff),
- .back = RGBA(0x3d3d3dff),
- .sub_back = RGBA(0x0000001f),
- },
.vertex_size = 3,
.outline_width = 1,
.facedot_size = 4,
@@ -926,11 +864,6 @@ const bTheme U_theme_default = {
.button_text_hi = RGBA(0xffffffff),
.navigation_bar = RGBA(0x1d1d1dff),
.execution_buts = RGBA(0x303030ff),
- .panelcolors = {
- .header = RGBA(0x3d3d3dff),
- .back = RGBA(0x3d3d3dff),
- .sub_back = RGBA(0x0000001f),
- },
.console_output = RGBA(0x71a8ffff),
.console_input = RGBA(0xf2f2f2ff),
.console_info = RGBA(0x95d600ff),
@@ -960,11 +893,6 @@ const bTheme U_theme_default = {
.list_text_hi = RGBA(0xffaf23ff),
.navigation_bar = RGBA(0x1d1d1dff),
.execution_buts = RGBA(0x303030ff),
- .panelcolors = {
- .header = RGBA(0x3d3d3dff),
- .back = RGBA(0x3d3d3dff),
- .sub_back = RGBA(0x0000001f),
- },
.grid = RGBA(0x181818ff),
.strip = RGBA(0xffffff80),
.strip_select = RGBA(0xff8c00ff),
@@ -1011,11 +939,6 @@ const bTheme U_theme_default = {
.button_text_hi = RGBA(0xffffffff),
.navigation_bar = RGBA(0x1d1d1dff),
.execution_buts = RGBA(0x303030ff),
- .panelcolors = {
- .header = RGBA(0x3d3d3dff),
- .back = RGBA(0x3d3d3dff),
- .sub_back = RGBA(0x0000001f),
- },
.vertex_size = 3,
.outline_width = 1,
.facedot_size = 4,
@@ -1035,11 +958,6 @@ const bTheme U_theme_default = {
.button_text_hi = RGBA(0xffffffff),
.navigation_bar = RGBA(0x1d1d1dff),
.execution_buts = RGBA(0x303030ff),
- .panelcolors = {
- .header = RGBA(0x3d3d3dff),
- .back = RGBA(0x3d3d3dff),
- .sub_back = RGBA(0x0000001f),
- },
.vertex_size = 3,
.outline_width = 1,
.facedot_size = 4,
@@ -1064,11 +982,6 @@ const bTheme U_theme_default = {
.list_text_hi = RGBA(0xffaf23ff),
.navigation_bar = RGBA(0x1d1d1dff),
.execution_buts = RGBA(0x303030ff),
- .panelcolors = {
- .header = RGBA(0x3d3d3dff),
- .back = RGBA(0x3d3d3dff),
- .sub_back = RGBA(0x0000001f),
- },
.hilite = RGBA(0x80808080),
.active = RGBA(0x3b5689ff),
.vertex_size = 3,
diff --git a/scripts/presets/interface_theme/Blender_Light.xml b/scripts/presets/interface_theme/Blender_Light.xml
index 43e6aa40b38..059fe1dd278 100644
--- a/scripts/presets/interface_theme/Blender_Light.xml
+++ b/scripts/presets/interface_theme/Blender_Light.xml
@@ -12,6 +12,9 @@
editor_outline_active="#ccccccff"
widget_text_cursor="#3399e6"
panel_roundness="0.4"
+ panel_header="#ccccccff"
+ panel_back="#ccccccff"
+ panel_sub_back="#0000001f"
transparent_checker_primary="#333333"
transparent_checker_secondary="#262626"
transparent_checker_size="8"
@@ -480,14 +483,6 @@
>
-
-
-
-
@@ -551,14 +546,6 @@
execution_buts="#00000000"
tab_back="#999999ff"
>
-
-
-
-
@@ -594,14 +581,6 @@
execution_buts="#999999e6"
tab_back="#999999ff"
>
-
-
-
-
@@ -650,14 +629,6 @@
execution_buts="#00000000"
tab_back="#404040ff"
>
-
-
-
-
@@ -725,14 +696,6 @@
execution_buts="#00000000"
tab_back="#404040ff"
>
-
-
-
-
@@ -809,14 +772,6 @@
execution_buts="#00000000"
tab_back="#656565ff"
>
-
-
-
-
@@ -885,14 +840,6 @@
execution_buts="#00000000"
tab_back="#656565ff"
>
-
-
-
-
@@ -928,14 +875,6 @@
execution_buts="#00000000"
tab_back="#404040ff"
>
-
-
-
-
@@ -972,14 +911,6 @@
execution_buts="#00000000"
tab_back="#404040ff"
>
-
-
-
-
@@ -1037,14 +968,6 @@
execution_buts="#00000000"
tab_back="#656565ff"
>
-
-
-
-
@@ -1085,14 +1008,6 @@
execution_buts="#00000000"
tab_back="#404040ff"
>
-
-
-
-
@@ -1128,14 +1043,6 @@
execution_buts="#00000000"
tab_back="#404040ff"
>
-
-
-
-
@@ -1159,14 +1066,6 @@
execution_buts="#b3b3b3ff"
tab_back="#404040ff"
>
-
-
-
-
@@ -1197,14 +1096,6 @@
execution_buts="#00000000"
tab_back="#404040ff"
>
-
-
-
-
@@ -1260,14 +1151,6 @@
execution_buts="#00000000"
tab_back="#404040ff"
>
-
-
-
-
@@ -1300,14 +1183,6 @@
execution_buts="#00000000"
tab_back="#28292dff"
>
-
-
-
-
@@ -1331,14 +1206,6 @@
execution_buts="#00000000"
tab_back="#28292dff"
>
-
-
-
-
@@ -1364,14 +1231,6 @@
execution_buts="#999999e6"
tab_back="#999999ff"
>
-
-
-
-
diff --git a/scripts/startup/bl_ui/space_userpref.py b/scripts/startup/bl_ui/space_userpref.py
index 568268dc2ce..4f36ead5a9d 100644
--- a/scripts/startup/bl_ui/space_userpref.py
+++ b/scripts/startup/bl_ui/space_userpref.py
@@ -968,7 +968,6 @@ class USERPREF_MT_interface_theme_presets(Menu):
"ThemeNLAEditor",
"ThemeNodeEditor",
"ThemeOutliner",
- "ThemePanelColors",
"ThemePreferences",
"ThemeProperties",
"ThemeSequenceEditor",
@@ -1106,6 +1105,28 @@ class PreferenceThemeWidgetShadePanel:
self.layout.prop(widget_style, "show_shaded", text="")
+class USERPREF_PT_theme_interface_panel(ThemePanel, CenterAlignMixIn, Panel):
+ bl_label = "Panel"
+ bl_options = {'DEFAULT_CLOSED'}
+ bl_parent_id = "USERPREF_PT_theme_user_interface"
+
+ def draw_centered(self, context, layout):
+ theme = context.preferences.themes[0]
+ ui = theme.user_interface
+
+ flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
+
+ col = flow.column()
+ col.prop(ui, "panel_header", text="Header")
+
+ col = flow.column(align=True)
+ col.prop(ui, "panel_back", text="Background")
+ col.prop(ui, "panel_sub_back", text="Sub-Panel")
+
+ col = flow.column()
+ col.prop(ui, "panel_roundness", text="Roundness")
+
+
class USERPREF_PT_theme_interface_state(ThemePanel, CenterAlignMixIn, Panel):
bl_label = "State"
bl_options = {'DEFAULT_CLOSED'}
@@ -1177,7 +1198,6 @@ class USERPREF_PT_theme_interface_styles(ThemePanel, CenterAlignMixIn, Panel):
col = flow.column()
col.prop(ui, "widget_emboss")
- col.prop(ui, "panel_roundness")
class USERPREF_PT_theme_interface_transparent_checker(ThemePanel, CenterAlignMixIn, Panel):
@@ -2971,6 +2991,7 @@ classes = (
USERPREF_MT_interface_theme_presets,
USERPREF_PT_theme,
+ USERPREF_PT_theme_interface_panel,
USERPREF_PT_theme_interface_gizmos,
USERPREF_PT_theme_interface_icons,
USERPREF_PT_theme_interface_state,
diff --git a/source/blender/blenkernel/BKE_blender_version.h b/source/blender/blenkernel/BKE_blender_version.h
index 6c984118706..67f2d1fb857 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 8
+#define BLENDER_FILE_SUBVERSION 9
/* 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 5f773c3cfb6..220f858aa3f 100644
--- a/source/blender/blenloader/intern/versioning_userdef.cc
+++ b/source/blender/blenloader/intern/versioning_userdef.cc
@@ -294,6 +294,12 @@ static void do_versions_theme(const UserDef *userdef, bTheme *btheme)
U_theme_default.tui.wcol_tooltip.outline);
}
+ if (!USER_VERSION_ATLEAST(500, 9)) {
+ copy_v4_v4_uchar(btheme->tui.panel_header, U_theme_default.tui.panel_header);
+ copy_v4_v4_uchar(btheme->tui.panel_back, U_theme_default.tui.panel_back);
+ copy_v4_v4_uchar(btheme->tui.panel_sub_back, U_theme_default.tui.panel_sub_back);
+ }
+
/**
* 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/interface/resources.cc b/source/blender/editors/interface/resources.cc
index a0f67d416ab..76c58a4e98b 100644
--- a/source/blender/editors/interface/resources.cc
+++ b/source/blender/editors/interface/resources.cc
@@ -272,13 +272,13 @@ const uchar *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colorid)
break;
case TH_PANEL_HEADER:
- cp = ts->panelcolors.header;
+ cp = btheme->tui.panel_header;
break;
case TH_PANEL_BACK:
- cp = ts->panelcolors.back;
+ cp = btheme->tui.panel_back;
break;
case TH_PANEL_SUB_BACK:
- cp = ts->panelcolors.sub_back;
+ cp = btheme->tui.panel_sub_back;
break;
case TH_BUTBACK:
diff --git a/source/blender/makesdna/DNA_theme_types.h b/source/blender/makesdna/DNA_theme_types.h
index 0988940a496..2eeee2fafee 100644
--- a/source/blender/makesdna/DNA_theme_types.h
+++ b/source/blender/makesdna/DNA_theme_types.h
@@ -139,13 +139,6 @@ typedef struct uiWidgetStateColors {
char _pad0[4];
} uiWidgetStateColors;
-typedef struct uiPanelColors {
- unsigned char header[4];
- unsigned char back[4];
- unsigned char sub_back[4];
- char _pad0[4];
-} uiPanelColors;
-
typedef struct ThemeUI {
/* Interface Elements (buttons, menus, icons) */
uiWidgetColors wcol_regular, wcol_tool, wcol_toolbar_item, wcol_text;
@@ -207,8 +200,11 @@ typedef struct ThemeUI {
/** Intensity of the border icons. >0 will render an border around themed
* icons. */
float icon_border_intensity;
+ /* Panels. */
float panel_roundness;
- char _pad2[4];
+ unsigned char panel_header[4];
+ unsigned char panel_back[4];
+ unsigned char panel_sub_back[4];
} ThemeUI;
@@ -267,9 +263,6 @@ typedef struct ThemeSpace {
/** Region background. */
unsigned char execution_buts[4];
- /* NOTE: cannot use name 'panel' because of DNA mapping old files. */
- uiPanelColors panelcolors;
-
ThemeAssetShelf asset_shelf;
unsigned char shade1[4];
diff --git a/source/blender/makesrna/intern/rna_userdef.cc b/source/blender/makesrna/intern/rna_userdef.cc
index bac16f2300f..a94703b7095 100644
--- a/source/blender/makesrna/intern/rna_userdef.cc
+++ b/source/blender/makesrna/intern/rna_userdef.cc
@@ -1743,28 +1743,6 @@ static void rna_def_userdef_theme_ui_wcol_state(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
}
-static void rna_def_userdef_theme_ui_panel(BlenderRNA *brna)
-{
- StructRNA *srna;
- PropertyRNA *prop;
-
- srna = RNA_def_struct(brna, "ThemePanelColors", nullptr);
- RNA_def_struct_sdna(srna, "uiPanelColors");
- RNA_def_struct_ui_text(srna, "Theme Panel Color", "Theme settings for panel colors");
-
- prop = RNA_def_property(srna, "header", PROP_FLOAT, PROP_COLOR_GAMMA);
- RNA_def_property_ui_text(prop, "Header", "");
- RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
-
- prop = RNA_def_property(srna, "back", PROP_FLOAT, PROP_COLOR_GAMMA);
- RNA_def_property_ui_text(prop, "Background", "");
- RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
-
- prop = RNA_def_property(srna, "sub_back", PROP_FLOAT, PROP_COLOR_GAMMA);
- RNA_def_property_ui_text(prop, "Sub Background", "");
- RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
-}
-
static const EnumPropertyItem rna_enum_userdef_theme_background_types_items[] = {
{TH_BACKGROUND_SINGLE_COLOR,
"SINGLE_COLOR",
@@ -1821,7 +1799,6 @@ static void rna_def_userdef_theme_ui(BlenderRNA *brna)
rna_def_userdef_theme_ui_wcol(brna);
rna_def_userdef_theme_ui_wcol_state(brna);
- rna_def_userdef_theme_ui_panel(brna);
rna_def_userdef_theme_ui_gradient(brna);
srna = RNA_def_struct(brna, "ThemeUserInterface", nullptr);
@@ -1994,6 +1971,18 @@ static void rna_def_userdef_theme_ui(BlenderRNA *brna)
RNA_def_property_float_default(prop, 0.4f);
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
+ prop = RNA_def_property(srna, "panel_header", PROP_FLOAT, PROP_COLOR_GAMMA);
+ RNA_def_property_ui_text(prop, "Panel Header", "");
+ RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
+
+ prop = RNA_def_property(srna, "panel_back", PROP_FLOAT, PROP_COLOR_GAMMA);
+ RNA_def_property_ui_text(prop, "Panel Background", "");
+ RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
+
+ prop = RNA_def_property(srna, "panel_sub_back", PROP_FLOAT, PROP_COLOR_GAMMA);
+ RNA_def_property_ui_text(prop, "Sub-Panel Background", "");
+ RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
+
/* Transparent Grid */
prop = RNA_def_property(srna, "transparent_checker_primary", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_float_sdna(prop, nullptr, "transparent_checker_primary");
@@ -2165,12 +2154,6 @@ static void rna_def_userdef_theme_space_common(StructRNA *srna)
RNA_def_property_ui_text(prop, "Header Text Highlight", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
- /* panel settings */
- prop = RNA_def_property(srna, "panelcolors", PROP_POINTER, PROP_NONE);
- RNA_def_property_flag(prop, PROP_NEVER_NULL);
- RNA_def_property_ui_text(prop, "Panel Colors", "");
- RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
-
/* buttons */
// if (!ELEM(spacetype, SPACE_PROPERTIES, SPACE_OUTLINER)) {
prop = RNA_def_property(srna, "button", PROP_FLOAT, PROP_COLOR_GAMMA);