Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2019-12-07 00:46:02 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-12-07 05:20:37 +0300
commit8b512414c5751c39d443c85d3dcb4820c14e3ba0 (patch)
tree5468bd943b5496c5b3a507aa1f94afd07cbe1cc5 /source
parent7c2217cd126a97df9b1c305f79a605f25c06a229 (diff)
Preferences: correct experimental flag use
Add utilities for checking when experimental features should be used.
Diffstat (limited to 'source')
-rw-r--r--source/blender/editors/space_view3d/view3d_gizmo_tool_generic.c2
-rw-r--r--source/blender/makesdna/DNA_userdef_types.h8
-rw-r--r--source/blender/makesrna/intern/rna_userdef.c10
-rw-r--r--source/blender/windowmanager/intern/wm_event_system.c2
-rw-r--r--source/blender/windowmanager/intern/wm_toolsystem.c2
5 files changed, 17 insertions, 7 deletions
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) {