[Bf-blender-cvs] [cb4f7594a04] blender2.8: WM: add WM_manipulatorgrouptype_append_ptr
Campbell Barton
noreply at git.blender.org
Mon Jun 5 10:10:39 CEST 2017
Commit: cb4f7594a04b5d4b1fa6b543ced93128aae140f7
Author: Campbell Barton
Date: Mon Jun 5 18:10:52 2017 +1000
Branches: blender2.8
https://developer.blender.org/rBcb4f7594a04b5d4b1fa6b543ced93128aae140f7
WM: add WM_manipulatorgrouptype_append_ptr
Needed for PyAPI registration.
===================================================================
M source/blender/windowmanager/manipulators/WM_manipulator_api.h
M source/blender/windowmanager/manipulators/intern/wm_manipulatorgroup.c
===================================================================
diff --git a/source/blender/windowmanager/manipulators/WM_manipulator_api.h b/source/blender/windowmanager/manipulators/WM_manipulator_api.h
index c2d194c7c03..09d050b363e 100644
--- a/source/blender/windowmanager/manipulators/WM_manipulator_api.h
+++ b/source/blender/windowmanager/manipulators/WM_manipulator_api.h
@@ -78,9 +78,18 @@ void WM_manipulator_set_colors(struct wmManipulator *manipulator, const float co
struct wmManipulatorGroupType *WM_manipulatorgrouptype_append(
struct wmManipulatorMapType *mmaptype,
void (*mgrouptype_func)(struct wmManipulatorGroupType *));
+struct wmManipulatorGroupType *WM_manipulatorgrouptype_append_ptr(
+ struct wmManipulatorMapType *mmaptype,
+ void (*mgrouptype_func)(struct wmManipulatorGroupType *, void *),
+ void *userdata);
struct wmManipulatorGroupType *WM_manipulatorgrouptype_append_runtime(
const struct Main *main, struct wmManipulatorMapType *mmaptype,
void (*mgrouptype_func)(struct wmManipulatorGroupType *));
+struct wmManipulatorGroupType *WM_manipulatorgrouptype_append_ptr_runtime(
+ const struct Main *main, struct wmManipulatorMapType *mmaptype,
+ void (*mgrouptype_func)(struct wmManipulatorGroupType *, void *),
+ void *userdata);
+
void WM_manipulatorgrouptype_init_runtime(
const struct Main *bmain, struct wmManipulatorMapType *mmaptype,
struct wmManipulatorGroupType *mgrouptype);
diff --git a/source/blender/windowmanager/manipulators/intern/wm_manipulatorgroup.c b/source/blender/windowmanager/manipulators/intern/wm_manipulatorgroup.c
index 5074c6d0257..11fc1b32047 100644
--- a/source/blender/windowmanager/manipulators/intern/wm_manipulatorgroup.c
+++ b/source/blender/windowmanager/manipulators/intern/wm_manipulatorgroup.c
@@ -484,15 +484,14 @@ wmKeyMap *WM_manipulatorgroup_keymap_common_sel(const struct wmManipulatorGroupT
*
* \{ */
-/**
- * Use this for registering manipulators on startup. For runtime, use #WM_manipulatorgrouptype_append_runtime.
- */
-wmManipulatorGroupType *WM_manipulatorgrouptype_append(
- wmManipulatorMapType *mmaptype, void (*mgrouptype_func)(wmManipulatorGroupType *))
+static wmManipulatorGroupType *wm_manipulatorgrouptype_append__begin(void)
{
wmManipulatorGroupType *mgrouptype = MEM_callocN(sizeof(wmManipulatorGroupType), "manipulator-group");
-
- mgrouptype_func(mgrouptype);
+ return mgrouptype;
+}
+static void wm_manipulatorgrouptype_append__end(
+ wmManipulatorMapType *mmaptype, wmManipulatorGroupType *mgrouptype)
+{
mgrouptype->spaceid = mmaptype->spaceid;
mgrouptype->regionid = mmaptype->regionid;
BLI_strncpy(mgrouptype->mapidname, mmaptype->idname, MAX_NAME);
@@ -503,6 +502,27 @@ wmManipulatorGroupType *WM_manipulatorgrouptype_append(
/* add the type for future created areas of the same type */
BLI_addtail(&mmaptype->manipulator_grouptypes, mgrouptype);
+}
+
+/**
+ * Use this for registering manipulators on startup. For runtime, use #WM_manipulatorgrouptype_append_runtime.
+ */
+wmManipulatorGroupType *WM_manipulatorgrouptype_append(
+ wmManipulatorMapType *mmaptype, void (*mgrouptype_func)(wmManipulatorGroupType *))
+{
+ wmManipulatorGroupType *mgrouptype = wm_manipulatorgrouptype_append__begin();
+ mgrouptype_func(mgrouptype);
+ wm_manipulatorgrouptype_append__end(mmaptype, mgrouptype);
+ return mgrouptype;
+}
+
+wmManipulatorGroupType *WM_manipulatorgrouptype_append_ptr(
+ wmManipulatorMapType *mmaptype, void (*mgrouptype_func)(wmManipulatorGroupType *, void *),
+ void *userdata)
+{
+ wmManipulatorGroupType *mgrouptype = wm_manipulatorgrouptype_append__begin();
+ mgrouptype_func(mgrouptype, userdata);
+ wm_manipulatorgrouptype_append__end(mmaptype, mgrouptype);
return mgrouptype;
}
@@ -521,6 +541,19 @@ wmManipulatorGroupType *WM_manipulatorgrouptype_append_runtime(
return mgrouptype;
}
+wmManipulatorGroupType *WM_manipulatorgrouptype_append_ptr_runtime(
+ const Main *main, wmManipulatorMapType *mmaptype,
+ void (*mgrouptype_func)(wmManipulatorGroupType *, void *),
+ void *userdata)
+{
+ wmManipulatorGroupType *mgrouptype = WM_manipulatorgrouptype_append_ptr(mmaptype, mgrouptype_func, userdata);
+
+ /* Main is missing on startup when we create new areas.
+ * So this is only called for manipulators initialized on runtime */
+ WM_manipulatorgrouptype_init_runtime(main, mmaptype, mgrouptype);
+
+ return mgrouptype;
+}
void WM_manipulatorgrouptype_init_runtime(
const Main *bmain, wmManipulatorMapType *mmaptype,
More information about the Bf-blender-cvs
mailing list