【问题标题】:Where's the code that handles the 'text-changed::insert' signal in Gtk?在 Gtk 中处理 'text-changed::insert' 信号的代码在哪里?
【发布时间】:2017-05-26 20:45:13
【问题描述】:

我正在尝试在 Gtk 中跟踪一些代码。我必须在gtkentryaccessible.c 中处理这部分内容:

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

但我找不到text-changed::insert 信号的回调。

我已经尝试过 Google-ing,我已经克隆了代码的 git repo,并尝试使用 grepping 获取信号名称(带有和不带有 insert 详细信息)以及带有 textchanged 的所有回调在名称中,但没有。

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

【问题讨论】:

  • 这是信号发射。也许我没有得到你的问题。
  • 嘿。感谢您的评论。我知道那是信号发射。我的问题基本上是:我在哪里可以找到处理信号发射的代码?连接到该信号的代码。
  • 您必须使用 g_signal_connect 创建它,该代码只会发出一个信号,然后您附加一个回调来处理它。

标签: gtk signals gtk3 gnome


【解决方案1】:

@José 的 cmets 让我意识到这个问题的措辞有多糟糕,所以澄清一下......

我有一个非常简单的 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);

【讨论】:

    猜你喜欢
    • 2015-12-14
    • 1970-01-01
    • 2012-08-08
    • 1970-01-01
    • 2015-03-11
    • 2021-07-08
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多