better handle moving points
This should hopefully address #5. I'm removing some constraints from manhattan lines, rectangles and squares.
This commit is contained in:
parent
efbbdfc586
commit
f3abc2cbf2
15
README.md
15
README.md
|
@ -91,21 +91,6 @@ found anything amiss: http://akkartik.name/contact
|
||||||
* No clipping yet for drawings. In particular, circles/squares/rectangles and
|
* No clipping yet for drawings. In particular, circles/squares/rectangles and
|
||||||
point labels can overflow a drawing.
|
point labels can overflow a drawing.
|
||||||
|
|
||||||
* Insufficient handling of constraints when moving points. For example, if you
|
|
||||||
draw a manhattan line and then move one of the points, you may not be able
|
|
||||||
to hover on it anymore.
|
|
||||||
|
|
||||||
There's two broad ways to fix this. The first is to relax constraints,
|
|
||||||
switch the manhattan line to not be manhattan. The second is to try to
|
|
||||||
maintain constraints. Either constrain the point to only move along one line
|
|
||||||
(but what if it's connected to two manhattan lines?!), or constrain the
|
|
||||||
other end of the line to move alongside. I'm not sure yet which would be
|
|
||||||
more useful. Getting into constraints would also make the program more
|
|
||||||
complex.
|
|
||||||
|
|
||||||
Bottomline: at the moment moving points connected to manhattan lines,
|
|
||||||
rectangles or squares can break drawings in subtle ways.
|
|
||||||
|
|
||||||
* Touchpads can drag the mouse pointer using a light touch or a heavy click.
|
* Touchpads can drag the mouse pointer using a light touch or a heavy click.
|
||||||
On Linux, drags using the light touch get interrupted when a key is pressed.
|
On Linux, drags using the light touch get interrupted when a key is pressed.
|
||||||
You'll have to press down to drag.
|
You'll have to press down to drag.
|
||||||
|
|
|
@ -248,6 +248,11 @@ function Drawing.update()
|
||||||
elseif Current_drawing_mode == 'move' then
|
elseif Current_drawing_mode == 'move' then
|
||||||
if Drawing.in_drawing(drawing, x, y) then
|
if Drawing.in_drawing(drawing, x, y) then
|
||||||
local mx,my = Drawing.coord(x-Margin_left), Drawing.coord(y-drawing.y)
|
local mx,my = Drawing.coord(x-Margin_left), Drawing.coord(y-drawing.y)
|
||||||
|
if drawing.mode == 'manhattan' then
|
||||||
|
drawing.mode = 'line'
|
||||||
|
elseif drawing.mode == 'rectangle' or drawing.mode == 'square' then
|
||||||
|
drawing.mode = 'polygon'
|
||||||
|
end
|
||||||
drawing.pending.target_point.x = mx
|
drawing.pending.target_point.x = mx
|
||||||
drawing.pending.target_point.y = my
|
drawing.pending.target_point.y = my
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue