【发布时间】:2012-05-09 13:35:58
【问题描述】:
我有一组GtkEntry 小部件,其中一些是可编辑和可聚焦的,而有些则不是。我想找出其中哪些(如果有的话)当前选择了文本,以实现 Edit->Copy 菜单项。除了遍历所有小部件直到 gtk_editable_get_selection_bounds 返回 true 之外,还有什么方法可以做到这一点?
我目前正在通过调用 gtk_clipboard_get(GDK_SELECTION_PRIMARY) 来回避这个问题,但根据文档的说法,这不是可移植的(并且还会在当前显示的任何位置选择文本,而不仅仅是从我的应用程序中)。
【问题讨论】:
-
不幸的是,当小部件声明选择时似乎没有信号,但您可以为每个条目使用相同的“selection-get”信号处理程序,然后伪造选择转换,因此您会被要求输入带有选择的条目(如果有)。
-
ergosys:你所说的伪造选择转换是什么意思?
-
请求选择转换,但实际上并不打算接收数据。 IE。调用 gtk_selection_convert(),但没有(或者可能是存根)“选择接收”信号处理程序。
-
gtk_selection_convert() 仍然需要我指定要接收的选择,这会导致与 gtk_clipboard_get() 相同的问题。据我所知,没有相当于 GDK_SELECTION_PRIMARY 的 windows - 我不确定 windows 本身是否不允许您看到何时选择了某些内容但未复制到剪贴板,或者 gtk 是否只是不公开x 之外的功能。