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