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
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
parent7c2217cd126a97df9b1c305f79a605f25c06a229 (diff)
Preferences: correct experimental flag use
Add utilities for checking when experimental features should be used.
-rw-r--r--release/scripts/startup/bl_ui/space_userpref.py25
-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
6 files changed, 36 insertions, 13 deletions
diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py
index 130db518cb7..386a5a184ca 100644
--- a/release/scripts/startup/bl_ui/space_userpref.py
+++ b/release/scripts/startup/bl_ui/space_userpref.py
@@ -2160,6 +2160,8 @@ class ExperimentalPanel:
bl_space_type = 'PREFERENCES'
bl_region_type = 'WINDOW'
+ url_prefix = "https://developer.blender.org/"
+
@classmethod
def poll(cls, context):
prefs = context.preferences
@@ -2188,12 +2190,22 @@ class USERPREF_PT_experimental_all(ExperimentalPanel, Panel):
# For the other settings create new panels
# and make sure they are disabled if use_experimental_all is True
- url_prefix = "https://developer.blender.org/"
- row = col.row()
- row.prop(experimental, "use_tool_fallback")
+class USERPREF_PT_experimental_ui(ExperimentalPanel, Panel):
+ bl_label = "User Interface"
+
+ def draw_props(self, context, layout):
+ prefs = context.preferences
+ experimental = prefs.experimental
+ layout.active = not experimental.use_experimental_all
+
+ task = "T66304"
+ split = layout.split(factor=0.66)
+ col = split.column()
+ col.prop(experimental, "use_tool_fallback", text="Use Tool Fallback")
+ col = split.column()
+ col.operator("wm.url_open", text=task, icon='URL').url = self.url_prefix + task
- row.operator("wm.url_open", text="", icon='URL').url = url_prefix + "T66304"
"""
# Example panel, leave it here so we always have a template to follow even
@@ -2212,14 +2224,14 @@ class USERPREF_PT_experimental_virtual_reality(ExperimentalPanel, Panel):
col = split.split()
col.prop(experimental, "use_virtual_reality_scene_inspection", text="Scene Inspection")
col = split.split()
- col.operator("wm.url_open", text=task, icon='URL').url = "https://developer.blender.org/" + task
+ col.operator("wm.url_open", text=task, icon='URL').url = self.url_prefix + task
task = "T71348"
split = layout.split(factor=0.66)
col = split.column()
col.prop(experimental, "use_virtual_reality_immersive_drawing", text="Continuous Immersive Drawing")
col = split.column()
- col.operator("wm.url_open", text=task, icon='URL').url = "https://developer.blender.org/" + task
+ col.operator("wm.url_open", text=task, icon='URL').url = self.url_prefix + task
"""
@@ -2305,6 +2317,7 @@ classes = (
USERPREF_PT_studiolight_world,
USERPREF_PT_experimental_all,
+ USERPREF_PT_experimental_ui,
# Popovers.
USERPREF_PT_ndof_settings,
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) {