39 lines
1.1 KiB
Plaintext
39 lines
1.1 KiB
Plaintext
on.mouse_release = function(x,y, mouse_button)
|
|
if Pan then
|
|
Pan = nil
|
|
elseif Edge then
|
|
local src = Edge.source
|
|
local sx, sy = sx(x), sy(y)
|
|
local dest = on_border(sx,sy)
|
|
if dest == nil then
|
|
local line_height = src.editor.line_height
|
|
dest = {id=next_key(), type='text', x=sx-60,y=sy-1.5*line_height, margin=0, width=120, outgoing_edges={}, incoming_edges={src.id}}
|
|
table.insert(Nodes[src.id].outgoing_edges, dest.id)
|
|
else
|
|
if src.id == dest.id then
|
|
-- avoid edge to self for now; there's no way to delete it
|
|
elseif array.find(dest.incoming_edges, src.id) then
|
|
-- no duplicate edges
|
|
else
|
|
table.insert(dest.incoming_edges, src.id)
|
|
table.insert(Nodes[src.id].outgoing_edges, dest.id)
|
|
end
|
|
end
|
|
Nodes[dest.id] = dest
|
|
Global_next_save = Current_time + 3
|
|
Edge = nil
|
|
A()
|
|
elseif Resize_node then
|
|
Global_next_save = Current_time + 3
|
|
Resize_node = nil
|
|
Resize = nil
|
|
elseif Move_node then
|
|
Global_next_save = Current_time + 3
|
|
Move_node = nil
|
|
Move = nil
|
|
A()
|
|
elseif Cursor_node then
|
|
Cursor_node.show_cursor = true
|
|
edit.mouse_release(Cursor_node.editor, x,y, mouse_button)
|
|
end
|
|
end |