[Bf-blender-cvs] [974c0d3] workspaces: Add workspace to bContext

Julian Eisel noreply at git.blender.org
Fri Dec 2 11:58:58 CET 2016


Commit: 974c0d3828461add68ec95c2e0462996d2588b34
Author: Julian Eisel
Date:   Fri Dec 2 11:58:36 2016 +0100
Branches: workspaces
https://developer.blender.org/rB974c0d3828461add68ec95c2e0462996d2588b34

Add workspace to bContext

===================================================================

M	source/blender/blenkernel/BKE_context.h
M	source/blender/blenkernel/intern/context.c
M	source/blender/makesrna/intern/rna_context.c
M	source/blender/windowmanager/intern/wm_event_system.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_context.h b/source/blender/blenkernel/BKE_context.h
index c6795f8..4e89a22 100644
--- a/source/blender/blenkernel/BKE_context.h
+++ b/source/blender/blenkernel/BKE_context.h
@@ -139,6 +139,7 @@ void CTX_py_dict_set(bContext *C, void *value);
 
 struct wmWindowManager *CTX_wm_manager(const bContext *C);
 struct wmWindow *CTX_wm_window(const bContext *C);
+struct WorkSpace *CTX_wm_workspace(const bContext *C);
 struct bScreen *CTX_wm_screen(const bContext *C);
 struct ScrArea *CTX_wm_area(const bContext *C);
 struct SpaceLink *CTX_wm_space_data(const bContext *C);
@@ -168,6 +169,7 @@ struct SpaceClip *CTX_wm_space_clip(const bContext *C);
 
 void CTX_wm_manager_set(bContext *C, struct wmWindowManager *wm);
 void CTX_wm_window_set(bContext *C, struct wmWindow *win);
+void CTX_wm_workspace_set(bContext *C, struct WorkSpace *ws);
 void CTX_wm_screen_set(bContext *C, struct bScreen *screen); /* to be removed */
 void CTX_wm_area_set(bContext *C, struct ScrArea *sa);
 void CTX_wm_region_set(bContext *C, struct ARegion *region);
diff --git a/source/blender/blenkernel/intern/context.c b/source/blender/blenkernel/intern/context.c
index b38f59a..41a4808 100644
--- a/source/blender/blenkernel/intern/context.c
+++ b/source/blender/blenkernel/intern/context.c
@@ -66,6 +66,7 @@ struct bContext {
 	struct {
 		struct wmWindowManager *manager;
 		struct wmWindow *window;
+		struct WorkSpace *workspace;
 		struct bScreen *screen;
 		struct ScrArea *area;
 		struct ARegion *region;
@@ -627,6 +628,11 @@ wmWindow *CTX_wm_window(const bContext *C)
 	return ctx_wm_python_context_get(C, "window", &RNA_Window, C->wm.window);
 }
 
+WorkSpace *CTX_wm_workspace(const bContext *C)
+{
+	return ctx_wm_python_context_get(C, "workspace", &RNA_WorkSpace, C->wm.workspace);
+}
+
 bScreen *CTX_wm_screen(const bContext *C)
 {
 	return ctx_wm_python_context_get(C, "screen", &RNA_Screen, C->wm.screen);
@@ -833,6 +839,13 @@ void CTX_wm_window_set(bContext *C, wmWindow *win)
 	C->wm.region = NULL;
 }
 
+void CTX_wm_workspace_set(bContext *C, WorkSpace *ws)
+{
+	C->wm.workspace = ws;
+	C->wm.area = NULL;
+	C->wm.region = NULL;
+}
+
 void CTX_wm_screen_set(bContext *C, bScreen *screen)
 {
 	C->wm.screen = screen;
diff --git a/source/blender/makesrna/intern/rna_context.c b/source/blender/makesrna/intern/rna_context.c
index 1021aa6..dd804e6 100644
--- a/source/blender/makesrna/intern/rna_context.c
+++ b/source/blender/makesrna/intern/rna_context.c
@@ -51,6 +51,12 @@ static PointerRNA rna_Context_window_get(PointerRNA *ptr)
 	return rna_pointer_inherit_refine(ptr, &RNA_Window, CTX_wm_window(C));
 }
 
+static PointerRNA rna_Context_workspace_get(PointerRNA *ptr)
+{
+	bContext *C = (bContext *)ptr->data;
+	return rna_pointer_inherit_refine(ptr, &RNA_WorkSpace, CTX_wm_workspace(C));
+}
+
 static PointerRNA rna_Context_screen_get(PointerRNA *ptr)
 {
 	bContext *C = (bContext *)ptr->data;
@@ -166,6 +172,11 @@ void RNA_def_context(BlenderRNA *brna)
 	RNA_def_property_struct_type(prop, "Window");
 	RNA_def_property_pointer_funcs(prop, "rna_Context_window_get", NULL, NULL, NULL);
 
+	prop = RNA_def_property(srna, "workspace", PROP_POINTER, PROP_NONE);
+	RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+	RNA_def_property_struct_type(prop, "WorkSpace");
+	RNA_def_property_pointer_funcs(prop, "rna_Context_workspace_get", NULL, NULL, NULL);
+
 	prop = RNA_def_property(srna, "screen", PROP_POINTER, PROP_NONE);
 	RNA_def_property_clear_flag(prop, PROP_EDITABLE);
 	RNA_def_property_struct_type(prop, "Screen");
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index 1a83184..b33d5f7 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -2422,6 +2422,7 @@ void wm_event_do_handlers(bContext *C)
 				if (is_playing_sound != -1) {
 					bool is_playing_screen;
 					CTX_wm_window_set(C, win);
+					CTX_wm_workspace_set(C, win->workspace);
 					CTX_wm_screen_set(C, win->screen);
 					CTX_data_scene_set(C, scene);
 					
@@ -2447,6 +2448,7 @@ void wm_event_do_handlers(bContext *C)
 					
 					CTX_data_scene_set(C, NULL);
 					CTX_wm_screen_set(C, NULL);
+					CTX_wm_workspace_set(C, NULL);
 					CTX_wm_window_set(C, NULL);
 				}
 			}




More information about the Bf-blender-cvs mailing list