[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [19414] branches/blender2.5/blender/source /blender: UI:

Brecht Van Lommel brecht at blender.org
Wed Mar 25 21:49:16 CET 2009


Revision: 19414
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19414
Author:   blendix
Date:     2009-03-25 21:49:15 +0100 (Wed, 25 Mar 2009)

Log Message:
-----------
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.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenkernel/BKE_context.h
    branches/blender2.5/blender/source/blender/blenkernel/intern/blender.c
    branches/blender2.5/blender/source/blender/blenkernel/intern/context.c
    branches/blender2.5/blender/source/blender/editors/include/UI_interface.h
    branches/blender2.5/blender/source/blender/editors/interface/interface.c
    branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c
    branches/blender2.5/blender/source/blender/editors/interface/interface_layout.c
    branches/blender2.5/blender/source/blender/editors/interface/interface_regions.c
    branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c
    branches/blender2.5/blender/source/blender/editors/transform/transform_conversions.c
    branches/blender2.5/blender/source/blender/windowmanager/intern/wm_draw.c
    branches/blender2.5/blender/source/blender/windowmanager/intern/wm_event_system.c
    branches/blender2.5/blender/source/blender/windowmanager/wm_event_system.h

Modified: branches/blender2.5/blender/source/blender/blenkernel/BKE_context.h
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/BKE_context.h	2009-03-25 20:29:01 UTC (rev 19413)
+++ branches/blender2.5/blender/source/blender/blenkernel/BKE_context.h	2009-03-25 20:49:15 UTC (rev 19414)
@@ -77,24 +77,8 @@
 bContext *CTX_create(void);
 void CTX_free(bContext *C);
 
-bContext *CTX_copy(const bContext *C, int thread);
-int CTX_thread(const bContext *C);
+bContext *CTX_copy(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);
-
 /* Window Manager Context */
 
 struct wmWindowManager *CTX_wm_manager(const bContext *C);
@@ -104,7 +88,7 @@
 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 @@
 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 @@
 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

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/blender.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/blender.c	2009-03-25 20:29:01 UTC (rev 19413)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/blender.c	2009-03-25 20:49:15 UTC (rev 19414)
@@ -348,7 +348,7 @@
 		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 */

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/context.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/context.c	2009-03-25 20:29:01 UTC (rev 19413)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/context.c	2009-03-25 20:49:15 UTC (rev 19414)
@@ -49,8 +49,6 @@
 /* struct */
 
 struct bContext {
-	bContextTask task;
-	ReportList *reports;
 	int thread;
 
 	/* windowmanager context */
@@ -60,9 +58,7 @@
 		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 @@
 	
 	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;
+	bContext *newC= MEM_dupallocN((void*)C);
 
-	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;
-
 	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 @@
 	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 @@
 	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 @@
 
 	/* 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 @@
 	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;
-}
-

Modified: branches/blender2.5/blender/source/blender/editors/include/UI_interface.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/UI_interface.h	2009-03-25 20:29:01 UTC (rev 19413)
+++ branches/blender2.5/blender/source/blender/editors/include/UI_interface.h	2009-03-25 20:49:15 UTC (rev 19414)
@@ -313,6 +313,7 @@
 void	uiBlockSetDirection	(uiBlock *block, int direction);
 void 	uiBlockFlipOrder	(uiBlock *block);
 void	uiBlockSetFlag		(uiBlock *block, int flag);
+void	uiBlockClearFlag	(uiBlock *block, int flag);
 void	uiBlockSetXOfs		(uiBlock *block, int xofs);
 
 int		uiButGetRetVal		(uiBut *but);
@@ -515,7 +516,7 @@
 
 void UI_add_region_handlers(struct ListBase *handlers);
 void UI_add_area_handlers(struct ListBase *handlers);
-void UI_add_popup_handlers(struct ListBase *handlers, uiPopupBlockHandle *menu);
+void UI_add_popup_handlers(struct bContext *C, struct ListBase *handlers, uiPopupBlockHandle *menu);
 
 /* Legacy code
  * Callbacks and utils to get 2.48 work */

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface.c	2009-03-25 20:29:01 UTC (rev 19413)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface.c	2009-03-25 20:49:15 UTC (rev 19414)
@@ -634,9 +634,14 @@
 
 void uiDrawBlock(const bContext *C, uiBlock *block)
 {
-	ARegion *ar= CTX_wm_region(C);
+	ARegion *ar;
 	uiBut *but;
 
+	/* get menu region or area region */
+	ar= CTX_wm_menu(C);
+	if(!ar)
+		ar= CTX_wm_region(C);
+
 	if(!block->endblock)
 		uiEndBlock(C, block);
 
@@ -646,11 +651,11 @@
 	if(block->flag & UI_BLOCK_LOOP)
 		uiDrawMenuBox(block->minx, block->miny, block->maxx, block->maxy, block->flag, block->direction);
 	else if(block->panel)
-		ui_draw_panel(CTX_wm_region(C), block);
+		ui_draw_panel(ar, block);
 
 	if(block->drawextra) block->drawextra(C, block);
 
-	for (but= block->buttons.first; but; but= but->next)
+	for(but= block->buttons.first; but; but= but->next)
 		ui_draw_but(ar, but);
 
 	ui_draw_links(block);
@@ -2306,7 +2311,11 @@
 	if(prop) {
 		but->rnapoin= *ptr;
 		but->rnaprop= prop;
-		but->rnaindex= index;
+
+		if(RNA_property_array_length(&but->rnapoin, but->rnaprop))
+			but->rnaindex= index;
+		else
+			but->rnaindex= 0;
 	}
 	
 	if (!prop || !RNA_property_editable(&but->rnapoin, prop)) {
@@ -2851,8 +2860,12 @@
 
 void uiBlockSetFlag(uiBlock *block, int flag)
 {
-	block->flag= flag;
+	block->flag|= flag;
 }
+void uiBlockClearFlag(uiBlock *block, int flag)
+{
+	block->flag&= ~flag;
+}
 void uiBlockSetXOfs(uiBlock *block, int xofs)
 {
 	block->xofs= xofs;

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c	2009-03-25 20:29:01 UTC (rev 19413)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c	2009-03-25 20:49:15 UTC (rev 19414)
@@ -2642,16 +2642,17 @@
 
 	/* verify if we can edit this button */
 	if(ELEM(event->type, LEFTMOUSE, RETKEY)) {
+		/* this should become disabled button .. */
 		if(but->lock) {
 			if(but->lockstr) {
-				BKE_report(CTX_reports(C), RPT_WARNING, but->lockstr);
+				BKE_report(NULL, RPT_WARNING, but->lockstr);
 				button_activate_state(C, but, BUTTON_STATE_EXIT);
 				return WM_UI_HANDLER_BREAK;
 			}
 		} 
 		else if(but->pointype && but->poin==0) {
 			/* there's a pointer needed */

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list