Ahoj,
doufám že se tu najde někdo zkušený kdo mi poradí.
Potřebuju předat pointer na instanci do handleru, který je (samozřejmě) statický. Následující kód osvětlý sitaci (ořezaný o "zbytečnosti"):
class moje_trida {
GtkWidget * drawing_area;
moje_trida() {
g_signal_connect(drawing_area, "expose-event", G_CALLBACK(kresleni), this /* tady posilam THIS */);
}
static gboolean kresleni(GtkWidget *da, GdkEventExpose *event, gpointer data /* ale tady prijde NULL*/) {
delej_neco_s((moje_trida *) data);
}
};
Jak už je naznačeno v komentářích, přestože v g_signal_connect registruji jako data pointer na instanci mojí třídy, v handleru se objeví (data == NULL), což je ošklivé, protože v něm potřebuju se svojí třídou pracovat (a ne jen s drawing_area).
Samozřejmě, že by to šlo nějak hnusně ohackovat (mapování drawing_area->moje_trida), ale já bych chtěl být relativně elegantní.
Kde je chyba ?
Díky moc !