undo nested clip bug, wheel zoom redraw fix, uninited vars, shortcuts doc
[goodguy/history.git] / cinelerra-5.1 / cinelerra / mwindowgui.C
index 8825e25d7e680b4167f85f064642273518710c39..1ac33aafa235c7f2c02a646b9e7d184b5f78c64c 100644 (file)
@@ -1039,7 +1039,7 @@ int MWindowGUI::drag_stop()
        }
 
 
-//printf("TrackCanvas::drag_stop %d %d\n", redraw, mwindow->session->current_operation);
+//printf("MWindowGUI::drag_stop %d %d\n", redraw, mwindow->session->current_operation);
        if(redraw)
        {
                mwindow->edl->tracks->update_y_pixels(mwindow->theme);
@@ -1162,12 +1162,22 @@ int MWindowGUI::keypress_event()
        int result = mbuttons->keypress_event();
        if( result ) return result;
 
+       Track *this_track = 0;
+
        switch(get_keypress()) {
        case 'e':
                mwindow->toggle_editing_mode();
                result = 1;
                break;
 
+       case 'k': case 'K':
+               if( alt_down() ) break;
+               stop_transport("MWindowGUI::keypress_event 1");
+               mwindow->nearest_plugin_keyframe(shift_down(),
+                       !ctrl_down() ? PLAY_FORWARD : PLAY_REVERSE);
+               result = 1;
+               break;
+
        case '1': case '2': case '3': case '4':
        case '5': case '6': case '7': case '8':
                if( !alt_down() || shift_down() ) break;
@@ -1178,9 +1188,7 @@ int MWindowGUI::keypress_event()
        case LEFT:
                if( !ctrl_down() ) {
                        if( alt_down() ) {
-                               unlock_window();
-                               mbuttons->transport->handle_transport(STOP, 1, 0, 0);
-                               lock_window("MWindowGUI::keypress_event 1");
+                               stop_transport("MWindowGUI::keypress_event 1");
                                mwindow->prev_edit_handle(shift_down());
                        }
                        else
@@ -1189,12 +1197,17 @@ int MWindowGUI::keypress_event()
                }
                break;
 
+       case ',':
+               if( !ctrl_down() && !alt_down() ) {
+                       mwindow->move_left();
+                       result = 1;
+               }
+               break;
+
        case RIGHT:
                if( !ctrl_down() ) {
                        if( alt_down() ) {
-                               unlock_window();
-                               mbuttons->transport->handle_transport(STOP, 1, 0, 0);
-                               lock_window("MWindowGUI::keypress_event 2");
+                               stop_transport("MWindowGUI::keypress_event 2");
                                mwindow->next_edit_handle(shift_down());
                        }
                        else
@@ -1203,6 +1216,13 @@ int MWindowGUI::keypress_event()
                }
                break;
 
+       case '.':
+               if( !ctrl_down() && !alt_down() ) {
+                       mwindow->move_right();
+                       result = 1;
+               }
+               break;
+
        case UP:
                if( ctrl_down() && !alt_down() )
                        mwindow->expand_y();
@@ -1245,7 +1265,6 @@ int MWindowGUI::keypress_event()
 
        case TAB:
        case LEFTTAB:
-               Track *this_track = 0;
                for( int i=0; i<TOTAL_PANES; ++i ) {
                        if( !pane[i] ) continue;
                        if( (this_track = pane[i]->over_track()) != 0 ) break;
@@ -1269,10 +1288,23 @@ int MWindowGUI::keypress_event()
                update(0, 1, 0, 0, 1, 0, 1);
                unlock_window();
                mwindow->cwindow->update(0, 1, 1);
-               lock_window("TrackCanvas::keypress_event 3");
+               lock_window("MWindowGUI::keypress_event 3");
 
                result = 1;
                break;
+
+       case KEY_F1:
+       case KEY_F2:
+       case KEY_F3:
+       case KEY_F4:
+       case KEY_F5:
+       case KEY_F6:
+       case KEY_F7:
+       case KEY_F8:
+       case KEY_F9:
+       case KEY_F10:
+               resend_event(mwindow->cwindow->gui);
+               return 1;
        }
 
 // since things under cursor have changed...
@@ -2253,6 +2285,15 @@ void MWindowGUI::update_mixers(Track *track, int v)
        }
 }
 
+void MWindowGUI::stop_transport(const char *lock_msg)
+{
+       if( !mbuttons->transport->is_stopped() ) {
+               if( lock_msg ) unlock_window();
+               mbuttons->transport->handle_transport(STOP, 1, 0, 0);
+               if( lock_msg ) lock_window(lock_msg);
+       }
+}
+
 PaneButton::PaneButton(MWindow *mwindow, int x, int y)
  : BC_Button(x, y, mwindow->theme->get_image_set("pane"))
 {
@@ -2287,7 +2328,8 @@ int PaneButton::cursor_motion_event()
 
 int PaneButton::button_release_event()
 {
-       mwindow->gui->stop_pane_drag();
+       if( get_buttonpress() != WHEEL_DOWN && get_buttonpress() != WHEEL_UP )
+               mwindow->gui->stop_pane_drag();
        int result = BC_Button::button_release_event();
        return result;
 }