2014-01-07 54 views
0

例如,如何從gtk-notify-signal處理函數獲取之前的值?

g_signal_connect(G_OBJECT(window), "notify::title", G_CALLBACK(onTitleChanged), NULL); 

void onTitleChanged(GtkWidget* widget, 
        GParamSpec* property, 
        gpointer data) 
{ 
    g_message("%s is changed, the new value is %s\n", property->name, gtk_window_get_title(GTK_WINDOW(widget))); 
} 

我怎麼能得到以前(舊)稱號通知信號處理器(onTitleChanged)內在價值?

謝謝。

回答

1

這是GObject無法使用的,因此您必須將當前值緩存在您的應用中。

安全的方法是更新通知處理程序末尾的緩存值 - 但取決於您的使用情況,您可能還需要初始化值(並且必須在必要時記得分配/釋放如果該值是一個字符串)。