找出哪个gtk小部件有当前选择

时间:2012-05-09 01:41:42

标签: gtk selection gtkentry

我有一组GtkEntry小部件,其中一些是可编辑的,可以集中精力的,有些则不是。我想知道它们当前有哪些(如果有的话)选择了文本,以便实现Edit-> Copy菜单项。有没有办法做到这一点,除了迭代所有小部件,直到gtk_editable_get_selection_bounds返回true?

我目前正在通过调用gtk_clipboard_get(GDK_SELECTION_PRIMARY)来回避这个问题,但是根据文档的说法,这不是可移植的(并且还会在当前显示内的任何位置选择文本,而不仅仅是在我的应用程序中)。

1 个答案:

答案 0 :(得分:2)

你试过gtk_window_get_focus ()吗?用户经常与条目交互,因此它可能适合您。文档说它“检索窗口中当前聚焦的小部件”。您可以自己查看here。然后,比较检索到的窗口小部件是否是您的一个条目。

一旦你获得了专注的条目,也许你想使用gtk_entry_get_text ()得到它的文本,但它会获得条目中的所有文本。如果这不符合您的目的,解决方案可能正在使用gtk_editable_copy_clipboard ()复制当前所选内容的可编辑内容(当然,将条目转换为可编辑的)并将其放在剪贴板上。然后,如果适用,请粘贴使用gtk_editable_paste_clipboard ()复制的内容。