gtk_events_pending( ) 为 TRUE,但 gtk_get_current_event( ) 为 NULL
gtk_events_pending( ) is TRUE, but gtk_get_current_event( ) is NULL
我正在尝试将一个古老的 GTK+ 应用程序移植到 GTK2,但遇到以下问题:在 GTK+ 版本中 gtk_events_pending( )
给出 0,而在 GTK2 版本中它给出 1。变化非常少代码,所以我不明白为什么相同的函数 returns 在 GTK+ 和 GTK2 中有不同的值。所以我试图找出哪个事件正在等待:
if (gtk_events_pending( ) == 0) {
fprintf(stderr, "gtk_events_pending=0\n");
} else {
fprintf(stderr, "gtk_events_pending=1\n");
if ( gtk_get_current_event () == NULL ) {
fprintf(stderr, "current event is NULL\n");
}
}
但是,我总是得到 NULL 作为当前事件。怎么会这样?
阅读 gtk_get_current_event()
、
的文档
Obtains a copy of the event currently being processed by GTK.
For example, if you are handling a “clicked”
signal, the current event will be the GdkEventButton
that triggered the clicked
signal.
...我猜 gtk_get_current_event()
只会 return 如果您处于该事件的信号处理程序的中间,则您会收到该事件。
您可以通过设置环境变量 GDK_DEBUG=events
获得有关触发哪些事件的信息。此环境变量有一个值列表 here。
另请注意,GTK 2 已经过时 12 年了!随着时间的推移,你越来越不可能找到关于它的问题的好答案......
我正在尝试将一个古老的 GTK+ 应用程序移植到 GTK2,但遇到以下问题:在 GTK+ 版本中 gtk_events_pending( )
给出 0,而在 GTK2 版本中它给出 1。变化非常少代码,所以我不明白为什么相同的函数 returns 在 GTK+ 和 GTK2 中有不同的值。所以我试图找出哪个事件正在等待:
if (gtk_events_pending( ) == 0) {
fprintf(stderr, "gtk_events_pending=0\n");
} else {
fprintf(stderr, "gtk_events_pending=1\n");
if ( gtk_get_current_event () == NULL ) {
fprintf(stderr, "current event is NULL\n");
}
}
但是,我总是得到 NULL 作为当前事件。怎么会这样?
阅读 gtk_get_current_event()
、
Obtains a copy of the event currently being processed by GTK. For example, if you are handling a
“clicked”
signal, the current event will be theGdkEventButton
that triggered theclicked
signal.
...我猜 gtk_get_current_event()
只会 return 如果您处于该事件的信号处理程序的中间,则您会收到该事件。
您可以通过设置环境变量 GDK_DEBUG=events
获得有关触发哪些事件的信息。此环境变量有一个值列表 here。
另请注意,GTK 2 已经过时 12 年了!随着时间的推移,你越来越不可能找到关于它的问题的好答案......