forked from bartvdbraak/blender
Keymaps: reload key configuration when changing select mouse.
For configuration scripts that want to change keymaps based on this setting.
This commit is contained in:
parent
c39d5a6c88
commit
ca6dd692b5
@ -168,7 +168,7 @@ typedef struct wmWindowManager {
|
||||
/* wmWindowManager.initialized */
|
||||
enum {
|
||||
WM_WINDOW_IS_INITIALIZED = (1<<0),
|
||||
WM_KEYMAP_IS_INITIALIZED = (1<<1),
|
||||
WM_KEYCONFIG_IS_INITIALIZED = (1<<1),
|
||||
};
|
||||
|
||||
/* IME is win32 only! */
|
||||
|
@ -222,6 +222,11 @@ static void rna_userdef_select_mouse_set(PointerRNA *ptr, int value)
|
||||
userdef->flag &= ~USER_LMOUSESELECT;
|
||||
}
|
||||
|
||||
static void rna_userdef_select_mouse_update(bContext *C, Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *UNUSED(ptr))
|
||||
{
|
||||
WM_keyconfig_reload(C);
|
||||
}
|
||||
|
||||
static int rna_userdef_autokeymode_get(PointerRNA *ptr)
|
||||
{
|
||||
UserDef *userdef = (UserDef *)ptr->data;
|
||||
@ -4546,6 +4551,8 @@ static void rna_def_userdef_input(BlenderRNA *brna)
|
||||
RNA_def_property_enum_items(prop, select_mouse_items);
|
||||
RNA_def_property_enum_funcs(prop, NULL, "rna_userdef_select_mouse_set", NULL);
|
||||
RNA_def_property_ui_text(prop, "Select Mouse", "Mouse button used for selection");
|
||||
RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
|
||||
RNA_def_property_update(prop, 0, "rna_userdef_select_mouse_update");
|
||||
|
||||
prop = RNA_def_property(srna, "view_zoom_method", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_sdna(prop, NULL, "viewzoom");
|
||||
|
@ -42,6 +42,9 @@ struct EnumPropertyItem;
|
||||
|
||||
/* Key Configuration */
|
||||
|
||||
void WM_keyconfig_init (struct bContext *C);
|
||||
void WM_keyconfig_reload (struct bContext *C);
|
||||
|
||||
wmKeyConfig *WM_keyconfig_new (struct wmWindowManager *wm, const char *idname, bool user_defined);
|
||||
wmKeyConfig *WM_keyconfig_new_user(struct wmWindowManager *wm, const char *idname);
|
||||
bool WM_keyconfig_remove (struct wmWindowManager *wm, struct wmKeyConfig *keyconf);
|
||||
@ -56,7 +59,6 @@ void WM_keyconfig_update_operatortype(void);
|
||||
|
||||
/* Keymap */
|
||||
|
||||
void WM_keymap_init (struct bContext *C);
|
||||
void WM_keymap_clear (struct wmKeyMap *keymap);
|
||||
|
||||
wmKeyMapItem *WM_keymap_verify_item(
|
||||
|
@ -225,7 +225,16 @@ void WM_operator_handlers_clear(wmWindowManager *wm, wmOperatorType *ot)
|
||||
|
||||
/* ****************************************** */
|
||||
|
||||
void WM_keymap_init(bContext *C)
|
||||
void WM_keyconfig_reload(bContext *C)
|
||||
{
|
||||
if (CTX_py_init_get(C) && !G.background) {
|
||||
BPY_execute_string(
|
||||
C, (const char *[]){"bpy", NULL},
|
||||
"bpy.utils.keyconfig_init()");
|
||||
}
|
||||
}
|
||||
|
||||
void WM_keyconfig_init(bContext *C)
|
||||
{
|
||||
wmWindowManager *wm = CTX_wm_manager(C);
|
||||
|
||||
@ -239,16 +248,14 @@ void WM_keymap_init(bContext *C)
|
||||
|
||||
/* initialize only after python init is done, for keymaps that
|
||||
* use python operators */
|
||||
if (CTX_py_init_get(C) && (wm->initialized & WM_KEYMAP_IS_INITIALIZED) == 0) {
|
||||
if (CTX_py_init_get(C) && (wm->initialized & WM_KEYCONFIG_IS_INITIALIZED) == 0) {
|
||||
/* create default key config, only initialize once,
|
||||
* it's persistent across sessions */
|
||||
if (!(wm->defaultconf->flag & KEYCONF_INIT_DEFAULT)) {
|
||||
wm_window_keymap(wm->defaultconf);
|
||||
ED_spacetypes_keymap(wm->defaultconf);
|
||||
|
||||
BPY_execute_string(
|
||||
C, (const char *[]){"bpy", NULL},
|
||||
"bpy.utils.keyconfig_init()");
|
||||
WM_keyconfig_reload(C);
|
||||
|
||||
wm->defaultconf->flag |= KEYCONF_INIT_DEFAULT;
|
||||
}
|
||||
@ -256,7 +263,7 @@ void WM_keymap_init(bContext *C)
|
||||
WM_keyconfig_update_tag(NULL, NULL);
|
||||
WM_keyconfig_update(wm);
|
||||
|
||||
wm->initialized |= WM_KEYMAP_IS_INITIALIZED;
|
||||
wm->initialized |= WM_KEYCONFIG_IS_INITIALIZED;
|
||||
}
|
||||
}
|
||||
|
||||
@ -278,7 +285,7 @@ void WM_check(bContext *C)
|
||||
if (!G.background) {
|
||||
/* case: fileread */
|
||||
if ((wm->initialized & WM_WINDOW_IS_INITIALIZED) == 0) {
|
||||
WM_keymap_init(C);
|
||||
WM_keyconfig_init(C);
|
||||
WM_autosave_init(wm);
|
||||
}
|
||||
|
||||
|
@ -465,7 +465,7 @@ int main(
|
||||
#endif
|
||||
|
||||
CTX_py_init_set(C, 1);
|
||||
WM_keymap_init(C);
|
||||
WM_keyconfig_init(C);
|
||||
|
||||
/* Called on load, however Python is not yet initialized, so call again here. */
|
||||
if (!G.background) {
|
||||
|
Loading…
Reference in New Issue
Block a user