Revision: 35937
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=35937
Author:   ton
Date:     2011-04-01 12:51:04 +0000 (Fri, 01 Apr 2011)
Log Message:
-----------
Bugfix #26654

A lot of UV tools only work in Image editor, but the operator polls
allowed them to be used in 3d window too, causing crashes in cases.

Also added a poll() check in F6 redo menu.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/uvedit/uvedit_ops.c
    trunk/blender/source/blender/windowmanager/intern/wm_operators.c

Modified: trunk/blender/source/blender/editors/uvedit/uvedit_ops.c
===================================================================
--- trunk/blender/source/blender/editors/uvedit/uvedit_ops.c    2011-04-01 
12:21:41 UTC (rev 35936)
+++ trunk/blender/source/blender/editors/uvedit/uvedit_ops.c    2011-04-01 
12:51:04 UTC (rev 35937)
@@ -1057,7 +1057,7 @@
        
        /* api callbacks */
        ot->exec= align_exec;
-       ot->poll= ED_operator_uvedit;
+       ot->poll= ED_operator_image_active;     /* requires space image */;
 
        /* properties */
        RNA_def_enum(ot->srna, "axis", axis_items, 'a', "Axis", "Axis to align 
UV locations on.");
@@ -1761,7 +1761,7 @@
        /* api callbacks */
        ot->exec= select_exec;
        ot->invoke= select_invoke;
-       ot->poll= ED_operator_uvedit;
+       ot->poll= ED_operator_image_active;     /* requires space image */;
 
        /* properties */
        RNA_def_boolean(ot->srna, "extend", 0,
@@ -1810,7 +1810,7 @@
        /* api callbacks */
        ot->exec= select_loop_exec;
        ot->invoke= select_loop_invoke;
-       ot->poll= ED_operator_uvedit;
+       ot->poll= ED_operator_image_active;     /* requires space image */;
 
        /* properties */
        RNA_def_boolean(ot->srna, "extend", 0,
@@ -1890,7 +1890,7 @@
        
        /* api callbacks */
        ot->exec= select_linked_exec;
-       ot->poll= ED_operator_uvedit;
+       ot->poll= ED_operator_image_active;     /* requires space image */
 
        /* properties */
        RNA_def_boolean(ot->srna, "extend", 0,
@@ -1918,7 +1918,7 @@
        /* api callbacks */
        ot->invoke= select_linked_pick_invoke;
        ot->exec= select_linked_pick_exec;
-       ot->poll= ED_operator_uvedit;
+       ot->poll= ED_operator_image_active;     /* requires space image */;
 
        /* properties */
        RNA_def_boolean(ot->srna, "extend", 0,
@@ -2256,7 +2256,7 @@
        ot->invoke= WM_border_select_invoke;
        ot->exec= border_select_exec;
        ot->modal= WM_border_select_modal;
-       ot->poll= ED_operator_uvedit;
+       ot->poll= ED_operator_image_active;     /* requires space image */;
        
        /* flags */
        ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
@@ -2345,7 +2345,7 @@
        ot->invoke= WM_gesture_circle_invoke;
        ot->modal= WM_gesture_circle_modal;
        ot->exec= circle_select_exec;
-       ot->poll= ED_operator_uvedit;
+       ot->poll= ED_operator_image_active;     /* requires space image */;
        
        /* flags */
        ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
@@ -2419,7 +2419,7 @@
        
        /* api callbacks */
        ot->exec= snap_cursor_exec;
-       ot->poll= ED_operator_uvedit;
+       ot->poll= ED_operator_image_active;     /* requires space image */;
 
        /* properties */
        RNA_def_enum(ot->srna, "target", target_items, 0, "Target", "Target to 
snap the selected UV's to.");
@@ -2660,7 +2660,7 @@
        
        /* api callbacks */
        ot->exec= snap_selection_exec;
-       ot->poll= ED_operator_uvedit;
+       ot->poll= ED_operator_image_active;     /* requires space image */;
 
        /* properties */
        RNA_def_enum(ot->srna, "target", target_items, 0, "Target", "Target to 
snap the selected UV's to.");
@@ -3080,7 +3080,7 @@
        /* api callbacks */
        ot->exec= set_2d_cursor_exec;
        ot->invoke= set_2d_cursor_invoke;
-       ot->poll= ED_operator_uvedit;
+       ot->poll= ED_operator_image_active;     /* requires space image */;
 
        /* flags */
        ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
@@ -3148,7 +3148,7 @@
        /* api callbacks */
        ot->exec= set_tile_exec;
        ot->invoke= set_tile_invoke;
-       ot->poll= ED_operator_uvedit;
+       ot->poll= ED_operator_image_active;     /* requires space image */;
 
        /* flags */
        ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;

Modified: trunk/blender/source/blender/windowmanager/intern/wm_operators.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_operators.c    
2011-04-01 12:21:41 UTC (rev 35936)
+++ trunk/blender/source/blender/windowmanager/intern/wm_operators.c    
2011-04-01 12:51:04 UTC (rev 35937)
@@ -1041,10 +1041,15 @@
 
 int WM_operator_redo_popup(bContext *C, wmOperator *op)
 {
+       /* CTX_wm_reports(C) because operator is on stack, not active in event 
system */
        if((op->type->flag & OPTYPE_REGISTER)==0) {
-               BKE_reportf(op->reports, RPT_ERROR, "Operator '%s' does not 
have register enabled, incorrect invoke function.", op->type->idname);
+               BKE_reportf(CTX_wm_reports(C), RPT_ERROR, "Operator redo '%s' 
does not have register enabled, incorrect invoke function.", op->type->idname);
                return OPERATOR_CANCELLED;
        }
+       if(op->type->poll && op->type->poll(C)==0) {
+               BKE_reportf(CTX_wm_reports(C), RPT_ERROR, "Operator redo '%s': 
wrong context.", op->type->idname);
+               return OPERATOR_CANCELLED;
+       }
        
        uiPupBlock(C, wm_block_create_redo, op);
 

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

Reply via email to