[Bf-blender-cvs] [4baf7385403] tmp-overlay-engine: Edit Armature: Tag armature after any operator to invalidate viewport
Clément Foucault
noreply at git.blender.org
Wed Nov 27 10:39:45 CET 2019
Commit: 4baf738540357957f2924152cee0b6a8b7cd99fc
Author: Clément Foucault
Date: Tue Nov 26 18:56:14 2019 +0100
Branches: tmp-overlay-engine
https://developer.blender.org/rB4baf738540357957f2924152cee0b6a8b7cd99fc
Edit Armature: Tag armature after any operator to invalidate viewport
This is needed for smart AA (avoid anoying flickering of the overlays).
===================================================================
M source/blender/editors/armature/armature_add.c
M source/blender/editors/armature/armature_edit.c
M source/blender/editors/armature/armature_relations.c
M source/blender/editors/armature/armature_select.c
M source/blender/editors/transform/transform_generics.c
===================================================================
diff --git a/source/blender/editors/armature/armature_add.c b/source/blender/editors/armature/armature_add.c
index 1073034383d..0331af600cf 100644
--- a/source/blender/editors/armature/armature_add.c
+++ b/source/blender/editors/armature/armature_add.c
@@ -51,6 +51,8 @@
#include "ED_screen.h"
#include "ED_view3d.h"
+#include "DEG_depsgraph.h"
+
#include "armature_intern.h"
/* *************** Adding stuff in editmode *************** */
@@ -213,6 +215,7 @@ static int armature_click_extrude_exec(bContext *C, wmOperator *UNUSED(op))
ED_armature_edit_sync_selection(arm->edbo);
WM_event_add_notifier(C, NC_OBJECT | ND_BONE_SELECT, obedit);
+ DEG_id_tag_update(&obedit->id, ID_RECALC_SELECT);
return OPERATOR_FINISHED;
}
@@ -608,6 +611,7 @@ static int armature_duplicate_selected_exec(bContext *C, wmOperator *op)
ED_armature_edit_validate_active(arm);
WM_event_add_notifier(C, NC_OBJECT | ND_BONE_SELECT, ob);
+ DEG_id_tag_update(&ob->id, ID_RECALC_SELECT);
}
MEM_freeN(objects);
@@ -837,6 +841,7 @@ static int armature_symmetrize_exec(bContext *C, wmOperator *op)
ED_armature_edit_validate_active(arm);
WM_event_add_notifier(C, NC_OBJECT | ND_BONE_SELECT, obedit);
+ DEG_id_tag_update(&obedit->id, ID_RECALC_SELECT);
}
MEM_freeN(objects);
@@ -1052,6 +1057,7 @@ static int armature_extrude_exec(bContext *C, wmOperator *op)
ED_armature_edit_sync_selection(arm->edbo);
WM_event_add_notifier(C, NC_OBJECT | ND_BONE_SELECT, ob);
+ DEG_id_tag_update(&ob->id, ID_RECALC_SELECT);
}
MEM_freeN(objects);
@@ -1125,6 +1131,7 @@ static int armature_bone_primitive_add_exec(bContext *C, wmOperator *op)
/* note, notifier might evolve */
WM_event_add_notifier(C, NC_OBJECT | ND_BONE_SELECT, obedit);
+ DEG_id_tag_update(&obedit->id, ID_RECALC_SELECT);
return OPERATOR_FINISHED;
}
@@ -1214,6 +1221,7 @@ static int armature_subdivide_exec(bContext *C, wmOperator *op)
/* note, notifier might evolve */
WM_event_add_notifier(C, NC_OBJECT | ND_BONE_SELECT, obedit);
+ DEG_id_tag_update(&obedit->id, ID_RECALC_SELECT);
return OPERATOR_FINISHED;
}
diff --git a/source/blender/editors/armature/armature_edit.c b/source/blender/editors/armature/armature_edit.c
index 64857dd1874..4ca0cd117b6 100644
--- a/source/blender/editors/armature/armature_edit.c
+++ b/source/blender/editors/armature/armature_edit.c
@@ -57,6 +57,8 @@
#include "ED_screen.h"
#include "ED_view3d.h"
+#include "DEG_depsgraph.h"
+
#include "armature_intern.h"
/* ************************** Object Tools Exports ******************************* */
@@ -443,6 +445,7 @@ static int armature_calc_roll_exec(bContext *C, wmOperator *op)
if (changed) {
/* note, notifier might evolve */
WM_event_add_notifier(C, NC_OBJECT | ND_BONE_SELECT, ob);
+ DEG_id_tag_update(&arm->id, ID_RECALC_SELECT);
}
}
@@ -512,6 +515,7 @@ static int armature_roll_clear_exec(bContext *C, wmOperator *op)
if (changed) {
/* Note, notifier might evolve. */
WM_event_add_notifier(C, NC_OBJECT | ND_BONE_SELECT, ob);
+ DEG_id_tag_update(&arm->id, ID_RECALC_SELECT);
}
}
MEM_freeN(objects);
@@ -844,6 +848,7 @@ static int armature_fill_bones_exec(bContext *C, wmOperator *op)
/* updates */
ED_armature_edit_refresh_layer_used(arm);
WM_event_add_notifier(C, NC_OBJECT | ND_POSE, obedit);
+ DEG_id_tag_update(&arm->id, ID_RECALC_COPY_ON_WRITE);
/* free points */
BLI_freelistN(&points);
@@ -1038,6 +1043,7 @@ static int armature_merge_exec(bContext *C, wmOperator *op)
ED_armature_edit_sync_selection(arm->edbo);
ED_armature_edit_refresh_layer_used(arm);
WM_event_add_notifier(C, NC_OBJECT | ND_POSE, obedit);
+ DEG_id_tag_update(&arm->id, ID_RECALC_COPY_ON_WRITE);
}
MEM_freeN(objects);
@@ -1182,6 +1188,7 @@ static int armature_switch_direction_exec(bContext *C, wmOperator *UNUSED(op))
/* note, notifier might evolve */
WM_event_add_notifier(C, NC_OBJECT | ND_BONE_SELECT, ob);
+ DEG_id_tag_update(&arm->id, ID_RECALC_SELECT);
}
MEM_freeN(objects);
@@ -1327,6 +1334,7 @@ static int armature_align_bones_exec(bContext *C, wmOperator *op)
/* note, notifier might evolve */
WM_event_add_notifier(C, NC_OBJECT | ND_BONE_SELECT, ob);
+ DEG_id_tag_update(&arm->id, ID_RECALC_SELECT);
return OPERATOR_FINISHED;
}
@@ -1370,6 +1378,7 @@ static int armature_split_exec(bContext *C, wmOperator *UNUSED(op))
}
WM_event_add_notifier(C, NC_OBJECT | ND_BONE_SELECT, ob);
+ DEG_id_tag_update(&arm->id, ID_RECALC_SELECT);
}
MEM_freeN(objects);
@@ -1447,6 +1456,7 @@ static int armature_delete_selected_exec(bContext *C, wmOperator *UNUSED(op))
ED_armature_edit_refresh_layer_used(arm);
BKE_pose_tag_recalc(CTX_data_main(C), obedit->pose);
WM_event_add_notifier(C, NC_OBJECT | ND_BONE_SELECT, obedit);
+ DEG_id_tag_update(&arm->id, ID_RECALC_SELECT);
}
}
MEM_freeN(objects);
@@ -1621,6 +1631,7 @@ static int armature_dissolve_selected_exec(bContext *C, wmOperator *UNUSED(op))
ED_armature_edit_sync_selection(arm->edbo);
ED_armature_edit_refresh_layer_used(arm);
WM_event_add_notifier(C, NC_OBJECT | ND_BONE_SELECT, obedit);
+ DEG_id_tag_update(&arm->id, ID_RECALC_SELECT);
}
}
MEM_freeN(objects);
@@ -1684,6 +1695,7 @@ static int armature_hide_exec(bContext *C, wmOperator *op)
ED_armature_edit_sync_selection(arm->edbo);
WM_event_add_notifier(C, NC_OBJECT | ND_BONE_SELECT, obedit);
+ DEG_id_tag_update(&arm->id, ID_RECALC_SELECT);
}
MEM_freeN(objects);
return OPERATOR_FINISHED;
@@ -1736,6 +1748,7 @@ static int armature_reveal_exec(bContext *C, wmOperator *op)
ED_armature_edit_sync_selection(arm->edbo);
WM_event_add_notifier(C, NC_OBJECT | ND_BONE_SELECT, obedit);
+ DEG_id_tag_update(&arm->id, ID_RECALC_SELECT);
}
}
MEM_freeN(objects);
diff --git a/source/blender/editors/armature/armature_relations.c b/source/blender/editors/armature/armature_relations.c
index b3588404cf2..b60c8ce4592 100644
--- a/source/blender/editors/armature/armature_relations.c
+++ b/source/blender/editors/armature/armature_relations.c
@@ -879,6 +879,7 @@ static int armature_parent_set_exec(bContext *C, wmOperator *op)
/* note, notifier might evolve */
WM_event_add_notifier(C, NC_OBJECT | ND_BONE_SELECT, ob);
+ DEG_id_tag_update(&ob->id, ID_RECALC_SELECT);
return OPERATOR_FINISHED;
}
diff --git a/source/blender/editors/armature/armature_select.c b/source/blender/editors/armature/armature_select.c
index c37f9ce126b..0f288c0d8b8 100644
--- a/source/blender/editors/armature/armature_select.c
+++ b/source/blender/editors/armature/armature_select.c
@@ -363,6 +363,7 @@ static int armature_select_linked_invoke(bContext *C, wmOperator *op, const wmEv
ED_armature_edit_sync_selection(arm->edbo);
WM_event_add_notifier(C, NC_OBJECT | ND_BONE_SELECT, base->object);
+ DEG_id_tag_update(&arm->id, ID_RECALC_COPY_ON_WRITE);
return OPERATOR_FINISHED;
}
@@ -792,6 +793,7 @@ bool ED_armature_edit_select_pick(
}
WM_event_add_notifier(C, NC_OBJECT | ND_BONE_SELECT, basact->object);
+ DEG_id_tag_update(&arm->id, ID_RECALC_COPY_ON_WRITE);
return true;
}
@@ -1037,6 +1039,10 @@ static int armature_de_select_all_exec(bContext *C, wmOperator *op)
WM_event_add_notifier(C, NC_OBJECT | ND_BONE_SELECT, NULL);
+ /* Tagging only one object to refresh drawing. */
+ Object *obedit = CTX_data_edit_object(C);
+ DEG_id_tag_update(&obedit->id, ID_RECALC_SELECT);
+
return OPERATOR_FINISHED;
}
@@ -1154,6 +1160,7 @@ static int armature_de_select_more_exec(bContext *C, wmOperator *UNUSED(op))
Object *ob = objects[ob_index];
armature_select_more_less(ob, true);
WM_event_add_notifier(C, NC_OBJECT | ND_BONE_SELECT, ob);
+ DEG_id_tag_update(&ob->id, ID_RECALC_COPY_ON_WRITE);
}
MEM_freeN(objects);
@@ -1186,6 +1193,7 @@ static int armature_de_select_less_exec(bContext *C, wmOperator *UNUSED(op))
Object *ob = objects[ob_index];
armature_select_more_less(ob, false);
WM_event_add_notifier(C, NC_OBJECT | ND_BONE_SELECT, ob);
+ DEG_id_tag_update(&ob->id, ID_RECALC_COPY_ON_WRITE);
}
MEM_freeN(objects);
@@ -1274,6 +1282,7 @@ static void select_similar_length(bContext *C, const float thresh)
if (changed) {
WM_event_add_notifier(C, NC_OBJECT | ND_BONE_SELECT, ob);
+ DEG_id_tag_update(&ob->id, ID_RECALC_COPY_ON_WRITE);
}
}
MEM_freeN(objects);
@@ -1323,6 +1332,8 @@ static void select_similar_direction(bContext *C, const float thresh)
if (changed) {
WM_event_add_notifier(C, NC_OBJECT | ND_BONE_SELECT, ob);
+ DEG_id_tag_update(&ob->id, ID_RECALC_COPY_ON_WRITE);
+ DEG_id_tag_update(&ob->id, ID_RECALC_COPY_ON_WRITE);
}
}
MEM_freeN(objects);
@@ -1352,6 +1363,7 @@ static void select_similar_layer(bContext *C)
if (changed) {
WM_event_add_notifier(C, NC_OBJECT | ND_BONE_SELECT, ob);
+ DEG_id_tag_update(&ob->id, ID_RECALC_COPY_ON_WRITE);
}
}
MEM_freeN(objects);
@@ -1393,6 +1405,7 @@ static void select_similar_prefix(bContext *C)
if (changed) {
WM_event_add_notifier(C, NC_OBJECT | ND_BONE_SELECT, ob);
+ DEG_id_tag_update(&ob->id, ID_RECALC_COPY_ON_WRITE);
}
}
MEM_freeN(objects);
@@ -1434,6 +1447,7 @@ static void select_similar_suffix(bContext *C)
if (changed) {
WM_event_add_notifier(C, NC_OBJECT | ND_BONE_SELECT, ob);
+ DEG_id_tag_update(&ob->id, ID_RECALC_COPY_ON_WRITE);
}
}
MEM_freeN(objects);
@@ -1461,6 +1475,7 @@ static void select_similar_data_pchan(bContext *C, const size_t bytes_size, cons
}
WM_event_add_notifier(C, NC_OBJECT | ND_BONE_SELECT, obedit);
+ DEG_id_tag_update(&obedit->id, ID_RECALC_COPY_ON_WRITE);
}
static void is_ancestor(EditBone *bone, EditBone *ancestor)
@@ -1495,6 +1510,7 @@ static void select_similar_children(bContext *C)
}
WM_event_add_notifier(C, NC_OBJECT | ND_BONE_SELECT, obedit);
+ DEG_id_tag_update(&obedit->id, ID_RECALC_COPY_ON_WRITE);
}
static void select_similar_children_immediate(bC
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list