added an event watcher for enter/leave based on signal emission hooks.

Mon Nov 30 06:20:36 1998  Tim Janik  <timj@gtk.org>

        * gtk/testgtk.c: added an event watcher for enter/leave based on
        signal emission hooks.

        * gtk/gtkobject.c (gtk_object_class_init): made GtkObject::destroy a
        GTK_RUN_NO_HOOKS signal.

        * gtk/gtksignal.h:
        * gtk/gtksignal.c: implemented emission hooks, new hooks can be added
        to a signal with gtk_signal_add_emission_hook or
        gtk_signal_add_emission_hook_full, and can be removed again with
        gtk_signal_remove_emission_hook.

        * gtk/gtkenums.h: remove GTK_RUN_MASK, since it doesn't represent
        an appropriate mask for signal runtypes for a long time now.
        added GTK_RUN_NO_HOOKS value, which is used to flag signals
        that do not allow the running of signal hooks.
This commit is contained in:
Tim Janik
1998-11-30 07:09:36 +00:00
committed by Tim Janik
parent 140c26afbc
commit 2c0fc39e62
13 changed files with 459 additions and 20 deletions

View File

@ -33,13 +33,17 @@ extern "C" {
#define GTK_SIGNAL_OFFSET(struct, field) (GTK_STRUCT_OFFSET (struct, field))
typedef void (*GtkSignalMarshal) (GtkObject *object,
typedef void (*GtkSignalMarshal) (GtkObject *object,
gpointer data,
guint nparams,
GtkArg *args,
GtkType *arg_types,
GtkType return_type);
typedef void (*GtkSignalDestroy) (gpointer data);
typedef void (*GtkSignalDestroy) (gpointer data);
typedef gboolean (*GtkEmissionHook) (GtkObject *object,
guint signal_id,
gpointer data);
typedef struct _GtkSignalQuery GtkSignalQuery;
@ -166,6 +170,16 @@ guint gtk_signal_handler_pending_by_func (GtkObject *object,
GtkSignalFunc func,
gpointer data);
void gtk_signal_handlers_destroy (GtkObject *object);
guint gtk_signal_add_emission_hook (guint signal_id,
GtkEmissionHook hook_func,
gpointer data);
guint gtk_signal_add_emission_hook_full (guint signal_id,
GtkEmissionHook hook_func,
gpointer data,
GDestroyNotify destroy);
void gtk_signal_remove_emission_hook (guint signal_id,
guint hook_id);
void gtk_signal_set_funcs (GtkSignalMarshal marshal_func,
GtkSignalDestroy destroy_func);