rem: if (y1 < 0) { new_y = 0; move = 1; } else if (y2 >= scr->scr_height) { new_y = scr->scr_height - menu->entry_height - 1; move = 1;
add: if (y1 < rect.pos.y) { new_y = rect.pos.y; move = 1; } else if (y2 >= rect.pos.y + rect.size.height) { new_y = rect.pos.y + rect.size.height - menu->entry_height - 1; move = 1;
context: makeVisible(WMenu *menu){    WScreen *scr = menu->frame->screen_ptr;    int x1, y1, x2, y2, new_x, new_y, move;    if (menu->entry_no<0) return;    x1 = menu->frame_x;    y1 = menu->frame_y+menu->frame->top_width        + menu->selected_entry*menu->entry_height;    x2 = x1 + MENUW(menu);    y2 = y1 + menu->entry_height;    new_x = x1;    new_y = y1;    move = 0;    if (x1 < 0) {        new_x = 0;        move = 1;    } else if (x2 >= scr->scr_width) {        new_x = scr->scr_width - MENUW(menu) - 1;        move = 1;    }    if (y1 < 0) {        new_y = 0;        move = 1;    } else if (y2 >= scr->scr_height) {        new_y = scr->scr_height - menu->entry_height - 1;        move = 1;    }    new_y = new_y - menu->frame->top_width        - menu->selected_entry*menu->entry_height;    move_menus(menu, new_x, new_y);}