[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29328] trunk/blender/source/blender/ editors/screen/screen_ops.c: Bugfix #22453: Jump to Next keyframe doesn' t work on some frame
Joshua Leung
aligorith at gmail.com
Tue Jun 8 02:08:45 CEST 2010
Revision: 29328
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29328
Author: aligorith
Date: 2010-06-08 02:08:45 +0200 (Tue, 08 Jun 2010)
Log Message:
-----------
Bugfix #22453: Jump to Next keyframe doesn't work on some frame
Jump to keyframe would get 'stuck' if it encountered a keyframe on "fraction" frames. Now, it will try multiple times until it finds one.
Modified Paths:
--------------
trunk/blender/source/blender/editors/screen/screen_ops.c
Modified: trunk/blender/source/blender/editors/screen/screen_ops.c
===================================================================
--- trunk/blender/source/blender/editors/screen/screen_ops.c 2010-06-08 00:02:42 UTC (rev 29327)
+++ trunk/blender/source/blender/editors/screen/screen_ops.c 2010-06-08 00:08:45 UTC (rev 29328)
@@ -1571,6 +1571,7 @@
ActKeyColumn *ak;
float cfra= (scene)? (float)(CFRA) : 0.0f;
short next= RNA_boolean_get(op->ptr, "next");
+ short done = 0;
/* sanity checks */
if (scene == NULL)
@@ -1589,15 +1590,27 @@
BLI_dlrbTree_linkedlist_sync(&keys);
/* find matching keyframe in the right direction */
- if (next)
- ak= (ActKeyColumn *)BLI_dlrbTree_search_next(&keys, compare_ak_cfraPtr, &cfra);
- else
- ak= (ActKeyColumn *)BLI_dlrbTree_search_prev(&keys, compare_ak_cfraPtr, &cfra);
+ do {
+ if (next)
+ ak= (ActKeyColumn *)BLI_dlrbTree_search_next(&keys, compare_ak_cfraPtr, &cfra);
+ else
+ ak= (ActKeyColumn *)BLI_dlrbTree_search_prev(&keys, compare_ak_cfraPtr, &cfra);
+
+ if (ak) {
+ if (CFRA != (int)ak->cfra) {
+ /* this changes the frame, so set the frame and we're done */
+ CFRA= (int)ak->cfra;
+ done = 1;
+ }
+ else {
+ /* make this the new starting point for the search */
+ cfra = ak->cfra;
+ }
+ }
+ } while ((ak != NULL) && (done == 0));
- /* set the new frame (if keyframe found) */
- if (ak)
- CFRA= (int)ak->cfra;
- else
+ /* any success? */
+ if (done == 0)
BKE_report(op->reports, RPT_INFO, "No more keyframes to jump to in this direction");
/* free temp stuff */
More information about the Bf-blender-cvs
mailing list