Config: Fix possible segfault with layout system switch

This commit is contained in:
Martin Duquesnoy 2010-04-10 23:41:27 +02:00
parent f6486d803c
commit 61858bbe64
2 changed files with 10 additions and 7 deletions

View File

@ -376,13 +376,16 @@ conf_layout_section(char *src)
else
{
if(conf.layout_system && conf.nlayout > 1)
{
menu_new_item(&menulayout.item[i], get_opt(tmp, "", "symbol").str,
uicb_set_layout, p);
menulayout.item[i].check = name_to_func("check_layout", func_list);
}
conf.layout[i].symbol = get_opt(tmp, "TILE (default)", "symbol").str;
conf.layout[i].func = name_to_func(p, layout_list);
conf.layout[i].type = p;
menulayout.item[i].check = name_to_func("check_layout", func_list);
}
cfg_set_sauv(src);

View File

@ -194,28 +194,28 @@ menu_manage_event(XEvent *ev, Menu *menu, BarWindow *winitem[])
Bool
menu_activate_item(Menu *menu, int i)
{
int j, d, u, x, y;
Window w;
int j, x, y;
if(menu->item[i].submenu)
{
for(j = 0; j < conf.nmenu; ++j)
if(!strcmp(menu->item[i].submenu, conf.menu[j].name))
{
XQueryPointer(dpy, ROOT, &w, &w, &x, &y, &d, &d, (uint *)&u);
x = menu->x;
x += menu_get_longer_string(menu->item, menu->nitem) + PAD * 3;
y = menu->y + ((i - 1) * INFOBARH + PAD) - SHADH * 2;
x = menu->x + menu_get_longer_string(menu->item, menu->nitem) + PAD * 3;
menu_draw(conf.menu[j], x, y);
return True;
}
}
else if(menu->item[i].func)
{
menu->item[i].func(menu->item[i].cmd);
return True;
}
return False;
}