Я играю с кодовой базой Thunderbird, цель состоит в том, чтобы внедрить встроенное редактирование контактов. Текущий код перехватывает событие Click
в дереве XUL
и, если это двойной щелчок (events.detail == 2
), открывает редактор профиля. Я изменил его, чтобы начать редактирование текущего treeCell
, и я добавил editable=true
в соответствующий документ XUL
. Обновленный код читает
var orow = {}, ocolumn = {}, opart = {};
gAbResultsTree.treeBoxObject.getCellAt(event.clientX, event.clientY,
orow, ocolumn, opart);
var row = orow.value, column = ocolumn.value.index;
if (row == -1)
return;
if (event.detail == 2)
gAbResultsTree.startEditing(row, column);
К сожалению, когда код достигает части startEditing
, он возвращает
Error: uncaught exception: [Exception... "Component returned failure code: 0x80004001 (NS_ERROR_NOT_IMPLEMENTED) [nsITreeView.isEditable]" nsresult: "0x80004001 (NS_ERROR_NOT_IMPLEMENTED)" location: "JS frame :: chrome://global/content/bindings/tree.xml :: startEditing :: line 337" data: no]
Я здесь совсем потерялся. Может ли кто-нибудь с большим опытом работы с XUL помочь? Спасибо!
QueryInterface
, в случае, если интерфейс поддерживается, он должен вернуть оболочку, а не обернутый экземпляр - определить любые функции / свойства, которые вы хотите переопределить - другие функции/свойства будут использоваться из обернутого экземпляра (это достигается функциейgeneratePropertyProxy
) 24.03.2012generatePropertyProxy
— самый сложный шаг, таким образом, он действует так же, как обернутый экземпляр был бы установлен в качестве прототипа оболочки, но он не ломается, как если бы использовался__proto__
24.03.2012