GPv3: Display layer groups in grease pencil dopesheet #111015

Merged
Amélie Fondevilla merged 34 commits from amelief/blender:gpv3-dopesheet-layer-groups into main 2023-08-21 10:51:06 +02:00
2 changed files with 8 additions and 10 deletions
Showing only changes of commit c920335471 - Show all commits

View File

@ -1809,11 +1809,11 @@ static size_t animdata_filter_grease_pencil_layer_node_recursive(
/* Skip node if the name doesn't match the filter string. */
const bool name_search = (ads->searchstr[0] != '\0');
const bool skip_node = name_search && !name_matches_dopesheet_filter(ads, node.name);
const bool skip_node = name_search && !name_matches_dopesheet_filter(ads, node.name().c_str());
if (node.is_layer() && !skip_node) {
items += animdata_filter_grease_pencil_layer(
anim_data, ads, grease_pencil, node.as_layer_for_write(), filter_mode);
anim_data, ads, grease_pencil, node.as_layer(), filter_mode);
}
else if (node.is_group()) {
const LayerGroup &layer_group = node.as_group();

View File

@ -74,10 +74,10 @@ void select_frames_at(bke::greasepencil::LayerGroup &layer_group,
LISTBASE_FOREACH_BACKWARD (GreasePencilLayerTreeNode *, node_, &layer_group.children) {
bke::greasepencil::TreeNode &node = node_->wrap();
if (node.is_group()) {
select_frames_at(node.as_group_for_write(), frame_number, select_mode);
select_frames_at(node.as_group(), frame_number, select_mode);
}
else if (node.is_layer()) {
select_frame_at(node.as_layer_for_write(), frame_number, select_mode);
select_frame_at(node.as_layer(), frame_number, select_mode);
}
}
}
@ -105,7 +105,7 @@ void select_frames_region(KeyframeEditData *ked,
const short select_mode)
{
if (node.is_layer()) {
for (auto [frame_number, frame] : node.as_layer_for_write().frames_for_write().items()) {
for (auto [frame_number, frame] : node.as_layer().frames_for_write().items()) {
/* Construct a dummy point coordinate to do this testing with. */
const float2 pt(float(frame_number), ked->channel_y);
@ -125,8 +125,7 @@ void select_frames_region(KeyframeEditData *ked,
}
}
else if (node.is_group()) {
LISTBASE_FOREACH_BACKWARD (
GreasePencilLayerTreeNode *, node_, &node.as_group_for_write().children) {
LISTBASE_FOREACH_BACKWARD (GreasePencilLayerTreeNode *, node_, &node.as_group().children) {
select_frames_region(ked, node_->wrap(), tool, select_mode);
}
}
@ -139,15 +138,14 @@ void select_frames_range(bke::greasepencil::TreeNode &node,
{
/* Only select those frames which are in bounds. */
if (node.is_layer()) {
for (auto [frame_number, frame] : node.as_layer_for_write().frames_for_write().items()) {
for (auto [frame_number, frame] : node.as_layer().frames_for_write().items()) {
if (IN_RANGE(float(frame_number), min, max)) {
select_frame(frame, select_mode);
}
}
}
else if (node.is_group()) {
LISTBASE_FOREACH_BACKWARD (
GreasePencilLayerTreeNode *, node_, &node.as_group_for_write().children) {
LISTBASE_FOREACH_BACKWARD (GreasePencilLayerTreeNode *, node_, &node.as_group().children) {
select_frames_range(node_->wrap(), min, max, select_mode);
}
}