Fix 1829182: "Right click context menu not always appears".
[synfig.git] / synfig-studio / trunk / src / gtkmm / state_polygon.cpp
index 8b17cd0..52b8b12 100644 (file)
@@ -500,9 +500,10 @@ StatePolygon_Context::run()
        int i;
        for(i=0,iter=polygon_point_list.begin();iter!=polygon_point_list.end();++iter,++i)
        {
+               *iter = transform.unperform(*iter);
                new_list.push_back(*(new BLinePoint));
                new_list[i].set_width(1);
-               new_list[i].set_vertex(transform.unperform(*iter));
+               new_list[i].set_vertex(*iter);
                new_list[i].set_tangent(Point(0,0));
        }
 
@@ -530,6 +531,12 @@ StatePolygon_Context::run()
        if (get_layer_polygon_flag())
        {
                layer=get_canvas_interface()->add_layer_to("polygon",canvas,depth);
+               if (!layer)
+               {
+                       get_canvas_view()->get_ui_interface()->error(_("Unable to create layer"));
+                       group.cancel();
+                       return;
+               }
                layer_selection.push_back(layer);
 
                layer->set_param("invert",get_invert());
@@ -608,7 +615,12 @@ StatePolygon_Context::run()
                synfigapp::PushMode push_mode(get_canvas_interface(),synfigapp::MODE_NORMAL);
 
                Layer::Handle layer(get_canvas_interface()->add_layer_to("curve_gradient",canvas,depth));
-               assert(layer);
+               if (!layer)
+               {
+                       get_canvas_view()->get_ui_interface()->error(_("Unable to create layer"));
+                       group.cancel();
+                       return;
+               }
                layer_selection.push_back(layer);
                layer->set_description(get_id()+_(" Gradient"));
                get_canvas_interface()->signal_layer_new_description()(layer,layer->get_description());
@@ -667,7 +679,12 @@ StatePolygon_Context::run()
                synfigapp::PushMode push_mode(get_canvas_interface(),synfigapp::MODE_NORMAL);
 
                Layer::Handle layer(get_canvas_interface()->add_layer_to("plant",canvas,depth));
-               assert(layer);
+               if (!layer)
+               {
+                       get_canvas_view()->get_ui_interface()->error(_("Unable to create layer"));
+                       group.cancel();
+                       return;
+               }
                layer_selection.push_back(layer);
                layer->set_description(get_id()+_(" Plant"));
                get_canvas_interface()->signal_layer_new_description()(layer,layer->get_description());
@@ -726,7 +743,12 @@ StatePolygon_Context::run()
                synfigapp::PushMode push_mode(get_canvas_interface(),synfigapp::MODE_NORMAL);
 
                Layer::Handle 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;
+               }
                layer_selection.push_back(layer);
                layer->set_description(get_id()+_(" Region"));
                get_canvas_interface()->signal_layer_new_description()(layer,layer->get_description());
@@ -794,7 +816,12 @@ StatePolygon_Context::run()
        if (get_layer_outline_flag())
        {
                Layer::Handle layer(get_canvas_interface()->add_layer_to("outline",canvas,depth));
-               assert(layer);
+               if (!layer)
+               {
+                       get_canvas_view()->get_ui_interface()->error(_("Unable to create layer"));
+                       group.cancel();
+                       return;
+               }
                layer_selection.push_back(layer);
                layer->set_description(get_id()+_(" Outline"));
                get_canvas_interface()->signal_layer_new_description()(layer,layer->get_description());
@@ -872,10 +899,6 @@ StatePolygon_Context::event_mouse_click_handler(const Smach::event& x)
                refresh_ducks();
                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;
        }