[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28151] trunk/blender/source/blender/ editors/interface: Button panels need to get handlers and keymaps...

Ton Roosendaal ton at blender.org
Mon Apr 12 19:45:52 CEST 2010


Revision: 28151
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28151
Author:   ton
Date:     2010-04-12 19:45:51 +0200 (Mon, 12 Apr 2010)

Log Message:
-----------
Button panels need to get handlers and keymaps... but for now sneaked
in a handy key : Akey in buttons window on a panel will
open or close it. 

Modified Paths:
--------------
    trunk/blender/source/blender/editors/interface/interface_handlers.c
    trunk/blender/source/blender/editors/interface/interface_panel.c

Modified: trunk/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_handlers.c	2010-04-12 17:34:06 UTC (rev 28150)
+++ trunk/blender/source/blender/editors/interface/interface_handlers.c	2010-04-12 17:45:51 UTC (rev 28151)
@@ -5587,8 +5587,7 @@
 	/* either handle events for already activated button or try to activate */
 	but= ui_but_find_activated(ar);
 
-	if(!but || !button_modal_state(but->active->state))
-		retval= ui_handler_panel_region(C, event);
+	retval= ui_handler_panel_region(C, event);
 
 	if(retval == WM_UI_HANDLER_CONTINUE)
 		retval= ui_handle_list_event(C, event, ar);

Modified: trunk/blender/source/blender/editors/interface/interface_panel.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_panel.c	2010-04-12 17:34:06 UTC (rev 28150)
+++ trunk/blender/source/blender/editors/interface/interface_panel.c	2010-04-12 17:45:51 UTC (rev 28151)
@@ -970,6 +970,8 @@
 	/* check open/collapsed button */
 	if(event==RETKEY)
 		button= 1;
+	else if(event==AKEY)
+		button= 1;
 	else if(block->panel->flag & PNL_CLOSEDX) {
 		if(my >= block->maxy) button= 1;
 	}
@@ -1024,6 +1026,8 @@
 }
 
 /* XXX should become modal keymap */
+/* AKey is opening/closing panels, independent of button state now */
+
 int ui_handler_panel_region(bContext *C, wmEvent *event)
 {
 	ARegion *ar= CTX_wm_region(C);
@@ -1032,11 +1036,6 @@
 	int retval, mx, my, inside_header= 0, inside_scale= 0, inside;
 
 	retval= WM_UI_HANDLER_CONTINUE;
-
-	/* buttons get priority */
-	if(ui_button_is_active(ar))
-		return retval;
-
 	for(block=ar->uiblocks.last; block; block=block->prev) {
 		mx= event->x;
 		my= event->y;
@@ -1054,7 +1053,25 @@
 		if(block->minx <= mx && block->maxx >= mx)
 			if(block->miny <= my && block->maxy+PNL_HEADER >= my)
 				inside= 1;
-
+		
+		if(inside && event->val==KM_PRESS) {
+			if(event->type == AKEY) {
+				
+				if(pa->flag & PNL_CLOSEDY) {
+					if((block->maxy <= my) && (block->maxy+PNL_HEADER >= my))
+						ui_handle_panel_header(C, block, mx, my, event->type);
+				}
+				else
+					ui_handle_panel_header(C, block, mx, my, event->type);
+				
+				continue;
+			}
+		}
+		
+		/* on active button, do not handle panels */
+		if(ui_button_is_active(ar))
+			continue;
+		
 		if(inside) {
 			/* clicked at panel header? */
 			if(pa->flag & PNL_CLOSEDX) {





More information about the Bf-blender-cvs mailing list