diff --git a/synfig-studio/src/gui/mainwindow.cpp b/synfig-studio/src/gui/mainwindow.cpp index 8eb3246..5df031a 100644 --- a/synfig-studio/src/gui/mainwindow.cpp +++ b/synfig-studio/src/gui/mainwindow.cpp @@ -272,7 +272,7 @@ bool MainWindow::on_key_press_event(GdkEventKey* key_event) { Gtk::Widget * widget = get_focus(); - if (widget && (dynamic_cast(widget) || dynamic_cast(widget))) { + if (widget && (dynamic_cast(widget) || dynamic_cast(widget) || dynamic_cast(widget))) { bool handled = gtk_window_propagate_key_event(this->gobj(), key_event); if (handled) return true; diff --git a/synfig-studio/src/gui/widgets/widget_curves.cpp b/synfig-studio/src/gui/widgets/widget_curves.cpp index f84bac7..4589e91 100644 --- a/synfig-studio/src/gui/widgets/widget_curves.cpp +++ b/synfig-studio/src/gui/widgets/widget_curves.cpp @@ -520,6 +520,20 @@ void Widget_Curves::scroll_down() .finish(); } +void Widget_Curves::select_all_points() +{ + selected_points.clear(); + for (std::list::iterator curve_it = curve_list.begin(); curve_it != curve_list.end(); ++curve_it) { + const auto &time_set = WaypointRenderer::get_times_from_valuedesc(curve_it->value_desc); + for (size_t channel_idx = 0; channel_idx < curve_it->channels.size(); channel_idx++) { + for (const TimePoint &time : time_set) { + selected_points.push_back(ChannelPoint(curve_it, time, channel_idx)); + } + } + } + queue_draw(); +} + void Widget_Curves::set_value_descs(etl::handle canvas_interface_, const std::list &value_descs) { @@ -793,9 +807,29 @@ Widget_Curves::on_event(GdkEvent *event) delta_drag(delta, 0); return true; } + case GDK_KEY_a: { + if ((event->key.state & Gdk::CONTROL_MASK) == Gdk::CONTROL_MASK) { + // ctrl a + cancel_dragging(); + select_all_points(); + return true; + } + break; + } + case GDK_KEY_d: { + if ((event->key.state & Gdk::CONTROL_MASK) == Gdk::CONTROL_MASK) { + // ctrl d + cancel_dragging(); + selected_points.clear(); + queue_draw(); + return true; + } + break; + } + } + break; } - } default: break; } diff --git a/synfig-studio/src/gui/widgets/widget_curves.h b/synfig-studio/src/gui/widgets/widget_curves.h index 202156b..6cfbf1f 100644 --- a/synfig-studio/src/gui/widgets/widget_curves.h +++ b/synfig-studio/src/gui/widgets/widget_curves.h @@ -133,6 +133,8 @@ public: void scroll_up(); void scroll_down(); + void select_all_points(); + protected: bool on_draw(const Cairo::RefPtr &cr); bool on_event(GdkEvent *event);