Small bug, reported by Andy in irc:
Image editor & texture properties, add new Image, inits 'start' now to frame 1 for sequences. Added triple-X warning in Image Open operator, it uses SpaceImage whilst it can be called from other editors. Code is safe but not correct.
This commit is contained in:
		| @@ -573,6 +573,7 @@ void default_tex(Tex *tex) | |||||||
| 	tex->iuser.fie_ima= 2; | 	tex->iuser.fie_ima= 2; | ||||||
| 	tex->iuser.ok= 1; | 	tex->iuser.ok= 1; | ||||||
| 	tex->iuser.frames= 100; | 	tex->iuser.frames= 100; | ||||||
|  | 	tex->iuser.sfra= 1; | ||||||
| 	 | 	 | ||||||
| 	tex->preview = NULL; | 	tex->preview = NULL; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -688,9 +688,10 @@ static int open_cancel(bContext *UNUSED(C), wmOperator *op) | |||||||
|  |  | ||||||
| static int open_exec(bContext *C, wmOperator *op) | static int open_exec(bContext *C, wmOperator *op) | ||||||
| { | { | ||||||
| 	SpaceImage *sima= CTX_wm_space_image(C); | 	SpaceImage *sima= CTX_wm_space_image(C); /* XXX other space types can call */ | ||||||
| 	Scene *scene= CTX_data_scene(C); | 	Scene *scene= CTX_data_scene(C); | ||||||
| 	Object *obedit= CTX_data_edit_object(C); | 	Object *obedit= CTX_data_edit_object(C); | ||||||
|  | 	ImageUser *iuser= NULL; | ||||||
| 	PropertyPointerRNA *pprop; | 	PropertyPointerRNA *pprop; | ||||||
| 	PointerRNA idptr; | 	PointerRNA idptr; | ||||||
| 	Image *ima= NULL; | 	Image *ima= NULL; | ||||||
| @@ -724,11 +725,25 @@ static int open_exec(bContext *C, wmOperator *op) | |||||||
| 		RNA_property_pointer_set(&pprop->ptr, pprop->prop, idptr); | 		RNA_property_pointer_set(&pprop->ptr, pprop->prop, idptr); | ||||||
| 		RNA_property_update(C, &pprop->ptr, pprop->prop); | 		RNA_property_update(C, &pprop->ptr, pprop->prop); | ||||||
| 	} | 	} | ||||||
| 	else if(sima) | 	else if(sima) { | ||||||
| 		ED_space_image_set(C, sima, scene, obedit, ima); | 		ED_space_image_set(C, sima, scene, obedit, ima); | ||||||
|  | 		iuser= &sima->iuser; | ||||||
|  | 	} | ||||||
|  | 	else { | ||||||
|  | 		Tex *tex= CTX_data_pointer_get_type(C, "texture", &RNA_Texture).data; | ||||||
|  | 		if(tex && tex->type==TEX_IMAGE) | ||||||
|  | 			iuser= &tex->iuser; | ||||||
| 		 | 		 | ||||||
| 	// XXX other users? | 	} | ||||||
| 	BKE_image_signal(ima, (sima)? &sima->iuser: NULL, IMA_SIGNAL_RELOAD); | 	 | ||||||
|  | 	/* initialize because of new image */ | ||||||
|  | 	if(iuser) { | ||||||
|  | 		iuser->sfra= 1; | ||||||
|  | 		iuser->offset= 0; | ||||||
|  | 		iuser->fie_ima= 2; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	BKE_image_signal(ima, iuser, IMA_SIGNAL_RELOAD); | ||||||
| 	WM_event_add_notifier(C, NC_IMAGE|NA_EDITED, ima); | 	WM_event_add_notifier(C, NC_IMAGE|NA_EDITED, ima); | ||||||
| 	 | 	 | ||||||
| 	MEM_freeN(op->customdata); | 	MEM_freeN(op->customdata); | ||||||
| @@ -738,7 +753,7 @@ static int open_exec(bContext *C, wmOperator *op) | |||||||
|  |  | ||||||
| static int open_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event)) | static int open_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event)) | ||||||
| { | { | ||||||
| 	SpaceImage *sima= CTX_wm_space_image(C); | 	SpaceImage *sima= CTX_wm_space_image(C); /* XXX other space types can call */ | ||||||
| 	char *path=U.textudir; | 	char *path=U.textudir; | ||||||
| 	Image *ima= NULL; | 	Image *ima= NULL; | ||||||
|  |  | ||||||
| @@ -769,6 +784,7 @@ static int open_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event)) | |||||||
| 	return OPERATOR_RUNNING_MODAL; | 	return OPERATOR_RUNNING_MODAL; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | /* called by other space types too */ | ||||||
| void IMAGE_OT_open(wmOperatorType *ot) | void IMAGE_OT_open(wmOperatorType *ot) | ||||||
| { | { | ||||||
| 	/* identifiers */ | 	/* identifiers */ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user