diff options
Diffstat (limited to 'source/blender/windowmanager/intern/wm.c')
-rw-r--r-- | source/blender/windowmanager/intern/wm.c | 36 |
1 files changed, 17 insertions, 19 deletions
diff --git a/source/blender/windowmanager/intern/wm.c b/source/blender/windowmanager/intern/wm.c index 4405b52888d..a068f84ae29 100644 --- a/source/blender/windowmanager/intern/wm.c +++ b/source/blender/windowmanager/intern/wm.c @@ -132,12 +132,18 @@ void WM_keymap_init(bContext *C) { wmWindowManager *wm= CTX_wm_manager(C); + if(!wm->defaultconf) + wm->defaultconf= WM_keyconfig_add(wm, "Blender"); + if(wm && CTX_py_init_get(C) && (wm->initialized & WM_INIT_KEYMAP) == 0) { - wm_window_keymap(wm); - ED_spacetypes_keymap(wm); + /* create default key config */ + wm_window_keymap(wm->defaultconf); + ED_spacetypes_keymap(wm->defaultconf); wm->initialized |= WM_INIT_KEYMAP; } + + WM_keyconfig_userdef(wm); } void wm_check(bContext *C) @@ -151,15 +157,16 @@ void wm_check(bContext *C) } if(wm==NULL) return; if(wm->windows.first==NULL) return; + + /* case: fileread */ + if((wm->initialized & WM_INIT_WINDOW) == 0) + WM_keymap_init(C); /* case: no open windows at all, for old file reads */ wm_window_add_ghostwindows(wm); /* case: fileread */ if((wm->initialized & WM_INIT_WINDOW) == 0) { - - WM_keymap_init(C); - ED_screens_initialize(wm); wm->initialized |= WM_INIT_WINDOW; } @@ -211,8 +218,7 @@ void wm_close_and_free(bContext *C, wmWindowManager *wm) { wmWindow *win; wmOperator *op; - wmKeyMap *km; - wmKeymapItem *kmi; + wmKeyConfig *keyconf; while((win= wm->windows.first)) { BLI_remlink(&wm->windows, win); @@ -226,19 +232,11 @@ void wm_close_and_free(bContext *C, wmWindowManager *wm) WM_operator_free(op); } - while((km= wm->keymaps.first)) { - for(kmi=km->keymap.first; kmi; kmi=kmi->next) { - if(kmi->ptr) { - WM_operator_properties_free(kmi->ptr); - MEM_freeN(kmi->ptr); - } - } - - BLI_freelistN(&km->keymap); - BLI_remlink(&wm->keymaps, km); - MEM_freeN(km); + while((keyconf=wm->keyconfigs.first)) { + BLI_remlink(&wm->keyconfigs, keyconf); + WM_keyconfig_free(keyconf); } - + BLI_freelistN(&wm->queue); BLI_freelistN(&wm->paintcursors); |