diff options
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_blender_version.h | 2 | ||||
-rw-r--r-- | source/blender/blenkernel/BKE_keyconfig.h | 10 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/blender.c | 2 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/keyconfig.c | 32 |
4 files changed, 41 insertions, 5 deletions
diff --git a/source/blender/blenkernel/BKE_blender_version.h b/source/blender/blenkernel/BKE_blender_version.h index 34a486dd66f..781dd3f9826 100644 --- a/source/blender/blenkernel/BKE_blender_version.h +++ b/source/blender/blenkernel/BKE_blender_version.h @@ -28,7 +28,7 @@ * and keep comment above the defines. * Use STRINGIFY() rather than defining with quotes */ #define BLENDER_VERSION 280 -#define BLENDER_SUBVERSION 31 +#define BLENDER_SUBVERSION 32 /* Several breakages with 280, e.g. collections vs layers */ #define BLENDER_MINVERSION 280 #define BLENDER_MINSUBVERSION 0 diff --git a/source/blender/blenkernel/BKE_keyconfig.h b/source/blender/blenkernel/BKE_keyconfig.h index bef6aab2d82..a086930fe34 100644 --- a/source/blender/blenkernel/BKE_keyconfig.h +++ b/source/blender/blenkernel/BKE_keyconfig.h @@ -26,7 +26,10 @@ /** Based on #BKE_addon_pref_type_init and friends */ -/** Actual data is stored in #wmKeyConfigPrefType. */ +struct UserDef; +struct wmKeyConfigPref; + +/** Actual data is stored in #wmKeyConfigPref. */ #if defined(__RNA_TYPES_H__) typedef struct wmKeyConfigPrefType_Runtime { char idname[64]; @@ -39,7 +42,10 @@ typedef struct wmKeyConfigPrefType_Runtime { typedef struct wmKeyConfigPrefType_Runtime wmKeyConfigPrefType_Runtime; #endif -/* KeyConfig preferenes. */ +/* KeyConfig preferenes (UserDef). */ +struct wmKeyConfigPref *BKE_keyconfig_pref_ensure(struct UserDef *userdef, const char *kc_idname); + +/* KeyConfig preferenes (RNA). */ struct wmKeyConfigPrefType_Runtime *BKE_keyconfig_pref_type_find(const char *idname, bool quiet); void BKE_keyconfig_pref_type_add(struct wmKeyConfigPrefType_Runtime *kpt_rt); void BKE_keyconfig_pref_type_remove(const struct wmKeyConfigPrefType_Runtime *kpt_rt); diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c index b90d4fd3948..f1b1aa548d2 100644 --- a/source/blender/blenkernel/intern/blender.c +++ b/source/blender/blenkernel/intern/blender.c @@ -210,7 +210,7 @@ static void userdef_free_keymaps(UserDef *userdef) static void userdef_free_keyconfig_prefs(UserDef *userdef) { - for (wmKeyConfigPrefType *kpt = userdef->user_keyconfig_prefs.first, *kpt_next; kpt; kpt = kpt_next) { + for (wmKeyConfigPref *kpt = userdef->user_keyconfig_prefs.first, *kpt_next; kpt; kpt = kpt_next) { kpt_next = kpt->next; IDP_FreeProperty(kpt->prop); MEM_freeN(kpt->prop); diff --git a/source/blender/blenkernel/intern/keyconfig.c b/source/blender/blenkernel/intern/keyconfig.c index 46b82569f47..755c9e1582d 100644 --- a/source/blender/blenkernel/intern/keyconfig.c +++ b/source/blender/blenkernel/intern/keyconfig.c @@ -29,15 +29,45 @@ #include "BLI_utildefines.h" #include "BLI_ghash.h" +#include "BLI_listbase.h" +#include "BLI_string.h" #include "DNA_listBase.h" +#include "DNA_userdef_types.h" +#include "DNA_windowmanager_types.h" #include "BKE_keyconfig.h" /* own include */ +#include "BKE_idprop.h" #include "MEM_guardedalloc.h" + +/* -------------------------------------------------------------------- */ +/** \name Key-Config Preference (UserDef) API + * + * \see #BKE_addon_pref_type_init for logic this is bases on. + * \{ */ + +wmKeyConfigPref *BKE_keyconfig_pref_ensure(UserDef *userdef, const char *kc_idname) +{ + wmKeyConfigPref *kpt = BLI_findstring( + &userdef->user_keyconfig_prefs, kc_idname, offsetof(wmKeyConfigPref, idname)); + if (kpt == NULL) { + kpt = MEM_callocN(sizeof(*kpt), __func__); + STRNCPY(kpt->idname, kc_idname); + BLI_addtail(&userdef->user_keyconfig_prefs, kpt); + } + if (kpt->prop == NULL) { + IDPropertyTemplate val = {0}; + kpt->prop = IDP_New(IDP_GROUP, &val, kc_idname); /* name is unimportant */ + } + return kpt; +} + +/** \} */ + /* -------------------------------------------------------------------- */ -/** \name Key-Config Preference API +/** \name Key-Config Preference (RNA Type) API * * \see #BKE_addon_pref_type_init for logic this is bases on. * \{ */ |