diff options
Diffstat (limited to 'source/blender/editors')
-rw-r--r-- | source/blender/editors/object/object_gpencil_modifier.c | 16 | ||||
-rw-r--r-- | source/blender/editors/object/object_modifier.c | 16 |
2 files changed, 24 insertions, 8 deletions
diff --git a/source/blender/editors/object/object_gpencil_modifier.c b/source/blender/editors/object/object_gpencil_modifier.c index a869a4c2583..3995728c428 100644 --- a/source/blender/editors/object/object_gpencil_modifier.c +++ b/source/blender/editors/object/object_gpencil_modifier.c @@ -730,14 +730,18 @@ static int gpencil_modifier_apply_exec(bContext *C, wmOperator *op) Object *ob = ED_object_active_context(C); GpencilModifierData *md = gpencil_edit_modifier_property_get(op, ob, 0); int apply_as = RNA_enum_get(op->ptr, "apply_as"); + const bool do_report = RNA_boolean_get(op->ptr, "report"); if (md == NULL) { return OPERATOR_CANCELLED; } - /* Store name temporarily for report. */ + int reports_len; char name[MAX_NAME]; - strcpy(name, md->name); + if (do_report) { + reports_len = BLI_listbase_count(&op->reports->list); + strcpy(name, md->name); /* Store name temporarily since the modifier is removed. */ + } if (!ED_object_gpencil_modifier_apply(bmain, op->reports, depsgraph, ob, md, apply_as)) { return OPERATOR_CANCELLED; @@ -746,8 +750,12 @@ static int gpencil_modifier_apply_exec(bContext *C, wmOperator *op) DEG_id_tag_update(&ob->id, ID_RECALC_GEOMETRY); WM_event_add_notifier(C, NC_OBJECT | ND_MODIFIER, ob); - if (RNA_boolean_get(op->ptr, "report")) { - BKE_reportf(op->reports, RPT_INFO, "Applied modifier: %s", name); + if (do_report) { + /* Only add this report if the operator didn't cause another one. The purpose here is + * to alert that something happened, and the previous report will do that anyway. */ + if (BLI_listbase_count(&op->reports->list) == reports_len) { + BKE_reportf(op->reports, RPT_INFO, "Applied modifier: %s", name); + } } return OPERATOR_FINISHED; diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c index 7e0e52d3874..7673649c261 100644 --- a/source/blender/editors/object/object_modifier.c +++ b/source/blender/editors/object/object_modifier.c @@ -1383,14 +1383,18 @@ static int modifier_apply_exec_ex(bContext *C, wmOperator *op, int apply_as, boo Scene *scene = CTX_data_scene(C); Object *ob = ED_object_active_context(C); ModifierData *md = edit_modifier_property_get(op, ob, 0); + const bool do_report = RNA_boolean_get(op->ptr, "report"); if (md == NULL) { return OPERATOR_CANCELLED; } - /* Store name temporarily for report. */ + int reports_len; char name[MAX_NAME]; - strcpy(name, md->name); + if (do_report) { + reports_len = BLI_listbase_count(&op->reports->list); + strcpy(name, md->name); /* Store name temporarily since the modifier is removed. */ + } if (!ED_object_modifier_apply( bmain, op->reports, depsgraph, scene, ob, md, apply_as, keep_modifier)) { @@ -1401,8 +1405,12 @@ static int modifier_apply_exec_ex(bContext *C, wmOperator *op, int apply_as, boo DEG_relations_tag_update(bmain); WM_event_add_notifier(C, NC_OBJECT | ND_MODIFIER, ob); - if (RNA_boolean_get(op->ptr, "report")) { - BKE_reportf(op->reports, RPT_INFO, "Applied modifier: %s", name); + if (do_report) { + /* Only add this report if the operator didn't cause another one. The purpose here is + * to alert that something happened, and the previous report will do that anyway. */ + if (BLI_listbase_count(&op->reports->list) == reports_len) { + BKE_reportf(op->reports, RPT_INFO, "Applied modifier: %s", name); + } } return OPERATOR_FINISHED; |