1997-11-24 22:37:52 +00:00
|
|
|
/* GTK - The GIMP Toolkit
|
|
|
|
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
|
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Library General Public
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
1998-03-09 15:16:28 +00:00
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
1997-11-24 22:37:52 +00:00
|
|
|
* Library General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Library General Public
|
1998-04-13 02:02:47 +00:00
|
|
|
* License along with this library; if not, write to the
|
|
|
|
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
|
|
* Boston, MA 02111-1307, USA.
|
1997-11-24 22:37:52 +00:00
|
|
|
*/
|
|
|
|
#ifndef __GTK_SIGNAL_H__
|
|
|
|
#define __GTK_SIGNAL_H__
|
|
|
|
|
|
|
|
|
|
|
|
#include <gdk/gdk.h>
|
|
|
|
#include <gtk/gtkenums.h>
|
|
|
|
#include <gtk/gtkobject.h>
|
1998-07-21 05:01:37 +00:00
|
|
|
#include <gtk/gtkmarshal.h>
|
1997-11-24 22:37:52 +00:00
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
1998-05-02 20:48:49 +00:00
|
|
|
#pragma }
|
1997-11-24 22:37:52 +00:00
|
|
|
#endif /* __cplusplus */
|
|
|
|
|
1998-03-09 15:16:28 +00:00
|
|
|
|
deleted most of the argument handling code, since that is now implemented
Fri Jul 10 00:02:04 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: deleted most of the argument handling code, since
that is now implemented in gtkarg.c. similar to gtk_object_args_collect,
we now export a new function gtk_container_child_args_collect().
for consistency with the object arguments, a few functions got renamed:
gtk_container_child_arg_get -> gtk_container_child_get,
gtk_container_child_arg_set -> gtk_container_child_set,
gtk_container_child_arg_getv -> gtk_container_child_getv,
gtk_container_child_arg_setv -> gtk_container_child_setv,
gtk_container_add_with_argv -> gtk_container_addv.
note, gtk_container_add_with_args() remained, because its equivalent
would be gtk_container_add(,, ...) which would break all existing code.
(gtk_container_add_child_arg_type): similar to gtk_object_add_arg_type,
we expect the `arg_name' argument to be a const static string now.
(gtk_container_get_child_arg_type): function removed.
Thu Jul 9 07:03:04 1998 Tim Janik <timj@gtk.org>
* gtk/gtkargcollector.c: new file which holds gtk_arg_collect_value().
this is a static inline function that collects command line arguments
from a va_list. this file can just be included in all places that
need this functionality.
* gtk/gtkarg.h:
* gtk/gtkarg.c: new files which implement most of the argument
handling stuff from gtkobject.c. also collected a few more
gtk_arg_* utility functions from else places.
* gtk/gtkobject.h:
* gtk/gtkobject.c: moved most of the argument handling code into
gtkarg.c. we now export gtk_object_args_collect() as a non-public
method with a blind va_list pointer.
(gtk_object_add_arg_type): the `arg_name' argument is required to be a
const static string now.
(gtk_object_get_arg_type): function got removed.
* gtk/gtkwidget.c:
(gtk_widget_set):
(gtk_widget_new): adaptions for gtk_object_args_collect().
* gtk/gtktypeutils.c (gtk_type_init_builtin_types): changed the internal
fundamental type name so as to have a valid prefix, e.g. "bool"->
"gboolean", "string"->"GtkString" and somesuch, left "void" as is,
though that should probably be something like GtkNone since the
type itself is called GTK_TYPE_NONE.
even the internal type names need to avoid name clashes and must live
in their own namespace, several code portions rely on that.
we should relly have typedefs such as typedef gchar* GtkString; so the
fundamental type names can be used for code dumpers just like with all
the Gtk/Gdk types.
1998-07-09 23:00:34 +00:00
|
|
|
#define GTK_SIGNAL_OFFSET(struct, field) (GTK_STRUCT_OFFSET (struct, field))
|
1998-01-29 20:44:14 +00:00
|
|
|
|
1998-03-09 15:16:28 +00:00
|
|
|
|
|
|
|
typedef void (*GtkSignalMarshal) (GtkObject *object,
|
|
|
|
gpointer data,
|
|
|
|
guint nparams,
|
|
|
|
GtkArg *args,
|
|
|
|
GtkType *arg_types,
|
|
|
|
GtkType return_type);
|
|
|
|
typedef void (*GtkSignalDestroy) (gpointer data);
|
1997-11-24 22:37:52 +00:00
|
|
|
|
1998-01-29 20:44:14 +00:00
|
|
|
typedef struct _GtkSignalQuery GtkSignalQuery;
|
|
|
|
|
|
|
|
struct _GtkSignalQuery
|
|
|
|
{
|
1998-03-09 15:16:28 +00:00
|
|
|
GtkType object_type;
|
|
|
|
guint signal_id;
|
1998-01-29 20:44:14 +00:00
|
|
|
const gchar *signal_name;
|
1998-05-06 01:43:56 +00:00
|
|
|
guint is_user_signal : 1;
|
1998-06-09 07:11:55 +00:00
|
|
|
GtkSignalRunType signal_flags;
|
1998-01-29 20:44:14 +00:00
|
|
|
GtkType return_val;
|
|
|
|
guint nparams;
|
|
|
|
const GtkType *params;
|
|
|
|
};
|
1997-11-24 22:37:52 +00:00
|
|
|
|
1998-05-06 01:43:56 +00:00
|
|
|
void gtk_signal_init (void);
|
1998-03-09 15:16:28 +00:00
|
|
|
guint gtk_signal_new (const gchar *name,
|
1998-06-09 07:11:55 +00:00
|
|
|
GtkSignalRunType signal_flags,
|
1998-03-09 15:16:28 +00:00
|
|
|
GtkType object_type,
|
|
|
|
guint function_offset,
|
|
|
|
GtkSignalMarshaller marshaller,
|
|
|
|
GtkType return_val,
|
|
|
|
guint nparams,
|
1997-11-24 22:37:52 +00:00
|
|
|
...);
|
1998-03-09 15:16:28 +00:00
|
|
|
guint gtk_signal_newv (const gchar *name,
|
1998-06-09 07:11:55 +00:00
|
|
|
GtkSignalRunType signal_flags,
|
1998-03-09 15:16:28 +00:00
|
|
|
GtkType object_type,
|
|
|
|
guint function_offset,
|
|
|
|
GtkSignalMarshaller marshaller,
|
|
|
|
GtkType return_val,
|
|
|
|
guint nparams,
|
1998-01-29 20:44:14 +00:00
|
|
|
GtkType *params);
|
1998-03-09 15:16:28 +00:00
|
|
|
guint gtk_signal_lookup (const gchar *name,
|
|
|
|
GtkType object_type);
|
|
|
|
gchar* gtk_signal_name (guint signal_id);
|
|
|
|
void gtk_signal_emit (GtkObject *object,
|
|
|
|
guint signal_id,
|
1997-11-24 22:37:52 +00:00
|
|
|
...);
|
1998-03-09 15:16:28 +00:00
|
|
|
void gtk_signal_emit_by_name (GtkObject *object,
|
|
|
|
const gchar *name,
|
1997-11-24 22:37:52 +00:00
|
|
|
...);
|
1998-05-09 01:17:03 +00:00
|
|
|
void gtk_signal_emitv (GtkObject *object,
|
|
|
|
guint signal_id,
|
|
|
|
GtkArg *params);
|
|
|
|
void gtk_signal_emitv_by_name (GtkObject *object,
|
|
|
|
const gchar *name,
|
|
|
|
GtkArg *params);
|
1998-05-03 19:13:24 +00:00
|
|
|
guint gtk_signal_n_emissions (GtkObject *object,
|
|
|
|
guint signal_id);
|
|
|
|
guint gtk_signal_n_emissions_by_name (GtkObject *object,
|
|
|
|
const gchar *name);
|
1998-03-09 15:16:28 +00:00
|
|
|
void gtk_signal_emit_stop (GtkObject *object,
|
|
|
|
guint signal_id);
|
|
|
|
void gtk_signal_emit_stop_by_name (GtkObject *object,
|
|
|
|
const gchar *name);
|
|
|
|
guint gtk_signal_connect (GtkObject *object,
|
|
|
|
const gchar *name,
|
|
|
|
GtkSignalFunc func,
|
|
|
|
gpointer func_data);
|
|
|
|
guint gtk_signal_connect_after (GtkObject *object,
|
|
|
|
const gchar *name,
|
|
|
|
GtkSignalFunc func,
|
|
|
|
gpointer func_data);
|
|
|
|
guint gtk_signal_connect_object (GtkObject *object,
|
|
|
|
const gchar *name,
|
|
|
|
GtkSignalFunc func,
|
|
|
|
GtkObject *slot_object);
|
|
|
|
guint gtk_signal_connect_object_after (GtkObject *object,
|
|
|
|
const gchar *name,
|
|
|
|
GtkSignalFunc func,
|
|
|
|
GtkObject *slot_object);
|
|
|
|
guint gtk_signal_connect_full (GtkObject *object,
|
|
|
|
const gchar *name,
|
|
|
|
GtkSignalFunc func,
|
|
|
|
GtkCallbackMarshal marshal,
|
|
|
|
gpointer data,
|
|
|
|
GtkDestroyNotify destroy_func,
|
|
|
|
gint object_signal,
|
|
|
|
gint after);
|
|
|
|
guint gtk_signal_connect_interp (GtkObject *object,
|
|
|
|
const gchar *name,
|
|
|
|
GtkCallbackMarshal func,
|
|
|
|
gpointer data,
|
|
|
|
GtkDestroyNotify destroy_func,
|
|
|
|
gint after);
|
|
|
|
|
|
|
|
void gtk_signal_connect_object_while_alive (GtkObject *object,
|
GTK_RESIZE_NEEDED is a private flag now.
Mon Feb 2 04:15:08 1998 Tim Janik <timj@gimp.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: GTK_RESIZE_NEEDED is a private flag now.
(gtk_container_register_toplevel): new function.
(gtk_container_unregister_toplevel): new function.
* gtk/gtkmain.c: GTK_LEAVE_PENDING is a private flag now.
* gtk/gtkmenu.c: call gtk_container_register_toplevel in
gtk_menu_class_init instead of this dirty gtk_widget_set_parent(,NULL)
hack. new default handler gtk_menu_destroy for calling
gtk_container_unregister_toplevel. removed GTK_ANCHORED, GTK_UNMAPPED.
* gtk/gtkobject.h: macro cleanups, added GTK_DESTROYED flag.
* gtk/gtkobject.c: only emit DESTROY signal if !GTK_OBJECT_DESTROYED
(object).
* gtk/gtkprivate.h: new file that will not be automatically included.
it holds the private flags for GtkWidget along with it's SET/UNSET
and examination macros.
* gtk/gtkwidget.c: private flags: GTK_RESIZE_NEEDED, GTK_REDRAW_PENDING,
GTK_RESIZE_PENDING, GTK_IN_REPARENT, GTK_USER_STYLE. GTK_ANCHORED is
replaced by GTK_TOPLEVEL. added missing UNSET for GTK_IN_REPARENT.
removed the gtk_widget_set_parent(, NULL) hack for toplevels.
upon destroy free memory for widgets with GTK_WIDGET_HAS_SHAPE_MASK.
* gtk/gtkwidget.h: split up the widget flags into a public and a private
portion. added an extra field private_flags to GtkWidget without making
it bigger by using an alignment gap of 16 bit. macro cleanups.
* gtk/gtkwindow.c: removed GTK_ANCHORED. new function gtk_window_destroy
for calling gtk_container_unregister_toplevel. removed the
gtk_widget_set_parent(,NULL), call gtk_container_register_toplevel
instead. remove GTK_UNMAPPED. GTK_RESIZE_NEEDED is private now.
* gtk/gtksignal.c (gtk_signal_disconnect): removed a bug on
removal that cut off the handler list -> living_objects == 0
with testgtk. made some warnings more descriptive.
new function gtk_signal_connect_object_while_alive, which
will automatically destroy the connection once one of the objects
is destroyed. didn't include this before removal of the above
mentioned bug.
* reflected refcounting revolution in ChangeLog
1998-02-02 04:54:25 +00:00
|
|
|
const gchar *signal,
|
1998-03-09 15:16:28 +00:00
|
|
|
GtkSignalFunc func,
|
|
|
|
GtkObject *alive_object);
|
|
|
|
void gtk_signal_connect_while_alive (GtkObject *object,
|
1998-02-03 21:36:06 +00:00
|
|
|
const gchar *signal,
|
1998-03-09 15:16:28 +00:00
|
|
|
GtkSignalFunc func,
|
|
|
|
gpointer func_data,
|
|
|
|
GtkObject *alive_object);
|
|
|
|
|
|
|
|
void gtk_signal_disconnect (GtkObject *object,
|
|
|
|
guint handler_id);
|
1998-05-02 20:48:49 +00:00
|
|
|
void gtk_signal_disconnect_by_func (GtkObject *object,
|
|
|
|
GtkSignalFunc func,
|
|
|
|
gpointer data);
|
1998-03-09 15:16:28 +00:00
|
|
|
void gtk_signal_disconnect_by_data (GtkObject *object,
|
|
|
|
gpointer data);
|
|
|
|
void gtk_signal_handler_block (GtkObject *object,
|
|
|
|
guint handler_id);
|
1998-05-02 20:48:49 +00:00
|
|
|
void gtk_signal_handler_block_by_func (GtkObject *object,
|
|
|
|
GtkSignalFunc func,
|
|
|
|
gpointer data);
|
1998-03-09 15:16:28 +00:00
|
|
|
void gtk_signal_handler_block_by_data (GtkObject *object,
|
|
|
|
gpointer data);
|
|
|
|
void gtk_signal_handler_unblock (GtkObject *object,
|
|
|
|
guint handler_id);
|
1998-05-02 20:48:49 +00:00
|
|
|
void gtk_signal_handler_unblock_by_func (GtkObject *object,
|
|
|
|
GtkSignalFunc func,
|
|
|
|
gpointer data);
|
1998-03-09 15:16:28 +00:00
|
|
|
void gtk_signal_handler_unblock_by_data (GtkObject *object,
|
|
|
|
gpointer data);
|
1998-02-10 23:49:15 +00:00
|
|
|
guint gtk_signal_handler_pending (GtkObject *object,
|
1998-03-09 15:16:28 +00:00
|
|
|
guint signal_id,
|
1998-02-10 23:49:15 +00:00
|
|
|
gboolean may_be_blocked);
|
1998-06-18 03:22:09 +00:00
|
|
|
guint gtk_signal_handler_pending_by_func (GtkObject *object,
|
|
|
|
guint signal_id,
|
|
|
|
gboolean may_be_blocked,
|
|
|
|
GtkSignalFunc func,
|
|
|
|
gpointer data);
|
1998-03-09 15:16:28 +00:00
|
|
|
void gtk_signal_handlers_destroy (GtkObject *object);
|
|
|
|
void gtk_signal_set_funcs (GtkSignalMarshal marshal_func,
|
|
|
|
GtkSignalDestroy destroy_func);
|
1997-11-24 22:37:52 +00:00
|
|
|
|
1998-06-19 01:26:24 +00:00
|
|
|
/* Report internal information about a signal. The caller has the
|
|
|
|
* responsibility to invoke a supsequent g_free (returned_data); but
|
|
|
|
* must not modify data pointed to by the members of GtkSignalQuery
|
1998-01-29 20:44:14 +00:00
|
|
|
*/
|
1998-03-09 15:16:28 +00:00
|
|
|
GtkSignalQuery* gtk_signal_query (guint signal_id);
|
1998-01-29 20:44:14 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif /* __cplusplus */
|
|
|
|
|
|
|
|
|
|
|
|
#endif /* __GTK_SIGNAL_H__ */
|