0

Gnome シェル拡張機能を更新しようとしています。その中で、オブジェクトの _init メソッドをオーバーライドします。これは次のように行っています。

function newInitAppSwitcherPopup() {
     this.parent();        
     ...
}
AltTab.AppSwitcherPopup.prototype._init = newInitAppSwitcherPopup;

新しいメソッドは次のエラーで失敗します。

JS エラー: TypeError: メソッド 'parent' を呼び出せません

ここで非常に驚くべきことは、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 または継承モデルで何かが変更されたのでしょうか?

4

1 に答える 1

0

私は自分の構成ウィジェットで動作する同様のコードを持っています

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

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

_init 関数にモンキー パッチを適用するだけで、クラスを拡張しますか?

于 2016-02-19T16:37:00.733 に答える