- if (index >= 0 && index < menuitems.size()) {
- BasemenuItem *item = menuitems[index];
- if (item->submenu() && visible && (! item->submenu()->isTorn()) &&
- item->isEnabled()) {
- if (item->submenu()->parent != this) item->submenu()->parent = this;
- int sbl = index / menu.persub, i = index - (sbl * menu.persub),
- x = menu.x +
- ((menu.item_w * (sbl + 1)) + screen.getBorderWidth()), y;
-
- if (alignment == AlignTop)
- y = (((shifted) ? menu.y_shift : menu.y) +
- ((title_vis) ? menu.title_h + screen.getBorderWidth() : 0) -
- ((item->submenu()->title_vis) ?
- item->submenu()->menu.title_h + screen.getBorderWidth() : 0));
- else
- y = (((shifted) ? menu.y_shift : menu.y) +
- (menu.item_h * i) +
- ((title_vis) ? menu.title_h + screen.getBorderWidth() : 0) -
- ((item->submenu()->title_vis) ?
- item->submenu()->menu.title_h + screen.getBorderWidth() : 0));
-
- if (alignment == AlignBottom &&
- (y + item->submenu()->menu.height) > ((shifted) ? menu.y_shift :
- menu.y) + menu.height)
- y = (((shifted) ? menu.y_shift : menu.y) +
- menu.height - item->submenu()->menu.height);
-
- if ((x + item->submenu()->getWidth()) > screen.size().w()) {
- x = ((shifted) ? menu.x_shift : menu.x) -
- item->submenu()->getWidth() - screen.getBorderWidth();
- }
-
- if (x < 0) x = 0;