[Bf-blender-cvs] [d75d2860fd4] soc-2019-outliner: Outliner: Support multiple objects for parenting

Nathan Craddock noreply at git.blender.org
Fri Jul 12 06:47:00 CEST 2019


Commit: d75d2860fd486286016aa587411116676ccbb0c7
Author: Nathan Craddock
Date:   Thu Jul 11 22:45:53 2019 -0600
Branches: soc-2019-outliner
https://developer.blender.org/rBd75d2860fd486286016aa587411116676ccbb0c7

Outliner: Support multiple objects for parenting

Now parents multiple objects in the outliner on drag and drop.
This only works for setting an object as the parent, not for
armatures, lattices, etc. Will be improved on.

===================================================================

M	source/blender/editors/space_outliner/outliner_dragdrop.c

===================================================================

diff --git a/source/blender/editors/space_outliner/outliner_dragdrop.c b/source/blender/editors/space_outliner/outliner_dragdrop.c
index d8276aa2bbc..132939a306e 100644
--- a/source/blender/editors/space_outliner/outliner_dragdrop.c
+++ b/source/blender/editors/space_outliner/outliner_dragdrop.c
@@ -398,8 +398,27 @@ static int parent_drop_invoke(bContext *C, wmOperator *op, const wmEvent *event)
   }
 
   if ((par->type != OB_ARMATURE) && (par->type != OB_CURVE) && (par->type != OB_LATTICE)) {
+    if (event->custom != EVT_DATA_DRAGDROP) {
+      return OPERATOR_CANCELLED;
+    }
+
+    ListBase *lb = event->customdata;
+    wmDrag *drag = lb->first;
+
+    bool parent_set = false;
     int partype = 0;
-    if (ED_object_parent_set(op->reports, C, scene, ob, par, partype, false, false, NULL)) {
+    for (wmDragID *drag_id = drag->ids.first; drag_id; drag_id = drag_id->next) {
+      if (GS(drag_id->id->name) == ID_OB) {
+        Object *object = (Object *)drag_id->id;
+
+        if (ED_object_parent_set(
+                op->reports, C, scene, object, par, partype, false, false, NULL)) {
+          parent_set = true;
+        }
+      }
+    }
+
+    if (parent_set) {
       DEG_relations_tag_update(bmain);
       WM_event_add_notifier(C, NC_OBJECT | ND_TRANSFORM, NULL);
       WM_event_add_notifier(C, NC_OBJECT | ND_PARENT, NULL);



More information about the Bf-blender-cvs mailing list