Esempio n. 1
0
static WHookItem *create_item(WHook *hk)
{
    WHookItem *item=ALLOC(WHookItem);
    if(item!=NULL){
        LINK_ITEM_FIRST(hk->items, item, next, prev);
        item->fn=NULL;
        item->efn=extl_fn_none();
    }
    
    return item;
}
Esempio n. 2
0
bool hook_add_extl(WHook *hk, ExtlFn efn)
{
    WHookItem *item;
    
    if(efn==extl_fn_none()){
        warn(TR("No function given."));
        return FALSE;
    }

    if(hook_find_extl(hk, efn))
        return FALSE;
    
    item=create_item(hk);
    
    if(item==NULL)
        return FALSE;
    
    item->efn=extl_ref_fn(efn);
    
    return TRUE;
}
Esempio n. 3
0
static void menu_do_finish(WMenu *menu)
{
    ExtlFn handler;
    ExtlTab tab;
    bool ok;
    WMenu *head=menu_head(menu);
    
    handler=menu->handler;
    menu->handler=extl_fn_none();
    
    ok=extl_table_geti_t(menu->tab, menu->selected_entry+1, &tab);
    
    if(!region_rqdispose((WRegion*)head)){
        if(head->submenu!=NULL)
            destroy_obj((Obj*)head->submenu);
    }
    
    if(ok)
        extl_call(handler, "t", NULL, tab);

    extl_unref_fn(handler);
    extl_unref_table(tab);
}