summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/grid-snapper.cpp4
-rw-r--r--src/grid-snapper.h1
-rw-r--r--src/guide-snapper.cpp4
-rw-r--r--src/guide-snapper.h1
-rw-r--r--src/line-snapper.h3
-rw-r--r--src/object-snapper.cpp4
-rw-r--r--src/object-snapper.h3
-rw-r--r--src/snapper.h1
-rw-r--r--src/sp-namedview.cpp5
9 files changed, 24 insertions, 2 deletions
diff --git a/src/grid-snapper.cpp b/src/grid-snapper.cpp
index f1d4e4bf6..419dc4b82 100644
--- a/src/grid-snapper.cpp
+++ b/src/grid-snapper.cpp
@@ -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
diff --git a/src/grid-snapper.h b/src/grid-snapper.h
index 247823ac7..73a1f2500 100644
--- a/src/grid-snapper.h
+++ b/src/grid-snapper.h
@@ -24,6 +24,7 @@ namespace Inkscape
class GridSnapper : public LineSnapper
{
public:
+ GridSnapper() {}
GridSnapper(SPNamedView const *nv, NR::Coord const d);
private:
diff --git a/src/guide-snapper.cpp b/src/guide-snapper.cpp
index fbf1af0af..a05ecd3e6 100644
--- a/src/guide-snapper.cpp
+++ b/src/guide-snapper.cpp
@@ -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);
diff --git a/src/guide-snapper.h b/src/guide-snapper.h
index f4c7b2de7..654149f5c 100644
--- a/src/guide-snapper.h
+++ b/src/guide-snapper.h
@@ -28,6 +28,7 @@ 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 581466d33..72afab76d 100644
--- a/src/line-snapper.h
+++ b/src/line-snapper.h
@@ -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,
diff --git a/src/object-snapper.cpp b/src/object-snapper.cpp
index 6146c11b8..9a3f61525 100644
--- a/src/object-snapper.cpp
+++ b/src/object-snapper.cpp
@@ -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);
diff --git a/src/object-snapper.h b/src/object-snapper.h
index 189e96e3e..98d457088 100644
--- a/src/object-snapper.h
+++ b/src/object-snapper.h
@@ -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,
diff --git a/src/snapper.h b/src/snapper.h
index 02f7cb7e9..2f3c487d6 100644
--- a/src/snapper.h
+++ b/src/snapper.h
@@ -27,6 +27,7 @@ namespace Inkscape
class Snapper
{
public:
+ Snapper() {}
Snapper(SPNamedView const *nv, ::NR::Coord const d);
virtual ~Snapper() {}
diff --git a/src/sp-namedview.cpp b/src/sp-namedview.cpp
index bd7793ca1..4be180237 100644
--- a/src/sp-namedview.cpp
+++ b/src/sp-namedview.cpp
@@ -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)