X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fstate_draw.cpp;h=9c551932122b82ce980700cffc1cd162da6a5c5d;hb=4ba22fb51d97f1ecce04dcc5e40569a4354c1bae;hp=79c478879b84d81677fc22081d3e5f5bdd07036f;hpb=45d32acc437f1ea60269d51bbbb97845cee2dfc9;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/state_draw.cpp b/synfig-studio/trunk/src/gtkmm/state_draw.cpp index 79c4788..9c55193 100644 --- a/synfig-studio/trunk/src/gtkmm/state_draw.cpp +++ b/synfig-studio/trunk/src/gtkmm/state_draw.cpp @@ -115,7 +115,7 @@ class studio::StateDraw_Context : public sigc::trackable Duckmatic::Type old_duckmask; void fill_last_stroke(); - void fill_last_stroke_and_unselect_other_layers(); + Smach::event_result fill_last_stroke_and_unselect_other_layers(); Smach::event_result new_bline(std::list bline,bool loop_bline_flag,float radius); @@ -589,10 +589,6 @@ StateDraw_Context::event_mouse_down_handler(const Smach::event& x) return Smach::RESULT_ACCEPT; } - case BUTTON_RIGHT: // Intercept the right-button click to short-circuit the pop-up menu - if (!getenv("SYNFIG_ENABLE_POPUP_MENU_IN_ALL_TOOLS")) - return Smach::RESULT_ACCEPT; - default: return Smach::RESULT_OK; } @@ -1038,7 +1034,15 @@ StateDraw_Context::new_bline(std::list bline,bool loop_bline // fill_last_stroke() will take care of clearing the selection if we're calling it if(get_outline_flag() && get_region_flag()) - fill_last_stroke_and_unselect_other_layers(); + { + if (fill_last_stroke_and_unselect_other_layers() == Smach::RESULT_ERROR) + { + get_canvas_view()->get_selection_manager()->set_selected_layers(layer_list); + get_canvas_view()->get_ui_interface()->error(_("Unable to create layer")); + group.cancel(); + return Smach::RESULT_ERROR; + } + } else get_canvas_interface()->get_selection_manager()->clear_selected_layers(); @@ -1050,11 +1054,25 @@ StateDraw_Context::new_bline(std::list bline,bool loop_bline if(get_outline_flag()) { layer=get_canvas_interface()->add_layer_to("outline",canvas,depth); + if (!layer) + { + get_canvas_view()->get_selection_manager()->set_selected_layers(layer_list); + get_canvas_view()->get_ui_interface()->error(_("Unable to create layer")); + group.cancel(); + return Smach::RESULT_ERROR; + } layer->set_description(get_id()+_(" Outline")); } else { layer=get_canvas_interface()->add_layer_to("region",canvas,depth); + if (!layer) + { + get_canvas_view()->get_selection_manager()->set_selected_layers(layer_list); + get_canvas_view()->get_ui_interface()->error(_("Unable to create layer")); + group.cancel(); + return Smach::RESULT_ERROR; + } layer->set_description(get_id()+_(" Region")); } @@ -1071,7 +1089,7 @@ StateDraw_Context::new_bline(std::list bline,bool loop_bline get_canvas_interface()-> change_value(synfigapp::ValueDesc(layer,"origin"),shift_origin_vector); - synfigapp::Action::Handle action(synfigapp::Action::create("layer_param_connect")); + synfigapp::Action::Handle action(synfigapp::Action::create("LayerParamConnect")); assert(action); @@ -1273,7 +1291,7 @@ StateDraw_Context::new_region(std::list bline, synfig::Real std::list vertex_list; - printf("new_region with %d bline points\n", bline.size()); + printf("new_region with %zd bline points\n", bline.size()); // First we need to come up with a rough list of // BLinePoints that we are going to be using to @@ -1316,7 +1334,7 @@ StateDraw_Context::new_region(std::list bline, synfig::Real assert(vertex_list.back().is_valid()); - printf("vertex list with %d bline points\n", vertex_list.size()); + printf("vertex list with %zd bline points\n", vertex_list.size()); // Remove any duplicates { @@ -1537,7 +1555,7 @@ StateDraw_Context::new_region(std::list bline, synfig::Real // synfig::info(__FILE__":%d: value_prev 0x%08X:%d",__LINE__,value_prev.get_parent_value_node().get(),value_prev.get_index()); // synfig::info(__FILE__":%d: value_desc 0x%08X:%d",__LINE__,value_desc.get_parent_value_node().get(),value_desc.get_index()); // synfig::info(__FILE__":%d: value_next 0x%08X:%d",__LINE__,value_next.get_parent_value_node().get(),value_next.get_index()); - + /* if(value_prev.parent_is_value_node() && value_desc.parent_is_value_node() && value_next.parent_is_value_node()) { @@ -1587,7 +1605,7 @@ StateDraw_Context::new_region(std::list bline, synfig::Real // (*(value_desc.get_parent_value_node()))(get_time()).get_loop() // // value_desc.get_value_node().get_loop(), // ); - // + // // // Fill in missing vertices // // \todo take loops into account: seeing (15, 2, 3, 4) probably means that (0, 1) is missing, not 14 through 3 // if(value_desc.get_index() bline, synfig::Real synfigapp::PushMode push_mode(get_canvas_interface(),synfigapp::MODE_NORMAL); layer=get_canvas_interface()->add_layer_to("region",canvas,depth); - assert(layer); + if (!layer) + { + get_canvas_view()->get_ui_interface()->error(_("Unable to create layer")); + group.cancel(); + return Smach::RESULT_ERROR; + } layer->set_param("color",synfigapp::Main::get_background_color()); if(get_feather()) { @@ -1783,7 +1806,7 @@ StateDraw_Context::new_region(std::list bline, synfig::Real } get_canvas_interface()->signal_layer_param_changed()(layer,"color"); - synfigapp::Action::Handle action(synfigapp::Action::create("layer_param_connect")); + synfigapp::Action::Handle action(synfigapp::Action::create("LayerParamConnect")); assert(action); @@ -1835,7 +1858,7 @@ StateDraw_Context::extend_bline_from_begin(ValueNode_BLine::Handle value_node,st if (complete_loop) { - synfigapp::Action::Handle action(synfigapp::Action::create("value_node_dynamic_list_loop")); + synfigapp::Action::Handle action(synfigapp::Action::create("ValueNodeDynamicListLoop")); assert(action); action->set_param("canvas",get_canvas()); @@ -1855,7 +1878,7 @@ StateDraw_Context::extend_bline_from_begin(ValueNode_BLine::Handle value_node,st { ValueNode_Composite::Handle composite(ValueNode_Composite::create(*iter)); - synfigapp::Action::Handle action(synfigapp::Action::create("value_node_dynamic_list_insert")); + synfigapp::Action::Handle action(synfigapp::Action::create("ValueNodeDynamicListInsert")); assert(action); synfigapp::ValueDesc value_desc(value_node,0); @@ -1886,7 +1909,7 @@ StateDraw_Context::extend_bline_from_end(ValueNode_BLine::Handle value_node,std: if (complete_loop) { - synfigapp::Action::Handle action(synfigapp::Action::create("value_node_dynamic_list_loop")); + synfigapp::Action::Handle action(synfigapp::Action::create("ValueNodeDynamicListLoop")); assert(action); action->set_param("canvas",get_canvas()); @@ -1906,7 +1929,7 @@ StateDraw_Context::extend_bline_from_end(ValueNode_BLine::Handle value_node,std: { ValueNode_Composite::Handle composite(ValueNode_Composite::create(*iter)); - synfigapp::Action::Handle action(synfigapp::Action::create("value_node_dynamic_list_insert")); + synfigapp::Action::Handle action(synfigapp::Action::create("ValueNodeDynamicListInsert")); assert(action); synfigapp::ValueDesc value_desc(value_node,value_node->link_count()); @@ -1946,11 +1969,11 @@ StateDraw_Context::reverse_bline(std::list &bline) } } -void +Smach::event_result StateDraw_Context::fill_last_stroke_and_unselect_other_layers() { if(!last_stroke) - return; + return Smach::RESULT_OK; synfigapp::Action::PassiveGrouper group(get_canvas_interface()->get_instance().get(),_("Fill Stroke")); @@ -1972,11 +1995,11 @@ StateDraw_Context::fill_last_stroke_and_unselect_other_layers() get_canvas_interface()->get_selection_manager()->clear_selected_layers(); layer=get_canvas_interface()->add_layer_to("region", canvas, depth); - assert(layer); + if (!layer) return Smach::RESULT_ERROR; layer->set_param("color",synfigapp::Main::get_background_color()); layer->set_description(last_stroke_id + _(" Region")); - synfigapp::Action::Handle action(synfigapp::Action::create("layer_param_connect")); + synfigapp::Action::Handle action(synfigapp::Action::create("LayerParamConnect")); assert(action); @@ -1992,9 +2015,10 @@ StateDraw_Context::fill_last_stroke_and_unselect_other_layers() { get_canvas_view()->get_ui_interface()->error(_("Unable to create Region layer")); group.cancel(); - return; + return Smach::RESULT_OK; } get_canvas_view()->get_selection_manager()->set_selected_layer(layer); + return Smach::RESULT_OK; } void