Я пытаюсь обновить расширение Gnome-shell. В нем я переопределить метод _init объекта, который я делаю так:Как модифицировать _init(), влияющие на parent()?
function newInitAppSwitcherPopup() {
this.parent();
...
}
AltTab.AppSwitcherPopup.prototype._init = newInitAppSwitcherPopup;
Новый метод терпит неудачу с:
JS ERROR: TypeError: The method 'parent' cannot be called
Что я нахожу очень удивительного в том, что parent
метод действительно существует (если я меняю имя, я получаю «неопределенную» ошибку).
Я не понимаю, что оригинальный AppSwitcherPopup._init по-прежнему использует этот вызов для родителя (https://git.gnome.org/browse/gnome-shell/tree/js/ui/altTab.js?h=gnome-3-16#n54).
Это хорошо работало под Gnome 3.12, но было нарушено для Gnome 3.16 ... Я думаю, они что-то изменили в своих моделях GObject или наследования?
как вы можете видеть в предоставленном коде. Я просто обезьяна патч _init через прототип ... вы предлагаете расширить класс вместо этого? – KrahnacK
Не совсем уверен, если это проблема. Другая возможность заключается в том, что в JavaScript Javascript introspection add есть какие-то проверки, которые мешают вам вызвать parent() без предоставления правильных аргументов. –