Programming environment for editing various of my live apps without restarting them.
on.mouse_press = function(x,y, mouse_button)
	if Animating then return end
	if Zoomed_out then
		zoom_in(x,y)
		return
	end
	print('mouse press', x,y)
	if Cursor_node then
		Cursor_node.show_cursor = nil
		Cursor_node = nil
	end
	if mouse_press_consumed_by_any_button(HUD, x,y, mouse_button) then
		B()
		return
	end
	local node = on_text(x,y)
	if node then
		-- position cursor in node
		Cursor_node = node
		print('within node')
		edit.mouse_press(node.editor, x,y, mouse_button)
		print('cursor at', node.editor.cursor_x, node.editor.cursor_y)
		return
	end
	local node = on_handle(x,y)
	if node then
		-- move node
		prepare_to_move(node)
		Move = {xoff=App.mouse_x()-vx(node.x), yoff=App.mouse_y()-vy(node.y), node=node, oldx=node.x, oldy=node.y}
		return
	end
	-- pan surface
	Pan = {x=Viewport.x+x/Viewport.zoom, y=Viewport.y+y/Viewport.zoom}
end