diff --git a/src/drivers/win/taseditor/piano_roll.cpp b/src/drivers/win/taseditor/piano_roll.cpp index e9812be0..085b2c91 100644 --- a/src/drivers/win/taseditor/piano_roll.cpp +++ b/src/drivers/win/taseditor/piano_roll.cpp @@ -1127,9 +1127,17 @@ void PIANO_ROLL::FinishDrag() marker_drag_countdown = MARKER_DRAG_COUNTDOWN_MAX; } else { - if (row_under_mouse >= 0 && row_under_mouse != marker_drag_framenum && (column_under_mouse <= COLUMN_FRAMENUM || column_under_mouse >= COLUMN_FRAMENUM2)) + if (row_under_mouse >= 0 && (column_under_mouse <= COLUMN_FRAMENUM || column_under_mouse >= COLUMN_FRAMENUM2)) { - if (markers_manager.GetMarker(row_under_mouse)) + if (row_under_mouse == marker_drag_framenum) + { + // it was just double-click and release + // set focus to lower Note edit field + int dragged_marker_id = markers_manager.GetMarker(marker_drag_framenum); + int selection_marker_id = markers_manager.GetMarkerUp(selection.GetCurrentSelectionBeginning()); + if (dragged_marker_id == selection_marker_id) + SetFocus(selection.hwndSelectionMarkerEdit); + } else if (markers_manager.GetMarker(row_under_mouse)) { int dragged_marker_id = markers_manager.GetMarker(marker_drag_framenum); int destination_marker_id = markers_manager.GetMarker(row_under_mouse); diff --git a/src/drivers/win/taseditor/playback.cpp b/src/drivers/win/taseditor/playback.cpp index cb057140..2529300d 100644 --- a/src/drivers/win/taseditor/playback.cpp +++ b/src/drivers/win/taseditor/playback.cpp @@ -537,9 +537,6 @@ LRESULT APIENTRY UpperMarkerEditWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPAR SendMessage(playback.hwndPlaybackMarkerEdit, EM_SETREADONLY, false, 0); // disable FCEUX keyboard ClearTaseditorInput(); - // scroll to the Marker - if (taseditor_config.follow_note_context) - piano_roll.FollowMarker(playback.shown_marker); break; } case WM_KILLFOCUS: @@ -574,9 +571,14 @@ LRESULT APIENTRY UpperMarkerEditWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPAR SetFocus(piano_roll.hwndList); return 0; case VK_TAB: + { // switch to lower edit control (also exit and save text changes) SetFocus(selection.hwndSelectionMarkerEdit); + // scroll to the Marker + if (taseditor_config.follow_note_context) + piano_roll.FollowMarker(selection.shown_marker); return 0; + } } } break; @@ -587,6 +589,14 @@ LRESULT APIENTRY UpperMarkerEditWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPAR playback.MiddleButtonClick(); return 0; } + case WM_LBUTTONDOWN: + case WM_RBUTTONDOWN: + { + // scroll to the Marker + if (taseditor_config.follow_note_context) + piano_roll.FollowMarker(playback.shown_marker); + break; + } } return CallWindowProc(playbackMarkerEdit_oldWndproc, hWnd, msg, wParam, lParam); } diff --git a/src/drivers/win/taseditor/selection.cpp b/src/drivers/win/taseditor/selection.cpp index f9a5dfcd..e9890f49 100644 --- a/src/drivers/win/taseditor/selection.cpp +++ b/src/drivers/win/taseditor/selection.cpp @@ -687,9 +687,6 @@ LRESULT APIENTRY LowerMarkerEditWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPAR SendMessage(selection.hwndSelectionMarkerEdit, EM_SETREADONLY, false, 0); // disable FCEUX keyboard ClearTaseditorInput(); - // scroll to the Marker - if (taseditor_config.follow_note_context) - piano_roll.FollowMarker(selection.shown_marker); break; } case WM_KILLFOCUS: @@ -723,9 +720,14 @@ LRESULT APIENTRY LowerMarkerEditWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPAR SetFocus(piano_roll.hwndList); return 0; case VK_TAB: + { // switch to upper edit control (also exit and save text changes) SetFocus(playback.hwndPlaybackMarkerEdit); + // scroll to the Marker + if (taseditor_config.follow_note_context) + piano_roll.FollowMarker(playback.shown_marker); return 0; + } } } break; @@ -736,6 +738,14 @@ LRESULT APIENTRY LowerMarkerEditWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPAR playback.MiddleButtonClick(); return 0; } + case WM_LBUTTONDOWN: + case WM_RBUTTONDOWN: + { + // scroll to the Marker + if (taseditor_config.follow_note_context) + piano_roll.FollowMarker(selection.shown_marker); + break; + } } return CallWindowProc(selectionMarkerEdit_oldWndproc, hWnd, msg, wParam, lParam); }