Change connection type for MouseCoordinateChanged slot to queued to avoid recursive paint

This commit is contained in:
Dan Paulat 2024-01-08 22:13:21 -06:00
parent e2bb6563dc
commit 6cc797ca3a
2 changed files with 25 additions and 13 deletions

View file

@ -745,20 +745,22 @@ void MainWindowImpl::ConnectMapSignals()
} }
}); });
connect(mapWidget, connect(
&map::MapWidget::MouseCoordinateChanged, mapWidget,
this, &map::MapWidget::MouseCoordinateChanged,
[this](common::Coordinate coordinate) this,
{ [this](common::Coordinate coordinate)
const QString latitude = QString::fromStdString( {
common::GetLatitudeString(coordinate.latitude_)); const QString latitude = QString::fromStdString(
const QString longitude = QString::fromStdString( common::GetLatitudeString(coordinate.latitude_));
common::GetLongitudeString(coordinate.longitude_)); const QString longitude = QString::fromStdString(
common::GetLongitudeString(coordinate.longitude_));
coordinateLabel_->setText( coordinateLabel_->setText(
QString("%1, %2").arg(latitude).arg(longitude)); QString("%1, %2").arg(latitude).arg(longitude));
coordinateLabel_->setVisible(true); coordinateLabel_->setVisible(true);
}); },
Qt::QueuedConnection);
connect( connect(
mapWidget, mapWidget,

View file

@ -148,7 +148,17 @@ signals:
double bearing, double bearing,
double pitch); double pitch);
void MapStyleChanged(const std::string& styleName); void MapStyleChanged(const std::string& styleName);
/**
* This signal is emitted when the mouse moves to a different geographic
* coordinate within the map widget. This signal is emitted during paintGL(),
* and must be connected using a connection type of queued if the slot
* triggers a repaint.
*
* @param [in] coordinate Geographic coordinate of the mouse
*/
void MouseCoordinateChanged(common::Coordinate coordinate); void MouseCoordinateChanged(common::Coordinate coordinate);
void RadarSiteRequested(const std::string& id); void RadarSiteRequested(const std::string& id);
void RadarSiteUpdated(std::shared_ptr<config::RadarSite> radarSite); void RadarSiteUpdated(std::shared_ptr<config::RadarSite> radarSite);
void RadarSweepUpdated(); void RadarSweepUpdated();