Outliner: Fix (unreported) more data-changing operators missing undo.
This commit is contained in:
parent
20b94257dc
commit
46a4a53824
|
@ -450,6 +450,9 @@ void OUTLINER_OT_item_rename(wmOperatorType *ot)
|
|||
ot->invoke = outliner_item_rename;
|
||||
|
||||
ot->poll = ED_operator_outliner_active;
|
||||
|
||||
/* Flags. */
|
||||
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
|
||||
}
|
||||
|
||||
/* ID delete --------------------------------------------------- */
|
||||
|
@ -564,6 +567,9 @@ void OUTLINER_OT_id_delete(wmOperatorType *ot)
|
|||
|
||||
ot->invoke = outliner_id_delete_invoke;
|
||||
ot->poll = ED_operator_outliner_active;
|
||||
|
||||
/* Flags. */
|
||||
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
|
||||
}
|
||||
|
||||
/* ID remap --------------------------------------------------- */
|
||||
|
@ -697,7 +703,8 @@ void OUTLINER_OT_id_remap(wmOperatorType *ot)
|
|||
ot->exec = outliner_id_remap_exec;
|
||||
ot->poll = ED_operator_outliner_active;
|
||||
|
||||
ot->flag = 0;
|
||||
/* Flags. */
|
||||
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
|
||||
|
||||
prop = RNA_def_enum(ot->srna, "id_type", rna_enum_id_type_items, ID_OB, "ID Type", "");
|
||||
RNA_def_property_translation_context(prop, BLT_I18NCONTEXT_ID_ID);
|
||||
|
@ -801,6 +808,7 @@ void OUTLINER_OT_id_copy(wmOperatorType *ot)
|
|||
ot->exec = outliner_id_copy_exec;
|
||||
ot->poll = ED_operator_outliner_active;
|
||||
|
||||
/* Flags, don't need any undo here (this operator does not change anything in Blender data). */
|
||||
ot->flag = 0;
|
||||
}
|
||||
|
||||
|
@ -943,6 +951,9 @@ void OUTLINER_OT_lib_relocate(wmOperatorType *ot)
|
|||
|
||||
ot->invoke = outliner_lib_relocate_invoke;
|
||||
ot->poll = ED_operator_outliner_active;
|
||||
|
||||
/* Flags. */
|
||||
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
|
||||
}
|
||||
|
||||
/* XXX This does not work with several items
|
||||
|
@ -991,6 +1002,9 @@ void OUTLINER_OT_lib_reload(wmOperatorType *ot)
|
|||
|
||||
ot->invoke = outliner_lib_reload_invoke;
|
||||
ot->poll = ED_operator_outliner_active;
|
||||
|
||||
/* Flags. */
|
||||
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
|
||||
}
|
||||
|
||||
void lib_reload_cb(bContext *C,
|
||||
|
|
|
@ -1448,7 +1448,8 @@ static int outliner_object_operation_exec(bContext *C, wmOperator *op)
|
|||
}
|
||||
else if (event == OL_OP_REMAP) {
|
||||
outliner_do_libdata_operation(C, op->reports, scene, soops, &soops->tree, id_remap_cb, NULL);
|
||||
str = "Remap ID";
|
||||
/* No undo push here, operator does it itself (since it's a modal one, the op_undo_depth trick
|
||||
* does not work here). */
|
||||
}
|
||||
else if (event == OL_OP_LOCALIZED) { /* disabled, see above enum (ton) */
|
||||
outliner_do_object_operation(C, op->reports, scene, soops, &soops->tree, id_local_cb);
|
||||
|
@ -1479,7 +1480,9 @@ static int outliner_object_operation_exec(bContext *C, wmOperator *op)
|
|||
ED_outliner_select_sync_from_object_tag(C);
|
||||
}
|
||||
|
||||
ED_undo_push(C, str);
|
||||
if (str != NULL) {
|
||||
ED_undo_push(C, str);
|
||||
}
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
@ -1722,7 +1725,8 @@ static int outliner_id_operation_exec(bContext *C, wmOperator *op)
|
|||
if (idlevel > 0) {
|
||||
outliner_do_libdata_operation(
|
||||
C, op->reports, scene, soops, &soops->tree, id_remap_cb, NULL);
|
||||
ED_undo_push(C, "Remap");
|
||||
/* No undo push here, operator does it itself (since it's a modal one, the op_undo_depth
|
||||
* trick does not work here). */
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -1851,7 +1855,6 @@ static int outliner_lib_operation_exec(bContext *C, wmOperator *op)
|
|||
|
||||
switch (event) {
|
||||
case OL_LIB_RENAME: {
|
||||
/* rename */
|
||||
outliner_do_libdata_operation(
|
||||
C, op->reports, scene, soops, &soops->tree, item_rename_cb, NULL);
|
||||
|
||||
|
@ -1866,16 +1869,17 @@ static int outliner_lib_operation_exec(bContext *C, wmOperator *op)
|
|||
break;
|
||||
}
|
||||
case OL_LIB_RELOCATE: {
|
||||
/* rename */
|
||||
outliner_do_libdata_operation(
|
||||
C, op->reports, scene, soops, &soops->tree, lib_relocate_cb, NULL);
|
||||
ED_undo_push(C, "Relocate Library");
|
||||
/* No undo push here, operator does it itself (since it's a modal one, the op_undo_depth
|
||||
* trick does not work here). */
|
||||
break;
|
||||
}
|
||||
case OL_LIB_RELOAD: {
|
||||
/* rename */
|
||||
outliner_do_libdata_operation(
|
||||
C, op->reports, scene, soops, &soops->tree, lib_reload_cb, NULL);
|
||||
/* No undo push here, operator does it itself (since it's a modal one, the op_undo_depth
|
||||
* trick does not work here). */
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
|
Loading…
Reference in New Issue