forked from bartvdbraak/blender
2.5 Bugfixes
#19345: can't get out of grayed out pointer field. #19342: item_pointerR fields can't be cleared with one item. #19341: fix hanging tooltips when manipulating regions. #19339: context panel still allowed tabbing, but it has no header. #19334: editing SSS settings crashed previewrender. #19330: object mode could not be switched on from the header menu.
This commit is contained in:
parent
c6107e0c76
commit
725c30f606
@ -159,9 +159,9 @@ void init_material(Material *ma)
|
||||
ma->sss_radius[0]= 1.0f;
|
||||
ma->sss_radius[1]= 1.0f;
|
||||
ma->sss_radius[2]= 1.0f;
|
||||
ma->sss_col[0]= 0.8f;
|
||||
ma->sss_col[1]= 0.8f;
|
||||
ma->sss_col[2]= 0.8f;
|
||||
ma->sss_col[0]= 1.0f;
|
||||
ma->sss_col[1]= 1.0f;
|
||||
ma->sss_col[2]= 1.0f;
|
||||
ma->sss_error= 0.05f;
|
||||
ma->sss_scale= 0.1f;
|
||||
ma->sss_ior= 1.3f;
|
||||
|
@ -4861,6 +4861,10 @@ static void view3d_split_250(View3D *v3d, ListBase *regions)
|
||||
QUATCOPY(rv3d->viewquat, v3d->viewquat);
|
||||
}
|
||||
}
|
||||
|
||||
/* this was not initialized correct always */
|
||||
if(v3d->twtype == 0)
|
||||
v3d->twtype= V3D_MANIP_TRANSLATE;
|
||||
}
|
||||
|
||||
static void direct_link_screen(FileData *fd, bScreen *sc)
|
||||
@ -9687,6 +9691,11 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
|
||||
|
||||
/* put 2.50 compatibility code here until next subversion bump */
|
||||
{
|
||||
Scene *sce;
|
||||
|
||||
for(sce = main->scene.first; sce; sce = sce->id.next)
|
||||
if(sce->unit.scale_length == 0.0f)
|
||||
sce->unit.scale_length= 1.0f;
|
||||
}
|
||||
|
||||
/* WATCH IT!!!: pointers from libdata have not been converted yet here! */
|
||||
|
@ -58,6 +58,7 @@ void ED_region_panels_init(struct wmWindowManager *wm, struct ARegion *ar);
|
||||
void ED_region_panels(const struct bContext *C, struct ARegion *ar, int vertical, char *context, int contextnr);
|
||||
void ED_region_header_init(struct ARegion *ar);
|
||||
void ED_region_header(const struct bContext *C, struct ARegion *ar);
|
||||
void ED_region_toggle_hidden(struct bContext *C, struct ARegion *ar);
|
||||
void region_scissor_winrct(struct ARegion *ar, struct rcti *winrct);
|
||||
|
||||
/* spaces */
|
||||
|
@ -1440,16 +1440,20 @@ static void ui_textedit_next_but(uiBlock *block, uiBut *actbut, uiHandleButtonDa
|
||||
|
||||
for(but= actbut->next; but; but= but->next) {
|
||||
if(ELEM7(but->type, TEX, NUM, NUMABS, NUMSLI, HSVSLI, IDPOIN, SEARCH_MENU)) {
|
||||
data->postbut= but;
|
||||
data->posttype= BUTTON_ACTIVATE_TEXT_EDITING;
|
||||
return;
|
||||
if(!(but->flag & UI_BUT_DISABLED)) {
|
||||
data->postbut= but;
|
||||
data->posttype= BUTTON_ACTIVATE_TEXT_EDITING;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
for(but= block->buttons.first; but!=actbut; but= but->next) {
|
||||
if(ELEM7(but->type, TEX, NUM, NUMABS, NUMSLI, HSVSLI, IDPOIN, SEARCH_MENU)) {
|
||||
data->postbut= but;
|
||||
data->posttype= BUTTON_ACTIVATE_TEXT_EDITING;
|
||||
return;
|
||||
if(!(but->flag & UI_BUT_DISABLED)) {
|
||||
data->postbut= but;
|
||||
data->posttype= BUTTON_ACTIVATE_TEXT_EDITING;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1464,16 +1468,20 @@ static void ui_textedit_prev_but(uiBlock *block, uiBut *actbut, uiHandleButtonDa
|
||||
|
||||
for(but= actbut->prev; but; but= but->prev) {
|
||||
if(ELEM7(but->type, TEX, NUM, NUMABS, NUMSLI, HSVSLI, IDPOIN, SEARCH_MENU)) {
|
||||
data->postbut= but;
|
||||
data->posttype= BUTTON_ACTIVATE_TEXT_EDITING;
|
||||
return;
|
||||
if(!(but->flag & UI_BUT_DISABLED)) {
|
||||
data->postbut= but;
|
||||
data->posttype= BUTTON_ACTIVATE_TEXT_EDITING;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
for(but= block->buttons.last; but!=actbut; but= but->prev) {
|
||||
if(ELEM7(but->type, TEX, NUM, NUMABS, NUMSLI, HSVSLI, IDPOIN, SEARCH_MENU)) {
|
||||
data->postbut= but;
|
||||
data->posttype= BUTTON_ACTIVATE_TEXT_EDITING;
|
||||
return;
|
||||
if(!(but->flag & UI_BUT_DISABLED)) {
|
||||
data->postbut= but;
|
||||
data->posttype= BUTTON_ACTIVATE_TEXT_EDITING;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -990,6 +990,7 @@ static void test_add_new_tabs(ARegion *ar)
|
||||
}
|
||||
|
||||
if(pasel==NULL || palap==NULL) return;
|
||||
if(palap->type && palap->type->flag & PNL_NO_HEADER) return;
|
||||
|
||||
/* the overlapped panel becomes a tab */
|
||||
palap->paneltab= pasel;
|
||||
|
@ -758,7 +758,7 @@ void ui_searchbox_update(bContext *C, ARegion *ar, uiBut *but, int reset)
|
||||
data->active= a+1;
|
||||
if(cpoin) cpoin[0]= '|';
|
||||
}
|
||||
if(data->items.totitem==1)
|
||||
if(data->items.totitem==1 && but->editstr[0])
|
||||
data->active= 1;
|
||||
}
|
||||
|
||||
|
@ -1957,29 +1957,26 @@ static int object_mode_set_compat(bContext *C, wmOperator *op, Object *ob)
|
||||
ObjectMode mode = RNA_enum_get(op->ptr, "mode");
|
||||
|
||||
if(ob) {
|
||||
if(mode == OB_MODE_OBJECT)
|
||||
return 1;
|
||||
|
||||
switch(ob->type) {
|
||||
case OB_EMPTY:
|
||||
case OB_LAMP:
|
||||
case OB_CAMERA:
|
||||
if(mode & OB_MODE_OBJECT)
|
||||
return 1;
|
||||
return 0;
|
||||
case OB_MESH:
|
||||
if(mode & ( OB_MODE_OBJECT|OB_MODE_EDIT|OB_MODE_SCULPT|OB_MODE_VERTEX_PAINT|OB_MODE_WEIGHT_PAINT|OB_MODE_TEXTURE_PAINT|OB_MODE_PARTICLE_EDIT))
|
||||
if(mode & (OB_MODE_EDIT|OB_MODE_SCULPT|OB_MODE_VERTEX_PAINT|OB_MODE_WEIGHT_PAINT|OB_MODE_TEXTURE_PAINT|OB_MODE_PARTICLE_EDIT))
|
||||
return 1;
|
||||
return 0;
|
||||
case OB_CURVE:
|
||||
case OB_SURF:
|
||||
case OB_FONT:
|
||||
case OB_MBALL:
|
||||
if(mode & (OB_MODE_OBJECT|OB_MODE_EDIT))
|
||||
if(mode & (OB_MODE_EDIT))
|
||||
return 1;
|
||||
return 0;
|
||||
case OB_LATTICE:
|
||||
if(mode & (OB_MODE_OBJECT|OB_MODE_EDIT|OB_MODE_WEIGHT_PAINT))
|
||||
if(mode & (OB_MODE_EDIT|OB_MODE_WEIGHT_PAINT))
|
||||
return 1;
|
||||
case OB_ARMATURE:
|
||||
if(mode & (OB_MODE_OBJECT|OB_MODE_EDIT|OB_MODE_POSE))
|
||||
if(mode & (OB_MODE_EDIT|OB_MODE_POSE))
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
@ -2036,7 +2033,7 @@ void OBJECT_OT_mode_set(wmOperatorType *ot)
|
||||
/* flags */
|
||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||
|
||||
prop= RNA_def_enum(ot->srna, "mode", object_mode_items, 0, "Mode", "");
|
||||
prop= RNA_def_enum(ot->srna, "mode", object_mode_items, OB_MODE_OBJECT, "Mode", "");
|
||||
RNA_def_enum_funcs(prop, object_mode_set_itemsf);
|
||||
|
||||
RNA_def_boolean(ot->srna, "toggle", 0, "Toggle", "");
|
||||
|
@ -916,6 +916,19 @@ void ED_region_init(bContext *C, ARegion *ar)
|
||||
|
||||
}
|
||||
|
||||
void ED_region_toggle_hidden(bContext *C, ARegion *ar)
|
||||
{
|
||||
ScrArea *sa= CTX_wm_area(C);
|
||||
|
||||
ar->flag ^= RGN_FLAG_HIDDEN;
|
||||
ar->v2d.flag &= ~V2D_IS_INITIALISED; /* XXX should become hide/unhide api? */
|
||||
|
||||
if(ar->flag & RGN_FLAG_HIDDEN)
|
||||
WM_event_remove_handlers(C, &ar->handlers);
|
||||
|
||||
ED_area_initialize(CTX_wm_manager(C), CTX_wm_window(C), sa);
|
||||
ED_area_tag_redraw(sa);
|
||||
}
|
||||
|
||||
/* sa2 to sa1, we swap spaces for fullscreen to keep all allocated data */
|
||||
/* area vertices were set */
|
||||
|
@ -1320,10 +1320,11 @@ static int region_scale_modal(bContext *C, wmOperator *op, wmEvent *event)
|
||||
CLAMP(rmd->ar->type->minsizex, 0, 1000);
|
||||
if(rmd->ar->type->minsizex < 24) {
|
||||
rmd->ar->type->minsizex= rmd->origval;
|
||||
rmd->ar->flag |= RGN_FLAG_HIDDEN;
|
||||
if(!(rmd->ar->flag & RGN_FLAG_HIDDEN))
|
||||
ED_region_toggle_hidden(C, rmd->ar);
|
||||
}
|
||||
else
|
||||
rmd->ar->flag &= ~RGN_FLAG_HIDDEN;
|
||||
else if(rmd->ar->flag & RGN_FLAG_HIDDEN)
|
||||
ED_region_toggle_hidden(C, rmd->ar);
|
||||
}
|
||||
else {
|
||||
delta= event->y - rmd->origy;
|
||||
@ -1332,10 +1333,11 @@ static int region_scale_modal(bContext *C, wmOperator *op, wmEvent *event)
|
||||
CLAMP(rmd->ar->type->minsizey, 0, 1000);
|
||||
if(rmd->ar->type->minsizey < 24) {
|
||||
rmd->ar->type->minsizey= rmd->origval;
|
||||
rmd->ar->flag |= RGN_FLAG_HIDDEN;
|
||||
if(!(rmd->ar->flag & RGN_FLAG_HIDDEN))
|
||||
ED_region_toggle_hidden(C, rmd->ar);
|
||||
}
|
||||
else
|
||||
rmd->ar->flag &= ~RGN_FLAG_HIDDEN;
|
||||
else if(rmd->ar->flag & RGN_FLAG_HIDDEN)
|
||||
ED_region_toggle_hidden(C, rmd->ar);
|
||||
}
|
||||
|
||||
WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL);
|
||||
@ -1346,7 +1348,7 @@ static int region_scale_modal(bContext *C, wmOperator *op, wmEvent *event)
|
||||
if(event->val==0) {
|
||||
|
||||
if(ABS(event->x - rmd->origx) < 2 && ABS(event->y - rmd->origy) < 2) {
|
||||
rmd->ar->flag ^= RGN_FLAG_HIDDEN;
|
||||
ED_region_toggle_hidden(C, rmd->ar);
|
||||
WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL);
|
||||
}
|
||||
MEM_freeN(op->customdata);
|
||||
|
@ -855,13 +855,9 @@ int file_bookmark_toggle_exec(bContext *C, wmOperator *unused)
|
||||
ScrArea *sa= CTX_wm_area(C);
|
||||
ARegion *ar= file_buttons_region(sa);
|
||||
|
||||
if(ar) {
|
||||
ar->flag ^= RGN_FLAG_HIDDEN;
|
||||
ar->v2d.flag &= ~V2D_IS_INITIALISED; /* XXX should become hide/unhide api? */
|
||||
|
||||
ED_area_initialize(CTX_wm_manager(C), CTX_wm_window(C), sa);
|
||||
ED_area_tag_redraw(sa);
|
||||
}
|
||||
if(ar)
|
||||
ED_region_toggle_hidden(C, ar);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
|
@ -427,13 +427,9 @@ static int graph_properties(bContext *C, wmOperator *op)
|
||||
ScrArea *sa= CTX_wm_area(C);
|
||||
ARegion *ar= graph_has_buttons_region(sa);
|
||||
|
||||
if(ar) {
|
||||
ar->flag ^= RGN_FLAG_HIDDEN;
|
||||
ar->v2d.flag &= ~V2D_IS_INITIALISED; /* XXX should become hide/unhide api? */
|
||||
|
||||
ED_area_initialize(CTX_wm_manager(C), CTX_wm_window(C), sa);
|
||||
ED_area_tag_redraw(sa);
|
||||
}
|
||||
if(ar)
|
||||
ED_region_toggle_hidden(C, ar);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
|
@ -1452,13 +1452,9 @@ static int image_properties(bContext *C, wmOperator *op)
|
||||
ScrArea *sa= CTX_wm_area(C);
|
||||
ARegion *ar= image_has_buttons_region(sa);
|
||||
|
||||
if(ar) {
|
||||
ar->flag ^= RGN_FLAG_HIDDEN;
|
||||
ar->v2d.flag &= ~V2D_IS_INITIALISED; /* XXX should become hide/unhide api? */
|
||||
|
||||
ED_area_initialize(CTX_wm_manager(C), CTX_wm_window(C), sa);
|
||||
ED_area_tag_redraw(sa);
|
||||
}
|
||||
if(ar)
|
||||
ED_region_toggle_hidden(C, ar);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
|
@ -124,13 +124,9 @@ static int logic_properties(bContext *C, wmOperator *op)
|
||||
ScrArea *sa= CTX_wm_area(C);
|
||||
ARegion *ar= logic_has_buttons_region(sa);
|
||||
|
||||
if(ar) {
|
||||
ar->flag ^= RGN_FLAG_HIDDEN;
|
||||
ar->v2d.flag &= ~V2D_IS_INITIALISED; /* XXX should become hide/unhide api? */
|
||||
|
||||
ED_area_initialize(CTX_wm_manager(C), CTX_wm_window(C), sa);
|
||||
ED_area_tag_redraw(sa);
|
||||
}
|
||||
if(ar)
|
||||
ED_region_toggle_hidden(C, ar);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
|
@ -458,13 +458,9 @@ static int nla_properties(bContext *C, wmOperator *op)
|
||||
ScrArea *sa= CTX_wm_area(C);
|
||||
ARegion *ar= nla_has_buttons_region(sa);
|
||||
|
||||
if(ar) {
|
||||
ar->flag ^= RGN_FLAG_HIDDEN;
|
||||
ar->v2d.flag &= ~V2D_IS_INITIALISED; /* XXX should become hide/unhide api? */
|
||||
|
||||
ED_area_initialize(CTX_wm_manager(C), CTX_wm_window(C), sa);
|
||||
ED_area_tag_redraw(sa);
|
||||
}
|
||||
if(ar)
|
||||
ED_region_toggle_hidden(C, ar);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
|
@ -112,13 +112,9 @@ static int sequencer_properties(bContext *C, wmOperator *op)
|
||||
ScrArea *sa= CTX_wm_area(C);
|
||||
ARegion *ar= sequencer_has_buttons_region(sa);
|
||||
|
||||
if(ar) {
|
||||
ar->flag ^= RGN_FLAG_HIDDEN;
|
||||
ar->v2d.flag &= ~V2D_IS_INITIALISED; /* XXX should become hide/unhide api? */
|
||||
|
||||
ED_area_initialize(CTX_wm_manager(C), CTX_wm_window(C), sa);
|
||||
ED_area_tag_redraw(sa);
|
||||
}
|
||||
if(ar)
|
||||
ED_region_toggle_hidden(C, ar);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
|
@ -186,15 +186,6 @@ ARegion *text_has_properties_region(ScrArea *sa)
|
||||
return arnew;
|
||||
}
|
||||
|
||||
void text_toggle_properties_region(bContext *C, ScrArea *sa, ARegion *ar)
|
||||
{
|
||||
ar->flag ^= RGN_FLAG_HIDDEN;
|
||||
ar->v2d.flag &= ~V2D_IS_INITIALISED; /* XXX should become hide/unhide api? */
|
||||
|
||||
ED_area_initialize(CTX_wm_manager(C), CTX_wm_window(C), sa);
|
||||
ED_area_tag_redraw(sa);
|
||||
}
|
||||
|
||||
static int properties_poll(bContext *C)
|
||||
{
|
||||
return (CTX_wm_space_text(C) != NULL);
|
||||
@ -206,7 +197,7 @@ static int properties_exec(bContext *C, wmOperator *op)
|
||||
ARegion *ar= text_has_properties_region(sa);
|
||||
|
||||
if(ar)
|
||||
text_toggle_properties_region(C, sa, ar);
|
||||
ED_region_toggle_hidden(C, ar);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
@ -190,6 +190,8 @@ static SpaceLink *view3d_new(const bContext *C)
|
||||
v3d->lens= 35.0f;
|
||||
v3d->near= 0.01f;
|
||||
v3d->far= 500.0f;
|
||||
|
||||
v3d->twtype= V3D_MANIP_TRANSLATE;
|
||||
|
||||
/* header */
|
||||
ar= MEM_callocN(sizeof(ARegion), "header for view3d");
|
||||
|
@ -1458,13 +1458,9 @@ static int view3d_properties(bContext *C, wmOperator *op)
|
||||
ScrArea *sa= CTX_wm_area(C);
|
||||
ARegion *ar= view3d_has_buttons_region(sa);
|
||||
|
||||
if(ar) {
|
||||
ar->flag ^= RGN_FLAG_HIDDEN;
|
||||
ar->v2d.flag &= ~V2D_IS_INITIALISED; /* XXX should become hide/unhide api? */
|
||||
|
||||
ED_area_initialize(CTX_wm_manager(C), CTX_wm_window(C), sa);
|
||||
ED_area_tag_redraw(sa);
|
||||
}
|
||||
if(ar)
|
||||
ED_region_toggle_hidden(C, ar);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
|
@ -1122,13 +1122,13 @@ static int snap_menu_invoke(bContext *C, wmOperator *unused, wmEvent *event)
|
||||
uiPopupMenu *pup= uiPupMenuBegin(C, "Snap", 0);
|
||||
uiLayout *layout= uiPupMenuLayout(pup);
|
||||
|
||||
uiItemO(layout, NULL, 0, "VIEW3D_OT_snap_selected_to_grid");
|
||||
uiItemO(layout, NULL, 0, "VIEW3D_OT_snap_selected_to_cursor");
|
||||
uiItemO(layout, NULL, 0, "VIEW3D_OT_snap_selected_to_center");
|
||||
uiItemO(layout, "Selected to Grid", 0, "VIEW3D_OT_snap_selected_to_grid");
|
||||
uiItemO(layout, "Selected to Cursor", 0, "VIEW3D_OT_snap_selected_to_cursor");
|
||||
uiItemO(layout, "Selected to Center", 0, "VIEW3D_OT_snap_selected_to_center");
|
||||
uiItemS(layout);
|
||||
uiItemO(layout, NULL, 0, "VIEW3D_OT_snap_cursor_to_selected");
|
||||
uiItemO(layout, NULL, 0, "VIEW3D_OT_snap_cursor_to_grid");
|
||||
uiItemO(layout, NULL, 0, "VIEW3D_OT_snap_cursor_to_active");
|
||||
uiItemO(layout, "Cursor to Selected", 0, "VIEW3D_OT_snap_cursor_to_selected");
|
||||
uiItemO(layout, "Cursor to Grid", 0, "VIEW3D_OT_snap_cursor_to_grid");
|
||||
uiItemO(layout, "Cursor to Active", 0, "VIEW3D_OT_snap_cursor_to_active");
|
||||
|
||||
uiPupMenuEnd(C, pup);
|
||||
|
||||
|
@ -309,13 +309,9 @@ static int view3d_toolbar(bContext *C, wmOperator *op)
|
||||
ScrArea *sa= CTX_wm_area(C);
|
||||
ARegion *ar= view3d_has_tools_region(sa);
|
||||
|
||||
if(ar) {
|
||||
ar->flag ^= RGN_FLAG_HIDDEN;
|
||||
ar->v2d.flag &= ~V2D_IS_INITIALISED; /* XXX should become hide/unhide api? */
|
||||
|
||||
ED_area_initialize(CTX_wm_manager(C), CTX_wm_window(C), sa);
|
||||
ED_area_tag_redraw(sa);
|
||||
}
|
||||
if(ar)
|
||||
ED_region_toggle_hidden(C, ar);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
|
@ -1526,7 +1526,7 @@ static void threaded_tile_processor(Render *re)
|
||||
if(re->result==NULL || !(re->r.scemode & R_PREVIEWBUTS)) {
|
||||
RE_FreeRenderResult(re->result);
|
||||
|
||||
if(re->sss_points)
|
||||
if(re->sss_points && render_display_draw_enabled(re))
|
||||
re->result= new_render_result(re, &re->disprect, 0, 0);
|
||||
else if(re->r.scemode & R_FULL_SAMPLE)
|
||||
re->result= new_full_sample_buffers_exr(re);
|
||||
|
@ -872,12 +872,17 @@ static void sss_create_tree_mat(Render *re, Material *mat)
|
||||
re->sss_points= &points;
|
||||
re->sss_mat= mat;
|
||||
re->i.partsdone= 0;
|
||||
re->result= NULL;
|
||||
|
||||
RE_TileProcessor(re, 0, !(re->r.mode & R_PREVIEWBUTS));
|
||||
RE_FreeRenderResult(re->result);
|
||||
if(!(re->r.scemode & R_PREVIEWBUTS))
|
||||
re->result= NULL;
|
||||
|
||||
RE_TileProcessor(re, 0, 1);
|
||||
|
||||
if(!(re->r.scemode & R_PREVIEWBUTS)) {
|
||||
RE_FreeRenderResult(re->result);
|
||||
re->result= rr;
|
||||
}
|
||||
|
||||
re->result= rr;
|
||||
re->i.partsdone= partsdone;
|
||||
re->sss_mat= NULL;
|
||||
re->sss_points= NULL;
|
||||
|
Loading…
Reference in New Issue
Block a user