diff --git a/src/Airports/simple.cxx b/src/Airports/simple.cxx index bf6620f94..1b7d1c9d0 100644 --- a/src/Airports/simple.cxx +++ b/src/Airports/simple.cxx @@ -290,7 +290,7 @@ bool FGAirport::HardSurfaceFilter::passAirport(FGAirport* aApt) const FGAirport* FGAirport::findByIdent(const std::string& aIdent) { FGPositionedRef r; - AirportFilter filter; + PortsFilter filter; r = FGPositioned::findNextWithPartialId(r, aIdent, &filter); if (!r) { return NULL; // we don't warn here, let the caller do that @@ -301,7 +301,7 @@ FGAirport* FGAirport::findByIdent(const std::string& aIdent) FGAirport* FGAirport::getByIdent(const std::string& aIdent) { FGPositionedRef r; - AirportFilter filter; + PortsFilter filter; r = FGPositioned::findNextWithPartialId(r, aIdent, &filter); if (!r) { throw sg_range_exception("No such airport with ident: " + aIdent); diff --git a/src/Airports/simple.hxx b/src/Airports/simple.hxx index d226d40f4..521c48c9a 100644 --- a/src/Airports/simple.hxx +++ b/src/Airports/simple.hxx @@ -121,6 +121,17 @@ public: } }; + /** + * Filter which passes heliports and seaports in addition to airports + */ + class PortsFilter : public AirportFilter + { + public: + virtual Type maxType() const { + return SEAPORT; + } + }; + class HardSurfaceFilter : public AirportFilter { public: