]> Pileus Git - ~andy/gtk/commitdiff
gtk/gtksignal.[ch] gtk/gtkmain.[ch] gtk/gtkcontainer.[ch]
authorOwen Taylor <owt1@cornell.edu>
Fri, 13 Feb 1998 05:19:06 +0000 (05:19 +0000)
committerOwen Taylor <otaylor@src.gnome.org>
Fri, 13 Feb 1998 05:19:06 +0000 (05:19 +0000)
Thu Feb 12 23:59:49 1998  Owen Taylor  <owt1@cornell.edu>

* gtk/gtksignal.[ch] gtk/gtkmain.[ch] gtk/gtkcontainer.[ch]
  gtk/gtkselection.[ch] gdk/gdk.[ch] gtktypeutils.h

    Replaced all _interp functions with _full functions.
  (_interp functions left in for compatibility until 0.99.5).
  Difference: _full functions take _both_ a C-language callback and a
  marshaller, and simply ignore the C-language callback
  if the marshaller is present. This allows the destroy notification
  to be used without marshalling.

  gtk_selection_add_handler[_full]() regularized to agree
  with other callbacks.

  Also, added gtk_input_add_full() to the header file.
  (gtk_input_add_interp() was never there)

* gtk/gtkmain.[ch] gtk/gtkwidget.c: Idle functions are now prioritized.
  Added new function gtk_idle_add_priority to create
  an idle with a specified priority (default is zero)
  constants #defined - GTK_PRIORITY_[HIGH/INTERNAL/DEFAULT/LOW]
  (redraws, resizes run at GTK_PRIORITY_INTERNAL)

* gtk/gtkentry.c gtk/testselection.c: changes to keep up with change
     to gtkselection.c.

21 files changed:
ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gdk/gdk.c
gdk/gdk.h
gdk/x11/gdkmain-x11.c
gtk/gtkcontainer.c
gtk/gtkcontainer.h
gtk/gtkmain.c
gtk/gtkmain.h
gtk/gtkselection.c
gtk/gtkselection.h
gtk/gtksignal.c
gtk/gtksignal.h
gtk/gtktypeutils.h
gtk/testselection.c
tests/testselection.c

index e0f39904ce898b448490266ec08f7582a75c792d..ac809e732a9625079fa85df484b65b24808ce6df 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,46 @@
+Thu Feb 12 23:59:49 1998  Owen Taylor  <owt1@cornell.edu>
+
+       * gtk/gtksignal.[ch] gtk/gtkmain.[ch] gtk/gtkcontainer.[ch]
+         gtk/gtkselection.[ch] gdk/gdk.[ch] gtktypeutils.h 
+         
+         Replaced all _interp functions with _full functions.
+         (_interp functions left in for compatibility until 0.99.5). 
+         Difference: _full functions take _both_ a C-language callback and a
+         marshaller, and simply ignore the C-language callback
+         if the marshaller is present. This allows the destroy notification
+         to be used without marshalling.
+
+         gtk_selection_add_handler[_full]() regularized to agree
+         with other callbacks.
+       
+         Also, added gtk_input_add_full() to the header file. 
+         (gtk_input_add_interp() was never there)
+
+       * gtk/gtkmain.[ch] gtk/gtkwidget.c: Idle functions are now prioritized.
+         Added new function gtk_idle_add_priority to create
+         an idle with a specified priority (default is zero)
+         constants #defined - GTK_PRIORITY_[HIGH/INTERNAL/DEFAULT/LOW]
+         (redraws, resizes run at GTK_PRIORITY_INTERNAL)
+       
+       * gtk/gtkentry.c gtk/testselection.c: changes to keep up with change
+         to gtkselection.c. 
+
+       * gtk/gtkentry.c gtk/gtkinputdialog.c gtk/gtklist.c
+         gtk/gtklistitem.c gtktree.c gtk/gtktreeitem.c testgtkrc:
+
+         Change style->white to style->base[] where appropriate.
+         Change the default style to make this apparent. (Yes, its
+         ugly... it can be removed later)
+       
+Tue Feb 10 15:01:44 1998  Owen Taylor  <owt1@cornell.edu>
+
+       * gtk/gtkobject.c gtk/gtkobject.h: Add a DestroyNotify
+       field, and gtk_object_set_data_full() to match.
+
+       * gtk/gtkobject.c (gtk_object_finalize): ObjectData structures
+       were being added to a free list, then forgotten about. Just
+       rely on GMemChunk instead.
+
 2018-02-11  Federico Mena Quintero  <federico@nuclecu.unam.mx>
 
        * gtk/gtkclist.c:
index e0f39904ce898b448490266ec08f7582a75c792d..ac809e732a9625079fa85df484b65b24808ce6df 100644 (file)
@@ -1,3 +1,46 @@
+Thu Feb 12 23:59:49 1998  Owen Taylor  <owt1@cornell.edu>
+
+       * gtk/gtksignal.[ch] gtk/gtkmain.[ch] gtk/gtkcontainer.[ch]
+         gtk/gtkselection.[ch] gdk/gdk.[ch] gtktypeutils.h 
+         
+         Replaced all _interp functions with _full functions.
+         (_interp functions left in for compatibility until 0.99.5). 
+         Difference: _full functions take _both_ a C-language callback and a
+         marshaller, and simply ignore the C-language callback
+         if the marshaller is present. This allows the destroy notification
+         to be used without marshalling.
+
+         gtk_selection_add_handler[_full]() regularized to agree
+         with other callbacks.
+       
+         Also, added gtk_input_add_full() to the header file. 
+         (gtk_input_add_interp() was never there)
+
+       * gtk/gtkmain.[ch] gtk/gtkwidget.c: Idle functions are now prioritized.
+         Added new function gtk_idle_add_priority to create
+         an idle with a specified priority (default is zero)
+         constants #defined - GTK_PRIORITY_[HIGH/INTERNAL/DEFAULT/LOW]
+         (redraws, resizes run at GTK_PRIORITY_INTERNAL)
+       
+       * gtk/gtkentry.c gtk/testselection.c: changes to keep up with change
+         to gtkselection.c. 
+
+       * gtk/gtkentry.c gtk/gtkinputdialog.c gtk/gtklist.c
+         gtk/gtklistitem.c gtktree.c gtk/gtktreeitem.c testgtkrc:
+
+         Change style->white to style->base[] where appropriate.
+         Change the default style to make this apparent. (Yes, its
+         ugly... it can be removed later)
+       
+Tue Feb 10 15:01:44 1998  Owen Taylor  <owt1@cornell.edu>
+
+       * gtk/gtkobject.c gtk/gtkobject.h: Add a DestroyNotify
+       field, and gtk_object_set_data_full() to match.
+
+       * gtk/gtkobject.c (gtk_object_finalize): ObjectData structures
+       were being added to a free list, then forgotten about. Just
+       rely on GMemChunk instead.
+
 2018-02-11  Federico Mena Quintero  <federico@nuclecu.unam.mx>
 
        * gtk/gtkclist.c:
index e0f39904ce898b448490266ec08f7582a75c792d..ac809e732a9625079fa85df484b65b24808ce6df 100644 (file)
@@ -1,3 +1,46 @@
+Thu Feb 12 23:59:49 1998  Owen Taylor  <owt1@cornell.edu>
+
+       * gtk/gtksignal.[ch] gtk/gtkmain.[ch] gtk/gtkcontainer.[ch]
+         gtk/gtkselection.[ch] gdk/gdk.[ch] gtktypeutils.h 
+         
+         Replaced all _interp functions with _full functions.
+         (_interp functions left in for compatibility until 0.99.5). 
+         Difference: _full functions take _both_ a C-language callback and a
+         marshaller, and simply ignore the C-language callback
+         if the marshaller is present. This allows the destroy notification
+         to be used without marshalling.
+
+         gtk_selection_add_handler[_full]() regularized to agree
+         with other callbacks.
+       
+         Also, added gtk_input_add_full() to the header file. 
+         (gtk_input_add_interp() was never there)
+
+       * gtk/gtkmain.[ch] gtk/gtkwidget.c: Idle functions are now prioritized.
+         Added new function gtk_idle_add_priority to create
+         an idle with a specified priority (default is zero)
+         constants #defined - GTK_PRIORITY_[HIGH/INTERNAL/DEFAULT/LOW]
+         (redraws, resizes run at GTK_PRIORITY_INTERNAL)
+       
+       * gtk/gtkentry.c gtk/testselection.c: changes to keep up with change
+         to gtkselection.c. 
+
+       * gtk/gtkentry.c gtk/gtkinputdialog.c gtk/gtklist.c
+         gtk/gtklistitem.c gtktree.c gtk/gtktreeitem.c testgtkrc:
+
+         Change style->white to style->base[] where appropriate.
+         Change the default style to make this apparent. (Yes, its
+         ugly... it can be removed later)
+       
+Tue Feb 10 15:01:44 1998  Owen Taylor  <owt1@cornell.edu>
+
+       * gtk/gtkobject.c gtk/gtkobject.h: Add a DestroyNotify
+       field, and gtk_object_set_data_full() to match.
+
+       * gtk/gtkobject.c (gtk_object_finalize): ObjectData structures
+       were being added to a free list, then forgotten about. Just
+       rely on GMemChunk instead.
+
 2018-02-11  Federico Mena Quintero  <federico@nuclecu.unam.mx>
 
        * gtk/gtkclist.c:
index e0f39904ce898b448490266ec08f7582a75c792d..ac809e732a9625079fa85df484b65b24808ce6df 100644 (file)
@@ -1,3 +1,46 @@
+Thu Feb 12 23:59:49 1998  Owen Taylor  <owt1@cornell.edu>
+
+       * gtk/gtksignal.[ch] gtk/gtkmain.[ch] gtk/gtkcontainer.[ch]
+         gtk/gtkselection.[ch] gdk/gdk.[ch] gtktypeutils.h 
+         
+         Replaced all _interp functions with _full functions.
+         (_interp functions left in for compatibility until 0.99.5). 
+         Difference: _full functions take _both_ a C-language callback and a
+         marshaller, and simply ignore the C-language callback
+         if the marshaller is present. This allows the destroy notification
+         to be used without marshalling.
+
+         gtk_selection_add_handler[_full]() regularized to agree
+         with other callbacks.
+       
+         Also, added gtk_input_add_full() to the header file. 
+         (gtk_input_add_interp() was never there)
+
+       * gtk/gtkmain.[ch] gtk/gtkwidget.c: Idle functions are now prioritized.
+         Added new function gtk_idle_add_priority to create
+         an idle with a specified priority (default is zero)
+         constants #defined - GTK_PRIORITY_[HIGH/INTERNAL/DEFAULT/LOW]
+         (redraws, resizes run at GTK_PRIORITY_INTERNAL)
+       
+       * gtk/gtkentry.c gtk/testselection.c: changes to keep up with change
+         to gtkselection.c. 
+
+       * gtk/gtkentry.c gtk/gtkinputdialog.c gtk/gtklist.c
+         gtk/gtklistitem.c gtktree.c gtk/gtktreeitem.c testgtkrc:
+
+         Change style->white to style->base[] where appropriate.
+         Change the default style to make this apparent. (Yes, its
+         ugly... it can be removed later)
+       
+Tue Feb 10 15:01:44 1998  Owen Taylor  <owt1@cornell.edu>
+
+       * gtk/gtkobject.c gtk/gtkobject.h: Add a DestroyNotify
+       field, and gtk_object_set_data_full() to match.
+
+       * gtk/gtkobject.c (gtk_object_finalize): ObjectData structures
+       were being added to a free list, then forgotten about. Just
+       rely on GMemChunk instead.
+
 2018-02-11  Federico Mena Quintero  <federico@nuclecu.unam.mx>
 
        * gtk/gtkclist.c:
index e0f39904ce898b448490266ec08f7582a75c792d..ac809e732a9625079fa85df484b65b24808ce6df 100644 (file)
@@ -1,3 +1,46 @@
+Thu Feb 12 23:59:49 1998  Owen Taylor  <owt1@cornell.edu>
+
+       * gtk/gtksignal.[ch] gtk/gtkmain.[ch] gtk/gtkcontainer.[ch]
+         gtk/gtkselection.[ch] gdk/gdk.[ch] gtktypeutils.h 
+         
+         Replaced all _interp functions with _full functions.
+         (_interp functions left in for compatibility until 0.99.5). 
+         Difference: _full functions take _both_ a C-language callback and a
+         marshaller, and simply ignore the C-language callback
+         if the marshaller is present. This allows the destroy notification
+         to be used without marshalling.
+
+         gtk_selection_add_handler[_full]() regularized to agree
+         with other callbacks.
+       
+         Also, added gtk_input_add_full() to the header file. 
+         (gtk_input_add_interp() was never there)
+
+       * gtk/gtkmain.[ch] gtk/gtkwidget.c: Idle functions are now prioritized.
+         Added new function gtk_idle_add_priority to create
+         an idle with a specified priority (default is zero)
+         constants #defined - GTK_PRIORITY_[HIGH/INTERNAL/DEFAULT/LOW]
+         (redraws, resizes run at GTK_PRIORITY_INTERNAL)
+       
+       * gtk/gtkentry.c gtk/testselection.c: changes to keep up with change
+         to gtkselection.c. 
+
+       * gtk/gtkentry.c gtk/gtkinputdialog.c gtk/gtklist.c
+         gtk/gtklistitem.c gtktree.c gtk/gtktreeitem.c testgtkrc:
+
+         Change style->white to style->base[] where appropriate.
+         Change the default style to make this apparent. (Yes, its
+         ugly... it can be removed later)
+       
+Tue Feb 10 15:01:44 1998  Owen Taylor  <owt1@cornell.edu>
+
+       * gtk/gtkobject.c gtk/gtkobject.h: Add a DestroyNotify
+       field, and gtk_object_set_data_full() to match.
+
+       * gtk/gtkobject.c (gtk_object_finalize): ObjectData structures
+       were being added to a free list, then forgotten about. Just
+       rely on GMemChunk instead.
+
 2018-02-11  Federico Mena Quintero  <federico@nuclecu.unam.mx>
 
        * gtk/gtkclist.c:
index e0f39904ce898b448490266ec08f7582a75c792d..ac809e732a9625079fa85df484b65b24808ce6df 100644 (file)
@@ -1,3 +1,46 @@
+Thu Feb 12 23:59:49 1998  Owen Taylor  <owt1@cornell.edu>
+
+       * gtk/gtksignal.[ch] gtk/gtkmain.[ch] gtk/gtkcontainer.[ch]
+         gtk/gtkselection.[ch] gdk/gdk.[ch] gtktypeutils.h 
+         
+         Replaced all _interp functions with _full functions.
+         (_interp functions left in for compatibility until 0.99.5). 
+         Difference: _full functions take _both_ a C-language callback and a
+         marshaller, and simply ignore the C-language callback
+         if the marshaller is present. This allows the destroy notification
+         to be used without marshalling.
+
+         gtk_selection_add_handler[_full]() regularized to agree
+         with other callbacks.
+       
+         Also, added gtk_input_add_full() to the header file. 
+         (gtk_input_add_interp() was never there)
+
+       * gtk/gtkmain.[ch] gtk/gtkwidget.c: Idle functions are now prioritized.
+         Added new function gtk_idle_add_priority to create
+         an idle with a specified priority (default is zero)
+         constants #defined - GTK_PRIORITY_[HIGH/INTERNAL/DEFAULT/LOW]
+         (redraws, resizes run at GTK_PRIORITY_INTERNAL)
+       
+       * gtk/gtkentry.c gtk/testselection.c: changes to keep up with change
+         to gtkselection.c. 
+
+       * gtk/gtkentry.c gtk/gtkinputdialog.c gtk/gtklist.c
+         gtk/gtklistitem.c gtktree.c gtk/gtktreeitem.c testgtkrc:
+
+         Change style->white to style->base[] where appropriate.
+         Change the default style to make this apparent. (Yes, its
+         ugly... it can be removed later)
+       
+Tue Feb 10 15:01:44 1998  Owen Taylor  <owt1@cornell.edu>
+
+       * gtk/gtkobject.c gtk/gtkobject.h: Add a DestroyNotify
+       field, and gtk_object_set_data_full() to match.
+
+       * gtk/gtkobject.c (gtk_object_finalize): ObjectData structures
+       were being added to a free list, then forgotten about. Just
+       rely on GMemChunk instead.
+
 2018-02-11  Federico Mena Quintero  <federico@nuclecu.unam.mx>
 
        * gtk/gtkclist.c:
index e0f39904ce898b448490266ec08f7582a75c792d..ac809e732a9625079fa85df484b65b24808ce6df 100644 (file)
@@ -1,3 +1,46 @@
+Thu Feb 12 23:59:49 1998  Owen Taylor  <owt1@cornell.edu>
+
+       * gtk/gtksignal.[ch] gtk/gtkmain.[ch] gtk/gtkcontainer.[ch]
+         gtk/gtkselection.[ch] gdk/gdk.[ch] gtktypeutils.h 
+         
+         Replaced all _interp functions with _full functions.
+         (_interp functions left in for compatibility until 0.99.5). 
+         Difference: _full functions take _both_ a C-language callback and a
+         marshaller, and simply ignore the C-language callback
+         if the marshaller is present. This allows the destroy notification
+         to be used without marshalling.
+
+         gtk_selection_add_handler[_full]() regularized to agree
+         with other callbacks.
+       
+         Also, added gtk_input_add_full() to the header file. 
+         (gtk_input_add_interp() was never there)
+
+       * gtk/gtkmain.[ch] gtk/gtkwidget.c: Idle functions are now prioritized.
+         Added new function gtk_idle_add_priority to create
+         an idle with a specified priority (default is zero)
+         constants #defined - GTK_PRIORITY_[HIGH/INTERNAL/DEFAULT/LOW]
+         (redraws, resizes run at GTK_PRIORITY_INTERNAL)
+       
+       * gtk/gtkentry.c gtk/testselection.c: changes to keep up with change
+         to gtkselection.c. 
+
+       * gtk/gtkentry.c gtk/gtkinputdialog.c gtk/gtklist.c
+         gtk/gtklistitem.c gtktree.c gtk/gtktreeitem.c testgtkrc:
+
+         Change style->white to style->base[] where appropriate.
+         Change the default style to make this apparent. (Yes, its
+         ugly... it can be removed later)
+       
+Tue Feb 10 15:01:44 1998  Owen Taylor  <owt1@cornell.edu>
+
+       * gtk/gtkobject.c gtk/gtkobject.h: Add a DestroyNotify
+       field, and gtk_object_set_data_full() to match.
+
+       * gtk/gtkobject.c (gtk_object_finalize): ObjectData structures
+       were being added to a free list, then forgotten about. Just
+       rely on GMemChunk instead.
+
 2018-02-11  Federico Mena Quintero  <federico@nuclecu.unam.mx>
 
        * gtk/gtkclist.c:
index 668f7a38b4965a4bbab46d8deecd6e5da5f14839..1c1f77ed9f8bd19a96dd5e9f0d95502fef10c5a7 100644 (file)
--- a/gdk/gdk.c
+++ b/gdk/gdk.c
@@ -1101,11 +1101,11 @@ gdk_timer_disable ()
 }
 
 gint
-gdk_input_add_interp (gint              source,
-                     GdkInputCondition condition,
-                     GdkInputFunction  function,
-                     gpointer          data,
-                     GdkDestroyNotify  destroy)
+gdk_input_add_full (gint              source,
+                   GdkInputCondition condition,
+                   GdkInputFunction  function,
+                   gpointer          data,
+                   GdkDestroyNotify  destroy)
 {
   static gint next_tag = 1;
   GList *list;
index 02ac3cba4c483751085eb27d20abf32ee4e122db..b8b906fe165211f35b22dd45b4e0bf6cf7d0dbb9 100644 (file)
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -57,11 +57,12 @@ void    gdk_timer_set     (guint32 milliseconds);
 void    gdk_timer_enable  (void);
 void    gdk_timer_disable (void);
 
-gint gdk_input_add_interp (gint              source,
+gint gdk_input_add_full   (gint              source,
                           GdkInputCondition condition,
                           GdkInputFunction  function,
                           gpointer          data,
                           GdkDestroyNotify  destroy);
+#define gdk_input_add_interp gdk_input_add_full  
 gint gdk_input_add        (gint              source,
                           GdkInputCondition condition,
                           GdkInputFunction  function,
index 668f7a38b4965a4bbab46d8deecd6e5da5f14839..1c1f77ed9f8bd19a96dd5e9f0d95502fef10c5a7 100644 (file)
@@ -1101,11 +1101,11 @@ gdk_timer_disable ()
 }
 
 gint
-gdk_input_add_interp (gint              source,
-                     GdkInputCondition condition,
-                     GdkInputFunction  function,
-                     gpointer          data,
-                     GdkDestroyNotify  destroy)
+gdk_input_add_full (gint              source,
+                   GdkInputCondition condition,
+                   GdkInputFunction  function,
+                   gpointer          data,
+                   GdkDestroyNotify  destroy)
 {
   static gint next_tag = 1;
   GList *list;
index a63bd764b5ed2b21cc7151faf1abe5648339102d..aab16dd5e182eeb6625924159a66b9a3c1118b5b 100644 (file)
@@ -428,17 +428,33 @@ gtk_container_foreach_unmarshal (GtkWidget *child,
 
 void
 gtk_container_foreach_interp (GtkContainer       *container,
-                             GtkCallbackMarshal  callback,
+                             GtkCallbackMarshal  marshal,
                              gpointer            callback_data,
                              GtkDestroyNotify    notify)
 {
-  GtkForeachData fdata;
-  
-  fdata.container     = GTK_OBJECT (container);
-  fdata.callback      = callback;
-  fdata.callback_data = callback_data;
+  gtk_container_foreach_full (container, NULL, marshal, 
+                             callback_data, notify);
+}
+
+void
+gtk_container_foreach_full (GtkContainer       *container,
+                           GtkCallback         callback,
+                           GtkCallbackMarshal  marshal,
+                           gpointer            callback_data,
+                           GtkDestroyNotify    notify)
+{
+  if (marshal)
+    {
+      GtkForeachData fdata;
   
-  gtk_container_foreach (container, gtk_container_foreach_unmarshal, &fdata);
+      fdata.container     = GTK_OBJECT (container);
+      fdata.callback      = marshal;
+      fdata.callback_data = callback_data;
+
+      gtk_container_foreach (container, gtk_container_foreach_unmarshal, &fdata);
+    }
+  else
+    gtk_container_foreach (container, callback, &callback_data);
   
   notify (callback_data);
 }
index 6904bc57866a0b795e02f135ffe239fba7fc317f..146ab27f6a8fcfe8c0cfb42af53bb5ead32e6fdb 100644 (file)
@@ -89,7 +89,12 @@ void   gtk_container_foreach             (GtkContainer     *container,
                                          GtkCallback       callback,
                                          gpointer          callback_data);
 void   gtk_container_foreach_interp      (GtkContainer     *container,
-                                         GtkCallbackMarshal callback,
+                                         GtkCallbackMarshal marshal,
+                                         gpointer          callback_data,
+                                         GtkDestroyNotify  notify);
+void   gtk_container_foreach_full        (GtkContainer     *container,
+                                         GtkCallback       callback,
+                                         GtkCallbackMarshal marshal,
                                          gpointer          callback_data,
                                          GtkDestroyNotify  notify);
 gint   gtk_container_focus               (GtkContainer     *container,
index e4421724548849339f875e837d50698dcef48175..e373a2e1ab5171d4de657e5c2cc2896052cf58f4 100644 (file)
@@ -54,8 +54,8 @@ struct _GtkTimeoutFunction
   guint32 start;
   guint32 interval;
   guint32 originterval;
-  gint interp;
   GtkFunction function;
+  GtkCallbackMarshal marshal;
   gpointer data;
   GtkDestroyNotify destroy;
 };
@@ -63,7 +63,8 @@ struct _GtkTimeoutFunction
 struct _GtkIdleFunction
 {
   gint tag;
-  gint interp;
+  gint priority;
+  GtkCallbackMarshal marshal;
   GtkFunction function;
   gpointer data;
   GtkDestroyNotify destroy;
@@ -593,16 +594,18 @@ gtk_invoke_key_snoopers (GtkWidget *grab_widget,
   return return_val;
 }
 
-static gint
-gtk_timeout_add_internal (guint32     interval,
-                         gint        interp,
-                         GtkFunction function,
-                         gpointer    data,
-                         GtkDestroyNotify destroy)
+gint
+gtk_timeout_add_full (guint32            interval,
+                     GtkFunction        function,
+                     GtkCallbackMarshal marshal,
+                     gpointer           data,
+                     GtkDestroyNotify   destroy)
 {
   static gint timeout_tag = 1;
   GtkTimeoutFunction *timeoutf;
   
+  g_return_val_if_fail ((function != NULL) || (marshal != NULL), 0);
+
   /* Create a new timeout function structure.
    * The start time is the current time.
    */
@@ -616,8 +619,8 @@ gtk_timeout_add_internal (guint32     interval,
   timeoutf->start = gdk_time_get ();
   timeoutf->interval = interval;
   timeoutf->originterval = interval;
-  timeoutf->interp = interp;
   timeoutf->function = function;
+  timeoutf->marshal = marshal;
   timeoutf->data = data;
   timeoutf->destroy = destroy;
   
@@ -639,7 +642,7 @@ gtk_timeout_add (guint32     interval,
                 GtkFunction function,
                 gpointer    data)
 {
-  return gtk_timeout_add_internal (interval, FALSE, function, data, NULL);
+  return gtk_timeout_add_full (interval, function, FALSE, data, NULL);
 }
 
 gint
@@ -648,9 +651,7 @@ gtk_timeout_add_interp (guint32                interval,
                        gpointer           data,
                        GtkDestroyNotify   destroy)
 {
-  return gtk_timeout_add_internal (interval, TRUE,
-                                  (GtkFunction) function,
-                                  data, destroy);
+  return gtk_timeout_add_full (interval, NULL, function, data, destroy);
 }
 
 void
@@ -698,15 +699,19 @@ gtk_timeout_remove (gint tag)
     }
 }
 
-static gint
-gtk_idle_add_internal (gint            interp,
-                      GtkFunction      function,
-                      gpointer         data,
-                      GtkDestroyNotify destroy)
+gint
+gtk_idle_add_full (gint                        priority,
+                  GtkFunction          function,
+                  GtkCallbackMarshal   marshal,
+                  gpointer             data,
+                  GtkDestroyNotify     destroy)
 {
   static gint idle_tag = 1;
-  GtkIdleFunction *idlef;
+  GtkIdleFunction *idlef, *temp;
+  GList *tmp_list, *new_list;
   
+  g_return_val_if_fail ((function != NULL) || (marshal != NULL), 0);
+
   if (!idle_mem_chunk)
     idle_mem_chunk = g_mem_chunk_new ("idle mem chunk", sizeof (GtkIdleFunction),
                                      1024, G_ALLOC_AND_FREE);
@@ -714,16 +719,52 @@ gtk_idle_add_internal (gint               interp,
   idlef = g_chunk_new (GtkIdleFunction, idle_mem_chunk);
   
   idlef->tag = idle_tag++;
-  idlef->interp = interp;
+  idlef->priority = priority;
   idlef->function = function;
+  idlef->marshal = marshal;
   idlef->data = data;
   idlef->destroy = destroy;
+
+  /* Insert the idle function into the list of idle functions 
+   * sorted by priority. This really should just use
+   * glist_insert_sorted, but that ignores duplicates
+   */
+  tmp_list = idle_functions;
+  while (tmp_list)
+    {
+      temp = tmp_list->data;
+      if (idlef->priority < temp->priority)
+       {
+         new_list = g_list_alloc ();
+         new_list->data = idlef;
+         new_list->next = tmp_list;
+         new_list->prev = tmp_list->prev;
+         if (tmp_list->prev)
+           tmp_list->prev->next = new_list;
+         tmp_list->prev = new_list;
+         
+         if (tmp_list == idle_functions)
+           idle_functions = new_list;
+         
+         return idlef->tag;
+       }
+      
+      tmp_list = tmp_list->next;
+    }
   
   idle_functions = g_list_append (idle_functions, idlef);
   
   return idlef->tag;
 }
 
+gint
+gtk_idle_add_interp  (GtkCallbackMarshal   marshal,
+                     gpointer             data,
+                     GtkDestroyNotify     destroy)
+{
+  return gtk_idle_add_full (GTK_PRIORITY_DEFAULT, NULL, marshal, data, destroy);
+}
+
 static void
 gtk_idle_destroy (GtkIdleFunction *idlef)
 {
@@ -736,15 +777,15 @@ gint
 gtk_idle_add (GtkFunction function,
              gpointer    data)
 {
-  return gtk_idle_add_internal (FALSE, function, data, NULL);
+  return gtk_idle_add_full (GTK_PRIORITY_DEFAULT, function, NULL, data, NULL);
 }
 
-gint
-gtk_idle_add_interp (GtkCallbackMarshal function,
-                    gpointer           data,
-                    GtkDestroyNotify   destroy)
+gint       
+gtk_idle_add_priority   (gint               priority,
+                        GtkFunction        function,
+                        gpointer           data)
 {
-  return gtk_idle_add_internal (TRUE, (GtkFunction)function, data, destroy);
+  return gtk_idle_add_full (priority, function, NULL, data, NULL);
 }
 
 void
@@ -855,6 +896,31 @@ gtk_destroy_input_function (GtkInputFunction *input)
   g_free (input);
 }
 
+gint
+gtk_input_add_full (gint source,
+                   GdkInputCondition condition,
+                   GdkInputFunction function,
+                   GtkCallbackMarshal marshal,
+                   gpointer data,
+                   GtkDestroyNotify destroy)
+{
+  if (marshal)
+    {
+      GtkInputFunction *input = g_new (GtkInputFunction, 1);
+      input->callback = marshal;
+      input->data = data;
+      input->destroy = destroy;
+
+      return gdk_input_add_interp (source,
+                                  condition,
+                                  (GdkInputFunction) gtk_invoke_input_function,
+                                  input,
+                                  (GdkDestroyNotify) gtk_destroy_input_function);
+    }
+  else
+    return gdk_input_add_interp (source, condition, function, data, destroy);
+}
+
 gint
 gtk_input_add_interp (gint source,
                      GdkInputCondition condition,
@@ -862,15 +928,7 @@ gtk_input_add_interp (gint source,
                      gpointer data,
                      GtkDestroyNotify destroy)
 {
-  GtkInputFunction *input = g_new (GtkInputFunction, 1);
-  input->callback = callback;
-  input->data = data;
-  input->destroy = destroy;
-  return gdk_input_add_interp (source,
-                              condition,
-                              (GdkInputFunction) gtk_invoke_input_function,
-                              input,
-                              (GdkDestroyNotify) gtk_destroy_input_function);
+  gdk_input_add_full (source, condition, NULL, callback, data);
 }
 
 void
@@ -952,7 +1010,7 @@ gtk_timeout_insert (GtkTimeoutFunction *timeoutf)
 static gint
 gtk_invoke_timeout_function (GtkTimeoutFunction *timeoutf)
 {
-  if (!timeoutf->interp)
+  if (!timeoutf->marshal)
     return timeoutf->function (timeoutf->data);
   else
     {
@@ -1040,7 +1098,7 @@ gtk_handle_timeouts ()
 static gint
 gtk_idle_invoke_function (GtkIdleFunction *idlef)
 {
-  if (!idlef->interp)
+  if (!idlef->marshal)
     return idlef->function (idlef->data);
   else
     {
@@ -1049,9 +1107,9 @@ gtk_idle_invoke_function (GtkIdleFunction *idlef)
       args[0].name = NULL;
       args[0].type = GTK_TYPE_BOOL;
       args[0].d.pointer_data = &ret_val;
-      ((GtkCallbackMarshal)idlef->function) (NULL,
-                                            idlef->data,
-                                            0, args);
+      ((GtkCallbackMarshal)idlef->marshal) (NULL,
+                                           idlef->data,
+                                           0, args);
       return ret_val;
     }
 }
@@ -1060,6 +1118,7 @@ static void
 gtk_handle_current_idles ()
 {
   GList *tmp_list;
+  GList *tmp_list2;
   GtkIdleFunction *idlef;
   
   while (current_idles)
@@ -1076,7 +1135,30 @@ gtk_handle_current_idles ()
        }
       else
        {
-         idle_functions = g_list_concat (idle_functions, tmp_list);
+         /* Insert the idle function back into the list of idle
+          * functions at the end of the idles of this priority
+          */
+         tmp_list2 = idle_functions;
+         while (tmp_list2 &&
+                (((GtkIdleFunction *)tmp_list2->data)->priority <= idlef->priority))
+           tmp_list2 = tmp_list2->next;
+
+         if (!tmp_list2)
+           idle_functions = g_list_concat (idle_functions, tmp_list);
+         else if (tmp_list2 == idle_functions)
+           {
+             tmp_list->next = idle_functions;
+             if (idle_functions)
+               idle_functions->prev = tmp_list;
+             idle_functions = tmp_list;
+           }
+         else
+           {
+             tmp_list->prev = tmp_list2->prev;
+             tmp_list->next = tmp_list2;
+             tmp_list2->prev->next = tmp_list;
+             tmp_list2->prev = tmp_list;
+           }
        }
     }
 }
@@ -1089,10 +1171,27 @@ gtk_handle_idle ()
    */
   g_assert (current_idles == NULL);
   
+  /* Handle only the idle functions that have the highest priority */
   if (idle_functions)
     {
+      GList *tmp_list;
+      gint top_priority;
+
+      tmp_list = idle_functions;
+      top_priority = ((GtkIdleFunction *)tmp_list->data)->priority;
+      while (tmp_list &&
+            (((GtkIdleFunction *)tmp_list->data)->priority == top_priority))
+       tmp_list = tmp_list->next;
+
       current_idles = idle_functions;
-      idle_functions = NULL;
+      idle_functions = tmp_list;
+
+      if (tmp_list) 
+       {
+         tmp_list->prev->next = NULL;
+         tmp_list->prev = NULL;
+       }
       
       gtk_handle_current_idles();
     }
index 6e5ba1237997667346afa67786a3cb866ccce102..8b2009a7eb2a4e1e35180a3be5ff218353d1cbe3 100644 (file)
 extern "C" {
 #endif /* __cplusplus */
 
+#define GTK_PRIORITY_HIGH      -20
+#define GTK_PRIORITY_INTERNAL  -10
+#define GTK_PRIORITY_DEFAULT     0
+#define GTK_PRIORITY_LOW        10
 
 typedef gint    (*GtkKeySnoopFunc)      (GtkWidget      *grab_widget,
                                         GdkEventKey    *event,
@@ -56,6 +60,11 @@ void    gtk_grab_remove       (GtkWidget     *widget);
 void      gtk_init_add          (GtkFunction    function,
                                  gpointer       data);
 
+gint       gtk_timeout_add_full   (guint32            interval,
+                                  GtkFunction        function,
+                                  GtkCallbackMarshal marshal,
+                                  gpointer           data,
+                                  GtkDestroyNotify   destroy);
 gint      gtk_timeout_add         (guint32        interval,
                                    GtkFunction    function,
                                    gpointer       data);
@@ -65,13 +74,30 @@ gint           gtk_timeout_add_interp  (guint32        interval,
                                    GtkDestroyNotify notify);
 void      gtk_timeout_remove      (gint           tag);
 
-gint      gtk_idle_add            (GtkFunction    function,
-                                   gpointer       data);
-gint      gtk_idle_add_interp     (GtkCallbackMarshal function,
+gint      gtk_idle_add            (GtkFunction        function,
+                                   gpointer           data);
+gint       gtk_idle_add_priority   (gint               priority,
+                                   GtkFunction        function,
+                                   gpointer           data);
+gint      gtk_idle_add_full       (gint               priority,
+                                   GtkFunction        function,
+                                   GtkCallbackMarshal marshal,
+                                   gpointer           data,
+                                   GtkDestroyNotify   destroy);
+gint      gtk_idle_add_interp     (GtkCallbackMarshal marshal,
                                    gpointer           data,
                                    GtkDestroyNotify   destroy);
 void      gtk_idle_remove         (gint           tag);
 void      gtk_idle_remove_by_data (gpointer     data);
+gint       gtk_input_add_full      (gint               source,
+                                   GdkInputCondition  condition,
+                                   GdkInputFunction   function,
+                                   GtkCallbackMarshal marshal,
+                                   gpointer           data,
+                                   GtkDestroyNotify   destroy);
+void       gtk_input_remove        (gint               tag);
+
+
 gint      gtk_key_snooper_install (GtkKeySnoopFunc snooper,
                                    gpointer        func_data);
 void      gtk_key_snooper_remove  (gint            snooper_id);
index 3cc66f7b1dddcbf6cbcef0111a5455d17d45963a..8f51e6c6c5034b713502720708cc9c844917cc18 100644 (file)
@@ -123,8 +123,9 @@ struct _GtkSelectionHandler
   GdkAtom selection;           /* selection thats handled */
   GdkAtom target;              /* target thats handled */
   GtkSelectionFunction function; /* callback function */
-  GtkRemoveFunction remove_func; /* called when callback is removed */
+  GtkCallbackMarshal marshal;    /* Marshalling function */
   gpointer data;                /* callback data */
+  GtkDestroyNotify destroy;      /* called when callback is removed */
 };
 
 /* Local Functions */
@@ -134,9 +135,8 @@ static gint gtk_selection_retrieval_timeout      (GtkRetrievalInfo *info);
 static void gtk_selection_retrieval_report       (GtkRetrievalInfo *info,
                                                  GdkAtom type, gint format, 
                                                  guchar *buffer, gint length);
-static GtkSelectionHandler *gtk_selection_find_handler (GtkWidget *widget,
-                                                       GdkAtom    selection,
-                                                       GdkAtom    target);
+static void gtk_selection_invoke_handler         (GtkWidget        *widget,
+                                                 GtkSelectionData *data);
 static void gtk_selection_default_handler        (GtkWidget       *widget,
                                                  GtkSelectionData *data);
 
@@ -251,7 +251,7 @@ gtk_selection_owner_set (GtkWidget *widget,
 }
 
 /*************************************************************
- * gtk_selection_add_handler:
+ * gtk_selection_add_handler_full:
  *     Add a handler for a specified selection/target pair
  *
  *   arguments:
@@ -260,7 +260,9 @@ gtk_selection_owner_set (GtkWidget *widget,
  *     target:
  *     format:     Format in which this handler will return data
  *     function:   Callback function (can be NULL)
+ *     marshal:    Callback marshal function
  *     data:       User data for callback
+ *     destroy:    Called when handler removed
  *
  *   results:
  *************************************************************/
@@ -270,8 +272,20 @@ gtk_selection_add_handler (GtkWidget           *widget,
                           GdkAtom              selection,
                           GdkAtom              target,
                           GtkSelectionFunction function,
-                          GtkRemoveFunction    remove_func,
                           gpointer             data)
+{
+  gtk_selection_add_handler_full (widget, selection, target, function,
+                                 NULL, data, NULL);
+}
+
+void 
+gtk_selection_add_handler_full (GtkWidget           *widget, 
+                               GdkAtom              selection,
+                               GdkAtom              target,
+                               GtkSelectionFunction function,
+                               GtkCallbackMarshal   marshal,
+                               gpointer             data,
+                               GtkDestroyNotify     destroy)
 {
   GList *selection_handlers;
   GList *tmp_list;
@@ -291,13 +305,14 @@ gtk_selection_add_handler (GtkWidget           *widget,
       handler = (GtkSelectionHandler *)tmp_list->data;
       if ((handler->selection == selection) && (handler->target == target))
        {
-         if (handler->remove_func)
-           (*handler->remove_func)(handler->data);
+         if (handler->destroy)
+           (*handler->destroy)(handler->data);
          if (function)
            {
              handler->function = function;
-             handler->remove_func = remove_func;
+             handler->marshal = marshal;
              handler->data = data;
+             handler->destroy = destroy;
            }
          else
            {
@@ -317,8 +332,9 @@ gtk_selection_add_handler (GtkWidget           *widget,
       handler->selection = selection;
       handler->target = target;
       handler->function = function;
-      handler->remove_func = remove_func;
+      handler->marshal = marshal;
       handler->data = data;
+      handler->destroy = destroy;
       selection_handlers = g_list_append (selection_handlers, handler);
     }
   
@@ -409,8 +425,8 @@ gtk_selection_remove_all (GtkWidget *widget)
       next = tmp_list->next;
       handler = (GtkSelectionHandler *)tmp_list->data;
 
-      if (handler->remove_func)
-       (*handler->remove_func)(handler->data);
+      if (handler->destroy)
+       (*handler->destroy)(handler->data);
 
       g_free (handler);
 
@@ -487,7 +503,6 @@ gtk_selection_convert (GtkWidget *widget,
   if (owner_window != NULL)
     {
       GtkWidget *owner_widget;
-      GtkSelectionHandler *handler;
       GtkSelectionData selection_data;
 
       selection_data.selection = selection;
@@ -499,14 +514,8 @@ gtk_selection_convert (GtkWidget *widget,
 
       if (owner_widget != NULL)
        {
-         handler = gtk_selection_find_handler (owner_widget, selection, target);
-         if (handler)
-           (* handler->function)(owner_widget,
-                                 &selection_data,
-                                 handler->data);
-         else                  /* try the default handler */
-           gtk_selection_default_handler (owner_widget,
-                                          &selection_data);
+         gtk_selection_invoke_handler (owner_widget, 
+                                       &selection_data);
 
          gtk_selection_retrieval_report (info,
                                          selection_data.type, 
@@ -645,7 +654,6 @@ gtk_selection_request (GtkWidget *widget,
                       GdkEventSelection *event)
 {
   GtkIncrInfo *info;
-  GtkSelectionHandler *handler;
   GList *tmp_list;
   guchar *mult_atoms;
   int i;
@@ -737,12 +745,7 @@ gtk_selection_request (GtkWidget *widget,
              event->requestor, event->property);
 #endif
   
-      handler = gtk_selection_find_handler (widget, event->selection,
-                                           info->conversions[i].target);
-      if (handler)
-       (* handler->function)(widget, &data, handler->data);
-      else
-       gtk_selection_default_handler (widget, &data);
+      gtk_selection_invoke_handler (widget, &data);
 
       if (data.length < 0)
        {
@@ -1254,24 +1257,27 @@ gtk_selection_retrieval_report (GtkRetrievalInfo *info,
 }
 
 /*************************************************************
- * gtk_selection_find_handler:
- *     Find handler for specified widget/selection/target
+ * gtk_selection_invoke_handler:
+ *     Finds and invokes handler for specified
+ *     widget/selection/target combination, calls 
+ *     gtk_selection_default_handler if none exists.
+ *
  *   arguments:
- *     widget:
- *     selection:
- *     target:
+ *     widget:      selection owner
+ *     data:        selection data [INOUT]
+ *     
  *   results:
+ *     Number of bytes written to buffer, -1 if error
  *************************************************************/
 
-static GtkSelectionHandler *
-gtk_selection_find_handler (GtkWidget *widget,
-                           GdkAtom    selection,
-                           GdkAtom    target)
+static void
+gtk_selection_invoke_handler (GtkWidget        *widget,
+                             GtkSelectionData *data)
 {
   GList *tmp_list;
   GtkSelectionHandler *handler;
 
-  g_return_val_if_fail (widget != NULL, FALSE);
+  g_return_if_fail (widget != NULL);
   
   tmp_list = gtk_object_get_data (GTK_OBJECT (widget),
                                  gtk_selection_handler_key);
@@ -1279,15 +1285,33 @@ gtk_selection_find_handler (GtkWidget *widget,
   while (tmp_list)
     {
       handler = (GtkSelectionHandler *)tmp_list->data;
-      if ((handler->selection == selection) && (handler->target == target))
-       return handler;
+      if ((handler->selection == data->selection) && 
+         (handler->target == data->target))
+       break;
       tmp_list = tmp_list->next;
     }
 
-  return NULL;
+  if (tmp_list == NULL)
+    gtk_selection_default_handler (widget, data);
+  else
+    {
+      if (handler->marshal)
+       {
+         GtkArg args[2];
+         args[0].type = GTK_TYPE_BOXED;
+         args[0].name = NULL;
+         GTK_VALUE_BOXED(args[0]) = data;
+         args[1].type = GTK_TYPE_NONE;
+         args[1].name = NULL;
+
+         handler->marshal (GTK_OBJECT(widget), handler->data, 1, args);
+       }
+      else
+       if (handler->function)
+         handler->function (widget, data, handler->data);
+    }
 }
 
-
 /*************************************************************
  * gtk_selection_default_handler:
  *     Handles some default targets that exist for any widget
@@ -1297,15 +1321,8 @@ gtk_selection_find_handler (GtkWidget *widget,
  *
  *   arguments:
  *     widget:      selection owner
- *     selection:   selection requested
- *     target:      target requested
- *     buffer:      buffer to write results into
- *     length:      size of buffer
- *     type:        type atom
- *     format:      length of type's units in bits
- *     
- *   results:
- *     Number of bytes written to buffer, -1 if error
+ *     data:        selection data [INOUT]
+ *
  *************************************************************/
 
 static void
index 18f3dc4b54a7249ce4ab6aef848225c4cae1f64f..92aa12b016cfb7efb308c02f5ca26abdf9f27c76 100644 (file)
@@ -50,8 +50,14 @@ void gtk_selection_add_handler (GtkWidget           *widget,
                                GdkAtom              selection,
                                GdkAtom              target,
                                GtkSelectionFunction function,
-                               GtkRemoveFunction    remove_func,
                                gpointer             data);
+void gtk_selection_add_handler_full (GtkWidget           *widget, 
+                                    GdkAtom              selection,
+                                    GdkAtom              target,
+                                    GtkSelectionFunction function,
+                                    GtkCallbackMarshal   marshal,
+                                    gpointer             data,
+                                    GtkDestroyNotify     destroy);
 gint gtk_selection_convert   (GtkWidget          *widget, 
                              GdkAtom              selection, 
                              GdkAtom              target,
index ec115bf1b92e7966163a130920b5f7519f648fee..119f70b6406a0fd37aa168fb131e41e10365ade1 100644 (file)
@@ -108,10 +108,10 @@ static GtkHandler*  gtk_signal_get_handlers    (GtkObject     *object,
                                                gint           signal_type);
 static gint         gtk_signal_connect_by_type (GtkObject     *object,
                                                gint           signal_type,
-                                               gint           object_signal,
                                                GtkSignalFunc  func,
                                                gpointer       func_data,
                                                GtkSignalDestroy destroy_func,
+                                               gint           object_signal,
                                                gint           after,
                                                gint           no_marshal);
 static GtkEmission* gtk_emission_new           (void);
@@ -421,9 +421,9 @@ gtk_signal_connect (GtkObject     *object,
       return 0;
     }
 
-  return gtk_signal_connect_by_type (object, type, FALSE,
+  return gtk_signal_connect_by_type (object, type, 
                                     func, func_data, NULL,
-                                    FALSE, FALSE);
+                                    FALSE, FALSE, FALSE);
 }
 
 gint
@@ -447,18 +447,20 @@ gtk_signal_connect_after (GtkObject     *object,
       return 0;
     }
 
-  return gtk_signal_connect_by_type (object, type, FALSE,
+  return gtk_signal_connect_by_type (object, type, 
                                     func, func_data, NULL,
-                                    TRUE, FALSE);
+                                    FALSE, TRUE, FALSE);
 }
 
-gint
-gtk_signal_connect_interp (GtkObject         *object,
-                          gchar             *name,
-                          GtkCallbackMarshal func,
-                          gpointer           func_data,
-                          GtkDestroyNotify   destroy_func,
-                          gint               after)
+gint   
+gtk_signal_connect_full (GtkObject           *object,
+                        gchar               *name,
+                        GtkSignalFunc        func,
+                        GtkCallbackMarshal   marshal,
+                        gpointer             func_data,
+                        GtkDestroyNotify     destroy_func,
+                        gint                 object_signal,
+                        gint                 after)
 {
   gint type;
 
@@ -475,9 +477,26 @@ gtk_signal_connect_interp (GtkObject         *object,
       return 0;
     }
 
-  return gtk_signal_connect_by_type (object, type, FALSE,
-                                    (GtkSignalFunc) func, func_data,
-                                    destroy_func, after, TRUE);
+  if (marshal)
+    return gtk_signal_connect_by_type (object, type, (GtkSignalFunc) marshal, 
+                                      func_data, destroy_func, 
+                                      object_signal, after, TRUE);
+  else
+    return gtk_signal_connect_by_type (object, type, func, 
+                                      func_data, destroy_func, 
+                                      object_signal, after, FALSE);
+}
+
+gint
+gtk_signal_connect_interp (GtkObject         *object,
+                          gchar             *name,
+                          GtkCallbackMarshal func,
+                          gpointer           func_data,
+                          GtkDestroyNotify   destroy_func,
+                          gint               after)
+{
+  return gtk_signal_connect_full (object, name, NULL, func,
+                                 func_data, destroy_func, FALSE, after);
 }
 
 gint
@@ -502,9 +521,9 @@ gtk_signal_connect_object (GtkObject     *object,
       return 0;
     }
 
-  return gtk_signal_connect_by_type (object, type, TRUE,
+  return gtk_signal_connect_by_type (object, type, 
                                     func, slot_object, NULL,
-                                    FALSE, FALSE);
+                                    TRUE, FALSE, FALSE);
 }
 
 gint
@@ -528,9 +547,9 @@ gtk_signal_connect_object_after (GtkObject     *object,
       return 0;
     }
 
-  return gtk_signal_connect_by_type (object, type, TRUE,
+  return gtk_signal_connect_by_type (object, type, 
                                     func, slot_object, NULL,
-                                    TRUE, FALSE);
+                                    TRUE, TRUE, FALSE);
 }
 
 typedef struct _GtkDisconnectInfo       GtkDisconnectInfo;
@@ -1125,10 +1144,10 @@ gtk_signal_handler_pending (GtkObject           *object,
 static gint
 gtk_signal_connect_by_type (GtkObject       *object,
                            gint             signal_type,
-                           gint             object_signal,
                            GtkSignalFunc    func,
                            gpointer         func_data,
                            GtkSignalDestroy destroy_func,
+                           gint             object_signal,
                            gint             after,
                            gint             no_marshal)
 {
index 2212d8bb336d98dc82be7a0ec80e37cb653684dd..dd0c3eb1d8f0098306a60739ffd5a323785c19d1 100644 (file)
@@ -102,6 +102,14 @@ gint   gtk_signal_connect_object_after    (GtkObject           *object,
                                           const gchar         *name,
                                           GtkSignalFunc        func,
                                           GtkObject           *slot_object);
+gint   gtk_signal_connect_full            (GtkObject           *object,
+                                          gchar               *name,
+                                          GtkSignalFunc        func,
+                                          GtkCallbackMarshal   marshal,
+                                          gpointer             data,
+                                          GtkDestroyNotify     destroy_func,
+                                          gint                 object_signal,
+                                          gint                 after);
 gint   gtk_signal_connect_interp          (GtkObject           *object,
                                           gchar               *name,
                                           GtkCallbackMarshal   func,
index 83659351962ac5b568cc5bd823f920ae4a17df1b..2671a1d3a26264b30c9b062d3976b1a2a1627ee7 100644 (file)
@@ -81,7 +81,6 @@ typedef void (*GtkObjectInitFunc) (gpointer object);
 typedef void (*GtkArgGetFunc) (GtkObject *object, GtkArg *arg, guint arg_id);
 typedef void (*GtkArgSetFunc) (GtkObject *object, GtkArg *arg, guint arg_id);
 typedef gint (*GtkFunction) (gpointer data);
-typedef void (*GtkRemoveFunction) (gpointer data);
 typedef void (*GtkCallbackMarshal) (GtkObject *object,
                                    gpointer data,
                                    int n_args,
index 15ea22573dea143889e2889caa5d1c38700e5319..6a05929131e2768a2fc8bcf7ccf0d00a218abfcd 100644 (file)
@@ -407,14 +407,14 @@ main (int argc, char *argv[])
                      GTK_SIGNAL_FUNC (selection_received), NULL);
 
   gtk_selection_add_handler (selection_button, GDK_SELECTION_PRIMARY,
-                            seltypes[STRING], selection_handle, NULL, NULL);
+                            seltypes[STRING], selection_handle, NULL);
 
   gtk_selection_add_handler (selection_button, GDK_SELECTION_PRIMARY,
-                            seltypes[TEXT], selection_handle, NULL, NULL);
+                            seltypes[TEXT], selection_handle, NULL);
 
   gtk_selection_add_handler (selection_button, GDK_SELECTION_PRIMARY,
                             seltypes[COMPOUND_TEXT],
-                            selection_handle, NULL, NULL);
+                            selection_handle, NULL);
 
   selection_text = gtk_text_new (NULL, NULL);
   gtk_table_attach_defaults (GTK_TABLE (table), selection_text, 0, 1, 1, 2);
index 15ea22573dea143889e2889caa5d1c38700e5319..6a05929131e2768a2fc8bcf7ccf0d00a218abfcd 100644 (file)
@@ -407,14 +407,14 @@ main (int argc, char *argv[])
                      GTK_SIGNAL_FUNC (selection_received), NULL);
 
   gtk_selection_add_handler (selection_button, GDK_SELECTION_PRIMARY,
-                            seltypes[STRING], selection_handle, NULL, NULL);
+                            seltypes[STRING], selection_handle, NULL);
 
   gtk_selection_add_handler (selection_button, GDK_SELECTION_PRIMARY,
-                            seltypes[TEXT], selection_handle, NULL, NULL);
+                            seltypes[TEXT], selection_handle, NULL);
 
   gtk_selection_add_handler (selection_button, GDK_SELECTION_PRIMARY,
                             seltypes[COMPOUND_TEXT],
-                            selection_handle, NULL, NULL);
+                            selection_handle, NULL);
 
   selection_text = gtk_text_new (NULL, NULL);
   gtk_table_attach_defaults (GTK_TABLE (table), selection_text, 0, 1, 1, 2);