summaryrefslogtreecommitdiff
path: root/gtk/gtkbindings.c
diff options
context:
space:
mode:
authorTim Janik <timj@gtk.org>1998-06-09 07:11:55 +0000
committerTim Janik <timj@src.gnome.org>1998-06-09 07:11:55 +0000
commita21d063ef867d0df151872f79cb04db8e730c42a (patch)
tree4e39ac11c98f2da3e38430d09843f6c74e007b07 /gtk/gtkbindings.c
parent257c54a0210d75fd17d19d555a90c52a07693ef4 (diff)
downloadgtk+-a21d063ef867d0df151872f79cb04db8e730c42a.tar.gz
new functions gtk_selection_data_copy and gtk_selection_data_free.
Tue Jun 9 01:57:23 1998 Tim Janik <timj@gtk.org> * gtk/gtkselection.h: * gtk/gtkselection.c: new functions gtk_selection_data_copy and gtk_selection_data_free. * gtk/gtkwidget.c (gtk_widget_class_init): fixed gtk_signal_new() call for "selection_received", which was completely bogus. * other fixups to gtk_signal_new() calls all over the place. * gtk/gtktypebuiltins.h: types as variables (formerly macros). * gtk/gtktypebuiltins_vars.c: type variable implementations. * gtk/gtktypebuiltins_ids.c: array entries for builtin type declarations. * gtk/gtktypebuiltins_evals.c: enum value arrays. * gtk/gtk-boxed.defs: gtk and gdk structure definitions, used to build gtk.defs. * gtk/gtk.defs: generated file with scheme syntax for type definitions of gtk and gdk structures and enums. * gtk/gtktypeutils.h: * gtk/gtktypeutils.c: reworked type ids, so they are variables not macros anymore (this fixes binary incompatibility with new enum definitions). * gtk/gtkwidget.c (gtk_widget_real_key_press_event): proccess possible key bindings for this widget. * gtk/gtkwindow.c (gtk_window_key_press_event): chain parent class' handler. * gtk/gtkobject.h: * gtk/gtkobject.c: removed gtk_object_class_new_user_signal_no_recurse() again. new functions gtk_object_class_user_signal_new () and gtk_object_class_user_signal_newv (), to feature the GtkSignalRunType flag on the signal creation. Mon Jun 8 20:52:21 1998 Tim Janik <timj@gtk.org> * gtk/gtkcontainer.h: new signal GtkContainer::set_focus_child.
Diffstat (limited to 'gtk/gtkbindings.c')
-rw-r--r--gtk/gtkbindings.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/gtk/gtkbindings.c b/gtk/gtkbindings.c
index c9e55181ed..5f3d5bab34 100644
--- a/gtk/gtkbindings.c
+++ b/gtk/gtkbindings.c
@@ -28,7 +28,7 @@
/* --- defines --- */
-#define BINDING_MOD_MASK() (gtk_accelerator_get_default_mod_mask () | GDK_AFTER_MASK)
+#define BINDING_MOD_MASK() (gtk_accelerator_get_default_mod_mask ())
/* --- variables --- */
@@ -337,12 +337,11 @@ gtk_binding_entry_activate (GtkBindingEntry *entry,
GtkSignalQuery *query;
guint signal_id;
GtkArg *params = NULL;
+ gchar *accelerator = NULL;
signal_id = gtk_signal_lookup (sig->signal_name, GTK_OBJECT_TYPE (object));
if (!signal_id)
{
- gchar *accelerator;
-
accelerator = gtk_accelerator_name (entry->keyval, entry->modifiers);
g_warning ("gtk_binding_entry_activate(): binding \"%s::%s\": "
"could not find signal \"%s\" in the `%s' class ancestry",
@@ -359,8 +358,6 @@ gtk_binding_entry_activate (GtkBindingEntry *entry,
query->return_val != GTK_TYPE_NONE ||
!binding_compose_params (sig->args, query, &params))
{
- gchar *accelerator;
-
accelerator = gtk_accelerator_name (entry->keyval, entry->modifiers);
g_warning ("gtk_binding_entry_activate(): binding \"%s::%s\": "
"signature mismatch for signal \"%s\" in the `%s' class ancestry",
@@ -368,11 +365,21 @@ gtk_binding_entry_activate (GtkBindingEntry *entry,
accelerator,
sig->signal_name,
gtk_type_name (GTK_OBJECT_TYPE (object)));
- g_free (accelerator);
- g_free (query);
- continue;
}
+ else if (!(query->signal_flags & GTK_RUN_ACTION))
+ {
+ accelerator = gtk_accelerator_name (entry->keyval, entry->modifiers);
+ g_warning ("gtk_binding_entry_activate(): binding \"%s::%s\": "
+ "signal \"%s\" in the `%s' class ancestry cannot be used for action emissions",
+ entry->binding_set->set_name,
+ accelerator,
+ sig->signal_name,
+ gtk_type_name (GTK_OBJECT_TYPE (object)));
+ }
+ g_free (accelerator);
g_free (query);
+ if (accelerator)
+ continue;
gtk_signal_emitv (object, signal_id, params);
g_free (params);