Re: Using g_signal_connect in an event handler



On Tue, Oct 17, 2006 at 01:51:47PM +0200, Lorenzo Marcon wrote:

int main(int argc, char *argv[]) {
      ...
      gpointer data[5];
      ...
      data[0] = (gpointer) gtk_entry_get_text (GTK_ENTRY (entry));
      data[1] = (gpointer) notebook;
      data[2] = (gpointer) progress_bar;
      data[3] = (gpointer) &stop;
      data[4] = (gpointer) window;

This is quite cumbersome.  Why don't you at least create
a struct and pass a pointer to that?  You can pass any
pointer as the callback data.

gboolean enter_callback(GtkWidget *widget, gpointer *data) {
      ...
      g_signal_connect (G_OBJECT (event_box), "button-press-event", G_CALLBACK 
(x_click_callback), data[1]);
      ....
}

gboolean x_click_callback(GtkWidget *event_box, gpointer data) {
      //Here I get segfault if I try to remove the tab.
}

Because the prototype of the signal handler is different, it
gets the event as the second argument.  See

    http://developer.gnome.org/doc/API/2.0/gtk/GtkWidget.html#GtkWidget-button-press-event

Yeti


--
Whatever.



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]