Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2010-01-03 07:21:40 +0300
committerCampbell Barton <ideasman42@gmail.com>2010-01-03 07:21:40 +0300
commiteb7ac3146e1cee6c1246c3772e11538c253559a0 (patch)
treefcb65e2ea7bbc765eb7c8dd49d9c20e8ebc1e5fc /source/blender/editors/space_view3d/view3d_header.c
parenta93e2d3603cf25955141df497f497478da71e02f (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.c18
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)