X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fwidgets%2Fdevicetoolbutton.cpp;h=d553aba32987d7bded07a7be5767d63501fb69c0;hp=723542b9fd9d3c6f874e4494004ee1b64eb383f1;hb=7e0c99bf95836c89574b53ae3fa7840e2ddca77d;hpb=3084ed4b15663dd717ff656745db305f377ab215 diff --git a/pv/widgets/devicetoolbutton.cpp b/pv/widgets/devicetoolbutton.cpp index 723542b9..d553aba3 100644 --- a/pv/widgets/devicetoolbutton.cpp +++ b/pv/widgets/devicetoolbutton.cpp @@ -72,12 +72,19 @@ void DeviceToolButton::set_device_list( const list< shared_ptr > &devices, shared_ptr selected) { selected_device_ = selected; - setText(QString::fromStdString( - selected->display_name(device_manager_))); + setText(selected ? QString::fromStdString( + selected->display_name(device_manager_)) : tr("")); devices_ = vector< weak_ptr >(devices.begin(), devices.end()); update_device_list(); } +void DeviceToolButton::reset() +{ + setText(tr("")); + selected_device_.reset(); + update_device_list(); +} + void DeviceToolButton::update_device_list() { menu_.clear(); @@ -86,7 +93,7 @@ void DeviceToolButton::update_device_list() menu_.addSeparator(); for (weak_ptr dev_weak_ptr : devices_) { - shared_ptr dev(dev_weak_ptr); + shared_ptr dev(dev_weak_ptr.lock()); if (!dev) continue; @@ -108,6 +115,8 @@ void DeviceToolButton::on_action(QObject *action) { assert(action); + selected_device_.reset(); + Device *const dev = (Device*)((QAction*)action)->data().value(); for (weak_ptr dev_weak_ptr : devices_) { shared_ptr dev_ptr(dev_weak_ptr);