Перейти к содержимому
FastOffice

Реакция на клики и контекстное меню

Как обрабатывать hit-test, selection и контекстные меню в табличном редакторе.

Compute contract отвечает за семантику книги. Pointer-события принадлежат UI-хосту. Интегратор должен разделять эти обязанности:

Событие/задача Кто владеет Что передавать
click / double-click Web/Desktop host Координату, hit-test result, текущий selection
контекстное меню Web/Desktop host Тип объекта и разрешённые команды из состояния
значение/формула ячейки Rust compute contract sheetKey, row, col, inputKind, input
Undo/Redo Rust compute contract subsetId и direction
сохранение Rust compute contract subsetId и destinationUri
{
"workbookSession": "subset-...",
"sheetKey": "xl/worksheets/sheet1.xml",
"selection": { "top": 0, "left": 0, "rows": 1, "cols": 1 },
"hit": { "kind": "cell", "row": 0, "col": 0 },
"pointer": { "kind": "double-click", "button": 0 }
}

UI использует такой объект для выбора меню. Команда, изменяющая документ, затем преобразуется в строго типизированный запрос compute contract. Не отправляйте DOM-объекты или HTML в Rust.

Ассистент документации

Ответ собран из документации и может быть неточным — сверяйтесь с источниками.