Рендеринг:
- Новый движок вместо TWB: страница проходит через DOM, вычисление
стилей, раскладку и отрисовку отдельными этапами
- Рисуется только видимая область, холст размером с окно - расход памяти
не растёт с длиной страницы
- Прокрутка сдвигает уже нарисованный холст и дорисовывает только
появившуюся полосу
- Страница показывается, не дожидаясь картинок; таблицы стилей, наоборот,
дожидаются - до них на экране остаётся предыдущая страница
CSS:
- Источники правил: <style>, атрибут style="", <link> и @import
- Селекторы: тег, .class, #id, *, атрибутные, комбинаторы - пробел, >, +, ~
- :is() и :where() раскрываются в обычные правила
- Псевдоклассы: first-child, last-child, only-child, first-of-type,
last-of-type, only-of-type, root, empty, checked, disabled, not,
nth-child, nth-last-child, nth-of-type, nth-last-of-type
- Псевдоэлементы ::before и ::after
- @media по ширине и высоте окна
- var(), calc(), min(), max(), clamp()
- Блочная модель целиком: margin, padding, border, min/max-width и height
- float, flex, grid
- position: static, relative, absolute, fixed, sticky, z-index
- vertical-align, в том числе super и sub; теги <sup> и <sub>
Таблицы:
- colspan и rowspan, неявные строки и ячейки, <caption>, вложенные таблицы
- Ширины колонок считаются по содержимому и по заданным процентам
- <table align> и <center> вокруг таблицы
Сеть и кэш:
- Картинки и таблицы стилей грузятся параллельно потоками самого WebView -
до 12 одновременно, вместо отдельного процесса dl на каждый файл
- Снято ограничение в 256 байт на адрес, и запросы уходят с куками
- Кэш файлов в /tmp0/1/Cache с индексом: повторный заход на страницу
не перекачивает картинки
- SVG и WebP открываются через конвертер (по умолчанию wsrv.nl, адрес
меняется в app.ini)
- Куки: приём, хранение и отправка
- Оборванное соединение распознаётся - обрезанный файл не сохраняется
и не попадает в кэш, страница помечается неполной
Формы:
- Отправка по GET и по POST
- Контролы: текстовое поле, пароль, чекбокс, радиокнопка, обычная кнопка
и кнопка отправки, <select>, <textarea>
- Размеры контролов берутся из CSS и атрибутов страницы, а не фиксированы
Текст и шрифты:
- Выделение и копирование текста, поиск по странице
- Курсив для <i>, <em>, <cite>, <var>, <dfn>, <address> и font-style:
системные шрифты курсива не имеют, поэтому нарисованная строка
наклоняется сдвигом пикселей
- Мелкий шрифт для текста 10 px и меньше - но только если такого текста
меньше половины страницы
- Изменение размера шрифта: Ctrl+- и Ctrl++
- Определение кодировки по <meta charset> и по содержимому
Интерфейс:
- Обновлены встроенные страницы: новая вкладка и страница ошибки
- Пункт меню "Открыть в NetSurf"
- Кнопка папки загрузок на панели
- Правый клик по картинке: открыть, сохранить, скопировать адрес
- До 5 вкладок
Убрано:
- Страница истории WebView:history и пункт меню к ней
Изменения вне браузера:
- dl: оборванная загрузка считается ошибкой, обрезанный файл
не сохраняется; путь назначения принимается после | в параметре
- menu: не реагирует на события мыши до создания окна - иначе меню
закрывалось сразу после запуска
- lib/obj/http.h: в _http появилось поле flags, наружу выведен
HTTP_GOT_ALL_DATA
- lib/draw_buf.h: холст держит размер, заданный Init(); неиспользуемые
методы не попадают в программу
- lib/collection.h: swap() для двух записей
- lib/obj/box_lib.h: edit_box приведена к раскладке переписанного box_lib
(OS PR #662)
Размер запакованного приложения - 64 КБ: 65 261 байт (EN) и 65 456 (RU).
---------
Co-authored-by: Burer <burer@kolibrios.org>
Reviewed-on: #14
Reviewed-by: Burer <burer@kolibrios.org>
Co-authored-by: leency <lipatov.kiril@gmail.com>