diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2009-03-25 23:49:15 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2009-03-25 23:49:15 +0300 |
commit | d93fd9ffc132cf094dec0d3c65bd0726718c66a5 (patch) | |
tree | 6d4206f183f06c37f1d61138ddf777bdfb9a16e5 /source/blender/blenkernel | |
parent | 985a4c1e5ed9c00face5bcf69048bf108ff99aaf (diff) |
UI:
* Screen level regions created for menus are now a separate
CTX_wm_menu in the context, so they don't interfere with
existing regions.
* Fix context in popup menus to always come from the area
and region the popup was opened from.
* Removed some unused context stuff: tasks and reports.
The places that were using context reports were using it
wrong anyway.
* Fix F6 closing immediately after editing a button, by
making uiBlockSetFlag not clear existing flags anymore.
* Don't use ":" in boolean X/Y/Z buttons.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_context.h | 33 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/blender.c | 2 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/context.c | 87 |
3 files changed, 18 insertions, 104 deletions
diff --git a/source/blender/blenkernel/BKE_context.h b/source/blender/blenkernel/BKE_context.h index dbe5c610688..f08b14c7820 100644 --- a/source/blender/blenkernel/BKE_context.h +++ b/source/blender/blenkernel/BKE_context.h @@ -77,23 +77,7 @@ typedef int (*bContextDataCallback)(const bContext *C, bContext *CTX_create(void); void CTX_free(bContext *C); -bContext *CTX_copy(const bContext *C, int thread); -int CTX_thread(const bContext *C); - -/* Context Task and Reports */ - -typedef enum bContextTask { - CTX_DRAWING = 0, - CTX_EDITING = 1, - CTX_EVALUATING = 2, - CTX_UNDEFINED = 3 -} bContextTask; - -bContextTask CTX_task(const bContext *C); -void CTX_task_set(bContext *C, bContextTask task); - -struct ReportList *CTX_reports(const bContext *C); -void CTX_reports_set(bContext *C, struct ReportList *reports); +bContext *CTX_copy(const bContext *C); /* Window Manager Context */ @@ -104,7 +88,7 @@ struct ScrArea *CTX_wm_area(const bContext *C); struct SpaceLink *CTX_wm_space_data(const bContext *C); struct ARegion *CTX_wm_region(const bContext *C); void *CTX_wm_region_data(const bContext *C); -struct uiBlock *CTX_wm_ui_block(const bContext *C); +struct ARegion *CTX_wm_menu(const bContext *C); struct View3D *CTX_wm_view3d(const bContext *C); struct RegionView3D *CTX_wm_region_view3d(const bContext *C); @@ -114,9 +98,9 @@ struct SpaceImage *CTX_wm_space_image(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_screen_set(bContext *C, struct bScreen *screen); /* to be removed */ -void CTX_wm_area_set(bContext *C, struct ScrArea *win); -void CTX_wm_region_set(bContext *C, struct ARegion *win); -void CTX_wm_ui_block_set(bContext *C, struct uiBlock *block, bContextDataCallback cb); +void CTX_wm_area_set(bContext *C, struct ScrArea *sa); +void CTX_wm_region_set(bContext *C, struct ARegion *region); +void CTX_wm_menu_set(bContext *C, struct ARegion *menu); /* Data Context @@ -194,13 +178,6 @@ struct bPoseChannel *CTX_data_active_pchan(const bContext *C); int CTX_data_selected_pchans(const bContext *C, ListBase *list); int CTX_data_visible_pchans(const bContext *C, ListBase *list); -/* Data Evaluation Context */ - -float CTX_eval_frame(const bContext *C); - -int CTX_eval_render_resolution(const bContext *C); -void CTX_eval_render_resolution_set(bContext *C, int render); - #ifdef __cplusplus } #endif diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c index be64faec3cf..2033250585d 100644 --- a/source/blender/blenkernel/intern/blender.c +++ b/source/blender/blenkernel/intern/blender.c @@ -348,7 +348,7 @@ static void setup_app_data(bContext *C, BlendFileData *bfd, char *filename) CTX_data_scene_set(C, bfd->curscreen->scene); CTX_wm_area_set(C, NULL); CTX_wm_region_set(C, NULL); - CTX_wm_ui_block_set(C, NULL, NULL); + CTX_wm_menu_set(C, NULL); } /* this can happen when active scene was lib-linked, and doesnt exist anymore */ diff --git a/source/blender/blenkernel/intern/context.c b/source/blender/blenkernel/intern/context.c index df71dd6037a..47622611cb9 100644 --- a/source/blender/blenkernel/intern/context.c +++ b/source/blender/blenkernel/intern/context.c @@ -49,8 +49,6 @@ /* struct */ struct bContext { - bContextTask task; - ReportList *reports; int thread; /* windowmanager context */ @@ -60,9 +58,7 @@ struct bContext { struct bScreen *screen; struct ScrArea *area; struct ARegion *region; - struct uiBlock *block; - - bContextDataCallback block_cb; + struct ARegion *menu; } wm; /* data context */ @@ -87,57 +83,21 @@ bContext *CTX_create() C= MEM_callocN(sizeof(bContext), "bContext"); - C->task= CTX_UNDEFINED; - C->thread= 0; - return C; } -bContext *CTX_copy(const bContext *C, int thread) +bContext *CTX_copy(const bContext *C) { - bContext *newC; - - if(C->task != CTX_UNDEFINED) - BKE_report(C->reports, RPT_ERROR_INVALID_CONTEXT, "CTX_copy not allowed for this task"); - - newC= MEM_dupallocN((void*)C); - newC->thread= thread; + bContext *newC= MEM_dupallocN((void*)C); return newC; } -int CTX_thread(const bContext *C) -{ - return C->thread; -} - void CTX_free(bContext *C) { MEM_freeN(C); } -/* context task and reports */ - -bContextTask CTX_task(const bContext *C) -{ - return C->task; -} - -void CTX_task_set(bContext *C, bContextTask task) -{ - C->task= task; -} - -ReportList *CTX_reports(const bContext *C) -{ - return C->reports; -} - -void CTX_reports_set(bContext *C, ReportList *reports) -{ - C->reports= reports; -} - /* window manager context */ wmWindowManager *CTX_wm_manager(const bContext *C) @@ -175,9 +135,9 @@ void *CTX_wm_region_data(const bContext *C) return (C->wm.region)? C->wm.region->regiondata: NULL; } -struct uiBlock *CTX_wm_ui_block(const bContext *C) +struct ARegion *CTX_wm_menu(const bContext *C) { - return C->wm.block; + return C->wm.menu; } View3D *CTX_wm_view3d(const bContext *C) @@ -246,10 +206,9 @@ void CTX_wm_region_set(bContext *C, ARegion *region) C->wm.region= region; } -void CTX_wm_ui_block_set(bContext *C, struct uiBlock *block, bContextDataCallback cb) +void CTX_wm_menu_set(bContext *C, ARegion *menu) { - C->wm.block= block; - C->wm.block_cb= cb; + C->wm.menu= menu; } /* data context utility functions */ @@ -267,23 +226,19 @@ static int ctx_data_get(bContext *C, const char *member, bContextDataResult *res /* we check recursion to ensure that we do not get infinite * loops requesting data from ourselfs in a context callback */ - if(!done && recursion < 1 && C->wm.block) { + if(!done && recursion < 1 && C->wm.region) { C->data.recursion= 1; - done= C->wm.block_cb(C, member, result); - } - if(!done && recursion < 2 && C->wm.region) { - C->data.recursion= 2; if(C->wm.region->type && C->wm.region->type->context) done= C->wm.region->type->context(C, member, result); } - if(!done && recursion < 3 && C->wm.area) { - C->data.recursion= 3; + if(!done && recursion < 2 && C->wm.area) { + C->data.recursion= 2; if(C->wm.area->type && C->wm.area->type->context) done= C->wm.area->type->context(C, member, result); } - if(!done && recursion < 4 && C->wm.screen) { + if(!done && recursion < 3 && C->wm.screen) { bContextDataCallback cb= C->wm.screen->context; - C->data.recursion= 4; + C->data.recursion= 3; if(cb) done= cb(C, member, result); } @@ -562,21 +517,3 @@ int CTX_data_visible_pchans(const bContext *C, ListBase *list) return ctx_data_collection_get(C, "visible_pchans", list); } - -/* data evaluation */ - -float CTX_eval_frame(const bContext *C) -{ - return (C->data.scene)? C->data.scene->r.cfra: 0.0f; -} - -int CTX_eval_render_resolution(const bContext *C) -{ - return C->eval.render; -} - -void CTX_eval_render_resolution_set(bContext *C, int render) -{ - C->eval.render= render; -} - |