summaryrefslogtreecommitdiff
path: root/gtk/gtkaccelgroup.h
diff options
context:
space:
mode:
authorTim Janik <timj@gtk.org>2001-11-20 23:43:03 +0000
committerTim Janik <timj@src.gnome.org>2001-11-20 23:43:03 +0000
commit9800f731e09e28defb46994ae11674d2553f0cc0 (patch)
treef212fba144769eedf92541cd4dbe9843d24ed97a /gtk/gtkaccelgroup.h
parent9ea603f15dccb57a8b763fda35b929dbb70914d6 (diff)
downloadgtk+-9800f731e09e28defb46994ae11674d2553f0cc0.tar.gz
applied patch from owen to get rid of accel map notifiers. changed things
Tue Nov 20 21:25:08 2001 Tim Janik <timj@gtk.org> * applied patch from owen to get rid of accel map notifiers. changed things to fix reentrancy and API as discussed on gtk-devel. * gtk/gtkaccelgroup.[hc]: (gtk_accel_group_finalize): unregister this accel group from all accel map paths. (accel_closure_invalidate): handle invalidation of closures by disconnecting their accelerators. (quick_accel_add): move closure connection and changed notification into this function to reduce code duplication. don't emit change notification on closurers without accelerators. (quick_accel_remove): rewrite, do the exact opposite of quick_accel_add for a GtkAccelGroupEntry. (gtk_accel_group_connect): get rid of the accel_path_quark argument. (gtk_accel_group_connect_by_path): new function to add accelerators with an accel path. (gtk_accel_group_disconnect_closure): new function, disconnect a closure from of an accel group. (gtk_accel_group_disconnect): loop over all closure for a accel_ley, accel_mods pair and remove them. (_gtk_accel_group_reconnect): new function that basically does gtk_accel_group_disconnect_closure() and gtk_accel_group_connect_by_path() once an accel path changed. (gtk_accel_groups_disconnect_closure): remove this, there's gtk_accel_group_disconnect_closure(). * gtk/gtkaccelmap.[hc]: keep list of accel groups per entry now, nuke notifiers. (_gtk_accel_path_is_valid): make this non-static for gtkwidget.c and gtkaccelgroup.c assertions. (gtk_accel_map_add_notifer): removed this function. (gtk_accel_map_remove_notifer): same. (_gtk_accel_map_add_group): (_gtk_accel_map_remove_group): (un-)register accel groups, with accel paths for correct propagation. (gtk_accel_map_add_entry): return void. (gtk_accel_map_lookup): return gboolean instead of GQuark. * gtk/gtkitemfactory.c (gtk_item_factory_add_foreign): always set accel_path on widgets. * gtk/gtkwidget.[hc]: (accel_path_changed): got rid of this, changes are handled by accel maps internally now. (_gtk_widget_set_accel_path): get things to work without notifiers. (gtk_widget_list_accel_closures): list accel closures of a widget. * gtk/gtkwindow.[hc]: rename ::accels_changed, to ::keys_changed.
Diffstat (limited to 'gtk/gtkaccelgroup.h')
-rw-r--r--gtk/gtkaccelgroup.h35
1 files changed, 21 insertions, 14 deletions
diff --git a/gtk/gtkaccelgroup.h b/gtk/gtkaccelgroup.h
index 5fca1a33b3..cfb207f8a7 100644
--- a/gtk/gtkaccelgroup.h
+++ b/gtk/gtkaccelgroup.h
@@ -88,20 +88,23 @@ struct _GtkAccelKey
/* -- Accelerator Groups --- */
-GType gtk_accel_group_get_type (void);
-GtkAccelGroup* gtk_accel_group_new (void);
-void gtk_accel_group_lock (GtkAccelGroup *accel_group);
-void gtk_accel_group_unlock (GtkAccelGroup *accel_group);
-void gtk_accel_group_connect (GtkAccelGroup *accel_group,
- guint accel_key,
- GdkModifierType accel_mods,
- GtkAccelFlags accel_flags,
- GClosure *closure,
- GQuark accel_path_quark);
-gboolean gtk_accel_group_disconnect (GtkAccelGroup *accel_group,
- guint accel_key,
- GdkModifierType accel_mods);
-gboolean gtk_accel_groups_disconnect_closure (GClosure *closure);
+GType gtk_accel_group_get_type (void);
+GtkAccelGroup* gtk_accel_group_new (void);
+void gtk_accel_group_lock (GtkAccelGroup *accel_group);
+void gtk_accel_group_unlock (GtkAccelGroup *accel_group);
+void gtk_accel_group_connect (GtkAccelGroup *accel_group,
+ guint accel_key,
+ GdkModifierType accel_mods,
+ GtkAccelFlags accel_flags,
+ GClosure *closure);
+void gtk_accel_group_connect_by_path (GtkAccelGroup *accel_group,
+ const gchar *accel_path,
+ GClosure *closure);
+gboolean gtk_accel_group_disconnect (GtkAccelGroup *accel_group,
+ GClosure *closure);
+gboolean gtk_accel_group_disconnect_key (GtkAccelGroup *accel_group,
+ guint accel_key,
+ GdkModifierType accel_mods);
/* --- GtkActivatable glue --- */
@@ -138,6 +141,10 @@ GtkAccelGroupEntry* gtk_accel_group_query (GtkAccelGroup *accel_group,
guint accel_key,
GdkModifierType accel_mods,
guint *n_entries);
+
+void _gtk_accel_group_reconnect (GtkAccelGroup *accel_group,
+ GQuark accel_path_quark);
+
struct _GtkAccelGroupEntry
{
GtkAccelKey key;