[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [21681] branches/blender2.5/blender/source /blender: 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.

Campbell Barton ideasman42 at gmail.com
Sat Jul 18 21:40:26 CEST 2009


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;
 	}
 }
 





More information about the Bf-blender-cvs mailing list