From 2ab8f3a77a9ecfd5c11fb8251b04f2c38325f937 Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Wed, 17 Jul 2024 22:17:33 -0500 Subject: [PATCH] Cache alert hover text --- scwx-qt/source/scwx/qt/map/alert_layer.cpp | 26 +++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/scwx-qt/source/scwx/qt/map/alert_layer.cpp b/scwx-qt/source/scwx/qt/map/alert_layer.cpp index 869f7bb6..18a1d5d6 100644 --- a/scwx-qt/source/scwx/qt/map/alert_layer.cpp +++ b/scwx-qt/source/scwx/qt/map/alert_layer.cpp @@ -181,6 +181,9 @@ public: std::unordered_map lineColor_; std::chrono::system_clock::time_point selectedTime_ {}; + + std::shared_ptr lastHoverDi_ {nullptr}; + std::string tooltip_ {}; }; AlertLayer::AlertLayer(std::shared_ptr context, @@ -535,12 +538,25 @@ void AlertLayer::Impl::HandleGeoLinesHover( std::shared_ptr& di, const QPointF& mouseGlobalPos) { - auto it = segmentsByLine_.find(di); - if (it != segmentsByLine_.cend()) + if (di != lastHoverDi_) { - util::tooltip::Show( - boost::algorithm::join(it->second->segment_->productContent_, "\n"), - mouseGlobalPos); + auto it = segmentsByLine_.find(di); + if (it != segmentsByLine_.cend()) + { + tooltip_ = + boost::algorithm::join(it->second->segment_->productContent_, "\n"); + } + else + { + tooltip_.clear(); + } + + lastHoverDi_ = di; + } + + if (!tooltip_.empty()) + { + util::tooltip::Show(tooltip_, mouseGlobalPos); } }