Skip to content

Commit 9834d19

Browse files
authored
fix: correct selection after grouping layers (synfig#3660)
1 parent b56f8a5 commit 9834d19

3 files changed

Lines changed: 18 additions & 2 deletions

File tree

synfig-studio/src/gui/trees/layertree.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -426,9 +426,13 @@ LayerTree::select_layer(synfig::Layer::Handle layer)
426426
iter=sorted_layer_tree_store_->convert_child_iter_to_iter(iter);
427427

428428
Gtk::TreePath path(iter);
429-
layer_tree_view().expand_to_path(path);
429+
// do not auto expand when selecting a group layer to avoid "opening" it on selection
430+
if(!(layer->get_name() == "group"))
431+
layer_tree_view().expand_to_path(path);
432+
430433
layer_tree_view().scroll_to_row(path);
431434
layer_tree_view().get_selection()->select(iter);
435+
layer_tree_view().set_cursor(path);
432436
}
433437
}
434438

synfig-studio/src/synfigapp/actions/layerencapsulate.cpp

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ Action::LayerEncapsulate::prepare()
160160
if(!child_canvas)
161161
child_canvas=Canvas::create_inline(get_canvas());
162162

163-
Layer::Handle new_layer(Layer::create("group"));
163+
new_layer=Layer::create("group");
164164

165165
if (!description.empty())
166166
new_layer->set_description(description);
@@ -246,3 +246,13 @@ Action::LayerEncapsulate::prepare()
246246
}
247247
}
248248
}
249+
250+
void
251+
Action::LayerEncapsulate::perform()
252+
{
253+
Super::perform();
254+
if(new_layer && get_canvas_interface()){
255+
get_canvas_interface()->get_selection_manager()->clear_selected_layers();
256+
get_canvas_interface()->get_selection_manager()->set_selected_layer(new_layer);
257+
}
258+
}

synfig-studio/src/synfigapp/actions/layerencapsulate.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ class LayerEncapsulate :
5454
std::list<synfig::Layer::Handle> layers;
5555
bool children_lock;
5656

57+
synfig::Layer::Handle new_layer;
5758
int lowest_depth()const;
5859

5960
public:
@@ -67,6 +68,7 @@ class LayerEncapsulate :
6768
virtual bool is_ready()const;
6869

6970
virtual void prepare();
71+
virtual void perform();
7072

7173
ACTION_MODULE_EXT
7274
};

0 commit comments

Comments
 (0)