0

gnome シェルの拡張機能を開発しています。私の拡張機能では、ステータス領域のインジケーターにスライダー バーが必要です。私はそれを設定するのにいくつか問題がありました。私はこの少し古い参照でコードを書いていました。主な問題は、ソース コードに 'PopupSliderMenuItem' がないことでした。それで調べてみたら、削除されていることがわかりました。このコミットにはより多くの情報があります。

だから私はコミットでこの(更新された)コードに従おうとしました:

this._slider = new Slider.Slider(0);
this._slider.connect('value-changed', Lang.bind(this, this._sliderChanged));
this._slider.connect('drag-end', Lang.bind(this, this._notifyVolumeChange));

this.item = new PopupMenu.PopupBaseMenuItem({ activate: false });
this.item.addActor(this._slider.actor, { expand: true });

このコードをプロジェクトにリファクタリングしたところ、次のようになりました。

this.slider = new Slider.Slider(0.5);
this.slider.connect('value-changed', Lang.bind(this, this._sliderChanged));
this.slider.connect('drag-end', Lang.bind(this, this._setNewColorTemperature));

this.sliderContainer = new PopupMenu.PopupBaseMenuItem();
this.sliderContainer.addActor(this.slider.actor, { expand: true });
this.menu.addMenuItem(this.sliderContainer);

最初のブロックは gnome-shell ソース コードにあります (ボリューム スライダーを設定します)。私のコード (2 番目のブロック) は、「addActor」行でこの例外をスローしています。

Gjs-Message: JS LOG: Extension ****censored**** had error: TypeError: sliderContainer.addActor is not a function

このエラーが発生する理由は誰にも分かりますか? 最も奇妙なことは、 PopupBaseMenuItem クラスのソース コードに、私が呼び出している関数があることです。

他に情報が必要な場合は、喜んで提供いたします。

4

1 に答える 1