Code

Formerly static function used for snapping is now a private member of KnotHolderEntity
[inkscape.git] / src / knot-holder-entity.h
index e4564cd01e276d3b6360a89ceffafda4a606b7ff..432bf5501e407f576a26c9d10833ae0e77b11604 100644 (file)
@@ -41,22 +41,26 @@ public:
                         SPKnotModeType mode = SP_KNOT_MODE_XOR,
                         guint32 color = 0xffffff00);
 
-    /* derived classes like PointParam for LPEs use this, e.g., to indicate that we must not call
-       delete on their pointer when a knotholder is destroyed */
-    virtual bool isLPEParam() { return false; }
+    /* derived classes used for LPE knotholder handles use this to indicate that they
+       must not be deleted when a knotholder is destroyed */
+    // TODO: it would be nice to ditch this but then we need to dynamically create instances of different
+    //       KnotHolderEntity classes in Effect::addKnotHolderEntities. How to do this???
+    virtual bool isDeletable() { return true; }
 
     /* the get/set/click handlers are virtual functions; each handler class for a knot
        should be derived from KnotHolderEntity and override these functions */
     virtual void knot_set(NR::Point const &p, NR::Point const &origin, guint state) = 0;
     virtual NR::Point knot_get() = 0;
     virtual void knot_click(guint /*state*/) {}
-    virtual void onKnotUngrabbed() {}
 
     void update_knot();
 
 //private:
+    NR::Point snap_knot_position(NR::Point const &p);
+
     SPKnot *knot;
     SPItem *item;
+    SPDesktop *desktop;
 
     KnotHolder *parent_holder;
 
@@ -75,6 +79,11 @@ public:
     sigc::connection _ungrabbed_connection;
 };
 
+// derived KnotHolderEntity class for LPEs
+class LPEKnotHolderEntity : public KnotHolderEntity {
+    virtual bool isDeletable() { return false; }
+};
+
 /* pattern manipulation */
 
 class PatternKnotHolderEntityXY : public KnotHolderEntity {