]> git.tokkee.org Git - inkscape.git/commitdiff

Code

Temporary fix for broken snap functionality: as named view constructor is never calle...
authorknutux <knutux@users.sourceforge.net>
Thu, 4 May 2006 11:13:11 +0000 (11:13 +0000)
committerknutux <knutux@users.sourceforge.net>
Thu, 4 May 2006 11:13:11 +0000 (11:13 +0000)
src/grid-snapper.cpp
src/grid-snapper.h
src/guide-snapper.cpp
src/guide-snapper.h
src/line-snapper.h
src/object-snapper.cpp
src/object-snapper.h
src/snapper.h
src/sp-namedview.cpp

index f1d4e4bf6ffe5ce3a4d3662ea5cab55614f10abd..419dc4b82a9889d95241a68eecdd6175b2346177 100644 (file)
@@ -39,6 +39,10 @@ Inkscape::LineSnapper::LineList Inkscape::GridSnapper::_getSnapLines(NR::Point c
 {
     LineList s;
 
+    if ( NULL == _named_view ) {
+        return s;
+    }
+
     SPCGrid *griditem = NULL;
     for (GSList *l = _named_view->gridviews; l != NULL; l = l->next) {
         // FIXME : this is a hack since there is only one view for now
index 247823ac7738cb4cb022a86ffc0b08f13a4a4f68..73a1f25008c4c5ff730f9222dcda1bfac62b1aa4 100644 (file)
@@ -24,6 +24,7 @@ namespace Inkscape
 class GridSnapper : public LineSnapper
 {
 public:
+    GridSnapper() {}
     GridSnapper(SPNamedView const *nv, NR::Coord const d);
 
 private:    
index fbf1af0af1bd61c38e64177b90bfcd32cd1759ea..a05ecd3e6b4423c517710c83b21965540dd0d5f9 100644 (file)
@@ -26,6 +26,10 @@ Inkscape::GuideSnapper::LineList Inkscape::GuideSnapper::_getSnapLines(NR::Point
 {
     LineList s;
 
+    if ( NULL == _named_view ) {
+        return s;
+    }
+
     for (GSList const *l = _named_view->guides; l != NULL; l = l->next) {
         SPGuide const *g = SP_GUIDE(l->data);
 
index f4c7b2de711de71723b4749fb4585d2beeb234a7..654149f5c5fa90fbaaee64bc70803addd1896b11 100644 (file)
@@ -28,6 +28,7 @@ namespace Inkscape
 class GuideSnapper : public LineSnapper
 {
 public:
+    GuideSnapper() {}
     GuideSnapper(SPNamedView const *nv, NR::Coord const d);
 
 private:
index 581466d330533b4ebbdd005c4d31440525253b9e..72afab76d0c4e3a3f091cbd4046b1c072621e2ec 100644 (file)
@@ -19,13 +19,14 @@ namespace Inkscape
 class LineSnapper : public Snapper
 {
 public:
+  LineSnapper() {}
   LineSnapper(SPNamedView const *nv, NR::Coord const d);
 
 protected:
   typedef std::list<std::pair<NR::Dim2, NR::Coord> > LineList;
 
 private:
-  SnappedPoint _doFreeSnap(NR::Point const &p,
+  virtual SnappedPoint _doFreeSnap(NR::Point const &p,
                           std::list<SPItem const *> const &it) const;
   
   SnappedPoint _doConstrainedSnap(NR::Point const &p,
index 6146c11b8584b8cbacc9a8a113eb70565a1da49d..9a3f61525d91c288060ce1b09b1a7fdc204554d9 100644 (file)
@@ -144,6 +144,10 @@ void Inkscape::ObjectSnapper::_snapPaths(Inkscape::SnappedPoint &s,
 Inkscape::SnappedPoint Inkscape::ObjectSnapper::_doFreeSnap(NR::Point const &p,
                                                             std::list<SPItem const *> const &it) const
 {
+    if ( NULL == _named_view ) {
+        return SnappedPoint(p, NR_HUGE);
+    }
+
     /* Get a list of all the SPItems that we will try to snap to */
     std::list<SPItem*> cand;
     _findCandidates(cand, sp_document_root(_named_view->document), it, p);
index 189e96e3e249c925303a8c55edd967a4605b70f6..98d457088856bb482adec17ffb4ae3628381aedc 100644 (file)
@@ -25,6 +25,7 @@ namespace Inkscape
 class ObjectSnapper : public Snapper
 {
 public:
+  ObjectSnapper() {}
   ObjectSnapper(SPNamedView const *nv, NR::Coord const d);
 
   void setSnapToNodes(bool s) {
@@ -44,7 +45,7 @@ public:
   }
   
 private:
-  SnappedPoint _doFreeSnap(NR::Point const &p,
+  virtual SnappedPoint _doFreeSnap(NR::Point const &p,
                           std::list<SPItem const *> const &it) const;
 
   SnappedPoint _doConstrainedSnap(NR::Point const &p,
index 02f7cb7e96998e6892388c326526e281a2852cba..2f3c487d6b9bd672f4c987d154f07d6a201408f3 100644 (file)
@@ -27,6 +27,7 @@ namespace Inkscape
 class Snapper
 {
 public:
+    Snapper() {}
     Snapper(SPNamedView const *nv, ::NR::Coord const d);
     virtual ~Snapper() {}
 
index bd7793ca13fbb169dd4786d34e2cab49f5d750f0..4be180237da119729dc7461c799463b5bcbacadd 100644 (file)
@@ -104,6 +104,9 @@ 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;
@@ -202,6 +205,8 @@ static void sp_namedview_release(SPObject *object)
     if (((SPObjectClass *) parent_class)->release) {
         ((SPObjectClass *) parent_class)->release(object);
     }
+
+    namedview->~SPNamedView();
 }
 
 static void sp_namedview_set(SPObject *object, unsigned int key, const gchar *value)