[Bf-blender-cvs] [f5cb96704bc] blender2.8: WM: add function to access last_properties
Campbell Barton
noreply at git.blender.org
Thu May 3 07:22:35 CEST 2018
Commit: f5cb96704bcdbd94cc7dacfef51c8028c28f4c4d
Author: Campbell Barton
Date: Wed May 2 17:59:43 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBf5cb96704bcdbd94cc7dacfef51c8028c28f4c4d
WM: add function to access last_properties
===================================================================
M source/blender/makesrna/intern/rna_wm_api.c
M source/blender/windowmanager/WM_api.h
M source/blender/windowmanager/intern/wm_operators.c
===================================================================
diff --git a/source/blender/makesrna/intern/rna_wm_api.c b/source/blender/makesrna/intern/rna_wm_api.c
index a0f864d841d..ba955d65ac5 100644
--- a/source/blender/makesrna/intern/rna_wm_api.c
+++ b/source/blender/makesrna/intern/rna_wm_api.c
@@ -389,13 +389,8 @@ static PointerRNA rna_WindoManager_operator_properties_last(const char *idname)
wmOperatorType *ot = WM_operatortype_find(idname, true);
if (ot != NULL) {
- /* Could make optional. */
- if (ot->last_properties == NULL) {
- IDPropertyTemplate val = {0};
- ot->last_properties = IDP_New(IDP_GROUP, &val, "wmOperatorProperties");
- }
PointerRNA ptr;
- RNA_pointer_create(NULL, ot->srna, ot->last_properties, &ptr);
+ WM_operator_last_properties_ensure(ot, &ptr);
return ptr;
}
return PointerRNA_NULL;
diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h
index 78498fc35b1..31c30388560 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -340,6 +340,9 @@ void WM_operator_properties_free(struct PointerRNA *ptr);
bool WM_operator_check_ui_empty(struct wmOperatorType *ot);
bool WM_operator_check_ui_enabled(const struct bContext *C, const char *idname);
+
+IDProperty *WM_operator_last_properties_ensure_idprops(struct wmOperatorType *ot);
+void WM_operator_last_properties_ensure(struct wmOperatorType *ot, struct PointerRNA *ptr);
wmOperator *WM_operator_last_redo(const struct bContext *C);
ID *WM_operator_drop_load_path(struct bContext *C, struct wmOperator *op, const short idcode);
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c
index e6c7f5e94cb..4e21607d847 100644
--- a/source/blender/windowmanager/intern/wm_operators.c
+++ b/source/blender/windowmanager/intern/wm_operators.c
@@ -1388,6 +1388,21 @@ wmOperator *WM_operator_last_redo(const bContext *C)
return op;
}
+IDProperty *WM_operator_last_properties_ensure_idprops(wmOperatorType *ot)
+{
+ if (ot->last_properties == NULL) {
+ IDPropertyTemplate val = {0};
+ ot->last_properties = IDP_New(IDP_GROUP, &val, "wmOperatorProperties");
+ }
+ return ot->last_properties;
+}
+
+void WM_operator_last_properties_ensure(wmOperatorType *ot, PointerRNA *ptr)
+{
+ IDProperty *props = WM_operator_last_properties_ensure_idprops(ot);
+ RNA_pointer_create(NULL, ot->srna, props, ptr);
+}
+
/**
* Use for drag & drop a path or name with operators invoke() function.
*/
More information about the Bf-blender-cvs
mailing list