X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;ds=sidebyside;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fstate_draw.cpp;h=c2afdf5abbde52da3becb9b69225b04247014c41;hb=f9d8a24a671b759c2be95bc10cd330f310b7dcc2;hp=55a82f198b543dddcd9d86f42a40b9056e3b032e;hpb=b782ccd46b5015dcb3214175c917114c64d05006;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/state_draw.cpp b/synfig-studio/trunk/src/gtkmm/state_draw.cpp index 55a82f1..c2afdf5 100644 --- a/synfig-studio/trunk/src/gtkmm/state_draw.cpp +++ b/synfig-studio/trunk/src/gtkmm/state_draw.cpp @@ -386,7 +386,7 @@ StateDraw_Context::StateDraw_Context(CanvasView* canvas_view): canvas_view_(canvas_view), is_working(*canvas_view), loop_(false), - prev_workarea_layer_status_(get_work_area()->allow_layer_clicks), + prev_workarea_layer_status_(get_work_area()->get_allow_layer_clicks()), settings(synfigapp::Main::get_selected_input_device()->settings()), entry_id(), checkbutton_pressure_width(_("Pressure Width")), @@ -448,10 +448,10 @@ StateDraw_Context::StateDraw_Context(CanvasView* canvas_view): get_work_area()->set_type_mask(Duck::TYPE_ALL-Duck::TYPE_TANGENT-Duck::TYPE_WIDTH); // Turn off layer clicking - get_work_area()->allow_layer_clicks=false; + get_work_area()->set_allow_layer_clicks(false); // Turn off duck clicking - get_work_area()->allow_duck_clicks=false; + get_work_area()->set_allow_duck_clicks(false); // clear out the ducks //get_work_area()->clear_ducks(); @@ -515,7 +515,7 @@ StateDraw_Context::refresh_tool_options() } Smach::event_result -StateDraw_Context::event_refresh_tool_options(const Smach::event& x) +StateDraw_Context::event_refresh_tool_options(const Smach::event& /*x*/) { refresh_tool_options(); return Smach::RESULT_ACCEPT; @@ -532,10 +532,10 @@ StateDraw_Context::~StateDraw_Context() get_canvas_view()->work_area->reset_cursor(); // Restore layer clicking - get_work_area()->allow_layer_clicks=prev_workarea_layer_status_; + get_work_area()->set_allow_layer_clicks(prev_workarea_layer_status_); // Restore duck clicking - get_work_area()->allow_duck_clicks=true; + get_work_area()->set_allow_duck_clicks(true); // Enable the time bar get_canvas_view()->set_sensitive_timebar(true); @@ -550,13 +550,13 @@ StateDraw_Context::~StateDraw_Context() } Smach::event_result -StateDraw_Context::event_stop_handler(const Smach::event& x) +StateDraw_Context::event_stop_handler(const Smach::event& /*x*/) { throw Smach::egress_exception(); } Smach::event_result -StateDraw_Context::event_refresh_handler(const Smach::event& x) +StateDraw_Context::event_refresh_handler(const Smach::event& /*x*/) { refresh_ducks(); return Smach::RESULT_ACCEPT; @@ -758,11 +758,11 @@ StateDraw_Context::new_bline(std::list bline,bool loop_bline bool extend_start=false,extend_finish=false,complete_loop=false; bool extend_start_join_same=false,extend_start_join_different=false; bool extend_finish_join_same=false,extend_finish_join_different=false; - int start_duck_index,finish_duck_index; + int start_duck_index = 0,finish_duck_index = 0; // initialised to keep the compiler happy; shouldn't be needed though ValueNode_BLine::Handle start_duck_value_node_bline=NULL,finish_duck_value_node_bline=NULL; // Find any ducks at the start or end that we might attach to - // (this used to only run if we aren't a loop - ie. !loop_bline_flag + // (this used to only run if we didn't just draw a loop - ie. !loop_bline_flag // but having loops auto-connect can be useful as well) if(get_auto_extend_flag() || get_auto_link_flag()) { @@ -776,14 +776,15 @@ StateDraw_Context::new_bline(std::list bline,bool loop_bline if(start_duck)do { if(!(start_duck_value_desc=start_duck->get_value_desc()))break; - if(loop_bline_flag)break; + if(loop_bline_flag)break; // loops don't extend anything if(!start_duck_value_desc.parent_is_value_node())break; - start_duck_index=start_duck_value_desc.get_index(); + start_duck_index=start_duck_value_desc.get_index(); // which point on the line did we start drawing at start_duck_value_node_bline=ValueNode_BLine::Handle::cast_dynamic(start_duck_value_desc.get_parent_value_node()); if(!get_auto_extend_flag())break; // don't extend looped blines if(start_duck_value_node_bline&&!start_duck_value_node_bline->get_loop()&& + // did we start drawing at either end of the line? (start_duck_index==0||start_duck_index==start_duck_value_node_bline->link_count()-1)) { extend_start=true; @@ -909,11 +910,11 @@ StateDraw_Context::new_bline(std::list bline,bool loop_bline Smach::event_result result; synfig::ValueNode_DynamicList::ListEntry source; - int target_index; // the new line's start extends an existing line if(extend_start) { + int target_offset = 0; if(complete_loop)trans_bline.pop_back(); trans_bline.pop_front(); if(start_duck_index==0) @@ -921,13 +922,12 @@ StateDraw_Context::new_bline(std::list bline,bool loop_bline reverse_bline(trans_bline); result=extend_bline_from_begin(start_duck_value_node_bline,trans_bline,complete_loop); source=start_duck_value_node_bline->list.front(); - target_index=trans_bline.size()+finish_duck_index; + target_offset=trans_bline.size(); } else { result=extend_bline_from_end(start_duck_value_node_bline,trans_bline,complete_loop); source=start_duck_value_node_bline->list.back(); - target_index=finish_duck_index; } if(extend_start_join_different) @@ -936,26 +936,26 @@ StateDraw_Context::new_bline(std::list bline,bool loop_bline else if(extend_start_join_same) LinkableValueNode::Handle::cast_dynamic(source.value_node)-> set_link(0,synfigapp::ValueDesc(LinkableValueNode::Handle::cast_dynamic(start_duck_value_node_bline-> - list[target_index].value_node),0).get_value_node()); + list[target_offset+finish_duck_index].value_node),0).get_value_node()); return result; } // the new line's end extends an existing line if(extend_finish) - { // SPECIAL CASE -- EXTENSION + { + int target_offset = 0; trans_bline.pop_back(); if(finish_duck_index==0) { result=extend_bline_from_begin(finish_duck_value_node_bline,trans_bline,false); source=finish_duck_value_node_bline->list.front(); - target_index=trans_bline.size()+start_duck_index; + target_offset=trans_bline.size(); } else { // We need to reverse the BLine first. reverse_bline(trans_bline); result=extend_bline_from_end(finish_duck_value_node_bline,trans_bline,false); source=finish_duck_value_node_bline->list.back(); - target_index=start_duck_index; } if(extend_finish_join_different) @@ -964,7 +964,7 @@ StateDraw_Context::new_bline(std::list bline,bool loop_bline else if(extend_finish_join_same) LinkableValueNode::Handle::cast_dynamic(source.value_node)-> set_link(0,synfigapp::ValueDesc(LinkableValueNode::Handle::cast_dynamic(finish_duck_value_node_bline-> - list[target_index].value_node),0).get_value_node()); + list[target_offset+start_duck_index].value_node),0).get_value_node()); return result; }