[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54203] trunk/blender/source/blender/ editors: fix [#33740] Incorecct UV mapping from camera view

Campbell Barton ideasman42 at gmail.com
Wed Jan 30 12:06:05 CET 2013


Revision: 54203
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54203
Author:   campbellbarton
Date:     2013-01-30 11:06:02 +0000 (Wed, 30 Jan 2013)
Log Message:
-----------
fix [#33740] Incorecct UV mapping from camera view

Bug was in fact that the options for this operator couldn't be accessed (unless you knew to press f6), now the redo panel sets the window area before polling.

Now other operators that use the window region will show settings too.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_clip/clip_toolbar.c
    trunk/blender/source/blender/editors/space_view3d/view3d_toolbar.c
    trunk/blender/source/blender/editors/util/undo.c

Modified: trunk/blender/source/blender/editors/space_clip/clip_toolbar.c
===================================================================
--- trunk/blender/source/blender/editors/space_clip/clip_toolbar.c	2013-01-30 07:33:26 UTC (rev 54202)
+++ trunk/blender/source/blender/editors/space_clip/clip_toolbar.c	2013-01-30 11:06:02 UTC (rev 54203)
@@ -219,23 +219,32 @@
 static void clip_panel_operator_redo(const bContext *C, Panel *pa)
 {
 	wmOperator *op = WM_operator_last_redo(C);
-	uiBlock *block;
+	ARegion *ar;
+	ARegion *ar1;
 
 	if (op == NULL)
 		return;
 
-	if (WM_operator_poll((bContext *)C, op->type) == 0)
-		return;
+	/* keep in sync with logic in ED_undo_operator_repeat() */
+	ar = CTX_wm_region(C);
+	ar1 = BKE_area_find_region_type(CTX_wm_area(C), RGN_TYPE_WINDOW);
+	if (ar1)
+		CTX_wm_region_set((bContext *)C, ar1);
 
-	block = uiLayoutGetBlock(pa->layout);
+	if (WM_operator_poll((bContext *)C, op->type)) {
+		uiBlock *block = uiLayoutGetBlock(pa->layout);
 
-	if (!WM_operator_check_ui_enabled(C, op->type->name))
-		uiLayoutSetEnabled(pa->layout, FALSE);
+		if (!WM_operator_check_ui_enabled(C, op->type->name))
+			uiLayoutSetEnabled(pa->layout, FALSE);
 
-	/* note, blockfunc is a default but->func, use Handle func to allow button callbacks too */
-	uiBlockSetHandleFunc(block, ED_undo_operator_repeat_cb_evt, op);
+		/* note, blockfunc is a default but->func, use Handle func to allow button callbacks too */
+		uiBlockSetHandleFunc(block, ED_undo_operator_repeat_cb_evt, op);
 
-	clip_panel_operator_redo_operator(C, pa, op);
+		clip_panel_operator_redo_operator(C, pa, op);
+	}
+
+	/* set region back */
+	CTX_wm_region_set((bContext *)C, ar);
 }
 
 void ED_clip_tool_props_register(ARegionType *art)

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_toolbar.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_toolbar.c	2013-01-30 07:33:26 UTC (rev 54202)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_toolbar.c	2013-01-30 11:06:02 UTC (rev 54203)
@@ -101,22 +101,33 @@
 static void view3d_panel_operator_redo(const bContext *C, Panel *pa)
 {
 	wmOperator *op = WM_operator_last_redo(C);
-	uiBlock *block;
-	
-	if (op == NULL)
+	ARegion *ar;
+	ARegion *ar1;
+
+	if (op == NULL) {
 		return;
-	if (WM_operator_poll((bContext *)C, op->type) == 0)
-		return;
-	
-	block = uiLayoutGetBlock(pa->layout);
-	
-	if (!WM_operator_check_ui_enabled(C, op->type->name))
-		uiLayoutSetEnabled(pa->layout, FALSE);
+	}
 
-	/* note, blockfunc is a default but->func, use Handle func to allow button callbacks too */
-	uiBlockSetHandleFunc(block, ED_undo_operator_repeat_cb_evt, op);
-	
-	view3d_panel_operator_redo_operator(C, pa, op);
+	/* keep in sync with logic in ED_undo_operator_repeat() */
+	ar = CTX_wm_region(C);
+	ar1 = BKE_area_find_region_type(CTX_wm_area(C), RGN_TYPE_WINDOW);
+	if (ar1)
+		CTX_wm_region_set((bContext *)C, ar1);
+
+	if (WM_operator_poll((bContext *)C, op->type)) {
+		uiBlock *block = uiLayoutGetBlock(pa->layout);
+
+		if (!WM_operator_check_ui_enabled(C, op->type->name))
+			uiLayoutSetEnabled(pa->layout, FALSE);
+
+		/* note, blockfunc is a default but->func, use Handle func to allow button callbacks too */
+		uiBlockSetHandleFunc(block, ED_undo_operator_repeat_cb_evt, op);
+
+		view3d_panel_operator_redo_operator(C, pa, op);
+	}
+
+	/* set region back */
+	CTX_wm_region_set((bContext *)C, ar);
 }
 
 /* ******************* */

Modified: trunk/blender/source/blender/editors/util/undo.c
===================================================================
--- trunk/blender/source/blender/editors/util/undo.c	2013-01-30 07:33:26 UTC (rev 54202)
+++ trunk/blender/source/blender/editors/util/undo.c	2013-01-30 11:06:02 UTC (rev 54203)
@@ -339,6 +339,7 @@
 		wmWindowManager *wm = CTX_wm_manager(C);
 		struct Scene *scene = CTX_data_scene(C);
 
+		/* keep in sync with logic in view3d_panel_operator_redo() */
 		ARegion *ar = CTX_wm_region(C);
 		ARegion *ar1 = BKE_area_find_region_type(CTX_wm_area(C), RGN_TYPE_WINDOW);
 




More information about the Bf-blender-cvs mailing list