首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在焦点事件中将GdkX11Window转换为VTE Terminal类

在焦点事件中将GdkX11Window转换为VTE Terminal类
EN

Stack Overflow用户
提问于 2012-03-24 21:47:17
回答 1查看 201关注 0票数 0

我需要在终端(VTE)上接收GTK+ focus in event,但该事件返回持有Gtk.Window引用的EventFocus:

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

如何从窗口引用中获取终端?我不能重新输入它,它看起来像是一个容器。但是我找不到调用哪个方法来获取终端。

代码语言:javascript
复制
  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;
  });

谢谢你指出我不需要它。是的,我真正的代码是:

代码语言:javascript
复制
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 :-(

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-24 22:03:42

我不确定是否有简单的方法将Gdk.Window转换为Gtk.Widget,因为并不是所有的小部件都有关联的GDK窗口。在我看来,没有令人信服的理由去尝试从event中提取终端。在回调的上下文中,您可以简单地引用外部变量terminal,而Vala会将其提升到回调中。

代码语言:javascript
复制
Terminal terminal = new Terminal();
// ...
terminal.focus_in_event.connect((event) =>
{
  terminal.queue_draw();
  return false;
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9852249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档