Merge branch 'master' into blender2.8
Conflicts: source/blender/editors/sculpt_paint/paint_image.c source/blender/editors/space_image/image_edit.c source/blender/editors/space_image/image_ops.c source/blender/makesrna/intern/rna_material.c source/blender/makesrna/intern/rna_sculpt_paint.c source/blender/makesrna/intern/rna_space.c source/blenderplayer/bad_level_call_stubs/stubs.c
This commit is contained in:
@@ -41,6 +41,7 @@
|
||||
#include "BKE_image.h"
|
||||
#include "BKE_editmesh.h"
|
||||
#include "BKE_library.h"
|
||||
#include "BKE_main.h"
|
||||
|
||||
#include "IMB_imbuf_types.h"
|
||||
|
||||
|
||||
@@ -1627,7 +1627,7 @@ static char imtype_best_depth(ImBuf *ibuf, const char imtype)
|
||||
}
|
||||
}
|
||||
|
||||
static int save_image_options_init(SaveImageOptions *simopts, SpaceImage *sima, Scene *scene,
|
||||
static int save_image_options_init(Main *bmain, SaveImageOptions *simopts, SpaceImage *sima, Scene *scene,
|
||||
const bool guess_path, const bool save_as_render)
|
||||
{
|
||||
void *lock;
|
||||
@@ -1692,12 +1692,12 @@ static int save_image_options_init(SaveImageOptions *simopts, SpaceImage *sima,
|
||||
}
|
||||
else {
|
||||
BLI_strncpy(simopts->filepath, "//untitled", sizeof(simopts->filepath));
|
||||
BLI_path_abs(simopts->filepath, G.main->name);
|
||||
BLI_path_abs(simopts->filepath, bmain->name);
|
||||
}
|
||||
}
|
||||
else {
|
||||
BLI_snprintf(simopts->filepath, sizeof(simopts->filepath), "//%s", ima->id.name + 2);
|
||||
BLI_path_abs(simopts->filepath, is_prev_save ? G.ima : G.main->name);
|
||||
BLI_path_abs(simopts->filepath, is_prev_save ? G.ima : bmain->name);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1711,7 +1711,7 @@ static int save_image_options_init(SaveImageOptions *simopts, SpaceImage *sima,
|
||||
return (ibuf != NULL);
|
||||
}
|
||||
|
||||
static void save_image_options_from_op(SaveImageOptions *simopts, wmOperator *op)
|
||||
static void save_image_options_from_op(Main *bmain, SaveImageOptions *simopts, wmOperator *op)
|
||||
{
|
||||
if (op->customdata) {
|
||||
BKE_color_managed_view_settings_free(&simopts->im_format.view_settings);
|
||||
@@ -1721,7 +1721,7 @@ static void save_image_options_from_op(SaveImageOptions *simopts, wmOperator *op
|
||||
|
||||
if (RNA_struct_property_is_set(op->ptr, "filepath")) {
|
||||
RNA_string_get(op->ptr, "filepath", simopts->filepath);
|
||||
BLI_path_abs(simopts->filepath, G.main->name);
|
||||
BLI_path_abs(simopts->filepath, bmain->name);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2054,6 +2054,7 @@ static void image_save_as_free(wmOperator *op)
|
||||
|
||||
static int image_save_as_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Main *bmain = CTX_data_main(C);
|
||||
SpaceImage *sima = CTX_wm_space_image(C);
|
||||
SaveImageOptions simopts;
|
||||
|
||||
@@ -2061,9 +2062,9 @@ static int image_save_as_exec(bContext *C, wmOperator *op)
|
||||
|
||||
/* just in case to initialize values,
|
||||
* these should be set on invoke or by the caller. */
|
||||
save_image_options_init(&simopts, sima, CTX_data_scene(C), false, false);
|
||||
save_image_options_init(bmain, &simopts, sima, CTX_data_scene(C), false, false);
|
||||
|
||||
save_image_options_from_op(&simopts, op);
|
||||
save_image_options_from_op(bmain, &simopts, op);
|
||||
|
||||
save_image_doit(C, sima, op, &simopts, true);
|
||||
|
||||
@@ -2080,6 +2081,7 @@ static bool image_save_as_check(bContext *UNUSED(C), wmOperator *op)
|
||||
|
||||
static int image_save_as_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
|
||||
{
|
||||
Main *bmain = CTX_data_main(C);
|
||||
SpaceImage *sima = CTX_wm_space_image(C);
|
||||
Image *ima = ED_space_image(sima);
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
@@ -2092,7 +2094,7 @@ static int image_save_as_invoke(bContext *C, wmOperator *op, const wmEvent *UNUS
|
||||
|
||||
save_image_options_defaults(&simopts);
|
||||
|
||||
if (save_image_options_init(&simopts, sima, scene, true, save_as_render) == 0)
|
||||
if (save_image_options_init(bmain, &simopts, sima, scene, true, save_as_render) == 0)
|
||||
return OPERATOR_CANCELLED;
|
||||
save_image_options_to_op(&simopts, op);
|
||||
|
||||
@@ -2203,14 +2205,15 @@ void IMAGE_OT_save_as(wmOperatorType *ot)
|
||||
|
||||
static int image_save_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Main *bmain = CTX_data_main(C);
|
||||
SpaceImage *sima = CTX_wm_space_image(C);
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
SaveImageOptions simopts;
|
||||
|
||||
save_image_options_defaults(&simopts);
|
||||
if (save_image_options_init(&simopts, sima, scene, false, false) == 0)
|
||||
if (save_image_options_init(bmain, &simopts, sima, scene, false, false) == 0)
|
||||
return OPERATOR_CANCELLED;
|
||||
save_image_options_from_op(&simopts, op);
|
||||
save_image_options_from_op(bmain, &simopts, op);
|
||||
|
||||
if (BLI_exists(simopts.filepath) && BLI_file_is_writable(simopts.filepath)) {
|
||||
if (save_image_doit(C, sima, op, &simopts, false)) {
|
||||
|
||||
@@ -234,7 +234,7 @@ static int text_open_exec(bContext *C, wmOperator *op)
|
||||
|
||||
RNA_string_get(op->ptr, "filepath", str);
|
||||
|
||||
text = BKE_text_load_ex(bmain, str, G.main->name, internal);
|
||||
text = BKE_text_load_ex(bmain, str, bmain->name, internal);
|
||||
|
||||
if (!text) {
|
||||
if (op->customdata) MEM_freeN(op->customdata);
|
||||
@@ -272,8 +272,9 @@ static int text_open_exec(bContext *C, wmOperator *op)
|
||||
|
||||
static int text_open_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
|
||||
{
|
||||
Main *bmain = CTX_data_main(C);
|
||||
Text *text = CTX_data_edit_text(C);
|
||||
const char *path = (text && text->name) ? text->name : G.main->name;
|
||||
const char *path = (text && text->name) ? text->name : bmain->name;
|
||||
|
||||
if (RNA_struct_property_is_set(op->ptr, "filepath"))
|
||||
return text_open_exec(C, op);
|
||||
@@ -456,7 +457,7 @@ static int text_save_poll(bContext *C)
|
||||
return (text->name != NULL && !(text->flags & TXT_ISMEM));
|
||||
}
|
||||
|
||||
static void txt_write_file(Text *text, ReportList *reports)
|
||||
static void txt_write_file(Main *bmain, Text *text, ReportList *reports)
|
||||
{
|
||||
FILE *fp;
|
||||
TextLine *tmp;
|
||||
@@ -464,7 +465,7 @@ static void txt_write_file(Text *text, ReportList *reports)
|
||||
char filepath[FILE_MAX];
|
||||
|
||||
BLI_strncpy(filepath, text->name, FILE_MAX);
|
||||
BLI_path_abs(filepath, G.main->name);
|
||||
BLI_path_abs(filepath, bmain->name);
|
||||
|
||||
fp = BLI_fopen(filepath, "w");
|
||||
if (fp == NULL) {
|
||||
@@ -499,9 +500,10 @@ static void txt_write_file(Text *text, ReportList *reports)
|
||||
|
||||
static int text_save_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Main *bmain = CTX_data_main(C);
|
||||
Text *text = CTX_data_edit_text(C);
|
||||
|
||||
txt_write_file(text, op->reports);
|
||||
txt_write_file(bmain, text, op->reports);
|
||||
|
||||
text_update_cursor_moved(C);
|
||||
WM_event_add_notifier(C, NC_TEXT | NA_EDITED, text);
|
||||
@@ -525,6 +527,7 @@ void TEXT_OT_save(wmOperatorType *ot)
|
||||
|
||||
static int text_save_as_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Main *bmain = CTX_data_main(C);
|
||||
Text *text = CTX_data_edit_text(C);
|
||||
char str[FILE_MAX];
|
||||
|
||||
@@ -537,7 +540,7 @@ static int text_save_as_exec(bContext *C, wmOperator *op)
|
||||
text->name = BLI_strdup(str);
|
||||
text->flags &= ~TXT_ISMEM;
|
||||
|
||||
txt_write_file(text, op->reports);
|
||||
txt_write_file(bmain, text, op->reports);
|
||||
|
||||
text_update_cursor_moved(C);
|
||||
WM_event_add_notifier(C, NC_TEXT | NA_EDITED, text);
|
||||
@@ -547,6 +550,7 @@ static int text_save_as_exec(bContext *C, wmOperator *op)
|
||||
|
||||
static int text_save_as_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
|
||||
{
|
||||
Main *bmain = CTX_data_main(C);
|
||||
Text *text = CTX_data_edit_text(C);
|
||||
const char *str;
|
||||
|
||||
@@ -558,7 +562,7 @@ static int text_save_as_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSE
|
||||
else if (text->flags & TXT_ISMEM)
|
||||
str = text->id.name + 2;
|
||||
else
|
||||
str = G.main->name;
|
||||
str = bmain->name;
|
||||
|
||||
RNA_string_set(op->ptr, "filepath", str);
|
||||
WM_event_add_fileselect(C, op);
|
||||
|
||||
Reference in New Issue
Block a user