2015-11-29 4 views
0

Я пытаюсь обновить расширение 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 или наследования?

ответ

0

У меня есть подобный код работает для моей конфигурации виджета

const MenuConfigWidget = new GObject.Class({ 
    Name: 'SimpleMenu.Prefs.MenuConfigWidget', 
    GTypeName: 'SimpleMenuMenuConfigWidget', 
    Extends: Gtk.Grid, 

    _init: function(params) { 
    this.parent({... }); 
    ... 
    } 
}); 

ли вы расширить класс наша только обезьяна патч функции _init?

+0

как вы можете видеть в предоставленном коде. Я просто обезьяна патч _init через прототип ... вы предлагаете расширить класс вместо этого? – KrahnacK

+0

Не совсем уверен, если это проблема. Другая возможность заключается в том, что в JavaScript Javascript introspection add есть какие-то проверки, которые мешают вам вызвать parent() без предоставления правильных аргументов. –