From 09e7c5bdefff377ccdaa6d091bad41e00612a8c4 Mon Sep 17 00:00:00 2001 From: Roy Marples Date: Wed, 3 Dec 2014 13:38:00 +0000 Subject: [PATCH] Fix a crash by clearing our reference to the menuwidget when it is deleted by QWidgetAction. --- src/dhcpcd-qt/dhcpcd-ssidmenu.cpp | 10 ++++++++++ src/dhcpcd-qt/dhcpcd-ssidmenu.h | 1 + src/dhcpcd-qt/dhcpcd-wi.cpp | 2 +- 3 files changed, 12 insertions(+), 1 deletions(-) diff --git a/src/dhcpcd-qt/dhcpcd-ssidmenu.cpp b/src/dhcpcd-qt/dhcpcd-ssidmenu.cpp index b1995d9..459301a 100644 --- a/src/dhcpcd-qt/dhcpcd-ssidmenu.cpp +++ b/src/dhcpcd-qt/dhcpcd-ssidmenu.cpp @@ -49,12 +49,22 @@ DhcpcdSsidMenu::DhcpcdSsidMenu(QWidget *parent, QWidget *DhcpcdSsidMenu::createWidget(QWidget *parent) { + ssidWidget = new DhcpcdSsidMenuWidget(parent, wi, scan); connect(ssidWidget, SIGNAL(hovered()), this, SLOT(hover())); connect(ssidWidget, SIGNAL(triggered()), this, SLOT(trigger())); return ssidWidget; } +void DhcpcdSsidMenu::deleteWidget(QWidget *widget) +{ + + widget->hide(); + widget->deleteLater(); + if (ssidWidget == widget) + ssidWidget = NULL; +} + DHCPCD_WI_SCAN *DhcpcdSsidMenu::getScan() { diff --git a/src/dhcpcd-qt/dhcpcd-ssidmenu.h b/src/dhcpcd-qt/dhcpcd-ssidmenu.h index 108409c..a359c50 100644 --- a/src/dhcpcd-qt/dhcpcd-ssidmenu.h +++ b/src/dhcpcd-qt/dhcpcd-ssidmenu.h @@ -43,6 +43,7 @@ public: ~DhcpcdSsidMenu() {}; QWidget *createWidget(QWidget *parent); + void deleteWidget(QWidget *widget); DHCPCD_WI_SCAN *getScan(); void setScan(DHCPCD_WI_SCAN *scan); bool isAssociated(); diff --git a/src/dhcpcd-qt/dhcpcd-wi.cpp b/src/dhcpcd-qt/dhcpcd-wi.cpp index 16767c3..060b2b3 100644 --- a/src/dhcpcd-qt/dhcpcd-wi.cpp +++ b/src/dhcpcd-qt/dhcpcd-wi.cpp @@ -95,7 +95,7 @@ bool DhcpcdWi::setScans(DHCPCD_WI_SCAN *scans) { bool changed = false; - if (menu && menu->isVisible()) { + if (menu) { QList lst; DHCPCD_WI_SCAN *scan; DHCPCD_IF *i; -- 1.7.1