1

開発中の拡張機能にドラッグアンドドロップシステムを実装しようとしていますが、問題が発生しています。私の知る限り、dndはdraggableこのようなオブジェクトを作成することで実装されます

 let draggable = DND.makeDraggable(this.actor)

this.actorドラッグアンドドロップして、必要なコールバックを実装したいクラッターアクターはどこにありますか。ただし、これを行うと、ドラッグを開始するとGnome Shellがすぐにクラッシュし、このようにstderrに出力が残ります。

 (gnome-shell:15279): St-ERROR **: st_widget_get_theme_node called on the widget [0x2b3c000 StBoxLayout.window-list-item-box:focused ("extension.js (~/Source/js/Botto...gmail.com) - GVIM")] which is not in the stage.

ただし、Looking Glassを使用してget_theme_nodeその特定のウィジェットのメソッドを呼び出すと、完全に機能します。

俳優を明示的にステージに追加する必要がありますか?そしてget_theme_node、Gnome Shellの腹の奥深くで、Looking Glassからではなく、どこかで失敗する可能性はありますか?

4

1 に答える 1

1

ドラッグしようとしているアクターのデリゲートにgetDragActorメソッドとgetDragActorSourceメソッドを実装することも必要です。

これは、アクターのクローンをドラッグするだけの簡単な実装です。

getDragActor: function() {
    return new Clutter.Clone({source: this.actor,
                                   reactive: false,
                                   width: this.actor.get_width(),
                                   height: this.actor.get_height()});
},

getDragActorSource: function() {
    return this.actor;
}
于 2014-01-24T04:13:54.037 に答える