diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-10-31 03:15:27 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-10-31 03:15:27 +0400 |
commit | bd17d2371f22ed7a677422297f3ce5a1c3df6f40 (patch) | |
tree | 55b155f3f5fd22a9d9084218ca6f46b5820c83ed /source/blender/windowmanager | |
parent | 7267221715d8431bd1aaaaa3ace4f8c0ce151627 (diff) |
cancelling an operator popup now calls the operators cancel callback.
Diffstat (limited to 'source/blender/windowmanager')
-rw-r--r-- | source/blender/windowmanager/intern/wm_operators.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index acc26f6f065..7748a2cb4b8 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -1396,12 +1396,19 @@ static uiBlock *wm_operator_ui_create(bContext *C, ARegion *ar, void *userData) return block; } -static void wm_operator_ui_popup_cancel(struct bContext *UNUSED(C), void *userData) +static void wm_operator_ui_popup_cancel(struct bContext *C, void *userData) { wmOpPopUp *data = userData; - if (data->free_op && data->op) { - wmOperator *op = data->op; - WM_operator_free(op); + wmOperator *op = data->op; + + if (op) { + if (op->type->cancel) { + op->type->cancel(C, op); + } + + if (data->free_op) { + WM_operator_free(op); + } } MEM_freeN(data); |