Markers use the selection change stack.
authornick_m <mainsbridge@gmail.com>
Sat, 24 Oct 2015 18:26:44 +0000 (05:26 +1100)
committernick_m <mainsbridge@gmail.com>
Sat, 24 Oct 2015 18:26:44 +0000 (05:26 +1100)
gtk2_ardour/editor_drag.cc
gtk2_ardour/editor_drag.h

index 82d4f627c99be3c5c672404beeb2fab66b8a061b..963dbfe42924692e094a5d494a81e71e490c1e44 100644 (file)
@@ -3757,6 +3757,7 @@ FadeOutDrag::aborted (bool)
 
 MarkerDrag::MarkerDrag (Editor* e, ArdourCanvas::Item* i)
        : Drag (e, i)
+       , _selection_changed (false)
 {
        DEBUG_TRACE (DEBUG::Drags, "New MarkerDrag\n");
 
@@ -3812,6 +3813,7 @@ MarkerDrag::start_grab (GdkEvent* event, Gdk::Cursor* cursor)
        case Selection::Set:
                if (!_editor->selection->selected (_marker)) {
                        _editor->selection->set (_marker);
+                       _selection_changed = true;
                }
                break;
        case Selection::Extend:
@@ -3841,11 +3843,14 @@ MarkerDrag::start_grab (GdkEvent* event, Gdk::Cursor* cursor)
                }
                if (!to_add.empty()) {
                        _editor->selection->add (to_add);
+                       _selection_changed = true;
                }
                break;
        }
        case Selection::Add:
                _editor->selection->add (_marker);
+               _selection_changed = true;
+
                break;
        }
 
@@ -4051,17 +4056,19 @@ MarkerDrag::finished (GdkEvent* event, bool movement_occurred)
                */
 
                Selection::Operation op = ArdourKeyboard::selection_type (event->button.state);
-
                switch (op) {
                case Selection::Set:
                        if (_editor->selection->selected (_marker) && _editor->selection->markers.size() > 1) {
                                _editor->selection->set (_marker);
+                               _selection_changed = true;
                        }
                        break;
 
                case Selection::Toggle:
                        /* we toggle on the button release, click only */
                        _editor->selection->toggle (_marker);
+                       _selection_changed = true;
+
                        break;
 
                case Selection::Extend:
@@ -4069,6 +4076,11 @@ MarkerDrag::finished (GdkEvent* event, bool movement_occurred)
                        break;
                }
 
+               if (_selection_changed) {
+                       _editor->begin_reversible_selection_op(X_("Select Marker Release"));
+                       _editor->commit_reversible_selection_op();
+               }
+
                return;
        }
 
index a357bd451b7b97cd38464a4cbf6c162ff8c5a80e..d8f667529ea59f12d5fa054c24000ebaddfab224 100644 (file)
@@ -825,7 +825,7 @@ private:
        void update_item (ARDOUR::Location *);
 
        ArdourMarker* _marker; ///< marker being dragged
-
+       bool _selection_changed;
         struct CopiedLocationMarkerInfo {
            ARDOUR::Location* location;
            std::vector<ArdourMarker*> markers;