2017-05-25 28 views
0

我想跟蹤一些代碼在Gtk。我得這部分gtkentryaccessible.c在Gtk中處理'text-changed :: insert'信號的代碼在哪裏?

g_signal_emit_by_name (accessible, 
         "text-changed::insert", 
         *position - length, 
         length); 

但我不能找到一個text-changed::insert信號回調。

我試圖谷歌,荷蘭國際集團,我已經克隆了編碼git的回購,並試圖grepping的信號名稱(與不insert細節)和名稱中帶有textchanged所有的回調,但沒有。

如何找到處理此信號發射的代碼?

+0

這是信號發射。也許我沒有得到你的問題。 –

+0

嘿。感謝您的評論。我明白那是信號發射。我的問題基本上是:我在哪裏可以找到處理信號發射的代碼?連接到該信號的代碼。 – Bridgey

+0

您必須使用g_signal_connect創建它,該代碼纔會發出信號,然後附加回調來處理它。 –

回答

0

@何的評論使我認識到多麼嚴重的措辭這個問題的,所以要澄清...

我有一個非常簡單的C編程',使下面的調用:

gtk_entry_set_text(GTK_ENTRY(entry), "thisisthetext"); 

我試圖跟蹤這條線如何導致文本實際上在控制中被更新 - 可能一路進入X的源代碼。

所以,我跟着調用...

  • 根據gtkentry.c,gtk_entry_set_text實際上調用gtk_editable_delete_text後跟gtk_editable_insert_text
  • 然後,根據gtkeditable.c,gtk_editable_insert_text調用do_insert_text
  • 等等...

我跟着它錯誤,結束了在問題g_signal_emit_by_name(...)功能。所以我很困惑這個函數是如何被調用的。答案當然不是。

這個問題不再需要。我已經將文本插入到btree中,仍在gtk代碼中,具體爲gtktextbuffer.c

_gtk_text_btree_insert (iter, text, len);