Code

Give SPNamedView a SnapManager instance and use it for all management of snapping...
[inkscape.git] / src / ui / dialog / document-properties.cpp
index c837c71937e46cfa2f77a2fbae1ad828fef560c6..67006216a282dd2842f128f70fb56f20be10c0b3 100644 (file)
@@ -112,6 +112,8 @@ DocumentProperties::init()
 
     Inkscape::XML::Node *repr = SP_OBJECT_REPR(sp_desktop_namedview(SP_ACTIVE_DESKTOP));
     repr->addListener (&_repr_events, this);
+    Inkscape::XML::Node *root = SP_OBJECT_REPR(sp_desktop_document(SP_ACTIVE_DESKTOP)->root);
+    root->addListener (&_repr_events, this);
 
     _doc_replaced_connection = SP_ACTIVE_DESKTOP->connectDocumentReplaced (sigc::ptr_fun (on_doc_replaced));
 
@@ -129,6 +131,8 @@ DocumentProperties::~DocumentProperties()
 {
     Inkscape::XML::Node *repr = SP_OBJECT_REPR(sp_desktop_namedview(SP_ACTIVE_DESKTOP));
     repr->removeListenerByData (this);
+    Inkscape::XML::Node *root = SP_OBJECT_REPR(sp_desktop_document(SP_ACTIVE_DESKTOP)->root);
+    root->removeListenerByData (this);
     _doc_replaced_connection.disconnect();
 }
 
@@ -409,18 +413,18 @@ DocumentProperties::update()
     _rcp_hgui.setRgba32 (nv->guidehicolor);
 
     //-----------------------------------------------------------snap
-    _rcbsnbo.setActive (nv->snap_object_bbox);
-    _rcbsnnob.setActive (nv->snap_object_point);
-    _rcbsnop.setActive (nv->snap_object_paths);
-    _rcbsnop.setActive (nv->snap_object_nodes);
+    _rcbsnbo.setActive (nv->snap_manager.object.getSnapTo(Inkscape::Snapper::BBOX_POINT));
+    _rcbsnnob.setActive (nv->snap_manager.object.getSnapTo(Inkscape::Snapper::SNAP_POINT));
+    _rcbsnop.setActive (nv->snap_manager.object.getSnapToPaths());
+    _rcbsnop.setActive (nv->snap_manager.object.getSnapToNodes());
     _rsu_sno.setValue (nv->objecttolerance, nv->has_abs_tolerance);
      
-    _rcbsnbb.setActive (nv->snap_grid_bbox);
-    _rcbsnnod.setActive (nv->snap_grid_point);
+    _rcbsnbb.setActive (nv->snap_manager.grid.getSnapTo(Inkscape::Snapper::BBOX_POINT));
+    _rcbsnnod.setActive (nv->snap_manager.grid.getSnapTo(Inkscape::Snapper::SNAP_POINT));
     _rsu_sn.setValue (nv->gridtolerance, nv->has_abs_tolerance);
     
-     _rcb_snpgui.setActive (nv->snap_guide_bbox);
-    _rcb_snbgui.setActive (nv->snap_guide_point);
+    _rcb_snpgui.setActive (nv->snap_manager.guide.getSnapTo(Inkscape::Snapper::BBOX_POINT));
+    _rcb_snbgui.setActive (nv->snap_manager.guide.getSnapTo(Inkscape::Snapper::SNAP_POINT));
     _rsu_gusn.setValue (nv->guidetolerance, nv->has_abs_tolerance);
 //    _rrb_pix.setValue (true);
 
@@ -466,6 +470,8 @@ on_activate_desktop (Inkscape::Application *, SPDesktop* dt, void*)
 
     Inkscape::XML::Node *repr = SP_OBJECT_REPR(sp_desktop_namedview(SP_ACTIVE_DESKTOP));
     repr->addListener (&_repr_events, _instance);
+    Inkscape::XML::Node *root = SP_OBJECT_REPR(sp_desktop_document(SP_ACTIVE_DESKTOP)->root);
+    root->addListener (&_repr_events, _instance);
     _instance->_doc_replaced_connection = SP_ACTIVE_DESKTOP->connectDocumentReplaced (sigc::ptr_fun (on_doc_replaced));
     _instance->update();
 }
@@ -478,6 +484,8 @@ on_deactivate_desktop (Inkscape::Application *, SPDesktop* dt, void*)
 
     Inkscape::XML::Node *repr = SP_OBJECT_REPR(sp_desktop_namedview(SP_ACTIVE_DESKTOP));
     repr->removeListenerByData (_instance);
+    Inkscape::XML::Node *root = SP_OBJECT_REPR(sp_desktop_document(SP_ACTIVE_DESKTOP)->root);
+    root->removeListenerByData (_instance);
     _instance->_doc_replaced_connection.disconnect();
 }
 
@@ -489,6 +497,8 @@ on_doc_replaced (SPDesktop* dt, SPDocument* doc)
 
     Inkscape::XML::Node *repr = SP_OBJECT_REPR(sp_desktop_namedview(dt));
     repr->addListener (&_repr_events, _instance);
+    Inkscape::XML::Node *root = SP_OBJECT_REPR(doc->root);
+    root->addListener (&_repr_events, _instance);
     _instance->update();
 }