Revision: 21681
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21681
Author:   campbellbarton
Date:     2009-07-18 21:40:26 +0200 (Sat, 18 Jul 2009)

Log Message:
-----------
initialize keymaps after python so python keymaps, solves the problem of 
keymaps complaining about python operators not existing, but at the expense of 
some annoying init flags/functions. :/
Brecht/Ton you may want to check that C->data.py_init is a good place to store 
this.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenkernel/BKE_context.h
    branches/blender2.5/blender/source/blender/blenkernel/intern/context.c
    
branches/blender2.5/blender/source/blender/makesdna/DNA_windowmanager_types.h
    branches/blender2.5/blender/source/blender/windowmanager/WM_api.h
    branches/blender2.5/blender/source/blender/windowmanager/intern/wm.c

Modified: branches/blender2.5/blender/source/blender/blenkernel/BKE_context.h
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/BKE_context.h 
2009-07-18 18:33:07 UTC (rev 21680)
+++ branches/blender2.5/blender/source/blender/blenkernel/BKE_context.h 
2009-07-18 19:40:26 UTC (rev 21681)
@@ -101,6 +101,10 @@
 void CTX_store_free(bContextStore *store);
 void CTX_store_free_list(ListBase *contexts);
 
+/* need to store if python is initialized or not */
+int CTX_py_init_get(bContext *C);
+int CTX_py_init_set(bContext *C, int value);
+
 /* Window Manager Context */
 
 struct wmWindowManager *CTX_wm_manager(const bContext *C);

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/context.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/context.c      
2009-07-18 18:33:07 UTC (rev 21680)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/context.c      
2009-07-18 19:40:26 UTC (rev 21681)
@@ -68,6 +68,7 @@
                struct Scene *scene;
 
                int recursion;
+               int py_init; /* true if python is initialized */
        } data;
        
        /* data evaluation */
@@ -162,6 +163,16 @@
        }
 }
 
+/* is python initialied? */
+int CTX_py_init_get(bContext *C)
+{
+       return C->data.py_init;
+}
+int CTX_py_init_set(bContext *C, int value)
+{
+       C->data.py_init= value;
+}
+
 /* window manager context */
 
 wmWindowManager *CTX_wm_manager(const bContext *C)

Modified: 
branches/blender2.5/blender/source/blender/makesdna/DNA_windowmanager_types.h
===================================================================
--- 
branches/blender2.5/blender/source/blender/makesdna/DNA_windowmanager_types.h   
    2009-07-18 18:33:07 UTC (rev 21680)
+++ 
branches/blender2.5/blender/source/blender/makesdna/DNA_windowmanager_types.h   
    2009-07-18 19:40:26 UTC (rev 21681)
@@ -117,6 +117,9 @@
        
 } wmWindowManager;
 
+/* wmWindowManager.initialized */
+#define WM_INIT_WINDOW         1<<0
+#define WM_INIT_KEYMAP         1<<1
 
 /* the savable part, rest of data is local in ghostwinlay */
 typedef struct wmWindow {

Modified: branches/blender2.5/blender/source/blender/windowmanager/WM_api.h
===================================================================
--- branches/blender2.5/blender/source/blender/windowmanager/WM_api.h   
2009-07-18 18:33:07 UTC (rev 21680)
+++ branches/blender2.5/blender/source/blender/windowmanager/WM_api.h   
2009-07-18 19:40:26 UTC (rev 21681)
@@ -72,6 +72,7 @@
 void           WM_paint_cursor_end(struct wmWindowManager *wm, void *handle);
 
                        /* keymap */
+void           WM_keymap_init          (struct bContext *C);
 wmKeymapItem *WM_keymap_verify_item(ListBase *lb, char *idname, short type, 
                                                                 short val, int 
modifier, short keymodifier);
 wmKeymapItem *WM_keymap_add_item(ListBase *lb, char *idname, short type, 

Modified: branches/blender2.5/blender/source/blender/windowmanager/intern/wm.c
===================================================================
--- branches/blender2.5/blender/source/blender/windowmanager/intern/wm.c        
2009-07-18 18:33:07 UTC (rev 21680)
+++ branches/blender2.5/blender/source/blender/windowmanager/intern/wm.c        
2009-07-18 19:40:26 UTC (rev 21681)
@@ -120,6 +120,18 @@
 
 /* ****************************************** */
 
+void WM_keymap_init(bContext *C)
+{
+       wmWindowManager *wm= CTX_wm_manager(C);
+
+       if(CTX_py_init_get(C) && (wm->initialized & WM_INIT_KEYMAP) == 0) {
+               wm_window_keymap(wm);
+               ED_spacetypes_keymap(wm);
+
+               wm->initialized |= WM_INIT_KEYMAP;
+       }
+}
+
 void wm_check(bContext *C)
 {
        wmWindowManager *wm= CTX_wm_manager(C);
@@ -136,13 +148,12 @@
        wm_window_add_ghostwindows(wm);
        
        /* case: fileread */
-       if(wm->initialized==0) {
+       if((wm->initialized & WM_INIT_WINDOW) == 0) {
                
-               wm_window_keymap(wm);
-               ED_spacetypes_keymap(wm);
+               WM_keymap_init(C);
                
                ED_screens_initialize(wm);
-               wm->initialized= 1;
+               wm->initialized |= WM_INIT_WINDOW;
        }
 }
 


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to