╭──────────╮ │← previous│ ╰──────────╯ ╭ changed ──╮ │src/web.zig│ ╰───────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1833 try out.appendSlice(allocator, "<form action=\""); │ │1834 try appendEscapedHtml(allocator, &out, action_url); │ │1835 try out.appendSlice(allocator, "\" method=\"post\""); │ │1809 - // an empty action must not POST — block it and send the input to the TUI instead │ │1810 - if (action_url.len == 0) try out.appendSlice(allocator, " onsubmit=\"event.preventDefault();sendEnter(this);\"");│ │1836 try out.appendSlice(allocator, ">"); │ │1837 │ │1838 // form.focus.children was populated by addChild, which flattens the │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────╮ │1847 switch (root_child.focus.kind) { │ │1848 .text_input, .text_input_password => { │ │1849 const ti = session.text_inputs.get(inner_id) orelse continue; │ │1850 + if (ti.options.read_only) continue; // rendered with the grid │ │1851 const inner_left = r.x + 1; │ │1852 const inner_top = r.y + 1; │ │1853 const inner_width = if (r.size.width > 2) r.size.width - 2 else 0;│ ╰────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1854 │ │1855 try out.appendSlice(allocator, "<input type=\""); │ │1856 try out.appendSlice(allocator, if (root_child.focus.kind == .text_input_password) "password" else "text"); │ │1831 - try out.appendSlice(allocator, if (action_url.len == 0) "\" readonly data-focus-id=\"" else "\" data-focus-id=\"");│ │1857 + try out.appendSlice(allocator, "\" data-focus-id=\""); │ │1858 var id_buf: [32]u8 = undefined; │ │1859 try out.appendSlice(allocator, try std.fmt.bufPrint(&id_buf, "{d}", .{inner_id})); │ │1860 if (ti.options.name.len > 0) { │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────╮ │1877 }, │ │1878 .text_area => { │ │1879 const ti = session.text_inputs.get(inner_id) orelse continue; │ │1880 + if (ti.options.read_only) continue; // rendered with the grid │ │1881 const inner_left = r.x + 1; │ │1882 const inner_top = r.y + 1; │ │1883 const inner_width = if (r.size.width > 2) r.size.width - 2 else 0;│ ╰────────────────────────────────────────────────────────────────────────────────────────────╯