summaryrefslogtreecommitdiffstats
path: root/src/object-edit.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/object-edit.cpp')
-rw-r--r--src/object-edit.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/object-edit.cpp b/src/object-edit.cpp
index ac62a12db..6b83413e4 100644
--- a/src/object-edit.cpp
+++ b/src/object-edit.cpp
@@ -930,7 +930,7 @@ ArcKnotHolder::ArcKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderRelea
_("Adjust ellipse <b>height</b>, with <b>Ctrl</b> to make circle"),
SP_KNOT_SHAPE_SQUARE, SP_KNOT_MODE_XOR);
entity_start->create(desktop, item, this,
- _("Position the <b>start point</b> of the arc or segment; with <b>Ctrl</b>"
+ _("Position the <b>start point</b> of the arc or segment; with <b>Ctrl</b> "
"to snap angle; drag <b>inside</b> the ellipse for arc, <b>outside</b> for segment"),
SP_KNOT_SHAPE_CIRCLE, SP_KNOT_MODE_XOR);
entity_end->create(desktop, item, this,
@@ -1111,7 +1111,7 @@ public:
* [control] constrain inner arg to round per PI/4
*/
void
-SpiralKnotHolderEntityInner::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, guint state)
+SpiralKnotHolderEntityInner::knot_set(Geom::Point const &p, Geom::Point const &origin, guint state)
{
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
int snaps = prefs->getInt("/options/rotationsnapsperpi/value", 12);
@@ -1121,10 +1121,16 @@ SpiralKnotHolderEntityInner::knot_set(Geom::Point const &p, Geom::Point const &/
gdouble dx = p[Geom::X] - spiral->cx;
gdouble dy = p[Geom::Y] - spiral->cy;
+ gdouble moved_y = p[Geom::Y] - origin[Geom::Y];
+
if (state & GDK_MOD1_MASK) {
// adjust divergence by vertical drag, relative to rad
- double new_exp = (spiral->rad + dy)/(spiral->rad);
- spiral->exp = new_exp > 0? new_exp : 0;
+ if (spiral->rad > 0) {
+ double exp_delta = 0.1*moved_y/(spiral->rad); // arbitrary multiplier to slow it down
+ spiral->exp += exp_delta;
+ if (spiral->exp < 1e-3)
+ spiral->exp = 1e-3;
+ }
} else {
// roll/unroll from inside
gdouble arg_t0;