[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [35937] trunk/blender/source/blender: Bugfix #26654

Ton Roosendaal ton at blender.org
Fri Apr 1 14:51:05 CEST 2011


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




More information about the Bf-blender-cvs mailing list