From 61858bbe645187cd6dbb4033d3aece730ed8ff37 Mon Sep 17 00:00:00 2001 From: Martin Duquesnoy Date: Sat, 10 Apr 2010 23:41:27 +0200 Subject: [PATCH] Config: Fix possible segfault with layout system switch --- src/config.c | 5 ++++- src/menu.c | 12 ++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/config.c b/src/config.c index a126079..d303fd3 100644 --- a/src/config.c +++ b/src/config.c @@ -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); diff --git a/src/menu.c b/src/menu.c index 145b919..b7b6dad 100644 --- a/src/menu.c +++ b/src/menu.c @@ -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; }