fix context menu should always be shown in the visible area