From: Diederik van Lierop Date: Tue, 23 Feb 2010 20:47:07 +0000 (+0100) Subject: Pen tool in paraxial mode: fix automatic orientation of first line segment X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=0f17c8217e0879b08ba3f5c3cdd64e4050168943;hp=ff88af6d87c70cd642bd1e5051f9c3161ac536e3;p=inkscape.git Pen tool in paraxial mode: fix automatic orientation of first line segment --- diff --git a/src/pen-context.cpp b/src/pen-context.cpp index bb52b1950..6e545be9d 100644 --- a/src/pen-context.cpp +++ b/src/pen-context.cpp @@ -1331,6 +1331,7 @@ spdc_pen_finish_segment(SPPenContext *const pc, Geom::Point const p, guint const if (pc->polylines_paraxial) { pen_last_paraxial_dir = pen_next_paraxial_direction(pc, p, pc->p[0], state); } + ++pc->num_clicks; if (!pc->red_curve->is_empty()) { @@ -1430,7 +1431,11 @@ static int pen_next_paraxial_direction(const SPPenContext *const pc, * horizontal or vertical segment; for all subsequent mouse clicks, we use the direction * orthogonal to the last one; pressing Shift toggles the direction */ - if (pc->num_clicks == 0) { + // num_clicks is not reliable because spdc_pen_finish_segment is sometimes called too early + // (on first mouse release), in which case num_clicks immediately becomes 1. + // if (pc->num_clicks == 0) { + + if (pc->green_curve->is_empty()) { // first mouse click double dist_h = fabs(pt[Geom::X] - origin[Geom::X]); double dist_v = fabs(pt[Geom::Y] - origin[Geom::Y]);