+ /* find lowest common ancestor menu */
+ lcamenu = rootmenu;
+ if (currmenu != NULL) {
+ minlevel = MIN(currmenu_new->level, currmenu->level);
+ maxlevel = MAX(currmenu_new->level, currmenu->level);
+ if (currmenu_new->level == maxlevel) {
+ menu = currmenu_new;
+ menu_ = currmenu;
+ } else {
+ menu = currmenu;
+ menu_ = currmenu_new;
+ }
+ while (menu->level > minlevel)
+ menu = menu->parent;
+
+ while (menu != menu_) {
+ menu = menu->parent;
+ menu_ = menu_->parent;
+ }
+ lcamenu = menu;
+ }
+
+ /* unmap menus from currmenu (inclusive) until lcamenu (exclusive) */
+ for (menu = currmenu; menu != lcamenu; menu = menu->parent) {