[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [23750] trunk/blender/source/blender/ editors/screen/screen_ops.c: Animation playback can now also be cancelled with ESC key.

Brecht Van Lommel brecht at blender.org
Fri Oct 9 23:50:33 CEST 2009


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);
 }





More information about the Bf-blender-cvs mailing list