mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-12-23 20:30:15 +00:00
Add a way to lock individual accelerator paths. (#73207, reported by Havoc
Mon Dec 29 01:36:22 2003 Matthias Clasen <maclas@gmx.de> * gtk/gtkaccelmap.[hc]: (gtk_accel_map_lock_path, gtk_accel_map_unlock_path): Add a way to lock individual accelerator paths. (#73207, reported by Havoc Pennington)
This commit is contained in:
parent
d2e576787c
commit
a5c30a3aca
@ -1,3 +1,9 @@
|
||||
Mon Dec 29 01:36:22 2003 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtkaccelmap.[hc]: (gtk_accel_map_lock_path,
|
||||
gtk_accel_map_unlock_path): Add a way to lock individual accelerator
|
||||
paths. (#73207, reported by Havoc Pennington)
|
||||
|
||||
Sat Dec 27 23:17:56 2003 Soeren Sandmann <sandmann@daimi.au.dk>
|
||||
|
||||
* gtk/gtktoolbar.c (slide_idle_handler): use CHILD_VISIBLE
|
||||
|
@ -1,3 +1,9 @@
|
||||
Mon Dec 29 01:36:22 2003 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtkaccelmap.[hc]: (gtk_accel_map_lock_path,
|
||||
gtk_accel_map_unlock_path): Add a way to lock individual accelerator
|
||||
paths. (#73207, reported by Havoc Pennington)
|
||||
|
||||
Sat Dec 27 23:17:56 2003 Soeren Sandmann <sandmann@daimi.au.dk>
|
||||
|
||||
* gtk/gtktoolbar.c (slide_idle_handler): use CHILD_VISIBLE
|
||||
|
@ -1,3 +1,9 @@
|
||||
Mon Dec 29 01:36:22 2003 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtkaccelmap.[hc]: (gtk_accel_map_lock_path,
|
||||
gtk_accel_map_unlock_path): Add a way to lock individual accelerator
|
||||
paths. (#73207, reported by Havoc Pennington)
|
||||
|
||||
Sat Dec 27 23:17:56 2003 Soeren Sandmann <sandmann@daimi.au.dk>
|
||||
|
||||
* gtk/gtktoolbar.c (slide_idle_handler): use CHILD_VISIBLE
|
||||
|
@ -1,3 +1,9 @@
|
||||
Mon Dec 29 01:36:22 2003 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtkaccelmap.[hc]: (gtk_accel_map_lock_path,
|
||||
gtk_accel_map_unlock_path): Add a way to lock individual accelerator
|
||||
paths. (#73207, reported by Havoc Pennington)
|
||||
|
||||
Sat Dec 27 23:17:56 2003 Soeren Sandmann <sandmann@daimi.au.dk>
|
||||
|
||||
* gtk/gtktoolbar.c (slide_idle_handler): use CHILD_VISIBLE
|
||||
|
@ -1,3 +1,9 @@
|
||||
Mon Dec 29 01:36:22 2003 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtkaccelmap.[hc]: (gtk_accel_map_lock_path,
|
||||
gtk_accel_map_unlock_path): Add a way to lock individual accelerator
|
||||
paths. (#73207, reported by Havoc Pennington)
|
||||
|
||||
Sat Dec 27 23:17:56 2003 Soeren Sandmann <sandmann@daimi.au.dk>
|
||||
|
||||
* gtk/gtktoolbar.c (slide_idle_handler): use CHILD_VISIBLE
|
||||
|
@ -1,3 +1,7 @@
|
||||
Mon Dec 29 01:40:20 2003 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtk-sections.txt: Add gtk_accel_map_{un,}lock_path.
|
||||
|
||||
Wed Dec 24 01:12:12 2003 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtk-sections.txt: Add GtkClipboardTargetReceivedFunc,
|
||||
|
@ -43,6 +43,7 @@ typedef struct {
|
||||
guint std_accel_key;
|
||||
guint std_accel_mods;
|
||||
guint changed : 1;
|
||||
guint locked : 1;
|
||||
GSList *groups;
|
||||
} AccelEntry;
|
||||
|
||||
@ -160,6 +161,7 @@ gtk_accel_map_add_entry (const gchar *accel_path,
|
||||
entry->accel_key = accel_key;
|
||||
entry->accel_mods = accel_mods;
|
||||
entry->changed = FALSE;
|
||||
entry->locked = FALSE;
|
||||
g_hash_table_insert (accel_entry_ht, entry, entry);
|
||||
}
|
||||
}
|
||||
@ -240,6 +242,7 @@ internal_change_entry (const gchar *accel_path,
|
||||
entry->accel_key = accel_key;
|
||||
entry->accel_mods = accel_mods;
|
||||
entry->changed = TRUE;
|
||||
entry->locked = FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
@ -251,6 +254,9 @@ internal_change_entry (const gchar *accel_path,
|
||||
entry->changed = TRUE;
|
||||
return simulate ? TRUE : FALSE;
|
||||
}
|
||||
|
||||
if (entry->locked)
|
||||
return FALSE;
|
||||
|
||||
/* nobody's interested, easy going */
|
||||
if (!entry->groups)
|
||||
@ -825,3 +831,57 @@ _gtk_accel_map_remove_group (const gchar *accel_path,
|
||||
|
||||
entry->groups = g_slist_remove (entry->groups, accel_group);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* gtk_accel_map_lock_path:
|
||||
* @accel_path: a valid accelerator path
|
||||
*
|
||||
* Locks the given accelerator path.
|
||||
*
|
||||
* Locking an accelerator path prevents its accelerator to be changed
|
||||
* during runtime. A locked accelerator path can be unlocked by
|
||||
* gtk_accel_map_unlock_path(). Refer to gtk_accel_map_change_entry()
|
||||
* about runtime accelerator changes.
|
||||
*
|
||||
* Note that locking of individual accelerator paths is independent from
|
||||
* locking the #GtkAccelGroup containing them. For runtime accelerator
|
||||
* changes to be possible both the accelerator path and its #GtkAccelGroup
|
||||
* have to be unlocked.
|
||||
*
|
||||
* Since: 2.4
|
||||
**/
|
||||
void
|
||||
gtk_accel_map_lock_path (const gchar *accel_path)
|
||||
{
|
||||
AccelEntry *entry;
|
||||
|
||||
g_return_if_fail (_gtk_accel_path_is_valid (accel_path));
|
||||
|
||||
entry = accel_path_lookup (accel_path);
|
||||
|
||||
if (entry)
|
||||
entry->locked = TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* gtk_accel_map_unlock_path:
|
||||
* @accel_path: a valid accelerator path
|
||||
*
|
||||
* Unlocks the given accelerator path. Refer to gtk_accel_map_lock_path()
|
||||
* about accelerator path locking.
|
||||
*
|
||||
* Since: 2.4
|
||||
**/
|
||||
void
|
||||
gtk_accel_map_unlock_path (const gchar *accel_path)
|
||||
{
|
||||
AccelEntry *entry;
|
||||
|
||||
g_return_if_fail (_gtk_accel_path_is_valid (accel_path));
|
||||
|
||||
entry = accel_path_lookup (accel_path);
|
||||
|
||||
if (entry)
|
||||
entry->locked = FALSE;
|
||||
}
|
||||
|
@ -51,6 +51,8 @@ void gtk_accel_map_load_fd (gint fd);
|
||||
void gtk_accel_map_load_scanner (GScanner *scanner);
|
||||
void gtk_accel_map_save_fd (gint fd);
|
||||
|
||||
void gtk_accel_map_lock_path (const gchar *accel_path);
|
||||
void gtk_accel_map_unlock_path (const gchar *accel_path);
|
||||
|
||||
/* --- filter functions --- */
|
||||
void gtk_accel_map_add_filter (const gchar *filter_pattern);
|
||||
|
Loading…
Reference in New Issue
Block a user