Revision: 36827 http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36827 Author: campbellbarton Date: 2011-05-23 10:14:07 +0000 (Mon, 23 May 2011) Log Message: ----------- fix [#26618] StringProperty with sub_type of FILE_PATH not updated correctly from icon
Modified Paths: -------------- trunk/blender/source/blender/editors/space_buttons/buttons_ops.c trunk/blender/source/blender/editors/space_view3d/view3d_toolbar.c trunk/blender/source/blender/windowmanager/WM_api.h trunk/blender/source/blender/windowmanager/intern/wm_operators.c Modified: trunk/blender/source/blender/editors/space_buttons/buttons_ops.c =================================================================== --- trunk/blender/source/blender/editors/space_buttons/buttons_ops.c 2011-05-23 08:14:29 UTC (rev 36826) +++ trunk/blender/source/blender/editors/space_buttons/buttons_ops.c 2011-05-23 10:14:07 UTC (rev 36827) @@ -51,6 +51,7 @@ #include "WM_types.h" #include "ED_screen.h" +#include "ED_util.h" #include "RNA_access.h" @@ -131,7 +132,19 @@ RNA_property_update(C, &fbo->ptr, fbo->prop); MEM_freeN(str); + + /* special, annoying exception, filesel on redo panel [#26618] */ + { + wmOperator *redo_op= WM_operator_last_redo(C); + if(redo_op) { + if(fbo->ptr.data == redo_op->ptr->data) { + ED_undo_operator_repeat(C, redo_op); + } + } + } + MEM_freeN(op->customdata); + return OPERATOR_FINISHED; } Modified: trunk/blender/source/blender/editors/space_view3d/view3d_toolbar.c =================================================================== --- trunk/blender/source/blender/editors/space_view3d/view3d_toolbar.c 2011-05-23 08:14:29 UTC (rev 36826) +++ trunk/blender/source/blender/editors/space_view3d/view3d_toolbar.c 2011-05-23 10:14:07 UTC (rev 36827) @@ -69,19 +69,6 @@ /* ******************* view3d space & buttons ************** */ -static wmOperator *view3d_last_operator(const bContext *C) -{ - wmWindowManager *wm= CTX_wm_manager(C); - wmOperator *op; - - /* only for operators that are registered and did an undo push */ - for(op= wm->operators.last; op; op= op->prev) - if((op->type->flag & OPTYPE_REGISTER) && (op->type->flag & OPTYPE_UNDO)) - break; - - return op; -} - static void view3d_panel_operator_redo_buts(const bContext *C, Panel *pa, wmOperator *op) { uiLayoutOperatorButs(C, pa->layout, op, NULL, 'V', 0); @@ -89,7 +76,7 @@ static void view3d_panel_operator_redo_header(const bContext *C, Panel *pa) { - wmOperator *op= view3d_last_operator(C); + wmOperator *op= WM_operator_last_redo(C); if(op) BLI_strncpy(pa->drawname, op->type->name, sizeof(pa->drawname)); else BLI_strncpy(pa->drawname, "Operator", sizeof(pa->drawname)); @@ -110,7 +97,7 @@ static void view3d_panel_operator_redo(const bContext *C, Panel *pa) { - wmOperator *op= view3d_last_operator(C); + wmOperator *op= WM_operator_last_redo(C); uiBlock *block; if(op==NULL) Modified: trunk/blender/source/blender/windowmanager/WM_api.h =================================================================== --- trunk/blender/source/blender/windowmanager/WM_api.h 2011-05-23 08:14:29 UTC (rev 36826) +++ trunk/blender/source/blender/windowmanager/WM_api.h 2011-05-23 10:14:07 UTC (rev 36827) @@ -247,6 +247,8 @@ void WM_operator_properties_gesture_straightline(struct wmOperatorType *ot, int cursor); void WM_operator_properties_select_all(struct wmOperatorType *ot); +wmOperator *WM_operator_last_redo(const struct bContext *C); + /* MOVE THIS SOMEWHERE ELSE */ #define SEL_TOGGLE 0 #define SEL_SELECT 1 Modified: trunk/blender/source/blender/windowmanager/intern/wm_operators.c =================================================================== --- trunk/blender/source/blender/windowmanager/intern/wm_operators.c 2011-05-23 08:14:29 UTC (rev 36826) +++ trunk/blender/source/blender/windowmanager/intern/wm_operators.c 2011-05-23 10:14:07 UTC (rev 36827) @@ -882,6 +882,19 @@ return 1; } +wmOperator *WM_operator_last_redo(const bContext *C) +{ + wmWindowManager *wm= CTX_wm_manager(C); + wmOperator *op; + + /* only for operators that are registered and did an undo push */ + for(op= wm->operators.last; op; op= op->prev) + if((op->type->flag & OPTYPE_REGISTER) && (op->type->flag & OPTYPE_UNDO)) + break; + + return op; +} + static uiBlock *wm_block_create_redo(bContext *C, ARegion *ar, void *arg_op) { wmOperator *op= arg_op; _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs