处理' text-changed :: insert'的代码在哪里?在Gtk发出信号?

时间:2017-05-25 22:14:33

标签: gtk signals gtk3 gnome

我试图在Gtk中追踪一些代码。我已经在gtkentryaccessible.c中找到了这一部分:

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

但是我无法找到text-changed::insert信号的回调。

我已经尝试了Google-ing并且我已经克隆了代码的git repo,并尝试使用grepping信号名称(带有和不带insert详细信息)和所有带有{的回调<1}}或名称中的text,但没有。

如何找到处理此信号发射的代码?

1 个答案:

答案 0 :(得分:0)

来自 @José的评论让我意识到这个问题措辞多么糟糕,所以要澄清......

我有一个非常简单的c程序进行以下调用:

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

我试图追踪这一行如何导致文本在控件中实际更新 - 可能一直到X的源代码。

所以,我跟着电话......

  • 根据gtkentry.cgtk_entry_set_text实际上会调用gtk_editable_delete_text,后跟gtk_editable_insert_text
  • 然后,根据gtkeditable.cgtk_editable_insert_text调用do_insert_text
  • 依旧......

我跟着错误地并最终找到问题中的g_signal_emit_by_name(...)函数。所以我对如何调用该函数感到困惑。答案当然不是。

不再需要这个问题。我已经将文本插入到btree中,仍然使用gtk代码,特别是gtktextbuffer.c

_gtk_text_btree_insert (iter, text, len);