switch (edge_warp_dir) {
case OB_DIRECTION_NORTH:
- y = a->height - 1;
+ y = a->height - 2;
break;
case OB_DIRECTION_EAST:
- x = a->x;
+ x = a->x + 1;
break;
case OB_DIRECTION_SOUTH:
- y = a->y;
+ y = a->y + 1;
break;
case OB_DIRECTION_WEST:
- x = a->width - 1;
+ x = a->width - 2;
break;
default:
g_assert_not_reached();
for (i = 0; i < screen_num_monitors; ++i) {
const Rect *a = screen_physical_area_monitor(i);
+
+ if (!RECT_CONTAINS(*a, x, y))
+ continue;
+
if (x == RECT_LEFT(*a)) dir = OB_DIRECTION_WEST;
if (x == RECT_RIGHT(*a)) dir = OB_DIRECTION_EAST;
if (y == RECT_TOP(*a)) dir = OB_DIRECTION_NORTH;