diff options
author | Campbell Barton <ideasman42@gmail.com> | 2010-01-03 07:21:40 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2010-01-03 07:21:40 +0300 |
commit | eb7ac3146e1cee6c1246c3772e11538c253559a0 (patch) | |
tree | fcb65e2ea7bbc765eb7c8dd49d9c20e8ebc1e5fc /source/blender/editors/space_view3d/view3d_header.c | |
parent | a93e2d3603cf25955141df497f497478da71e02f (diff) |
- disallow the change the layer operator in localview.
- toggle setting the layers (mainly useful when accessed from the keys)
Diffstat (limited to 'source/blender/editors/space_view3d/view3d_header.c')
-rw-r--r-- | source/blender/editors/space_view3d/view3d_header.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c index 9b6cfc6cbd0..98f0f2fec65 100644 --- a/source/blender/editors/space_view3d/view3d_header.c +++ b/source/blender/editors/space_view3d/view3d_header.c @@ -173,6 +173,7 @@ static int layers_exec(bContext *C, wmOperator *op) ScrArea *sa= CTX_wm_area(C); View3D *v3d= sa->spacedata.first; int nr= RNA_int_get(op->ptr, "nr"); + int toggle= RNA_boolean_get(op->ptr, "toggle"); if(nr < 0) return OPERATOR_CANCELLED; @@ -188,9 +189,12 @@ static int layers_exec(bContext *C, wmOperator *op) else { nr--; - if(RNA_boolean_get(op->ptr, "extend")) - v3d->lay |= (1<<nr); - else + if(RNA_boolean_get(op->ptr, "extend")) { + if(toggle && v3d->lay & (1<<nr) && (v3d->lay & ~(1<<nr))) + v3d->lay &= ~(1<<nr); + else + v3d->lay |= (1<<nr); + } else v3d->lay = (1<<nr); /* set active layer, ensure to always have one */ @@ -238,6 +242,11 @@ static int layers_invoke(bContext *C, wmOperator *op, wmEvent *event) return OPERATOR_FINISHED; } +int layers_poll(bContext *C) +{ + return (ED_operator_view3d_active(C) && CTX_wm_view3d(C)->localvd==NULL); +} + void VIEW3D_OT_layers(wmOperatorType *ot) { /* identifiers */ @@ -248,13 +257,14 @@ void VIEW3D_OT_layers(wmOperatorType *ot) /* api callbacks */ ot->invoke= layers_invoke; ot->exec= layers_exec; - ot->poll= ED_operator_view3d_active; + ot->poll= layers_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; RNA_def_int(ot->srna, "nr", 1, 0, 20, "Number", "The layer number to set, zero for all layers", 0, 20); RNA_def_boolean(ot->srna, "extend", 0, "Extend", "Add this layer to the current view layers"); + RNA_def_boolean(ot->srna, "toggle", 1, "Toggle", "Toggle the layer"); } static char *view3d_modeselect_pup(Scene *scene) |