[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