View Issue Details

IDProjectCategoryView StatusLast Update
0008657ardourbugspublic2021-05-18 20:59
ReporterHeadwar Assigned Tox42  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
PlatformUbuntuOSLinuxOS Version(any)
Product Version6.6 
Summary0008657: [Papercut] Parameter "After a Split operation...", option "Preserve the existing selection, AND..." doesn't work as intended
DescriptionWhen 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 ReproduceSee Description
TagsPapercut

Activities

x42

2021-05-18 02:44

administrator   ~0025867

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

x42

2021-05-18 02:45

administrator   ~0025868

Should be fixed since 6.6-504-g4d269729b1 -- but there may be more edge cases related to this. Please test!

Headwar

2021-05-18 20:58

reporter   ~0025872

Thank you ! Works as of 6.6-554-g8cd8d90483

Issue History

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