mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-10-31 23:50:05 +00:00
Merge pull request #392 from AdenKoperczak/fix_AlertLayer_circular_reference
Fix alert layer circular reference
This commit is contained in:
commit
9e5890d95e
1 changed files with 11 additions and 4 deletions
|
|
@ -157,7 +157,7 @@ public:
|
||||||
const std::shared_ptr<AlertLayerHandler::SegmentRecord>& segmentRecord);
|
const std::shared_ptr<AlertLayerHandler::SegmentRecord>& segmentRecord);
|
||||||
void ConnectAlertHandlerSignals();
|
void ConnectAlertHandlerSignals();
|
||||||
void ConnectSignals();
|
void ConnectSignals();
|
||||||
void HandleGeoLinesEvent(std::shared_ptr<gl::draw::GeoLineDrawItem>& di,
|
void HandleGeoLinesEvent(std::weak_ptr<gl::draw::GeoLineDrawItem>& di,
|
||||||
QEvent* ev);
|
QEvent* ev);
|
||||||
void HandleGeoLinesHover(std::shared_ptr<gl::draw::GeoLineDrawItem>& di,
|
void HandleGeoLinesHover(std::shared_ptr<gl::draw::GeoLineDrawItem>& di,
|
||||||
const QPointF& mouseGlobalPos);
|
const QPointF& mouseGlobalPos);
|
||||||
|
|
@ -633,11 +633,12 @@ void AlertLayer::Impl::AddLine(std::shared_ptr<gl::draw::GeoLines>& geoLines,
|
||||||
std::placeholders::_1,
|
std::placeholders::_1,
|
||||||
std::placeholders::_2));
|
std::placeholders::_2));
|
||||||
|
|
||||||
|
const std::weak_ptr<gl::draw::GeoLineDrawItem> diWeak = di;
|
||||||
gl::draw::GeoLines::RegisterEventHandler(
|
gl::draw::GeoLines::RegisterEventHandler(
|
||||||
di,
|
di,
|
||||||
std::bind(&AlertLayer::Impl::HandleGeoLinesEvent,
|
std::bind(&AlertLayer::Impl::HandleGeoLinesEvent,
|
||||||
this,
|
this,
|
||||||
di,
|
diWeak,
|
||||||
std::placeholders::_1));
|
std::placeholders::_1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -691,8 +692,14 @@ void AlertLayer::Impl::UpdateLines()
|
||||||
}
|
}
|
||||||
|
|
||||||
void AlertLayer::Impl::HandleGeoLinesEvent(
|
void AlertLayer::Impl::HandleGeoLinesEvent(
|
||||||
std::shared_ptr<gl::draw::GeoLineDrawItem>& di, QEvent* ev)
|
std::weak_ptr<gl::draw::GeoLineDrawItem>& diWeak, QEvent* ev)
|
||||||
{
|
{
|
||||||
|
const std::shared_ptr<gl::draw::GeoLineDrawItem> di = diWeak.lock();
|
||||||
|
if (di == nullptr)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
switch (ev->type())
|
switch (ev->type())
|
||||||
{
|
{
|
||||||
case QEvent::Type::MouseButtonPress:
|
case QEvent::Type::MouseButtonPress:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue