fix setting fade in/out lengths with keyboard to not leave region selected and ignore...
authorPaul Davis <paul@linuxaudiosystems.com>
Wed, 9 Jan 2008 21:35:41 +0000 (21:35 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Wed, 9 Jan 2008 21:35:41 +0000 (21:35 +0000)
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@2858 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/editor_ops.cc

index 45bf4c60d1b33c147b0074c63367298d2656cbf8..edfba0f430414d93cd6c0fa7d48686210f42a5b2 100644 (file)
@@ -4289,16 +4289,16 @@ Editor::toggle_region_opaque ()
 void
 Editor::set_fade_length (bool in)
 {
-       ensure_entered_region_selected (true);
+       ExclusiveRegionSelection esr (*this, entered_regionview);
 
        /* we need a region to measure the offset from the start */
 
        RegionView* rv;
 
-       if (entered_regionview) {
-               rv = entered_regionview;
-       } else if (!selection->regions.empty()) {
+       if (!selection->regions.empty()) {
                rv = selection->regions.front();
+       } else if (entered_regionview) {
+               rv = entered_regionview;
        } else {
                return;
        }
@@ -4306,6 +4306,11 @@ Editor::set_fade_length (bool in)
        nframes64_t pos = get_preferred_edit_position();
        nframes_t len;
        char* cmd;
+       
+       if (pos > rv->region()->last_frame() || pos < rv->region()->first_frame()) {
+               /* edit point is outside the relevant region */
+               return;
+       }
 
        if (in) {
                if (pos <= rv->region()->position()) {