Code

Avoid crash by uninitialized perspectives.
[inkscape.git] / src / lpe-tool-context.cpp
index 0f96c6ed28592c5ff0e1565fda38b88e0b358648..be465e32469b1eaf08d7b63163844306dfe1848e 100644 (file)
@@ -34,6 +34,7 @@
 #include "document.h"
 #include "display/curve.h"
 #include "display/canvas-bpath.h"
+#include "display/canvas-text.h"
 #include "message-stack.h"
 #include "sp-path.h"
 #include "helper/units.h"
@@ -53,15 +54,16 @@ void sp_lpetool_context_selection_changed(Inkscape::Selection *selection, gpoint
 
 const int num_subtools = 8;
 
-Inkscape::LivePathEffect::EffectType lpesubtools[] = {
-    Inkscape::LivePathEffect::INVALID_LPE, // this must be here to account for the "all inactive" action
-    Inkscape::LivePathEffect::LINE_SEGMENT,
-    Inkscape::LivePathEffect::CIRCLE_3PTS,
-    Inkscape::LivePathEffect::CIRCLE_WITH_RADIUS,
-    Inkscape::LivePathEffect::PARALLEL,
-    Inkscape::LivePathEffect::PERP_BISECTOR,
-    Inkscape::LivePathEffect::ANGLE_BISECTOR,
-    Inkscape::LivePathEffect::MIRROR_SYMMETRY,
+SubtoolEntry lpesubtools[] = {
+    // this must be here to account for the "all inactive" action
+    {Inkscape::LivePathEffect::INVALID_LPE, "draw-geometry-inactive"},
+    {Inkscape::LivePathEffect::LINE_SEGMENT, "draw-geometry-line-segment"},
+    {Inkscape::LivePathEffect::CIRCLE_3PTS, "draw-geometry-circle-from-three-points"},
+    {Inkscape::LivePathEffect::CIRCLE_WITH_RADIUS, "draw-geometry-circle-from-radius"},
+    {Inkscape::LivePathEffect::PARALLEL, "draw-geometry-line-parallel"},
+    {Inkscape::LivePathEffect::PERP_BISECTOR, "draw-geometry-line-perpendicular"},
+    {Inkscape::LivePathEffect::ANGLE_BISECTOR, "draw-geometry-angle-bisector"},
+    {Inkscape::LivePathEffect::MIRROR_SYMMETRY, "draw-geometry-mirror"}
 };
 
 static SPPenContextClass *lpetool_parent_class = 0;
@@ -284,9 +286,9 @@ sp_lpetool_context_root_handler(SPEventContext *event_context, GdkEvent *event)
 
                 Inkscape::Preferences *prefs = Inkscape::Preferences::get();
                 int mode = prefs->getInt("/tools/lpetool/mode");
-                EffectType type = lpesubtools[mode];
+                EffectType type = lpesubtools[mode].type;
 
-                //bool over_stroke = lc->shape_editor->is_over_stroke(NR::Point(event->button.x, event->button.y), true);
+                //bool over_stroke = lc->shape_editor->is_over_stroke(Geom::Point(event->button.x, event->button.y), true);
 
                 sp_pen_context_wait_for_LPE_mouse_clicks(lc, type, Inkscape::LivePathEffect::Effect::acceptsNumClicks(type));
 
@@ -301,7 +303,7 @@ sp_lpetool_context_root_handler(SPEventContext *event_context, GdkEvent *event)
             }
 
             bool over_stroke = false;
-            over_stroke = lc->shape_editor->is_over_stroke(NR::Point(event->motion.x, event->motion.y), false);
+            over_stroke = lc->shape_editor->is_over_stroke(Geom::Point(event->motion.x, event->motion.y), false);
 
             if (over_stroke) {
                 event_context->cursor_shape = cursor_node_xpm;
@@ -364,7 +366,7 @@ sp_lpetool_context_root_handler(SPEventContext *event_context, GdkEvent *event)
 int
 lpetool_mode_to_index(Inkscape::LivePathEffect::EffectType const type) {
     for (int i = 0; i < num_subtools; ++i) {
-        if (lpesubtools[i] == type) {
+        if (lpesubtools[i].type == type) {
             return i;
         }
     }
@@ -454,7 +456,7 @@ lpetool_context_reset_limiting_bbox(SPLPEToolContext *lc)
 
     Geom::Point A, B;
     lpetool_get_limiting_bbox_corners(document, A, B);
-    NR::Matrix doc2dt(lc->desktop->doc2dt());
+    Geom::Matrix doc2dt(lc->desktop->doc2dt());
     A *= doc2dt;
     B *= doc2dt;