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:
authorMatt Ebb <matt@mke3.net>2010-06-04 05:39:34 +0400
committerMatt Ebb <matt@mke3.net>2010-06-04 05:39:34 +0400
commitb0eee216d4e551fc3c344d73983928e97bd59bb0 (patch)
tree4cc77c32666393d42f5df392a72ccdbc8257c13b /source/blender/editors/space_view3d/view3d_view.c
parentab5367e09f9cfc332a171099385e2c1b6d7516da (diff)
Fix [#22383] 3dView Layer Management (by Mouse) broken
Diffstat (limited to 'source/blender/editors/space_view3d/view3d_view.c')
-rw-r--r--source/blender/editors/space_view3d/view3d_view.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c
index 9790e928188..54cf6233cf8 100644
--- a/source/blender/editors/space_view3d/view3d_view.c
+++ b/source/blender/editors/space_view3d/view3d_view.c
@@ -1380,7 +1380,7 @@ static unsigned int free_localbit(void)
return 0;
}
-int ED_view3d_scene_layer_set(int lay, const int *values)
+int ED_view3d_scene_layer_set(int lay, const int *values, int *active)
{
int i, tot= 0;
@@ -1393,10 +1393,28 @@ int ED_view3d_scene_layer_set(int lay, const int *values)
return lay;
for(i=0; i<20; i++) {
- if(values[i]) lay |= (1<<i);
+
+ if (active) {
+ /* if this value has just been switched on, make that layer active */
+ if (values[i] && (lay & (1<<i))==0) {
+ *active = (1<<i);
+ }
+ }
+
+ if (values[i]) lay |= (1<<i);
else lay &= ~(1<<i);
}
+ /* ensure always an active layer */
+ if (active && (lay & *active)==0) {
+ for(i=0; i<20; i++) {
+ if(lay & (1<<i)) {
+ *active= 1<<i;
+ break;
+ }
+ }
+ }
+
return lay;
}