Index: src/viewport.cpp =================================================================== --- src/viewport.cpp (wersja 23122) +++ src/viewport.cpp (kopia robocza) @@ -1886,16 +1886,11 @@ pt = GetTileBelowCursor(); if (pt.x == -1) return; - if ((_thd.place_mode & HT_DRAG_MASK) == HT_POINT) { - pt.x += 8; - pt.y += 8; - } - _tile_fract_coords.x = pt.x & TILE_UNIT_MASK; _tile_fract_coords.y = pt.y & TILE_UNIT_MASK; w = _thd.GetCallbackWnd(); - if (w != NULL) w->OnPlaceObject(pt, TileVirtXY(pt.x, pt.y)); + if (w != NULL) w->OnPlaceObject(pt, TileVirtXY(_thd.pos.x, _thd.pos.y)); } @@ -2109,11 +2104,13 @@ switch (_thd.place_mode & HT_DRAG_MASK) { case HT_RECT: new_drawstyle = HT_RECT; + x1 = min(x1, MapMaxX() * TILE_SIZE - _thd.new_size.x); + y1 = min(y1, MapMaxY() * TILE_SIZE - _thd.new_size.y); break; case HT_POINT: new_drawstyle = HT_POINT; - x1 += TILE_SIZE / 2; - y1 += TILE_SIZE / 2; + x1 = min(x1 + TILE_SIZE / 2, MapSizeX() * TILE_SIZE - _thd.new_size.x); + y1 = min(y1 + TILE_SIZE / 2, MapSizeY() * TILE_SIZE - _thd.new_size.y); break; case HT_RAIL: /* Draw one highlighted tile in any direction */