qulogic/libgnt

Merged in default (pull request #69)

2019-05-13, Gary Kramlich
a69fa9089667
Merged in default (pull request #69)

Fix rebinding of GntBindables.

Approved-by: Gary Kramlich
  • +31 -30
    gntbindable.c
  • --- a/gntbindable.c Mon May 13 15:48:11 2019 +0000
    +++ b/gntbindable.c Mon May 13 15:51:48 2019 +0000
    @@ -57,6 +57,35 @@
    /******************************************************************************
    * Helpers
    *****************************************************************************/
    +static void
    +register_binding(GntBindableClass *klass, const char *name, const char *trigger,
    + GList *list)
    +{
    + GntBindableActionParam *param;
    + GntBindableAction *action;
    +
    + if (name == NULL || *name == '\0') {
    + g_hash_table_remove(klass->bindings, (char *)trigger);
    + gnt_keys_del_combination(trigger);
    + return;
    + }
    +
    + action = g_hash_table_lookup(klass->actions, name);
    + if (!action) {
    + gnt_warning("Invalid action name %s for %s", name,
    + g_type_name(G_OBJECT_CLASS_TYPE(klass)));
    + if (list) {
    + g_list_free(list);
    + }
    + return;
    + }
    +
    + param = g_new0(GntBindableActionParam, 1);
    + param->action = action;
    + param->list = list;
    + g_hash_table_replace(klass->bindings, g_strdup(trigger), param);
    + gnt_keys_add_combination(trigger);
    +}
    static void
    gnt_bindable_free_rebind_info(void)
    @@ -77,11 +106,11 @@
    gnt_bindable_rebinding_rebind(G_GNUC_UNUSED GntWidget *button, gpointer data)
    {
    if (rebind_info.keys) {
    - gnt_bindable_register_binding(rebind_info.klass,
    + register_binding(rebind_info.klass,
    NULL,
    rebind_info.okeys,
    rebind_info.params);
    - gnt_bindable_register_binding(rebind_info.klass,
    + register_binding(rebind_info.klass,
    rebind_info.name,
    rebind_info.keys,
    rebind_info.params);
    @@ -354,34 +383,6 @@
    return (param && param->action);
    }
    -static void
    -register_binding(GntBindableClass *klass, const char *name, const char *trigger, GList *list)
    -{
    - GntBindableActionParam *param;
    - GntBindableAction *action;
    -
    - if (name == NULL || *name == '\0') {
    - g_hash_table_remove(klass->bindings, (char*)trigger);
    - gnt_keys_del_combination(trigger);
    - return;
    - }
    -
    - action = g_hash_table_lookup(klass->actions, name);
    - if (!action) {
    - gnt_warning("Invalid action name %s for %s",
    - name, g_type_name(G_OBJECT_CLASS_TYPE(klass)));
    - if (list)
    - g_list_free(list);
    - return;
    - }
    -
    - param = g_new0(GntBindableActionParam, 1);
    - param->action = action;
    - param->list = list;
    - g_hash_table_replace(klass->bindings, g_strdup(trigger), param);
    - gnt_keys_add_combination(trigger);
    -}
    -
    void gnt_bindable_register_binding(GntBindableClass *klass, const char *name,
    const char *trigger, ...)
    {