diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2013-12-20 04:38:07 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2013-12-20 04:40:33 +0400 |
commit | b2fdc591c36cf5125eaa528b7f735c3c4393d390 (patch) | |
tree | 8f0525ef93d8336a373810b821155bf04995f0bd /source/blender/editors/object | |
parent | 29e3b098253270d4c5cf8337ad068bf4e98d7bdb (diff) |
UI: restore confirmation popups for delete operators.
It turned out this was leading to accidental deleting in some cases when the
info message was missed by users. Fixes T37801.
Diffstat (limited to 'source/blender/editors/object')
-rw-r--r-- | source/blender/editors/object/object_add.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 7e55d082883..c67d389e5d0 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -1057,7 +1057,7 @@ static int object_delete_exec(bContext *C, wmOperator *op) wmWindowManager *wm = CTX_wm_manager(C); wmWindow *win; const short use_global = RNA_boolean_get(op->ptr, "use_global"); - int num_deleted = 0; + bool changed = false; if (CTX_data_edit_object(C)) return OPERATOR_CANCELLED; @@ -1069,7 +1069,7 @@ static int object_delete_exec(bContext *C, wmOperator *op) /* remove from current scene only */ ED_base_object_free_and_unlink(bmain, scene, base); - num_deleted++; + changed = true; if (use_global) { Scene *scene_iter; @@ -1089,6 +1089,9 @@ static int object_delete_exec(bContext *C, wmOperator *op) } CTX_DATA_END; + if (!changed) + return OPERATOR_CANCELLED; + /* delete has to handle all open scenes */ flag_listbase_ids(&bmain->scene, LIB_DOIT, 1); for (win = wm->windows.first; win; win = win->next) { @@ -1104,9 +1107,6 @@ static int object_delete_exec(bContext *C, wmOperator *op) } } - if (num_deleted > 0) - BKE_reportf(op->reports, RPT_INFO, "Deleted %d objects", num_deleted); - return OPERATOR_FINISHED; } @@ -1118,6 +1118,7 @@ void OBJECT_OT_delete(wmOperatorType *ot) ot->idname = "OBJECT_OT_delete"; /* api callbacks */ + ot->invoke = WM_operator_confirm; ot->exec = object_delete_exec; ot->poll = ED_operator_objectmode; |