move view3d keymaps so edit&paint mode keymaps override removed workaround that prevented switching directly from editmode to paint modes

+ other minor changes
This commit is contained in:
Campbell Barton 2009-10-15 17:59:42 +00:00
parent bd0fee9a4c
commit d464e2454e
6 changed files with 13 additions and 15 deletions

@ -200,6 +200,7 @@ struct Object *psys_get_lattice(struct ParticleSimulationData *sim);
int psys_in_edit_mode(struct Scene *scene, struct ParticleSystem *psys);
int psys_check_enabled(struct Object *ob, struct ParticleSystem *psys);
int psys_check_edited(struct ParticleSystem *psys);
void psys_check_group_weights(struct ParticleSettings *part);

@ -298,6 +298,14 @@ int psys_check_enabled(Object *ob, ParticleSystem *psys)
return 1;
}
int psys_check_edited(ParticleSystem *psys)
{
if(psys->part && psys->part->type==PART_HAIR)
return (psys->flag & PSYS_EDITED || (psys->edit && psys->edit->edited));
else
return (psys->pointcache->edit && psys->pointcache->edit->edited);
}
void psys_check_group_weights(ParticleSettings *part)
{
ParticleDupliWeight *dw, *tdw;

@ -2002,12 +2002,6 @@ static int object_mode_set_exec(bContext *C, wmOperator *op)
if(!ob || !object_mode_set_compat(C, op, ob))
return OPERATOR_PASS_THROUGH;
/* Irritating workaround! disallow paint modes from editmode since a number of shortcuts conflict
* XXX - would be much better to handle this on a keymap level */
if((ob->mode & OB_MODE_EDIT) && ELEM6(mode, OB_MODE_SCULPT, OB_MODE_VERTEX_PAINT, OB_MODE_WEIGHT_PAINT, OB_MODE_TEXTURE_PAINT, OB_MODE_PARTICLE_EDIT, OB_MODE_POSE)) {
return OPERATOR_PASS_THROUGH;
}
/* Exit current mode if it's not the mode we're setting */
if(ob->mode != OB_MODE_OBJECT && ob->mode != mode)
WM_operator_name_call(C, object_mode_op_string(ob->mode), WM_OP_EXEC_REGION_WIN, NULL);

@ -795,9 +795,6 @@ int file_directory_exec(bContext *C, wmOperator *unused)
SpaceFile *sfile= CTX_wm_space_file(C);
if(sfile->params) {
char prev_dir[sizeof(sfile->params->dir)];
BLI_strncpy(prev_dir, filelist_dir(sfile->files), sizeof(prev_dir));
if ( sfile->params->dir[0] == '~' ) {
if (sfile->params->dir[1] == '\0') {
BLI_strncpy(sfile->params->dir, BLI_gethome(), sizeof(sfile->params->dir) );

@ -298,8 +298,6 @@ static void view3d_main_area_init(wmWindowManager *wm, ARegion *ar)
wmKeyMap *keymap;
/* object ops. */
keymap= WM_keymap_find(wm->defaultconf, "Object Non-modal", 0, 0);
WM_event_add_keymap_handler(&ar->handlers, keymap);
/* pose is not modal, operator poll checks for this */
keymap= WM_keymap_find(wm->defaultconf, "Pose", 0, 0);
@ -349,6 +347,9 @@ static void view3d_main_area_init(wmWindowManager *wm, ARegion *ar)
keymap= WM_keymap_find(wm->defaultconf, "Font", 0, 0);
WM_event_add_keymap_handler(&ar->handlers, keymap);
keymap= WM_keymap_find(wm->defaultconf, "Object Non-modal", 0, 0);
WM_event_add_keymap_handler(&ar->handlers, keymap);
/* own keymap, last so modes can override it */
keymap= WM_keymap_find(wm->defaultconf, "View3D Generic", SPACE_VIEW3D, 0);
WM_event_add_keymap_handler(&ar->handlers, keymap);

@ -420,10 +420,7 @@ static int rna_ParticleSystem_editable_get(PointerRNA *ptr)
{
ParticleSystem *psys= (ParticleSystem*)ptr->data;
if(psys->part && psys->part->type==PART_HAIR)
return (psys->flag & PSYS_HAIR_DONE);
else
return (psys->pointcache->flag & PTCACHE_BAKED);
return psys_check_edited(psys);
}
static int rna_ParticleSystem_edited_get(PointerRNA *ptr)
{