2012-05-09 41 views
5

我有GtkEntry窗口小部件,其中一些是可編輯和可聚焦的一個集合,其中一些則不是。我想知道他們當前選擇了哪些文本(如果有的話),以便實現編輯 - >複製菜單項。有沒有什麼辦法比遍歷所有的部件,直到gtk_editable_get_selection_bounds返回true做到這一點其他的?找出哪些GTK控件具有當前選擇

我目前通過調用gtk_clipboard_get(GDK_SELECTION_PRIMARY)迴避了這個問題,但是從文檔的說明來看,這不是可移植的(並且還將選取當前顯示中選擇的文本,而不僅僅是在我的應用程序中)。

+0

遺憾的是,似乎沒有要當一個小工具聲稱選擇的信號,但您可能能夠使用相同的「選擇 - 獲得」信號處理程序爲每個條目,然後僞造選擇轉換等你拿所謂的用於選擇的條目(如果有的話)。 – ergosys

+0

ergosys:你是什麼意思假選擇轉換? –

+0

請求選擇轉換,但實際上並不打算接收數據。即調用gtk_selection_convert(),但沒有(或可能是存根)「選擇接收」信號處理程序。 – ergosys

回答

1

你試過gtk_window_get_focus()?用戶經常與條目交互,因此它可能適用於您。該文檔說,它「檢索窗口內的當前焦點小部件」。你可以自己看看here。然後,比較檢索的小部件是否是您的一個條目。

一旦你獲得了重點輸入,也許你想使用gtk_entry_get_text()獲得它的文本,但它會得到條目中的所有文本。如果這個不適合你的目的,解決方案可能會使用gtk_editable_copy_clipboard()其副本可編輯當前選擇的內容的內容(當然,施放進入可編輯),並把它放在剪貼板上。然後如果適用,請粘貼使用gtk_editable_paste_clipboard()複製的內容。

+0

'g_signal_emit_by_name(入境, 「複製剪貼板」,NULL)'也適用於複製。 – ptomato

+0

這是我嘗試的第一件事,但它不起作用,因爲重點條目不一定是文本選擇的條目 –