+ else if( result < 0) {
+ mwindow->undo->update_undo_before();
+ if( !shift_down() ) {
+ if( handle_result == 0 )
+ edit_result->hard_left = !edit_result->hard_left;
+ else if( handle_result == 1 )
+ edit_result->hard_right = !edit_result->hard_right;
+ }
+ else {
+ int status = handle_result == 0 ? edit_result->hard_left :
+ handle_result == 1 ? edit_result->hard_right : 0;
+ int new_status = !status;
+ int64_t edit_edge = edit_result->startproject;
+ if( handle_result == 1 ) edit_edge += edit_result->length;
+ double edge_position = edit_result->track->from_units(edit_edge);
+ for( Track *track=mwindow->edl->tracks->first; track!=0; track=track->next ) {
+ int64_t track_position = track->to_units(edge_position, 1);
+ Edit *left_edit = track->edits->editof(track_position, PLAY_FORWARD, 0);
+ if( left_edit ) {
+ int64_t left_edge = left_edit->startproject;
+ double left_position = track->from_units(left_edge);
+ if( EQUIV(edge_position, left_position) ) {
+ left_edit->hard_left = new_status;
+ if( left_edit->previous )
+ left_edit->previous->hard_right = new_status;
+ }
+ }
+ Edit *right_edit = track->edits->editof(track_position, PLAY_REVERSE, 0);
+ if( right_edit ) {
+ int64_t right_edge = right_edit->startproject + right_edit->length;
+ double right_position = track->from_units(right_edge);
+ if( EQUIV(edge_position, right_position) ) {
+ right_edit->hard_right = new_status;
+ if( right_edit->next )
+ right_edit->next->hard_left = new_status;
+ }
+ }
+ }
+ }
+ rerender = update_overlay = 1;
+ mwindow->undo->update_undo_after(_("hard_edge"), LOAD_EDITS);
+ result = 1;
+ }