我已经将gvim嵌入到Gtk::套接字中,该套接字放置在Gtk::Box中,如何才能将焦点集中到嵌入的gvim窗口,从而实现与实际指向和单击嵌入窗口相同的目的?
在Gtk::Socket小部件上使用->grab_focus()没有任何效果。
根据XEMBED规范(http://standards.freedesktop.org/xembed-spec/xembed-spec-latest.html#idm139742761059984),似乎嵌入器( Gtk::Socket )应该向子节点发送XEMBED_FOCUS_IN或XEMBED_WINDOW_ACTIVATE信号,但是在Gtk::Socket中似乎没有接口。
在这里可以找到基于Gtk::Plug和Gtk::Socket示例的简单示例:https://github.com/gauteh/plug-socket-grab-focus。
如果这是一个bug,报告如下:bug.cgi?id=729248
发布于 2014-09-01 14:03:06
现在有两种方法来实现这一点,一种是使用bug.cgi?id=729248中提供的修补程序:gtk_socket_focus_forward (),它向GtkSocket添加了一个gtk_socket_focus_forward ()方法。调用它将聚焦Gtk::Plug窗口中的第一个小部件。
使用gtk_socket_focus_forward的示例可以在从标准示例改编的示例的前支中找到。
第二种方法是发送Gtk::DIR_TAB_FORWARD信号,就像在邮寄名单上描述的那样,类似的例子可以在转发分支中找到。
这涉及以下方面:
socket->set_can_focus (true);
socket->child_focus (Gtk::DIR_TAB_FORWARD);该方法确实与gtk_socket_focus_forward的可能略有不同,但似乎做到了这一点。
https://stackoverflow.com/questions/23383901
复制相似问题