[Bf-blender-cvs] [debe3011f62] blender2.8: Merge branch 'master' into blender2.8

Campbell Barton noreply at git.blender.org
Wed Apr 11 09:02:44 CEST 2018


Commit: debe3011f62e5935dc54d7033052d7d4e24ad449
Author: Campbell Barton
Date:   Wed Apr 11 09:02:32 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBdebe3011f62e5935dc54d7033052d7d4e24ad449

Merge branch 'master' into blender2.8

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



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

diff --cc source/blender/editors/armature/pose_edit.c
index 15ffd09ebd4,f1ae006f958..5b1975a92a0
--- a/source/blender/editors/armature/pose_edit.c
+++ b/source/blender/editors/armature/pose_edit.c
@@@ -82,34 -81,40 +82,42 @@@ Object *ED_pose_object_from_context(bCo
  }
  
  /* This function is used to process the necessary updates for */
- void ED_armature_enter_posemode(bContext *C, Base *base)
 -bool ED_object_posemode_enter_ex(Base *base)
++bool ED_object_posemode_enter_ex(struct Main *bmain, Base *base)
  {
- 	ReportList *reports = CTX_wm_reports(C);
  	Object *ob = base->object;
- 	
- 	if (ID_IS_LINKED(ob)) {
- 		BKE_report(reports, RPT_WARNING, "Cannot pose libdata");
- 		return;
- 	}
+ 	BLI_assert(!ID_IS_LINKED(ob));
+ 	bool ok = false;
  	
  	switch (ob->type) {
  		case OB_ARMATURE:
  			ob->restore_mode = ob->mode;
  			ob->mode |= OB_MODE_POSE;
 +			/* Inform all CoW versions that we changed the mode. */
- 			DEG_id_tag_update_ex(CTX_data_main(C), &ob->id, DEG_TAG_COPY_ON_WRITE);
- 			WM_event_add_notifier(C, NC_SCENE | ND_MODE | NS_MODE_POSE, NULL);
- 			
++			DEG_id_tag_update_ex(bmain, &ob->id, DEG_TAG_COPY_ON_WRITE);
+ 			ok = true;
 -
  			break;
  		default:
- 			return;
+ 			break;
  	}
- 	
- 	/* XXX: disabled as this would otherwise cause a nasty loop... */
- 	//ED_object_mode_toggle(C, ob->mode);
+ 
+ 	return ok;
+ }
+ bool ED_object_posemode_enter(bContext *C, Base *base)
+ {
+ 	ReportList *reports = CTX_wm_reports(C);
+ 	if (ID_IS_LINKED(base->object)) {
+ 		BKE_report(reports, RPT_WARNING, "Cannot pose libdata");
+ 		return false;
+ 	}
 -	bool ok = ED_object_posemode_enter_ex(base);
++	struct Main *bmain = CTX_data_main(C);
++	bool ok = ED_object_posemode_enter_ex(bmain, base);
+ 	if (ok) {
+ 		WM_event_add_notifier(C, NC_SCENE | ND_MODE | NS_MODE_POSE, NULL);
+ 	}
+ 	return ok;
  }
  
- void ED_armature_exit_posemode(bContext *C, Base *base)
+ void ED_object_posemode_exit(bContext *C, Base *base)
  {
  	if (base) {
  		Object *ob = base->object;
diff --cc source/blender/editors/include/ED_armature.h
index 0181cc20cdc,2089f81b0d7..25e792535e0
--- a/source/blender/editors/include/ED_armature.h
+++ b/source/blender/editors/include/ED_armature.h
@@@ -205,11 -195,12 +205,12 @@@ void ED_armature_ebone_listbase_free(st
  void ED_armature_ebone_listbase_copy(struct ListBase *lb_dst, struct ListBase *lb_src);
  
  /* poseobject.c */
- void ED_armature_exit_posemode(struct bContext *C, struct Base *base);
- void ED_armature_enter_posemode(struct bContext *C, struct Base *base);
+ void ED_object_posemode_exit(struct bContext *C, struct Base *base);
 -bool ED_object_posemode_enter_ex(struct Base *base);
++bool ED_object_posemode_enter_ex(struct Main *bmain, struct Base *base);
+ bool ED_object_posemode_enter(struct bContext *C, struct Base *base);
  void ED_pose_de_selectall(struct Object *ob, int select_mode, const bool ignore_visibility);
  void ED_pose_bone_select(struct Object *ob, struct bPoseChannel *pchan, bool select);
 -void ED_pose_recalculate_paths(struct Scene *scene, struct Object *ob);
 +void ED_pose_recalculate_paths(struct bContext *C, struct Scene *scene, struct Object *ob);
  struct Object *ED_pose_object_from_context(struct bContext *C);
  
  /* sketch */
diff --cc source/blender/editors/object/object_edit.c
index bfe0194fe42,0eda9668c47..85f8869a73d
--- a/source/blender/editors/object/object_edit.c
+++ b/source/blender/editors/object/object_edit.c
@@@ -523,13 -714,16 +523,15 @@@ static int posemode_exec(bContext *C, w
  	if (ob->type == OB_ARMATURE) {
  		if (ob == CTX_data_edit_object(C)) {
  			ED_object_editmode_exit(C, EM_FREEDATA | EM_DO_UNDO);
- 			ED_armature_enter_posemode(C, base);
+ 			is_mode_set = false;
  		}
- 		else if (is_mode_set)
- 			ED_armature_exit_posemode(C, base);
- 		else
- 			ED_armature_enter_posemode(C, base);
  
+ 		if (is_mode_set) {
+ 			ED_object_posemode_exit(C, base);
+ 		}
+ 		else {
+ 			ED_object_posemode_enter(C, base);
+ 		}
 -		
  		return OPERATOR_FINISHED;
  	}



More information about the Bf-blender-cvs mailing list