0

ターミナル(VTE)のイベントでGTK +フォーカスを受け取る必要がありますが、イベントはGtk.Window参照を保持するEventFocusを返します。

http://www.valadoc.org/gdk-3.0/Gdk.EventFocus.html

ウィンドウリファレンスからターミナルを取得するにはどうすればよいですか?再入力できません。コンテナのようです。しかし、ターミナルを取得するために呼び出すメソッドを見つけることができません。

  Terminal terminal = new Terminal();
  // ...
  terminal.focus_in_event.connect((event) =>
  {
    the_terminal = event.window; // DOES NOT WORK > invalid cast from `GdkX11Window' to `Terminal'
    return false;
  });

指摘してくれてありがとう私はそれを必要としない。ええ、私の本当のコードは次のとおりです。

for (int i = 0; i < terminal.length; i++) {
  this.terminal[i].focus_in_event.connect((event) =>
  {
    GLib.stdout.printf("Focus event terminal %p\n", this.terminal[i]);
    return false;
  });
}

残念ながら、常にnullを出力します:-(

ありがとう!

4

1 に答える 1

2

すべてのウィジェットにGDKウィンドウが関連付けられているとは限らないため、Gdk.Windowをに変換する簡単な方法があるかどうかはわかりません。Gtk.Widget私が見ているように、から端末を抽出しようとする説得力のある理由はありませんevent。コールバックのコンテキストでは、外部変数を参照するだけでterminal、Valaがそれをコールバックに持ち上げます。

Terminal terminal = new Terminal();
// ...
terminal.focus_in_event.connect((event) =>
{
  terminal.queue_draw();
  return false;
});
于 2012-03-24T14:03:41.640 に答える