From bd17d2371f22ed7a677422297f3ce5a1c3df6f40 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 30 Oct 2013 23:15:27 +0000 Subject: cancelling an operator popup now calls the operators cancel callback. --- source/blender/windowmanager/intern/wm_operators.c | 15 +++++++++++---- 1 file 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); -- cgit v1.2.3