Client for playing 300 publicly available Sokoban puzzles on a computer or phone.
copy_button = function(x, y, r)
	return overflowable_button('copy', x, y, r,
		function()
			Show_menu = nil
			local e = Current_pane.editor_state
			local s = Text.selection(e)
			if s == nil then
				-- nothing selected? copy entire editor
				-- workaround while we have no way to save to file
				e.selection1 = {line=1, pos=1}
				e.cursor1 = {line=#e.lines, pos=utf8.len(e.lines[#e.lines].data)+1}
				s = Text.selection(e)
			end
			App.set_clipboard(s)
		end)
end