Revision: 23750
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23750
Author:   blendix
Date:     2009-10-09 23:50:33 +0200 (Fri, 09 Oct 2009)

Log Message:
-----------
Animation playback can now also be cancelled with ESC key.

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    2009-10-09 
21:45:14 UTC (rev 23749)
+++ trunk/blender/source/blender/editors/screen/screen_ops.c    2009-10-09 
21:50:33 UTC (rev 23750)
@@ -2384,6 +2384,29 @@
        RNA_def_boolean(ot->srna, "sync", 0, "Sync", "Drop frames to maintain 
framerate and stay in sync with audio.");
 }
 
+static int screen_animation_cancel(bContext *C, wmOperator *op, wmEvent *event)
+{
+       bScreen *screen= CTX_wm_screen(C);
+       
+       if(screen->animtimer)
+               return screen_animation_play(C, op, event);
+       
+       return OPERATOR_PASS_THROUGH;
+}
+
+static void SCREEN_OT_animation_cancel(wmOperatorType *ot)
+{
+       /* identifiers */
+       ot->name= "Cancel Animation";
+       ot->description= "Cancel animation.";
+       ot->idname= "SCREEN_OT_animation_cancel";
+       
+       /* api callbacks */
+       ot->invoke= screen_animation_cancel;
+       
+       ot->poll= ED_operator_screenactive;
+}
+
 /* ************** border select operator (template) 
***************************** */
 
 /* operator state vars used: (added by default WM callbacks)   
@@ -2994,6 +3017,7 @@
        /* test if we have a temp screen in front */
        if(CTX_wm_window(C)->screen->full==SCREENTEMP) {
                wm_window_lower(CTX_wm_window(C));
+               return OPERATOR_FINISHED;
        }
        /* determine if render already shows */
        else if(sima->flag & SI_PREVSPACE) {
@@ -3005,13 +3029,16 @@
                }
                else
                        ED_area_prevspace(C);
+
+               return OPERATOR_FINISHED;
        }
        else if(sima->flag & SI_FULLWINDOW) {
                sima->flag &= ~SI_FULLWINDOW;
                ed_screen_fullarea(C, sa);
-       }               
-       
-       return OPERATOR_FINISHED;
+               return OPERATOR_FINISHED;
+       }
+
+       return OPERATOR_PASS_THROUGH;
 }
 
 static void SCREEN_OT_render_view_cancel(struct wmOperatorType *ot)
@@ -3268,6 +3295,7 @@
        
        WM_operatortype_append(SCREEN_OT_animation_step);
        WM_operatortype_append(SCREEN_OT_animation_play);
+       WM_operatortype_append(SCREEN_OT_animation_cancel);
        
        /* render */
        WM_operatortype_append(SCREEN_OT_render);
@@ -3408,6 +3436,7 @@
        WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", AKEY, KM_PRESS, 
KM_ALT, 0);
        WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", KKEY, KM_PRESS, 
0, LKEY);
        RNA_boolean_set(WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", 
AKEY, KM_PRESS, KM_ALT|KM_SHIFT, 0)->ptr, "reverse", 1);
+       WM_keymap_add_item(keymap, "SCREEN_OT_animation_cancel", ESCKEY, 
KM_PRESS, 0, 0);
 
        keymap_modal_set(keyconf);
 }


_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to