[Bf-blender-cvs] [5e266cd03e6] temp-soc-2019-outliner-sync: Outliner: Remove set parent popup
Nathan Craddock
noreply at git.blender.org
Fri Aug 16 19:30:08 CEST 2019
Commit: 5e266cd03e6608bfbaac506ccd889e8bf55f61fb
Author: Nathan Craddock
Date: Fri Aug 16 11:00:00 2019 -0600
Branches: temp-soc-2019-outliner-sync
https://developer.blender.org/rB5e266cd03e6608bfbaac506ccd889e8bf55f61fb
Outliner: Remove set parent popup
The popup did not allow operator reports with multi object
support.
===================================================================
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 b58a0f34703..6031ba5cffc 100644
--- a/source/blender/editors/space_outliner/outliner_dragdrop.c
+++ b/source/blender/editors/space_outliner/outliner_dragdrop.c
@@ -336,7 +336,7 @@ static void parent_drop_set_parents(
Scene *scene = (Scene *)outliner_search_back(soops, te, ID_SCE);
if (scene == NULL) {
- /* currently outlier organized in a way, that if there's no parent scene
+ /* currently outliner organized in a way, that if there's no parent scene
* element for object it means that all displayed objects belong to
* active scene and parenting them is allowed (sergey)
*/
@@ -345,13 +345,15 @@ static void parent_drop_set_parents(
}
bool parent_set = false;
+ bool linked_objects = false;
+
for (wmDragID *drag_id = drag; drag_id; drag_id = drag_id->next) {
if (GS(drag_id->id->name) == ID_OB) {
Object *object = (Object *)drag_id->id;
/* Do nothing to linked data */
if (ID_IS_LINKED(object)) {
- BKE_report(reports, RPT_INFO, "Can't edit library linked object");
+ linked_objects = true;
continue;
}
@@ -362,6 +364,10 @@ static void parent_drop_set_parents(
}
}
+ if (linked_objects) {
+ BKE_report(reports, RPT_INFO, "Can't edit library linked object(s)");
+ }
+
if (parent_set) {
DEG_relations_tag_update(bmain);
WM_event_add_notifier(C, NC_OBJECT | ND_TRANSFORM, NULL);
@@ -369,210 +375,6 @@ static void parent_drop_set_parents(
}
}
-typedef struct ParentDropData {
- Object *parent;
- ListBase *drag_items;
- short type;
-} ParentDropData;
-
-static void parent_drop_menu_callback(bContext *C, void *data, int event)
-{
- ParentDropData *drag_data = (ParentDropData *)data;
-
- wmDragID *drag = drag_data->drag_items->first;
- parent_drop_set_parents(C, NULL, drag, drag_data->parent, event);
-
- BLI_freelistN(drag_data->drag_items);
- MEM_freeN(drag_data->drag_items);
- MEM_freeN(drag_data);
-}
-
-static uiBlock *parent_drop_menu(bContext *C, ARegion *ar, void *data)
-{
- uiBlock *block;
- ParentDropData *drag_data = (ParentDropData *)data;
-
- block = UI_block_begin(C, ar, __func__, UI_EMBOSS);
- UI_block_flag_enable(block, UI_BLOCK_MOVEMOUSE_QUIT);
- UI_block_func_butmenu_set(block, parent_drop_menu_callback, drag_data);
-
- short menu_width = 10 * UI_UNIT_X;
- short y_position = 0;
-
- uiDefBut(block,
- UI_BTYPE_LABEL,
- 0,
- IFACE_("Set Parent To"),
- 0,
- y_position,
- menu_width,
- UI_UNIT_Y,
- NULL,
- 0.0,
- 0.0,
- 0,
- 0,
- "");
-
- uiDefBut(block,
- UI_BTYPE_BUT_MENU,
- 0,
- IFACE_("Object"),
- 0,
- y_position -= UI_UNIT_Y,
- menu_width,
- UI_UNIT_Y,
- NULL,
- 0.0,
- 0.0,
- 0,
- PAR_OBJECT,
- "");
-
- if (drag_data->type == OB_ARMATURE) {
- uiDefBut(block,
- UI_BTYPE_BUT_MENU,
- 0,
- IFACE_("Armature Deform"),
- 0,
- y_position -= UI_UNIT_Y,
- menu_width,
- UI_UNIT_Y,
- NULL,
- 0.0,
- 0.0,
- 0,
- PAR_ARMATURE,
- "");
-
- uiDefBut(block,
- UI_BTYPE_BUT_MENU,
- 0,
- IFACE_(" With Empty Groups"),
- 0,
- y_position -= UI_UNIT_Y,
- menu_width,
- UI_UNIT_Y,
- NULL,
- 0.0,
- 0.0,
- 0,
- PAR_ARMATURE_NAME,
- "");
-
- uiDefBut(block,
- UI_BTYPE_BUT_MENU,
- 0,
- IFACE_(" With Envelope Weights"),
- 0,
- y_position -= UI_UNIT_Y,
- menu_width,
- UI_UNIT_Y,
- NULL,
- 0.0,
- 0.0,
- 0,
- PAR_ARMATURE_ENVELOPE,
- "");
-
- uiDefBut(block,
- UI_BTYPE_BUT_MENU,
- 0,
- IFACE_(" With Automatic Weights"),
- 0,
- y_position -= UI_UNIT_Y,
- menu_width,
- UI_UNIT_Y,
- NULL,
- 0.0,
- 0.0,
- 0,
- PAR_ARMATURE_AUTO,
- "");
-
- uiDefBut(block,
- UI_BTYPE_BUT_MENU,
- 0,
- IFACE_("Bone"),
- 0,
- y_position -= UI_UNIT_Y,
- menu_width,
- UI_UNIT_Y,
- NULL,
- 0.0,
- 0.0,
- 0,
- PAR_BONE,
- "");
- }
- else if (drag_data->type == OB_CURVE) {
- uiDefBut(block,
- UI_BTYPE_BUT_MENU,
- 0,
- IFACE_("Curve Deform"),
- 0,
- y_position -= UI_UNIT_Y,
- menu_width,
- UI_UNIT_Y,
- NULL,
- 0.0,
- 0.0,
- 0,
- PAR_CURVE,
- "");
-
- uiDefBut(block,
- UI_BTYPE_BUT_MENU,
- 0,
- IFACE_("Follow Path"),
- 0,
- y_position -= UI_UNIT_Y,
- menu_width,
- UI_UNIT_Y,
- NULL,
- 0.0,
- 0.0,
- 0,
- PAR_FOLLOW,
- "");
-
- uiDefBut(block,
- UI_BTYPE_BUT_MENU,
- 0,
- IFACE_("Path Constraint"),
- 0,
- y_position -= UI_UNIT_Y,
- menu_width,
- UI_UNIT_Y,
- NULL,
- 0.0,
- 0.0,
- 0,
- PAR_PATH_CONST,
- "");
- }
- else if (drag_data->type == OB_LATTICE) {
- uiDefBut(block,
- UI_BTYPE_BUT_MENU,
- 0,
- IFACE_("Lattice Deform"),
- 0,
- y_position -= UI_UNIT_Y,
- menu_width,
- UI_UNIT_Y,
- NULL,
- 0.0,
- 0.0,
- 0,
- PAR_LATTICE,
- "");
- }
-
- UI_block_bounds_set_popup(block, 6, (const int[2]){0, 0});
-
- return block;
-}
-
static int parent_drop_invoke(bContext *C, wmOperator *op, const wmEvent *event)
{
TreeElement *te = outliner_drop_find(C, event);
@@ -599,21 +401,7 @@ static int parent_drop_invoke(bContext *C, wmOperator *op, const wmEvent *event)
ListBase *lb = event->customdata;
wmDrag *drag = lb->first;
- if (par->type != OB_ARMATURE && par->type != OB_CURVE && par->type != OB_LATTICE) {
- parent_drop_set_parents(C, op->reports, drag->ids.first, par, PAR_OBJECT);
- }
- else {
- ParentDropData *data = MEM_callocN(sizeof(ParentDropData), "parent_drop_data");
- data->parent = par;
- data->type = par->type;
-
- data->drag_items = MEM_callocN(sizeof(ListBase), "drag_items");
- BLI_duplicatelist(data->drag_items, &drag->ids);
-
- UI_popup_block_invoke(C, parent_drop_menu, data, NULL);
-
- return OPERATOR_INTERFACE;
- }
+ parent_drop_set_parents(C, op->reports, drag->ids.first, par, PAR_OBJECT);
return OPERATOR_FINISHED;
}
More information about the Bf-blender-cvs
mailing list