struct _GtkBindingSignalCallback
{
- GtkBindingSignal parent;
- GtkCallback callback;
- gpointer user_data;
- GDestroyNotify user_destroy;
+ GtkBindingSignal parent;
+ GtkBindingCallback callback;
+ GVariant *args;
+ gpointer user_data;
+ GDestroyNotify user_destroy;
};
/* --- variables --- */
}
static GtkBindingSignal *
-binding_signal_new_callback (GtkCallback callback,
- gpointer user_data,
- GDestroyNotify user_destroy)
+binding_signal_new_callback (GtkBindingCallback callback,
+ GVariant *args,
+ gpointer user_data,
+ GDestroyNotify user_destroy)
{
GtkBindingSignalCallback *signal;
signal->parent.next = NULL;
signal->parent.action_type = GTK_BINDING_CALLBACK;
signal->callback = callback;
+ signal->args = args;
+ if (args)
+ g_variant_ref_sink (args);
signal->user_data = user_data;
signal->user_destroy = user_destroy;
return FALSE;
}
- sig->callback (GTK_WIDGET (object), sig->user_data);
+ sig->callback (GTK_WIDGET (object), sig->args, sig->user_data);
return TRUE;
}
}
void
-gtk_binding_entry_add_callback (GtkBindingSet *binding_set,
- guint keyval,
- GdkModifierType modifiers,
- GtkCallback callback,
- gpointer user_data,
- GDestroyNotify user_destroy)
+gtk_binding_entry_add_callback (GtkBindingSet *binding_set,
+ guint keyval,
+ GdkModifierType modifiers,
+ GtkBindingCallback callback,
+ GVariant *args,
+ gpointer user_data,
+ GDestroyNotify user_destroy)
{
g_return_if_fail (binding_set != NULL);
g_return_if_fail (callback != NULL);
gtk_binding_entry_add_binding_signal (binding_set,
keyval,
modifiers,
- binding_signal_new_callback (callback, user_data, user_destroy));
+ binding_signal_new_callback (callback, args, user_data, user_destroy));
}
#include <gdk/gdk.h>
#include <gtk/gtkenums.h>
-#include <gtk/gtkwidget.h>
+#include <gtk/gtktypes.h>
G_BEGIN_DECLS
typedef struct _GtkBindingSet GtkBindingSet;
+/**
+ * GtkBindingCallback:
+ * @widget: The object to invoke the callback on
+ * @args: (allow-none): The arguments or %NULL if none
+ * @user_data: The user data passed when registering the callback
+ *
+ * Prototype of the callback function registered with
+ * gtk_binding_entry_add_callback.
+ */
+typedef void (* GtkBindingCallback) (GtkWidget *widget,
+ GVariant *args,
+ gpointer user_data);
+
GDK_AVAILABLE_IN_ALL
GtkBindingSet *gtk_binding_set_new (const gchar *set_name);
GDK_AVAILABLE_IN_ALL
void gtk_binding_entry_add_callback(GtkBindingSet *binding_set,
guint keyval,
GdkModifierType modifiers,
- GtkCallback callback,
+ GtkBindingCallback callback,
+ GVariant *args,
gpointer user_data,
GDestroyNotify user_destroy);