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<synfig::BLinePoint> bline,bool loop_bline_flag,float radius);
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;
}
// 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();
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"));
}
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())
{
}
}
-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"));
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"));
{
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