From: cth103 Date: Thu, 4 May 2006 14:14:43 +0000 (+0000) Subject: Clean up knutux's fix for the snapper crash. X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=bb0e337c0688f02d4b8686cf499068117cd021ef;p=inkscape.git Clean up knutux's fix for the snapper crash. --- diff --git a/src/grid-snapper.h b/src/grid-snapper.h index 73a1f2500..247823ac7 100644 --- a/src/grid-snapper.h +++ b/src/grid-snapper.h @@ -24,7 +24,6 @@ namespace Inkscape class GridSnapper : public LineSnapper { public: - GridSnapper() {} GridSnapper(SPNamedView const *nv, NR::Coord const d); private: diff --git a/src/guide-snapper.h b/src/guide-snapper.h index 654149f5c..f4c7b2de7 100644 --- a/src/guide-snapper.h +++ b/src/guide-snapper.h @@ -28,7 +28,6 @@ namespace Inkscape class GuideSnapper : public LineSnapper { public: - GuideSnapper() {} GuideSnapper(SPNamedView const *nv, NR::Coord const d); private: diff --git a/src/line-snapper.h b/src/line-snapper.h index 72afab76d..581466d33 100644 --- a/src/line-snapper.h +++ b/src/line-snapper.h @@ -19,14 +19,13 @@ namespace Inkscape class LineSnapper : public Snapper { public: - LineSnapper() {} LineSnapper(SPNamedView const *nv, NR::Coord const d); protected: typedef std::list > LineList; private: - virtual SnappedPoint _doFreeSnap(NR::Point const &p, + SnappedPoint _doFreeSnap(NR::Point const &p, std::list const &it) const; SnappedPoint _doConstrainedSnap(NR::Point const &p, diff --git a/src/object-snapper.h b/src/object-snapper.h index 98d457088..189e96e3e 100644 --- a/src/object-snapper.h +++ b/src/object-snapper.h @@ -25,7 +25,6 @@ namespace Inkscape class ObjectSnapper : public Snapper { public: - ObjectSnapper() {} ObjectSnapper(SPNamedView const *nv, NR::Coord const d); void setSnapToNodes(bool s) { @@ -45,7 +44,7 @@ public: } private: - virtual SnappedPoint _doFreeSnap(NR::Point const &p, + SnappedPoint _doFreeSnap(NR::Point const &p, std::list const &it) const; SnappedPoint _doConstrainedSnap(NR::Point const &p, diff --git a/src/snap.cpp b/src/snap.cpp index 940d4c772..452a1e496 100644 --- a/src/snap.cpp +++ b/src/snap.cpp @@ -21,6 +21,11 @@ #include #include +SnapManager::SnapManager(SPNamedView* v) : grid(v, 0), guide(v, 0), object(v, 0) +{ + +} + SnapManager::SnapperList SnapManager::getSnappers() const { SnapManager::SnapperList s; diff --git a/src/snap.h b/src/snap.h index 49c498789..c77e8df41 100644 --- a/src/snap.h +++ b/src/snap.h @@ -29,6 +29,8 @@ class SPNamedView; class SnapManager { public: + SnapManager(SPNamedView* v); + bool willSnapSomething() const; Inkscape::SnappedPoint freeSnap(Inkscape::Snapper::PointType t, diff --git a/src/sp-namedview.cpp b/src/sp-namedview.cpp index 4be180237..129ef2c8c 100644 --- a/src/sp-namedview.cpp +++ b/src/sp-namedview.cpp @@ -104,9 +104,6 @@ static void sp_namedview_class_init(SPNamedViewClass * klass) static void sp_namedview_init(SPNamedView *nv) { - // explicitly call a contructor - new(nv) SPNamedView(); - nv->editable = TRUE; nv->showgrid = FALSE; nv->showguides = TRUE; @@ -119,6 +116,8 @@ static void sp_namedview_init(SPNamedView *nv) nv->default_layer_id = 0; nv->connector_spacing = defaultConnSpacing; + + new (&nv->snap_manager) SnapManager(nv); } static void sp_namedview_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) @@ -206,7 +205,7 @@ static void sp_namedview_release(SPObject *object) ((SPObjectClass *) parent_class)->release(object); } - namedview->~SPNamedView(); + namedview->snap_manager.~SnapManager(); } static void sp_namedview_set(SPObject *object, unsigned int key, const gchar *value)