Consistently access workarea via get_work_area()
[synfig.git] / synfig-studio / src / gtkmm / state_draw.cpp
index 4d053bc..4482045 100644 (file)
@@ -7,6 +7,7 @@
 **     \legal
 **     Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
 **     Copyright (c) 2007 Chris Moore
+**     Copyright (c) 2009 Nikita Kitaev
 **
 **     This package is free software; you can redistribute it and/or
 **     modify it under the terms of the GNU General Public License as
@@ -37,6 +38,7 @@
 
 #include "state_draw.h"
 #include "state_stroke.h"
+#include "state_normal.h"
 #include "canvasview.h"
 #include "workarea.h"
 #include "app.h"
@@ -486,7 +488,7 @@ StateDraw_Context::StateDraw_Context(CanvasView* canvas_view):
        // Connect a signal
        //get_work_area()->signal_user_click().connect(sigc::mem_fun(*this,&studio::StateDraw_Context::on_user_click));
 
-       get_canvas_view()->work_area->set_cursor(Gdk::PENCIL);
+       get_work_area()->set_cursor(Gdk::PENCIL);
 
        App::toolbox->refresh();
 
@@ -543,7 +545,7 @@ StateDraw_Context::~StateDraw_Context()
 
        get_work_area()->set_type_mask(old_duckmask);
 
-       get_canvas_view()->work_area->reset_cursor();
+       get_work_area()->reset_cursor();
 
        // Restore layer clicking
        get_work_area()->set_allow_layer_clicks(prev_workarea_layer_status_);
@@ -566,7 +568,9 @@ StateDraw_Context::~StateDraw_Context()
 Smach::event_result
 StateDraw_Context::event_stop_handler(const Smach::event& /*x*/)
 {
-       throw Smach::egress_exception();
+       //throw Smach::egress_exception();
+       throw &state_normal;
+       return Smach::RESULT_OK;
 }
 
 Smach::event_result
@@ -961,10 +965,10 @@ StateDraw_Context::new_bline(std::list<synfig::BLinePoint> bline,bool loop_bline
 
                if(extend_start_join_different)
                        LinkableValueNode::Handle::cast_dynamic(source.value_node)->
-                               set_link(0,finish_duck_value_desc.get_value_node());
+                               set_link("point",finish_duck_value_desc.get_value_node());
                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->
+                               set_link("point",synfigapp::ValueDesc(LinkableValueNode::Handle::cast_dynamic(start_duck_value_node_bline->
                                                                                                        list[target_offset+finish_duck_index].value_node),0).get_value_node());
                return result;
        }
@@ -989,21 +993,21 @@ StateDraw_Context::new_bline(std::list<synfig::BLinePoint> bline,bool loop_bline
 
                if(extend_finish_join_different)
                        LinkableValueNode::Handle::cast_dynamic(source.value_node)->
-                               set_link(0,start_duck_value_desc.get_value_node());
+                               set_link("point",start_duck_value_desc.get_value_node());
                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->
+                               set_link("point",synfigapp::ValueDesc(LinkableValueNode::Handle::cast_dynamic(finish_duck_value_node_bline->
                                                                                                        list[target_offset+start_duck_index].value_node),0).get_value_node());
                return result;
        }
 
        if (join_start_no_extend)
                LinkableValueNode::Handle::cast_dynamic(value_node->list.front().value_node)->
-                 set_link(0,start_duck_value_desc.get_value_node());
+                 set_link("point",start_duck_value_desc.get_value_node());
 
        if (join_finish_no_extend)
                LinkableValueNode::Handle::cast_dynamic(value_node->list.back().value_node)->
-                 set_link(0,finish_duck_value_desc.get_value_node());
+                 set_link("point",finish_duck_value_desc.get_value_node());
 
        if(get_auto_export_flag())
                if (!get_canvas_interface()->add_value_node(value_node,get_id()))
@@ -1678,8 +1682,8 @@ StateDraw_Context::new_region(std::list<synfig::BLinePoint> bline, synfig::Real
                                                                        continue;
                                                                }
                                                                // \todo if next isn't split, don't we want to copy its 'Tangent 1' instead?
-                                                               value_node->set_link(5,value_node_next->get_link(5)); // Tangent 2
-                                                               value_node->set_link(3,ValueNode_Const::create(true)); // Split Tangents
+                                                               value_node->set_link("t2",value_node_next->get_link("t2"));
+                                                               value_node->set_link("split",ValueNode_Const::create(true));
 
                                                                // get_canvas_interface()->auto_export(value_node);
                                                                printf("exporting\n");