forked from bartvdbraak/blender
Fix for [#20226] 3DView header: hiding menu texts and layer button's issue.
Also: big purge of old 3d view header menus and old unused code
This commit is contained in:
parent
22290fbbbb
commit
bd8e929044
@ -33,13 +33,14 @@ class VIEW3D_HT_header(bpy.types.Header):
|
||||
obj = context.active_object
|
||||
toolsettings = context.scene.tool_settings
|
||||
|
||||
row = layout.row(align=True)
|
||||
row = layout.row()
|
||||
row.template_header()
|
||||
|
||||
|
||||
sub = row.row(align=True)
|
||||
|
||||
# Menus
|
||||
if context.area.show_menus:
|
||||
sub = row.row(align=True)
|
||||
|
||||
|
||||
sub.menu("VIEW3D_MT_view")
|
||||
|
||||
# Select Menu
|
||||
@ -49,20 +50,20 @@ class VIEW3D_HT_header(bpy.types.Header):
|
||||
if edit_object:
|
||||
sub.menu("VIEW3D_MT_edit_%s" % edit_object.type.lower())
|
||||
elif obj:
|
||||
if mode_string not in ['PAINT_WEIGHT', 'PAINT_TEXTURE']:
|
||||
if mode_string not in ('PAINT_WEIGHT'):
|
||||
sub.menu("VIEW3D_MT_%s" % mode_string.lower())
|
||||
else:
|
||||
sub.menu("VIEW3D_MT_object")
|
||||
|
||||
layout.template_header_3D()
|
||||
row.template_header_3D()
|
||||
|
||||
# Particle edit
|
||||
if obj and obj.mode == 'PARTICLE_EDIT':
|
||||
layout.prop(toolsettings.particle_edit, "selection_mode", text="", expand=True)
|
||||
row.prop(toolsettings.particle_edit, "selection_mode", text="", expand=True, toggle=True)
|
||||
|
||||
# Occlude geometry
|
||||
if obj and view.viewport_shading in ('SOLID', 'SHADED', 'TEXTURED') and (obj.mode == 'PARTICLE_EDIT' or (obj.mode == 'EDIT' and obj.type == 'MESH')):
|
||||
layout.prop(view, "occlude_geometry", text="")
|
||||
row.prop(view, "occlude_geometry", text="")
|
||||
|
||||
# Proportional editing
|
||||
if obj and obj.mode in ('OBJECT', 'EDIT'):
|
||||
|
@ -144,6 +144,7 @@ struct RegionView3D *ED_view3d_context_rv3d(struct bContext *C);
|
||||
void ED_view3d_init_mats_rv3d(struct Object *ob, struct RegionView3D *rv3d);
|
||||
|
||||
void ED_view3d_scene_layers_update(struct Main *bmain, struct Scene *scene);
|
||||
int ED_view3d_scene_layer_set(int lay, const int *values);
|
||||
|
||||
int ED_view3d_context_activate(struct bContext *C);
|
||||
void ED_view3d_draw_offscreen(struct Scene *scene, struct View3D *v3d, struct ARegion *ar,
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1263,6 +1263,74 @@ static unsigned int free_localbit(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void copy_view3d_lock_space(View3D *v3d, Scene *scene)
|
||||
{
|
||||
int bit;
|
||||
|
||||
if(v3d->scenelock && v3d->localvd==NULL) {
|
||||
v3d->lay= scene->lay;
|
||||
v3d->camera= scene->camera;
|
||||
|
||||
if(v3d->camera==NULL) {
|
||||
ARegion *ar;
|
||||
|
||||
for(ar=v3d->regionbase.first; ar; ar= ar->next) {
|
||||
if(ar->regiontype == RGN_TYPE_WINDOW) {
|
||||
RegionView3D *rv3d= ar->regiondata;
|
||||
if(rv3d->persp==RV3D_CAMOB)
|
||||
rv3d->persp= RV3D_PERSP;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if((v3d->lay & v3d->layact) == 0) {
|
||||
for(bit= 0; bit<32; bit++) {
|
||||
if(v3d->lay & (1<<bit)) {
|
||||
v3d->layact= 1<<bit;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ED_view3d_scene_layers_update(Main *bmain, Scene *scene)
|
||||
{
|
||||
bScreen *sc;
|
||||
ScrArea *sa;
|
||||
SpaceLink *sl;
|
||||
|
||||
/* from scene copy to the other views */
|
||||
for(sc=bmain->screen.first; sc; sc=sc->id.next) {
|
||||
if(sc->scene!=scene)
|
||||
continue;
|
||||
|
||||
for(sa=sc->areabase.first; sa; sa=sa->next)
|
||||
for(sl=sa->spacedata.first; sl; sl=sl->next)
|
||||
if(sl->spacetype==SPACE_VIEW3D)
|
||||
copy_view3d_lock_space((View3D*)sl, scene);
|
||||
}
|
||||
}
|
||||
|
||||
int ED_view3d_scene_layer_set(int lay, const int *values)
|
||||
{
|
||||
int i, tot= 0;
|
||||
|
||||
/* ensure we always have some layer selected */
|
||||
for(i=0; i<20; i++)
|
||||
if(values[i])
|
||||
tot++;
|
||||
|
||||
if(tot==0)
|
||||
return lay;
|
||||
|
||||
for(i=0; i<20; i++) {
|
||||
if(values[i]) lay |= (1<<i);
|
||||
else lay &= ~(1<<i);
|
||||
}
|
||||
|
||||
return lay;
|
||||
}
|
||||
|
||||
static void initlocalview(Scene *scene, ScrArea *sa)
|
||||
{
|
||||
|
@ -183,31 +183,11 @@ static void rna_Scene_set_set(PointerRNA *ptr, PointerRNA value)
|
||||
scene->set= set;
|
||||
}
|
||||
|
||||
static int layer_set(int lay, const int *values)
|
||||
{
|
||||
int i, tot= 0;
|
||||
|
||||
/* ensure we always have some layer selected */
|
||||
for(i=0; i<20; i++)
|
||||
if(values[i])
|
||||
tot++;
|
||||
|
||||
if(tot==0)
|
||||
return lay;
|
||||
|
||||
for(i=0; i<20; i++) {
|
||||
if(values[i]) lay |= (1<<i);
|
||||
else lay &= ~(1<<i);
|
||||
}
|
||||
|
||||
return lay;
|
||||
}
|
||||
|
||||
static void rna_Scene_layer_set(PointerRNA *ptr, const int *values)
|
||||
{
|
||||
Scene *scene= (Scene*)ptr->data;
|
||||
|
||||
scene->lay= layer_set(scene->lay, values);
|
||||
scene->lay= ED_view3d_scene_layer_set(scene->lay, values);
|
||||
}
|
||||
|
||||
static void rna_Scene_layer_update(bContext *C, PointerRNA *ptr)
|
||||
@ -555,7 +535,7 @@ static int rna_SceneRenderData_use_game_engine_get(PointerRNA *ptr)
|
||||
static void rna_SceneRenderLayer_layer_set(PointerRNA *ptr, const int *values)
|
||||
{
|
||||
SceneRenderLayer *rl= (SceneRenderLayer*)ptr->data;
|
||||
rl->lay= layer_set(rl->lay, values);
|
||||
rl->lay= ED_view3d_scene_layer_set(rl->lay, values);
|
||||
}
|
||||
|
||||
static void rna_SceneRenderLayer_pass_update(bContext *C, PointerRNA *ptr)
|
||||
|
@ -98,6 +98,7 @@ static EnumPropertyItem transform_orientation_items[] = {
|
||||
|
||||
#include "ED_image.h"
|
||||
#include "ED_screen.h"
|
||||
#include "ED_view3d.h"
|
||||
|
||||
#include "IMB_imbuf_types.h"
|
||||
|
||||
@ -227,6 +228,12 @@ static void rna_Space3DView_lock_camera_and_layers_set(PointerRNA *ptr, int valu
|
||||
}
|
||||
}
|
||||
|
||||
static void rna_Space3DView_layer_set(PointerRNA *ptr, const int *values)
|
||||
{
|
||||
View3D *v3d= (View3D*)(ptr->data);
|
||||
|
||||
v3d->lay= ED_view3d_scene_layer_set(v3d->lay, values);
|
||||
}
|
||||
|
||||
/* Space Image Editor */
|
||||
|
||||
@ -863,9 +870,17 @@ static void rna_def_space_3dview(BlenderRNA *brna)
|
||||
prop= RNA_def_property(srna, "lock_camera_and_layers", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "scenelock", 1);
|
||||
RNA_def_property_boolean_funcs(prop, NULL, "rna_Space3DView_lock_camera_and_layers_set");
|
||||
RNA_def_property_ui_text(prop, "Lock Camera and Layers", "Lock the active camera and layers to scene.");
|
||||
RNA_def_property_ui_text(prop, "Lock Camera and Layers", "Use the scene's active camera and layers in this view, rather than local layers.");
|
||||
RNA_def_property_ui_icon(prop, ICON_LOCKVIEW_OFF, 1);
|
||||
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
|
||||
|
||||
prop= RNA_def_property(srna, "visible_layers", PROP_BOOLEAN, PROP_LAYER_MEMBER);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "lay", 1);
|
||||
RNA_def_property_array(prop, 20);
|
||||
RNA_def_property_boolean_funcs(prop, NULL, "rna_Space3DView_layer_set");
|
||||
RNA_def_property_ui_text(prop, "Visible Layers", "Layers visible in this 3D View.");
|
||||
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
|
||||
|
||||
prop= RNA_def_property(srna, "used_layers", PROP_BOOLEAN, PROP_LAYER_MEMBER);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "lay_used", 1);
|
||||
RNA_def_property_array(prop, 20);
|
||||
|
Loading…
Reference in New Issue
Block a user