View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0008657 | ardour | bugs | public | 2021-04-08 21:32 | 2021-05-18 20:59 |
Reporter | Headwar | Assigned To | x42 | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Platform | Ubuntu | OS | Linux | OS Version | (any) |
Product Version | 6.6 | ||||
Summary | 0008657: [Papercut] Parameter "After a Split operation...", option "Preserve the existing selection, AND..." doesn't work as intended | ||||
Description | When the "After a Split operation, in Object mode:" parameter (in Editor > Split/Separate) is set to "Preserve the existing selection, AND select all newly-created regions", the regions not affected by a Split but part of the initial selection should be kept in the selection, which is not the case | ||||
Steps To Reproduce | See Description | ||||
Tags | Papercut | ||||
|
The issue is that removing a region from the region-list clears selection. When splitting the old region may be removed and two new ones are added. or rather the new region is created, doesn't have a playlist yet and is ignored by the RegionList which clears the selection regardless: read 1 "ArdourGUI" hit Breakpoint 1, Selection::clear_regions (this=0x55555e142e10, with_signal=true) at ../gtk2_ardour/selection.cc:156 156 printf ("Selection::clear_regions\n"); (gdb) bt #0 Selection::clear_regions(bool) (this=0x55555e142e10, with_signal=true) at ../gtk2_ardour/selection.cc:156 0000001 0x000055555739b0e0 inu() (this=0x55555e0bac90) at ../gtk2_ardour/editor_regions.cc:500 #2 0x00005555572bcee1 in sigc::bound_mem_functor0<void, EditorRegions>::operator()() const (this=0x55555e00ee48) at /usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:1991 #3 0x00005555572bc346 in sigc::adaptor_functor<sigc::bound_mem_functor0<void, EditorRegions> >::operator()() const (this=0x55555e00ee40) at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:256 0000004 0x00005555572bb013 in sigc::internal::slot_call0<sigc::bound_mem_functor0<void, EditorRegions>, void>::call_it(sigc::internal::slot_rep*) (rep=0x55555e00ee10) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:136 0000005 0x00007ffff5608f48 in Glib::SignalProxyNormal::slot0_void_callback(_GObject*, void*) () at /lib/x86_64-linux-gnu/libglibmm-2.4.so.1 #6 0x00007ffff555e0a2 in g_closure_invoke () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0 #7 0x00007ffff5570602 in () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0 0000008 0x00007ffff55766cf in g_signal_emit_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0 0000009 0x00007ffff5576e5f in g_signal_emit_by_name () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0 0000010 0x00007ffff51e5a49 in () at /lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 0000011 0x00007ffff555e0a2 in g_closure_invoke () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0 0000012 0x00007ffff5570413 in () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0 0000013 0x00007ffff55766cf in g_signal_emit_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0 0000014 0x00007ffff5576c3f in g_signal_emit () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0 #15 0x00007ffff51dcb30 in gtk_tree_store_remove () at /lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 0000016 0x00007ffff4b6c16c in Gtk::TreeStore::erase(Gtk::TreeIter const&) () at /lib/x86_64-linux-gnu/libgtkmm-2.4.so.1 #17 0x000055555739aaba in EditorRegions::region_changed(boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&) (this=0x55555e0bac90, r=..., what_changed=...) at ../gtk2_ardour/editor_regions.cc:449 0000018 0x00005555573ada47 in boost::_mfi::mf2<void, EditorRegions, boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&>::operator()(EditorRegions*, boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&) const (this=0x5555608c7358, p=0x55555e0bac90, a1=..., a2=...) at /usr/include/boost/bind/mem_fn_template.hpp:280 0000019 0x00005555573abd01 in boost::_bi::list3<boost::_bi::value<EditorRegions*>, boost::arg<1>, boost::arg<2> >::operator()<boost::_mfi::mf2<void, EditorRegions, boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&>, boost::_bi::rrlist2<boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&> >(boost::_bi::type<void>, boost::_mfi::mf2<void, EditorRegions, boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&>&, boost::_bi::rrlist2<boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&>&, int) (this=0x5555608c7368, f=..., a=...) at /usr/include/boost/bind/bind.hpp:398 0000020 0x00005555573a98a4 in boost::_bi::bind_t<void, boost::_mfi::mf2<void, EditorRegions, boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&>, boost::_bi::list3<boost::_bi::value<EditorRegions*>, boost::arg<1>, boost::arg<2> > >::operator()<boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&>(boost::shared_ptr<ARDOUR::Region>&&, PBD::PropertyChange const&) (this=0x5555608c7358, a1=..., a2=...) at /usr/include/boost/bind/bind.hpp:1318 0000021 0x00005555573a7613 in boost::detail::function::void_function_obj_invoker2<boost::_bi::bind_t<void, boost::_mfi::mf2<void, EditorRegions, boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&>, boost::_bi::list3<boost::_bi::value<EditorRegions*>, boost::arg<1>, boost::arg<2> > >, void, boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&>::invoke(boost::detail::function::function_buffer&, boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&) (function_obj_ptr=..., a0=..., a1=...) at /usr/include/boost/function/function_template.hpp:158 0000022 0x00005555573afa2e in boost::function2<void, boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&>::operator()(boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&) const (this=0x5555608c7350, a0=..., a1=...) at /usr/include/boost/function/function_template.hpp:763 0000023 0x00005555573af14f in boost::_bi::list2<boost::_bi::value<boost::shared_ptr<ARDOUR::Region> >, boost::_bi::value<PBD::PropertyChange> >::operator()<boost::function<void (boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&)>, boost::_bi::list0>(boost::_bi::type<void>, boost::function<void (boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&)>&, boost::_bi::list0&, int) (this=0x5555608c7370, f=..., a=...) at /usr/include/boost/bind/bind.hpp:319 #24 0x00005555573adc85 in boost::_bi::bind_t<boost::_bi::unspecified, boost::function<void (boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&)>, boost::_bi::list2<boost::_bi::value<boost::shared_ptr<ARDOUR::Region> >, boost::_bi::value<PBD::PropertyChange> > >::operator()() (this=0x5555608c7350) at /usr/include/boost/bind/bind.hpp:1294 0000025 0x00005555573ac2b1 in boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<boost::_bi::unspecified, boost::function<void (boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&)>, boost::_bi::list2<boost::_bi::value<boost::shared_ptr<ARDOUR::Region> >, boost::_bi::value<PBD::PropertyChange> > >, void>::invoke(boost::detail::function::function_buffer&) (function_obj_ptr=...) at /usr/include/boost/function/function_template.hpp:158 0000026 0x000055555709de84 in boost::function0<void>::operator()() const (this=0x7fffffffadd0) at /usr/include/boost/function/function_template.hpp:763 0000027 0x00007ffff59964de in AbstractUI<Gtkmm2ext::UIRequest>::call_slot(PBD::EventLoop::InvalidationRecord*, boost::function<void ()> const&) (this=0x55555844ca20, invalidation=0x0, f=...) at ../libs/pbd/pbd/abstract_ui.cc:434 0000028 0x00005555573a319f in PBD::Signal2<void, boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&, PBD::OptionalLastValue<void> >::compositor(boost::function<void (boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&)>, PBD::EventLoop*, PBD::EventLoop::InvalidationRecord*, boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&) (f=..., event_loop=0x55555844ca20, ir=0x0, a1=..., a2=...) at libs/pbd/pbd/signals_generated.h:971 0000029 0x00005555573adfea in boost::_bi::list5<boost::_bi::value<boost::function<void (boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&)> >, boost::_bi::value<PBD::EventLoop*>, boost::_bi::value<PBD::EventLoop::InvalidationRecord*>, boost::arg<1>, boost::arg<2> >::operator()<void (*)(boost::function<void (boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&)>, --Type <RET> for more, q to quit, c to continue without paging-- PBD::EventLoop*, PBD::EventLoop::InvalidationRecord*, boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&), boost::_bi::rrlist2<boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&> >(boost::_bi::type<void>, void (*&)(boost::function<void (boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&)>, PBD::EventLoop*, PBD::EventLoop::InvalidationRecord*, boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&), boost::_bi::rrlist2<boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&>&, int) (this=0x555560840368, f= @0x555560840360: 0x5555573a30c7 <PBD::Signal2<void, boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&, PBD::OptionalLastValue<void> >::compositor(boost::function<void (boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&)>, PBD::EventLoop*, PBD::EventLoop::InvalidationRecord*, boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&)>, a=...) at /usr/include/boost/bind/bind.hpp:531 0000030 0x00005555573ac42c in boost::_bi::bind_t<void, void (*)(boost::function<void (boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&)>, PBD::EventLoop*, PBD::EventLoop::InvalidationRecord*, boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&), boost::_bi::list5<boost::_bi::value<boost::function<void (boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&)> >, boost::_bi::value<PBD::EventLoop*>, boost::_bi::value<PBD::EventLoop::InvalidationRecord*>, boost::arg<1>, boost::arg<2> > >::operator()<boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&>(boost::shared_ptr<ARDOUR::Region>&&, PBD::PropertyChange const&) (this=0x555560840360, a1=..., a2=...) at /usr/include/boost/bind/bind.hpp:1318 0000031 0x00005555573aa1ef in boost::detail::function::void_function_obj_invoker2<boost::_bi::bind_t<void, void (*)(boost::function<void (boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&)>, PBD::EventLoop*, PBD::EventLoop::InvalidationRecord*, boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&), boost::_bi::list5<boost::_bi::value<boost::function<void (boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&)> >, boost::_bi::value<PBD::EventLoop*>, boost::_bi::value<PBD::EventLoop::InvalidationRecord*>, boost::arg<1>, boost::arg<2> > >, void, boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&>::invoke(boost::detail::function::function_buffer&, boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&) (function_obj_ptr=..., a0=..., a1=...) at /usr/include/boost/function/function_template.hpp:158 0000032 0x00005555573afa2e in boost::function2<void, boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&>::operator()(boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&) const (this=0x5555582c0f70, a0=..., a1=...) at /usr/include/boost/function/function_template.hpp:763 0000033 0x00007ffff7919c41 in PBD::Signal2<void, boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&, PBD::OptionalLastValue<void> >::operator()(boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const&) (this=0x555557ec9ee0 <ARDOUR::Region::RegionPropertyChanged>, a1=..., a2=...) at libs/pbd/pbd/signals_generated.h:1080 0000034 0x00007ffff7908b74 in ARDOUR::Playlist::flush_notifications(bool) (this=0x55555982e6a0, from_undo=false) at ../libs/ardour/playlist.cc:627 0000035 0x00007ffff790825f in ARDOUR::Playlist::release_notifications(bool) (this=0x55555982e6a0, from_undo=false) at ../libs/ardour/playlist.cc:475 0000036 0x00007ffff79081f5 in ARDOUR::Playlist::thaw(bool) (this=0x55555982e6a0, from_undo=false) at ../libs/ardour/playlist.cc:461 0000037 0x000055555734ccd5 in Editor::split_regions_at(ARDOUR::MusicSample, RegionSelection&) (this=0x55555e4d6020, where=..., regions=...) at ../gtk2_ardour/editor_ops.cc:276 0000038 0x000055555736e0a4 in Editor::split_region() (this=0x55555e4d6020) at ../gtk2_ardour/editor_ops.cc:6716 0000039 0x0000555557276373 in sigc::bound_mem_functor0<void, Editor>::operator()() const (this=0x555558e6e5a8) at /usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:1991 0000040 0x000055555726e6c6 in sigc::adaptor_functor<sigc::bound_mem_functor0<void, Editor> >::operator()() const (this=0x555558e6e5a0) at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:256 0000041 0x000055555726e6ed in sigc::internal::slot_call0<sigc::bound_mem_functor0<void, Editor>, void>::call_it(sigc::internal::slot_rep*) (rep=0x555558e6e570) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:136 0000042 0x00007ffff5608f48 in Glib::SignalProxyNormal::slot0_void_callback(_GObject*, void*) () at /lib/x86_64-linux-gnu/libglibmm-2.4.so.1 0000043 0x00007ffff555e0a2 in g_closure_invoke () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0 0000044 0x00007ffff5570602 in () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0 0000045 0x00007ffff55766cf in g_signal_emit_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0 0000046 0x00007ffff5576c3f in g_signal_emit () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0 0000047 0x00007ffff5027a01 in () at /lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 0000048 0x00007ffff596c80c in Gtkmm2ext::Bindings::activate(Gtkmm2ext::KeyboardKey, Gtkmm2ext::Bindings::Operation) (this=0x555558447000, kb=..., op=Gtkmm2ext::Bindings::Press) at ../libs/gtkmm2ext/bindings.cc:499 0000049 0x0000555557136e7c in ARDOUR_UI::key_press_focus_accelerator_handler(Gtk::Window&, _GdkEventKey*, Gtkmm2ext::Bindings*) (this= 0x55555844ca20, window=..., ev=0x55556070ced0, top_level_bindings=0x555558447000) at ../gtk2_ardour/ardour_ui_keys.cc:205 0000050 0x0000555557136889 in ARDOUR_UI::key_event_handler(_GdkEventKey*, Gtk::Window*) (this=0x55555844ca20, ev=0x55556070ced0, event_window=0x55555844cd50) at ../gtk2_ardour/ardour_ui_keys.cc:103 0000051 0x00005555570e9bcd in sigc::bound_mem_functor2<bool, ARDOUR_UI, _GdkEventKey*, Gtk::Window*>::operator()(_GdkEventKey* const&, Gtk::Window* const&) const (this=0x55555975fbf0, _A_a1=@0x7fffffffc428: 0x55556070ced0, _A_a2=@0x55555975fc10: 0x55555844cd50) at /usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:2143 0000052 0x00005555570e4b25 in sigc::adaptor_functor<sigc::bound_mem_functor2<bool, ARDOUR_UI, _GdkEventKey*, Gtk::Window*> >::operator()<_GdkEventKey* const&, Gtk::Window*&>(_GdkEventKey* const&, Gtk::Window*&) const (this=0x55555975fbe8, _A_arg1=@0x7fffffffc428: 0x55556070ced0, _A_arg2=@0x55555975fc10: 0x55555844cd50) at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:108 0000053 0x00005555570de15f in sigc::bind_functor<-1, sigc::bound_mem_functor2<bool, ARDOUR_UI, _GdkEventKey*, Gtk::Window*>, Gtk::Window*, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>::operator()<_GdkEventKey* const&>(_GdkEventKey* const&) (this=0x55555975fbe0, _A_arg1=@0x7fffffffc428: 0x55556070ced0) at /usr/include/sigc++-2.0/sigc++/adaptors/bind.h:1136 0000054 0x00005555570d5fb5 in sigc::internal::slot_call1<sigc::bind_functor<-1, sigc::bound_mem_functor2<bool, ARDOUR_UI, _GdkEventKey*, Gtk::Window*>, Gtk::Window*, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>, bool, _GdkEventKey*>::call_it(sigc::internal::slot_rep*, _GdkEventKey* const&) (rep=0x55555975fbb0, a_1=@0x7fffffffc428: 0x55556070ced0) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:170 0000055 0x00007ffff4b78acb in () at /lib/x86_64-linux-gnu/libgtkmm-2.4.so.1 --Type <RET> for more, q to quit, c to continue without paging-- 0000056 0x00007ffff50eb1ab in () at /lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 0000057 0x00007ffff555e0a2 in g_closure_invoke () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0 0000058 0x00007ffff5570413 in () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0 0000059 0x00007ffff5576259 in g_signal_emit_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0 0000060 0x00007ffff5576c3f in g_signal_emit () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0 0000061 0x00007ffff520afe4 in () at /lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 0000062 0x00007ffff50e987c in gtk_propagate_event () at /lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 0000063 0x00007ffff50e9c4b in gtk_main_do_event () at /lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 0000064 0x00007ffff4f55afc in () at /lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0 0000065 0x00007ffff546ae6b in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0 0000066 0x00007ffff546b118 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0 0000067 0x00007ffff546b40b in g_main_loop_run () at /lib/x86_64-linux-gnu/libglib-2.0.so.0 0000068 0x00007ffff50e8b2a in gtk_main () at /lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 0000069 0x00007ffff5992502 in Gtkmm2ext::UI::run(Receiver&) (this=0x55555844ca20, old_receiver=...) at ../libs/gtkmm2ext/gtk_ui.cc:310 0000070 0x00005555576735fb in main(int, char**) (argc=1, argv=0x7fffffffcf18) at ../gtk2_ardour/main.cc:410 |
|
Should be fixed since 6.6-504-g4d269729b1 -- but there may be more edge cases related to this. Please test! |
|
Thank you ! Works as of 6.6-554-g8cd8d90483 |
Date Modified | Username | Field | Change |
---|---|---|---|
2021-04-08 21:32 | Headwar | New Issue | |
2021-04-08 21:32 | Headwar | Tag Attached: Papercut | |
2021-05-18 02:44 | x42 | Note Added: 0025867 | |
2021-05-18 02:45 | x42 | Assigned To | => x42 |
2021-05-18 02:45 | x42 | Status | new => feedback |
2021-05-18 02:45 | x42 | Note Added: 0025868 | |
2021-05-18 20:58 | Headwar | Note Added: 0025872 | |
2021-05-18 20:58 | Headwar | Status | feedback => assigned |
2021-05-18 20:59 | Headwar | Status | assigned => closed |
2021-05-18 20:59 | Headwar | Resolution | open => fixed |