Revision: 47719
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47719
Author:   aligorith
Date:     2012-06-11 04:13:39 +0000 (Mon, 11 Jun 2012)
Log Message:
-----------
Bugfix [#28962] Changing actions via undo/delete all keyframes lacks UI refresh

Slightly hacky fix to get updates working for Action Editor header when there
are changes of the active action (via undo and/or deleting all keyframes at
once). Since the action referenced by the editor only gets updated when anim
channel filtering (e.g. as a result of the channel syncing operation) is
invoked. Added comments noting where these updates actually occur

Modified Paths:
--------------
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/editors/space_action/space_action.c

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c   2012-06-11 
03:06:31 UTC (rev 47718)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c   2012-06-11 
04:13:39 UTC (rev 47719)
@@ -5551,6 +5551,12 @@
                                        
                                        if (saction->ads.filter_grp)
                                                saction->ads.filter_grp= 
restore_pointer_by_name(newmain, (ID *)saction->ads.filter_grp, 0);
+                                               
+                                       
+                                       /* force recalc of list of channels, 
potentially updating the active action 
+                                        * while we're at it (as it can only be 
updated that way) [#28962] 
+                                        */
+                                       saction->flag |= 
SACTION_TEMP_NEEDCHANSYNC;
                                }
                                else if (sl->spacetype == SPACE_IMAGE) {
                                        SpaceImage *sima = (SpaceImage *)sl;

Modified: trunk/blender/source/blender/editors/space_action/space_action.c
===================================================================
--- trunk/blender/source/blender/editors/space_action/space_action.c    
2012-06-11 03:06:31 UTC (rev 47718)
+++ trunk/blender/source/blender/editors/space_action/space_action.c    
2012-06-11 04:13:39 UTC (rev 47719)
@@ -435,6 +435,12 @@
                                        break;
                        }                       
                        break;
+               case NC_WINDOW:
+                       if (saction->flag & SACTION_TEMP_NEEDCHANSYNC) {
+                               /* force redraw/refresh after undo/redo - 
[#28962] */
+                               ED_area_tag_refresh(sa);
+                       }
+                       break;
        }
 }
 
@@ -464,9 +470,21 @@
         * NOTE: the temp flag is used to indicate when this needs to be done, 
and will be cleared once handled
         */
        if (saction->flag & SACTION_TEMP_NEEDCHANSYNC) {
+               ARegion *ar;
+               
+               /* Perform syncing of channel state incl. selection
+                * Active action setting also occurs here (as part of anim 
channel filtering in anim_filter.c)
+                */
                ANIM_sync_animchannels_to_data(C);
                saction->flag &= ~SACTION_TEMP_NEEDCHANSYNC;
+               
+               /* Tag everything for redraw
+                * - Regions (such as header) need to be manually tagged for 
redraw too
+                *   or else they don't update [#28962]
+                */
                ED_area_tag_redraw(sa);
+               for (ar = sa->regionbase.first; ar; ar = ar->next)
+                       ED_region_tag_redraw(ar);
        }
        
        /* region updates? */

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to