Re: Help: how to disconnect a signal?



/*********************
 CODE TO CONNECT
*********************/
gint sig_id = g_signal_connect(G_OBJECT(obj));
GList *l = NULL;

/* first time NULL */
l = g_object_get_data(G_OBJECT(obj), "handler_list");
l = g_list_append(l, sig_id);
g_object_set_data(G_OBJECT(obj), "handler_list", l);
 /***************************************
 CODE TO DISCONNECT ALL HANDLERS
 ***************************************/
GList *list = g_object_get_data(G_OBJECT(obj), "handler_list");
GList *l = list;
while (l) {
   g_signal_handler_disconnect(G_OBJECT(obj), (gint )l->data);
   l = l->next;
}
list = (g_list_free(list), NULL);
g_object_set_data(G_OBJECT(obj), "handler_list", NULL);

Cheers,
                   -Tristan




Tom Liu wrote:

I didn't record the id of the signal and don't know how many functions
conneted. I just want to disconnect all the connected functions.

The thing I need this is I am porting the Motif to GTK.
In the old program, I have a pice of code like:
        Widget widg;
        XtRemoveAllCallbacks(widg, XmNmodifyVerifyCallback);
        XtRemoveAllCallbacks(widg, XmNactivateCallback);

Thanks.



-----Original Message-----
From: gtk-app-devel-list-admin gnome org
[mailto:gtk-app-devel-list-admin gnome org] On Behalf Of Tim Müller
Sent: Thursday, November 20, 2003 4:55 AM
To: gtk-app-devel-list gnome org
Subject: Re: Help: how to disconnect a signal?

On Wednesday 19 November 2003 22:23, Tom Liu wrote:

I want to disconnect all the "clicked" signal from a button. I spend
an
hour already, don't know how to use the function

g_signal_handlers_disconnect_matched

I tried: g_object_disconnect (G_OBJECT(w),"clicked") also. Doesn't
work.

gulong id;

id = g_signal_connect(button, "clicked", G_CALLBACK(onButtonClicked),
NULL);

g_signal_handler_disconnect(button, id);


or:

g_signal_connect(button, "clicked", G_CALLBACK(onButtonClicked), NULL);

g_signal_handlers_disconnect_by_func(button, onButtonClicked, NULL);


See http://developer.gnome.org/doc/API/2.0/gobject/gobject-Signals.html

Cheers
-Tim




_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list gnome org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list gnome org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list


--
"A line of code is worth a thousand words"
   -me




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