Code

Optimized text output by not repeating glyph coordinates when they are identical
[inkscape.git] / src / spiral-context.cpp
index 1fcbc29a9eb9927aa10b110c16613ce3dc5c1b41..4e0fd98787e109af84e7c2b74c48acf17a5c52b6 100644 (file)
@@ -258,13 +258,13 @@ sp_spiral_context_root_handler(SPEventContext *event_context, GdkEvent *event)
 
     switch (event->type) {
         case GDK_BUTTON_PRESS:
-            if (event->button.button == 1) {
+            if (event->button.button == 1 && !event_context->space_panning) {
 
                 dragging = TRUE;
                 sc->center = Inkscape::setup_for_drag_start(desktop, event_context, event);
 
                 SnapManager const &m = desktop->namedview->snap_manager;
-                sc->center = m.freeSnap(Inkscape::Snapper::BBOX_POINT | Inkscape::Snapper::SNAP_POINT, sc->center, sc->item).getPoint();
+                sc->center = m.freeSnap(Inkscape::Snapper::SNAPPOINT_NODE, sc->center, sc->item).getPoint();
 
                 sp_canvas_item_grab(SP_CANVAS_ITEM(desktop->acetate),
                                     ( GDK_KEY_PRESS_MASK |
@@ -276,7 +276,7 @@ sp_spiral_context_root_handler(SPEventContext *event_context, GdkEvent *event)
             }
             break;
         case GDK_MOTION_NOTIFY:
-            if (dragging && (event->motion.state & GDK_BUTTON1_MASK)) {
+            if (dragging && (event->motion.state & GDK_BUTTON1_MASK) && !event_context->space_panning) {
 
                 if ( event_context->within_tolerance
                      && ( abs( (gint) event->motion.x - event_context->xp ) < event_context->tolerance )
@@ -292,7 +292,7 @@ sp_spiral_context_root_handler(SPEventContext *event_context, GdkEvent *event)
                 NR::Point motion_dt(event_context->desktop->w2d(motion_w));
                 
                 SnapManager const &m = desktop->namedview->snap_manager;
-                motion_dt = m.freeSnap(Inkscape::Snapper::BBOX_POINT | Inkscape::Snapper::SNAP_POINT, motion_dt, sc->item).getPoint();
+                motion_dt = m.freeSnap(Inkscape::Snapper::SNAPPOINT_NODE, motion_dt, sc->item).getPoint();
             
                 sp_spiral_drag(sc, motion_dt, event->motion.state);
                 ret = TRUE;
@@ -300,7 +300,7 @@ sp_spiral_context_root_handler(SPEventContext *event_context, GdkEvent *event)
             break;
         case GDK_BUTTON_RELEASE:
             event_context->xp = event_context->yp = 0;
-            if (event->button.button == 1) {
+            if (event->button.button == 1 && !event_context->space_panning) {
                 dragging = FALSE;
                 if (!event_context->within_tolerance) {
                     // we've been dragging, finish the spiral
@@ -433,7 +433,7 @@ sp_spiral_drag(SPSpiralContext *sc, NR::Point p, guint state)
     NR::Point const p0 = sp_desktop_dt2root_xy_point(desktop, sc->center);
     NR::Point p1 = sp_desktop_dt2root_xy_point(desktop, p);
     SnapManager const &m = desktop->namedview->snap_manager;
-    p1 = m.freeSnap(Inkscape::Snapper::SNAP_POINT, p1, sc->item).getPoint();
+    p1 = m.freeSnap(Inkscape::Snapper::SNAPPOINT_NODE, p1, sc->item).getPoint();
 
     SPSpiral *spiral = SP_SPIRAL(sc->item);