From 8b512414c5751c39d443c85d3dcb4820c14e3ba0 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 7 Dec 2019 08:46:02 +1100 Subject: Preferences: correct experimental flag use Add utilities for checking when experimental features should be used. --- .../blender/editors/space_view3d/view3d_gizmo_tool_generic.c | 2 +- source/blender/makesdna/DNA_userdef_types.h | 8 ++++---- source/blender/makesrna/intern/rna_userdef.c | 10 ++++++++++ source/blender/windowmanager/intern/wm_event_system.c | 2 +- source/blender/windowmanager/intern/wm_toolsystem.c | 2 +- 5 files changed, 17 insertions(+), 7 deletions(-) (limited to 'source/blender') diff --git a/source/blender/editors/space_view3d/view3d_gizmo_tool_generic.c b/source/blender/editors/space_view3d/view3d_gizmo_tool_generic.c index 838abe46616..8b1a84fec1b 100644 --- a/source/blender/editors/space_view3d/view3d_gizmo_tool_generic.c +++ b/source/blender/editors/space_view3d/view3d_gizmo_tool_generic.c @@ -52,7 +52,7 @@ static const char *handle_free_id; static bool WIDGETGROUP_tool_generic_poll(const bContext *C, wmGizmoGroupType *gzgt) { - if (!U.experimental.use_tool_fallback) { + if (!USER_EXPEREMENTAL_TEST(&U, use_tool_fallback)) { return false; } diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h index c26eb58a8f9..adab1f31507 100644 --- a/source/blender/makesdna/DNA_userdef_types.h +++ b/source/blender/makesdna/DNA_userdef_types.h @@ -600,10 +600,6 @@ typedef struct UserDef_FileSpaceData { int temp_win_sizey; } UserDef_FileSpaceData; -/** - * Store UI data here instead of the space - * since the space is typically a window which is freed. - */ typedef struct UserDef_Experimental { /** #eUserPref_Experimental_Flag options. */ int flag; @@ -613,6 +609,10 @@ typedef struct UserDef_Experimental { char _pad0[3]; } UserDef_Experimental; +#define USER_EXPEREMENTAL_TEST(userdef, member) \ + (((userdef)->flag & USER_DEVELOPER_UI) && \ + (((userdef)->experimental.flag & USER_EXPERIMENTAL_ALL) || ((userdef)->experimental).member)) + typedef struct UserDef { /** UserDef has separate do-version handling, and can be read from other files. */ int versionfile, subversionfile; diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index aa69b49c391..af30baf4a80 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -575,6 +575,15 @@ static void rna_userdef_autosave_update(Main *bmain, Scene *scene, PointerRNA *p rna_userdef_update(bmain, scene, ptr); } +# define RNA_USERDEF_EXPERIMENTAL_BOOLEAN_GET(member) \ + static bool rna_userdef_experimental_##member##_get(PointerRNA *ptr) \ + { \ + UserDef *userdef = POINTER_OFFSET(ptr->data, -offsetof(UserDef, experimental)); \ + return USER_EXPEREMENTAL_TEST(userdef, member); \ + } + +RNA_USERDEF_EXPERIMENTAL_BOOLEAN_GET(use_tool_fallback) + static bAddon *rna_userdef_addon_new(void) { ListBase *addons_list = &U.addons; @@ -5848,6 +5857,7 @@ static void rna_def_userdef_experimental(BlenderRNA *brna) prop = RNA_def_property(srna, "use_tool_fallback", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "use_tool_fallback", 1); + RNA_def_property_boolean_funcs(prop, "rna_userdef_experimental_use_tool_fallback_get", NULL); RNA_def_property_ui_text(prop, "Fallback Tool Support", "Allow selection with an active tool"); RNA_def_property_update(prop, 0, "rna_userdef_update"); } diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index d65cf2324a9..7c3e4ebc008 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -3731,7 +3731,7 @@ wmKeyMap *WM_event_get_keymap_from_toolsystem(wmWindowManager *wm, wmEventHandle const char *keymap_id = tref_rt->keymap; /* Support for the gizmo owning the tool keymap. */ - if (U.experimental.use_tool_fallback) { + if (USER_EXPEREMENTAL_TEST(&U, use_tool_fallback)) { if (tref_rt->gizmo_group[0] != '\0') { wmGizmoMap *gzmap = NULL; wmGizmoGroup *gzgroup = NULL; diff --git a/source/blender/windowmanager/intern/wm_toolsystem.c b/source/blender/windowmanager/intern/wm_toolsystem.c index d714fdaa19e..5878a82d576 100644 --- a/source/blender/windowmanager/intern/wm_toolsystem.c +++ b/source/blender/windowmanager/intern/wm_toolsystem.c @@ -355,7 +355,7 @@ void WM_toolsystem_ref_set_from_runtime(struct bContext *C, * pass in the argument to begin with. */ bool use_fallback_keymap = false; - if (U.experimental.use_tool_fallback) { + if (USER_EXPEREMENTAL_TEST(&U, use_tool_fallback)) { if (tref_rt->gizmo_group[0]) { wmGizmoGroupType *gzgt = WM_gizmogrouptype_find(tref_rt->gizmo_group, false); if (gzgt) { -- cgit v1.2.3