Revision: 19037
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19037
Author:   ton
Date:     2009-02-19 11:21:17 +0100 (Thu, 19 Feb 2009)

Log Message:
-----------
2.5

- Fix in ESC for render output window; it didn't check the 'full' and
  'prevspace' flags correct. In some cases it left the screen in 'full'
  mode on ESC.

- Added modal handler on a render, which catches the ESC while render,
  to prevent that ESC to be passed on to the image window.
  This handler can be further elaborated later to prevent edit accidents
  while render is in progress. 
  I already notice some derivedmesh/customdata free errors on render now

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c

Modified: branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c      
2009-02-19 07:01:49 UTC (rev 19036)
+++ branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c      
2009-02-19 10:21:17 UTC (rev 19037)
@@ -2145,6 +2145,22 @@
        return 0;
 }
 
+/* catch esc */
+static int screen_render_modal(bContext *C, wmOperator *op, wmEvent *event)
+{
+       /* no running blender, remove handler and pass through */
+       if(0==WM_jobs_test(CTX_wm_manager(C), CTX_data_scene(C)))
+          return OPERATOR_FINISHED|OPERATOR_PASS_THROUGH;
+       
+       /* running render */
+       switch (event->type) {
+               case ESCKEY:
+                       return OPERATOR_RUNNING_MODAL;
+                       break;
+       }
+       return OPERATOR_PASS_THROUGH;
+}
+
 /* using context, starts job */
 static int screen_render_invoke(bContext *C, wmOperator *op, wmEvent *event)
 {
@@ -2209,7 +2225,10 @@
        WM_cursor_wait(0);
        WM_event_add_notifier(C, NC_SCENE|ND_RENDER_RESULT, scene);
 
-       return OPERATOR_FINISHED;
+       /* add modal handler for ESC */
+       WM_event_add_modal_handler(C, &CTX_wm_window(C)->handlers, op);
+       
+       return OPERATOR_RUNNING_MODAL;
 }
 
 
@@ -2222,6 +2241,7 @@
        
        /* api callbacks */
        ot->invoke= screen_render_invoke;
+       ot->modal= screen_render_modal;
        ot->exec= screen_render_exec;
        
        ot->poll= ED_operator_screenactive;
@@ -2239,12 +2259,18 @@
        
        if(sima->flag & SI_PREVSPACE) {
                sima->flag &= ~SI_PREVSPACE;
-               ED_area_prevspace(C);
+               
+               if(sima->flag & SI_FULLWINDOW) {
+                       sima->flag &= ~SI_FULLWINDOW;
+                       ED_screen_full_prevspace(C);
+               }
+               else
+                       ED_area_prevspace(C);
        }
        else if(sima->flag & SI_FULLWINDOW) {
                sima->flag &= ~SI_FULLWINDOW;
-               ED_screen_full_prevspace(C);
-       }
+               ed_screen_fullarea(C, sa);
+       }               
        
        return OPERATOR_FINISHED;
 }


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

Reply via email to