[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [35389] trunk/blender/source/blender/ editors: Bugfix #26394

Ton Roosendaal ton at blender.org
Mon Mar 7 19:05:42 CET 2011


Revision: 35389
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=35389
Author:   ton
Date:     2011-03-07 18:05:41 +0000 (Mon, 07 Mar 2011)
Log Message:
-----------
Bugfix #26394

Using Marker menu (dopesheet) didn't work, the operators themselves
were checking Y coordinate of event.
Handlers also support boundbox checks. For this case it needed a bit
special handling. But works :)

Modified Paths:
--------------
    trunk/blender/source/blender/editors/animation/anim_markers.c
    trunk/blender/source/blender/editors/screen/area.c

Modified: trunk/blender/source/blender/editors/animation/anim_markers.c
===================================================================
--- trunk/blender/source/blender/editors/animation/anim_markers.c	2011-03-07 14:56:19 UTC (rev 35388)
+++ trunk/blender/source/blender/editors/animation/anim_markers.c	2011-03-07 18:05:41 UTC (rev 35389)
@@ -413,9 +413,6 @@
  * primary operations of those editors.
  */
 
-/* maximum y-axis value (in region screen-space) that marker events should still be accepted for  */
-#define ANIMEDIT_MARKER_YAXIS_MAX 	30
-
 /* ------------------------ */
 
 /* special poll() which checks if there are selected markers first */
@@ -460,15 +457,7 @@
 	ScrArea *sa = CTX_wm_area(C);
 	int retval = OPERATOR_PASS_THROUGH;
 	
-	/* only timeline view doesn't need calling-location validation as it's the only dedicated view */
-	if (sa->spacetype != SPACE_TIME) {
-		/* restrict y-values to within ANIMEDIT_MARKER_YAXIS_MAX of the view's vertical extents, including scrollbars */
-		if (evt->mval[1] > ANIMEDIT_MARKER_YAXIS_MAX) {
-			/* not ok... "pass-through" to let normal editor's operators have a chance at tackling this event... */
-			//printf("MARKER-WRAPPER-DEBUG: event mval[1] = %d, so over accepted tolerance\n", evt->mval[1]);
-			return OPERATOR_CANCELLED|OPERATOR_PASS_THROUGH;
-		}
-	}
+	/* removed check for Y coord of event, keymap has bounbox now */
 	
 	/* allow operator to run now */
 	if (invoke_func)

Modified: trunk/blender/source/blender/editors/screen/area.c
===================================================================
--- trunk/blender/source/blender/editors/screen/area.c	2011-03-07 14:56:19 UTC (rev 35388)
+++ trunk/blender/source/blender/editors/screen/area.c	2011-03-07 18:05:41 UTC (rev 35389)
@@ -843,7 +843,7 @@
 		wm_subwindow_position(win, ar->swinid, &ar->winrct);
 }
 
-static void ed_default_handlers(wmWindowManager *wm, ListBase *handlers, int flag)
+static void ed_default_handlers(wmWindowManager *wm, ScrArea *sa, ListBase *handlers, int flag)
 {
 	/* note, add-handler checks if it already exists */
 	
@@ -860,8 +860,20 @@
 	if(flag & ED_KEYMAP_MARKERS) {
 		/* time-markers */
 		wmKeyMap *keymap= WM_keymap_find(wm->defaultconf, "Markers", 0, 0);
-		WM_event_add_keymap_handler(handlers, keymap);
-		// XXX need boundbox check urgently!!!
+		
+		/* time space only has this keymap, the others get a boundbox restricted map */
+		if(sa->spacetype!=SPACE_TIME) {
+			ARegion *ar;
+			static rcti rect= {0, 10000, 0, 30};	/* same local check for all areas */
+
+			for(ar= sa->regionbase.first; ar; ar= ar->next)
+				if(ar->regiontype == RGN_TYPE_WINDOW)
+					break;
+			if(ar)
+				WM_event_add_keymap_handler_bb(handlers, keymap, &rect, &ar->winrct);
+		}
+		else
+			WM_event_add_keymap_handler(handlers, keymap);
 	}
 	if(flag & ED_KEYMAP_ANIMATION) {
 		/* frame changing and timeline operators (for time spaces) */
@@ -914,7 +926,7 @@
 	region_rect_recursive(sa, sa->regionbase.first, &rect, 0);
 	
 	/* default area handlers */
-	ed_default_handlers(wm, &sa->handlers, sa->type->keymapflag);
+	ed_default_handlers(wm, sa, &sa->handlers, sa->type->keymapflag);
 	/* checks spacedata, adds own handlers */
 	if(sa->type->init)
 		sa->type->init(wm, sa);
@@ -925,7 +937,7 @@
 		
 		if(ar->swinid) {
 			/* default region handlers */
-			ed_default_handlers(wm, &ar->handlers, ar->type->keymapflag);
+			ed_default_handlers(wm, sa, &ar->handlers, ar->type->keymapflag);
 			/* own handlers */
 			if(ar->type->init)
 				ar->type->init(wm, ar);




More information about the Bf-blender-cvs mailing list