Fix T70454: Environment Texture Node Properties "reload" and "packing" not working
The bug was basically just caused by a missing 'edit_image' and 'edit_image_user' pointer in context for 'node_shader_buts_tex_environment_ex'. So adding the following there would be enough to fix the bug: uiLayoutSetContextPointer(layout, "edit_image", &imaptr); uiLayoutSetContextPointer(layout, "edit_image_user", &iuserptr); However, I would suggest using the full-flegged uiTemplateImage (just as 'node_shader_buts_tex_image_ex' does -- instead of a "handmade" subset) for the following consistency reasons: - Layout was using single column for image textures, but not environment textures - Save / Discard feature on editing the image was there for image textures, but not environment textures - Environment textures: Color Space was displayed on node (but not properties) - Environment textures: Animation / Sequence settings were displayed on node (but not properties) Cant think of a reason for _not_ displaying the whole set for environment textures (just as for regular image textures)? Maniphest Tasks: T70454 Differential Revision: https://developer.blender.org/D5988
This commit is contained in:
parent
d590db8370
commit
40492251f2
Notes:
blender-bot
2023-02-14 00:37:10 +01:00
Referenced by issue #70454, Environment Texture Node Properties "reload" and "packing" not working
|
@ -816,51 +816,8 @@ static void node_shader_buts_tex_environment(uiLayout *layout, bContext *C, Poin
|
|||
|
||||
static void node_shader_buts_tex_environment_ex(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
||||
{
|
||||
PointerRNA imaptr = RNA_pointer_get(ptr, "image");
|
||||
PointerRNA iuserptr = RNA_pointer_get(ptr, "image_user");
|
||||
Image *ima = imaptr.data;
|
||||
|
||||
uiLayoutSetContextPointer(layout, "image_user", &iuserptr);
|
||||
uiTemplateID(layout,
|
||||
C,
|
||||
ptr,
|
||||
"image",
|
||||
"IMAGE_OT_new",
|
||||
"IMAGE_OT_open",
|
||||
NULL,
|
||||
UI_TEMPLATE_ID_FILTER_ALL,
|
||||
false);
|
||||
|
||||
if (!ima) {
|
||||
return;
|
||||
}
|
||||
|
||||
uiItemR(layout, &imaptr, "source", 0, IFACE_("Source"), ICON_NONE);
|
||||
|
||||
if (!(ELEM(ima->source, IMA_SRC_GENERATED, IMA_SRC_VIEWER))) {
|
||||
uiLayout *row = uiLayoutRow(layout, true);
|
||||
const bool is_packed = BKE_image_has_packedfile(ima);
|
||||
|
||||
if (is_packed) {
|
||||
uiItemO(row, "", ICON_PACKAGE, "image.unpack");
|
||||
}
|
||||
else {
|
||||
uiItemO(row, "", ICON_UGLYPACKAGE, "image.pack");
|
||||
}
|
||||
|
||||
row = uiLayoutRow(row, true);
|
||||
uiLayoutSetEnabled(row, !is_packed);
|
||||
uiItemR(row, &imaptr, "filepath", 0, "", ICON_NONE);
|
||||
uiItemO(row, "", ICON_FILE_REFRESH, "image.reload");
|
||||
}
|
||||
|
||||
/* multilayer? */
|
||||
if (ima->type == IMA_TYPE_MULTILAYER && ima->rr) {
|
||||
uiTemplateImageLayers(layout, C, ima, iuserptr.data);
|
||||
}
|
||||
else if (ima->source != IMA_SRC_GENERATED) {
|
||||
uiTemplateImageInfo(layout, C, ima, iuserptr.data);
|
||||
}
|
||||
uiTemplateImage(layout, C, ptr, "image", &iuserptr, 0, 0);
|
||||
|
||||
uiItemR(layout, ptr, "interpolation", 0, IFACE_("Interpolation"), ICON_NONE);
|
||||
uiItemR(layout, ptr, "projection", 0, IFACE_("Projection"), ICON_NONE);
|
||||
|
|
Loading…
Reference in New Issue