[Bf-blender-cvs] [bb6b967] soc-2016-layer_manager: Make active layer a scene level property
Julian Eisel
noreply at git.blender.org
Sat Jul 9 10:05:46 CEST 2016
Commit: bb6b967e0f3f9cf2ff92f4a4bd803580e3135cbf
Author: Julian Eisel
Date: Fri Jul 8 23:50:32 2016 +0200
Branches: soc-2016-layer_manager
https://developer.blender.org/rBbb6b967e0f3f9cf2ff92f4a4bd803580e3135cbf
Make active layer a scene level property
===================================================================
M source/blender/editors/space_layers/layers_ops.c
M source/blender/editors/space_layers/space_layers.c
M source/blender/makesdna/DNA_scene_types.h
M source/blender/makesdna/DNA_space_types.h
===================================================================
diff --git a/source/blender/editors/space_layers/layers_ops.c b/source/blender/editors/space_layers/layers_ops.c
index c0145cf..8b75969 100644
--- a/source/blender/editors/space_layers/layers_ops.c
+++ b/source/blender/editors/space_layers/layers_ops.c
@@ -526,7 +526,7 @@ BLI_INLINE void layer_selection_set(SpaceLayers *slayer, LayerTile *tile, const
{
if (enable) {
(tile->flag |= LAYERTILE_SELECTED);
- slayer->active_item = tile->litem->index;
+ slayer->act_tree->active_layer = tile->litem;
}
else {
tile->flag &= ~LAYERTILE_SELECTED;
@@ -590,7 +590,7 @@ static int layer_select_invoke(bContext *C, wmOperator *op, const wmEvent *event
layers_selection_set_all(slayer, false);
}
if (extend) {
- if (fill && layers_select_fill(slayer, slayer->active_item, tile->litem->index)) {
+ if (fill && layers_select_fill(slayer, slayer->act_tree->active_layer->index, tile->litem->index)) {
/* skip */
}
else {
@@ -662,16 +662,15 @@ static int layer_objects_assign_invoke(bContext *C, wmOperator *UNUSED(op), cons
Scene *scene = CTX_data_scene(C);
SpaceLayers *slayer = CTX_wm_space_layers(C);
- if (slayer->active_item == -1)
+ if (!slayer->act_tree->active_layer)
return OPERATOR_CANCELLED;
- LayerTreeItem *active = slayer->act_tree->items_all[slayer->active_item];
for (Base *base = scene->base.first; base; base = base->next) {
if (base->flag & SELECT) {
if (base->layer) {
BKE_objectlayer_base_unassign(base);
}
- BKE_objectlayer_base_assign(base, active, false);
+ BKE_objectlayer_base_assign(base, slayer->act_tree->active_layer, false);
}
}
diff --git a/source/blender/editors/space_layers/space_layers.c b/source/blender/editors/space_layers/space_layers.c
index 9a3b788..2d98b33 100644
--- a/source/blender/editors/space_layers/space_layers.c
+++ b/source/blender/editors/space_layers/space_layers.c
@@ -57,7 +57,6 @@ static SpaceLink *layers_new(const bContext *C)
slayer = MEM_callocN(sizeof(SpaceLayers), __func__);
slayer->spacetype = SPACE_LAYERS;
- slayer->active_item = -1;
layers_data_refresh(scene, slayer);
/* header */
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index 09377c3..d601911 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -95,6 +95,9 @@ typedef struct LayerTree {
* it's quite easy to break it. It could be supported but might lower performance a bit (maybe uber-picky).
* XXX Check if this can be made safer */
struct LayerTreeItem **items_all;
+
+ /* The currently active layer of this tree */
+ struct LayerTreeItem *active_layer;
} LayerTree;
/**
diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h
index 5c4b8fe..1653a02 100644
--- a/source/blender/makesdna/DNA_space_types.h
+++ b/source/blender/makesdna/DNA_space_types.h
@@ -1384,11 +1384,8 @@ typedef struct SpaceLayers {
* Use to get the LayerTile from a LayerTreeItem or for iterating over layer tree where order doesn't matter. */
struct GHash *tiles;
- /* LayerTree.items_all index of last selected LayerTreeItem */
- int active_item;
-
/* filtering (unused still) */
- short filterflag, pad2;
+ short filterflag, pad2[3];
char filter_str[64]; /* MAX_NAME */
} SpaceLayers;
More information about the Bf-blender-cvs
mailing list