- if (enter) {
- if (self->parent->open_submenu && self->submenu
- != self->parent->open_submenu)
- {
- e = menu_find_entry_by_submenu(self->parent,
- self->parent->open_submenu);
- e->hilite = FALSE;
- menu_entry_render(e);
- menu_hide(self->parent->open_submenu);
- }
-
- if (self->submenu && self->parent->open_submenu != self->submenu) {
- self->parent->open_submenu = self->submenu;
-
- /* shouldn't be invalid since it must be displayed */
- g_assert(!self->parent->invalid);
- /* TODO: I don't understand why these bevels should be here.
- Something must be wrong in the width calculation */
- x = self->parent->location.x + self->parent->size.width +
- ob_rr_theme->bwidth - ob_rr_theme->menu_overlap;
-
- /* need to get the width. is this bad?*/
- menu_render(self->submenu);
-
- a = screen_physical_area_monitor(self->parent->xin_area);
-
- if (self->submenu->size.width + x >= a->x + a->width)
- x = self->parent->location.x - self->submenu->size.width -
- ob_rr_theme->bwidth + ob_rr_theme->menu_overlap;
-
- menu_show_full(self->submenu, x,
- self->parent->location.y + self->y,
- self->parent->client);
- }
- }
-
- if (enter || !self->submenu ||
- menu_find_entry_by_submenu(self->parent,
- self->parent->open_submenu) != self)
- self->hilite = enter;