WIP: Brush assets project #106303
|
@ -1326,7 +1326,6 @@ static Image *image_open_single(Main *bmain,
|
||||||
|
|
||||||
static int image_open_exec(bContext *C, wmOperator *op)
|
static int image_open_exec(bContext *C, wmOperator *op)
|
||||||
{
|
{
|
||||||
Main *bmain = CTX_data_main(C);
|
|
||||||
ScrArea *area = CTX_wm_area(C);
|
ScrArea *area = CTX_wm_area(C);
|
||||||
Scene *scene = CTX_data_scene(C);
|
Scene *scene = CTX_data_scene(C);
|
||||||
ImageUser *iuser = nullptr;
|
ImageUser *iuser = nullptr;
|
||||||
|
@ -1341,9 +1340,16 @@ static int image_open_exec(bContext *C, wmOperator *op)
|
||||||
image_open_init(C, op);
|
image_open_init(C, op);
|
||||||
}
|
}
|
||||||
|
|
||||||
ListBase ranges = ED_image_filesel_detect_sequences(bmain, op, use_udim);
|
ImageOpenData *iod = static_cast<ImageOpenData *>(op->customdata);
|
||||||
|
|
||||||
|
Main *id_main = CTX_data_main(C);
|
||||||
|
if (iod->pprop.ptr.owner_id) {
|
||||||
|
id_main = BKE_main_from_id(id_main, iod->pprop.ptr.owner_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
ListBase ranges = ED_image_filesel_detect_sequences(id_main, op, use_udim);
|
||||||
LISTBASE_FOREACH (ImageFrameRange *, range, &ranges) {
|
LISTBASE_FOREACH (ImageFrameRange *, range, &ranges) {
|
||||||
Image *ima_range = image_open_single(bmain, op, range, use_multiview);
|
Image *ima_range = image_open_single(id_main, op, range, use_multiview);
|
||||||
|
|
||||||
/* take the first image */
|
/* take the first image */
|
||||||
if ((ima == nullptr) && ima_range) {
|
if ((ima == nullptr) && ima_range) {
|
||||||
|
@ -1360,9 +1366,6 @@ static int image_open_exec(bContext *C, wmOperator *op)
|
||||||
return OPERATOR_CANCELLED;
|
return OPERATOR_CANCELLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* hook into UI */
|
|
||||||
ImageOpenData *iod = static_cast<ImageOpenData *>(op->customdata);
|
|
||||||
|
|
||||||
if (iod->pprop.prop) {
|
if (iod->pprop.prop) {
|
||||||
/* when creating new ID blocks, use is already 1, but RNA
|
/* when creating new ID blocks, use is already 1, but RNA
|
||||||
* pointer use also increases user, so this compensates it */
|
* pointer use also increases user, so this compensates it */
|
||||||
|
@ -1378,7 +1381,7 @@ static int image_open_exec(bContext *C, wmOperator *op)
|
||||||
}
|
}
|
||||||
else if (area && area->spacetype == SPACE_IMAGE) {
|
else if (area && area->spacetype == SPACE_IMAGE) {
|
||||||
SpaceImage *sima = static_cast<SpaceImage *>(area->spacedata.first);
|
SpaceImage *sima = static_cast<SpaceImage *>(area->spacedata.first);
|
||||||
ED_space_image_set(bmain, sima, ima, false);
|
ED_space_image_set(id_main, sima, ima, false);
|
||||||
iuser = &sima->iuser;
|
iuser = &sima->iuser;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -1418,9 +1421,9 @@ static int image_open_exec(bContext *C, wmOperator *op)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* XXX BKE_packedfile_unpack_image frees image buffers */
|
/* XXX BKE_packedfile_unpack_image frees image buffers */
|
||||||
ED_preview_kill_jobs(CTX_wm_manager(C), bmain);
|
ED_preview_kill_jobs(CTX_wm_manager(C), id_main);
|
||||||
|
|
||||||
BKE_image_signal(bmain, ima, iuser, IMA_SIGNAL_RELOAD);
|
BKE_image_signal(id_main, 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);
|
||||||
|
|
Loading…
Reference in New Issue