[Bf-blender-cvs] [1c9c25e5ae1] topbar: Cleanup: Avoid duplicated topbar creation code in versioning code
Julian Eisel
noreply at git.blender.org
Mon Oct 23 03:05:06 CEST 2017
Commit: 1c9c25e5ae177bfd44fb314a0dec54ff61af6874
Author: Julian Eisel
Date: Mon Oct 23 03:04:24 2017 +0200
Branches: topbar
https://developer.blender.org/rB1c9c25e5ae177bfd44fb314a0dec54ff61af6874
Cleanup: Avoid duplicated topbar creation code in versioning code
===================================================================
M source/blender/blenloader/intern/versioning_280.c
M source/blender/editors/include/ED_screen.h
M source/blender/editors/screen/screen_edit.c
M source/blenderplayer/bad_level_call_stubs/stubs.c
===================================================================
diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c
index a204f9fe6d3..e51c790dbcd 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -332,34 +332,14 @@ void do_versions_after_linking_280(Main *main)
}
if (!MAIN_VERSION_ATLEAST(main, 280, 2)) {
- const short size_y = 2 * HEADERY;
+ /* Avoid including ED_ stuff here. */
+ extern void ED_screen_global_topbar_area_create(const struct bContext *, wmWindow *, const bScreen *);
for (wmWindowManager *wm = main->wm.first; wm; wm = wm->id.next) {
for (wmWindow *win = wm->windows.first; win; win = win->next) {
const bScreen *screen = BKE_workspace_active_screen_get(win->workspace_hook);
-
- /* XXX duplicated from ED_screen_global_areas_create */
- if (screen->temp == 0) {
- ScrArea *sa = MEM_callocN(sizeof(*sa), "do version topbar area");
- SpaceType *st = BKE_spacetype_from_id(SPACE_TOPBAR);
- SpaceLink *sl = st->new(NULL); /* XXX passing NULL as context */
-
- sa->v1 = MEM_callocN(sizeof(*sa->v1), "do_version topbar vert");
- sa->v2 = MEM_callocN(sizeof(*sa->v2), "do_version topbar vert");
- sa->v3 = MEM_callocN(sizeof(*sa->v3), "do_version topbar vert");
- sa->v4 = MEM_callocN(sizeof(*sa->v4), "do_version topbar vert");
- /* Actual coordinates of area verts are set later (screen_test_scale) */
-
- sa->spacetype = sa->butspacetype = SPACE_TOPBAR;
- sa->fixed_height = size_y;
- sa->headertype = HEADERTOP;
-
- BLI_addhead(&win->global_areas, sa);
-
- BLI_addhead(&sa->spacedata, sl);
- sa->regionbase = sl->regionbase;
- BLI_listbase_clear(&sl->regionbase);
- }
+ /* Not sure if passing NULL as context is so great... */
+ ED_screen_global_topbar_area_create(NULL, win, screen);
}
}
diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h
index 55a5869c331..705154181a0 100644
--- a/source/blender/editors/include/ED_screen.h
+++ b/source/blender/editors/include/ED_screen.h
@@ -93,7 +93,13 @@ int ED_area_header_switchbutton(const struct bContext *C, struct uiBlock *bl
void ED_area_initialize(struct wmWindowManager *wm, struct wmWindow *win, struct ScrArea *sa);
void ED_area_exit(struct bContext *C, struct ScrArea *sa);
int ED_screen_area_active(const struct bContext *C);
-void ED_screen_global_areas_create(const struct bContext *C, struct wmWindow *win);
+void ED_screen_global_topbar_area_create(
+ const struct bContext *C,
+ struct wmWindow *win,
+ const struct bScreen *screen);
+void ED_screen_global_areas_create(
+ const struct bContext *C,
+ struct wmWindow *win);
void ED_area_do_listen(struct bScreen *sc, ScrArea *sa, struct wmNotifier *note, Scene *scene,
struct WorkSpace *workspace);
void ED_area_tag_redraw(ScrArea *sa);
diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c
index a08ed449e25..0003d01df51 100644
--- a/source/blender/editors/screen/screen_edit.c
+++ b/source/blender/editors/screen/screen_edit.c
@@ -1100,15 +1100,13 @@ int ED_screen_area_active(const bContext *C)
return 0;
}
-void ED_screen_global_areas_create(const bContext *C, wmWindow *win)
+void ED_screen_global_topbar_area_create(const bContext *C, wmWindow *win, const bScreen *screen)
{
- const bScreen *screen = BKE_workspace_active_screen_get(win->workspace_hook);
- const short size_y = 2 * HEADERY;
-
if (screen->temp == 0) {
ScrArea *sa = MEM_callocN(sizeof(*sa), "top bar area");
SpaceType *st = BKE_spacetype_from_id(SPACE_TOPBAR);
SpaceLink *sl = st->new(C);
+ const short size_y = 2 * HEADERY;
sa->v1 = MEM_callocN(sizeof(*sa->v1), __func__);
sa->v2 = MEM_callocN(sizeof(*sa->v2), __func__);
@@ -1126,6 +1124,13 @@ void ED_screen_global_areas_create(const bContext *C, wmWindow *win)
sa->regionbase = sl->regionbase;
BLI_listbase_clear(&sl->regionbase);
}
+ /* Do not create more area types here! Function is called in versioning code (versioning_280.c). */
+}
+
+void ED_screen_global_areas_create(const bContext *C, wmWindow *win)
+{
+ const bScreen *screen = BKE_workspace_active_screen_get(win->workspace_hook);
+ ED_screen_global_topbar_area_create(C, win, screen);
}
diff --git a/source/blenderplayer/bad_level_call_stubs/stubs.c b/source/blenderplayer/bad_level_call_stubs/stubs.c
index b7d8c08085c..d8ab6295f27 100644
--- a/source/blenderplayer/bad_level_call_stubs/stubs.c
+++ b/source/blenderplayer/bad_level_call_stubs/stubs.c
@@ -552,6 +552,7 @@ void ED_node_shader_default(const struct bContext *C, struct ID *id) RET_NONE
void ED_screen_animation_timer_update(struct bScreen *screen, int redraws, int refresh) RET_NONE
struct bScreen *ED_screen_animation_playing(const struct wmWindowManager *wm) RET_NULL
struct Scene *ED_screen_scene_find(const struct bScreen *screen, const struct wmWindowManager *wm) RET_NULL
+void ED_screen_global_topbar_area_create(const struct bContext *C, struct wmWindow *win, const struct bScreen *screen) RET_NONE
bool ED_scene_render_layer_delete(struct Main *bmain, Scene *scene, SceneLayer *layer, ReportList *reports) RET_ZERO
void ED_base_object_select(struct BaseLegacy *base, short mode) RET_NONE
void ED_object_base_select(struct Base *base, short mode) RET_NONE
More information about the Bf-blender-cvs
mailing list