From a79ec513efeea3e6d6aba6ae6aa4b7b99ec05d6c Mon Sep 17 00:00:00 2001 From: Rodolfo Ribeiro Gomes Date: Dec 13 2019 04:29:26 +0000 Subject: separate start-dragging code --- diff --git a/synfig-studio/src/gui/widgets/widget_curves.cpp b/synfig-studio/src/gui/widgets/widget_curves.cpp index b85dc2c..ffc41fb 100644 --- a/synfig-studio/src/gui/widgets/widget_curves.cpp +++ b/synfig-studio/src/gui/widgets/widget_curves.cpp @@ -419,17 +419,15 @@ Widget_Curves::on_event(GdkEvent *event) bool is_already_selected = std::find(selected_points.begin(), selected_points.end(), pointed_item) != selected_points.end(); if (is_already_selected) { if ((event->button.state & (GDK_CONTROL_MASK|GDK_SHIFT_MASK)) == 0) { + start_dragging(pointed_item); pointer_state = POINTER_DRAGGING; - active_point = pointed_item; - active_point_initial_y = time_plot_data->get_pixel_y_coord(pointed_item.get_value(time_plot_data->dt)); } else pointer_state = POINTER_SELECTING; } else { selected_points.clear(); selected_points.push_back(pointed_item); + start_dragging(pointed_item); pointer_state = POINTER_DRAGGING; - active_point = pointed_item; - active_point_initial_y = time_plot_data->get_pixel_y_coord(pointed_item.get_value(time_plot_data->dt)); } } else { pointer_state = POINTER_SELECTING; @@ -580,6 +578,13 @@ bool Widget_Curves::find_channelpoints_in_rect(Gdk::Rectangle rect, std::vector< return list.size() > 0; } +void Widget_Curves::start_dragging(const ChannelPoint& pointed_item) +{ + active_point = pointed_item; + active_point_initial_y = time_plot_data->get_pixel_y_coord(pointed_item.get_value(time_plot_data->dt)); + pointer_state = POINTER_DRAGGING; +} + void Widget_Curves::cancel_dragging() { if (pointer_state != POINTER_DRAGGING) diff --git a/synfig-studio/src/gui/widgets/widget_curves.h b/synfig-studio/src/gui/widgets/widget_curves.h index f207a73..8d25564 100644 --- a/synfig-studio/src/gui/widgets/widget_curves.h +++ b/synfig-studio/src/gui/widgets/widget_curves.h @@ -92,6 +92,7 @@ private: int pointer_tracking_start_x, pointer_tracking_start_y; ChannelPoint active_point; int active_point_initial_y; + void start_dragging(const ChannelPoint &pointed_item); void cancel_dragging(); static void set_value_base_for_channel_point(synfig::ValueBase &value_base, const ChannelPoint &channel_point, synfig::Real v);