diff --git a/src/plugins/android/androiddevice.cpp b/src/plugins/android/androiddevice.cpp index 64cc451eee8..374b4ad3a1b 100644 --- a/src/plugins/android/androiddevice.cpp +++ b/src/plugins/android/androiddevice.cpp @@ -78,7 +78,7 @@ QString AndroidDevice::displayNameForActionId(Core::Id actionId) const return QString(); } -void AndroidDevice::executeAction(Core::Id actionId, QWidget *parent) const +void AndroidDevice::executeAction(Core::Id actionId, QWidget *parent) { Q_UNUSED(actionId) Q_UNUSED(parent) diff --git a/src/plugins/android/androiddevice.h b/src/plugins/android/androiddevice.h index a89d6357d38..eda23a5dac1 100644 --- a/src/plugins/android/androiddevice.h +++ b/src/plugins/android/androiddevice.h @@ -45,7 +45,7 @@ public: ProjectExplorer::IDeviceWidget *createWidget(); QList actionIds() const; QString displayNameForActionId(Core::Id actionId) const; - void executeAction(Core::Id actionId, QWidget *parent = 0) const; + void executeAction(Core::Id actionId, QWidget *parent = 0); bool canAutoDetectPorts() const; ProjectExplorer::IDevice::Ptr clone() const; diff --git a/src/plugins/projectexplorer/devicesupport/desktopdevice.cpp b/src/plugins/projectexplorer/devicesupport/desktopdevice.cpp index 90c6aa8f206..7c9481cf3fd 100644 --- a/src/plugins/projectexplorer/devicesupport/desktopdevice.cpp +++ b/src/plugins/projectexplorer/devicesupport/desktopdevice.cpp @@ -88,7 +88,7 @@ QString DesktopDevice::displayNameForActionId(Core::Id actionId) const return QString(); } -void DesktopDevice::executeAction(Core::Id actionId, QWidget *parent) const +void DesktopDevice::executeAction(Core::Id actionId, QWidget *parent) { Q_UNUSED(actionId); Q_UNUSED(parent); diff --git a/src/plugins/projectexplorer/devicesupport/desktopdevice.h b/src/plugins/projectexplorer/devicesupport/desktopdevice.h index d737ceeea7c..7ddd35bacc7 100644 --- a/src/plugins/projectexplorer/devicesupport/desktopdevice.h +++ b/src/plugins/projectexplorer/devicesupport/desktopdevice.h @@ -49,7 +49,7 @@ public: IDeviceWidget *createWidget(); QList actionIds() const; QString displayNameForActionId(Core::Id actionId) const; - void executeAction(Core::Id actionId, QWidget *parent = 0) const; + void executeAction(Core::Id actionId, QWidget *parent = 0); bool canAutoDetectPorts() const; bool canCreateProcessModel() const; DeviceProcessList *createProcessListModel(QObject *parent) const; diff --git a/src/plugins/projectexplorer/devicesupport/devicemanager.cpp b/src/plugins/projectexplorer/devicesupport/devicemanager.cpp index fb2fb914afe..5ab8e545473 100644 --- a/src/plugins/projectexplorer/devicesupport/devicemanager.cpp +++ b/src/plugins/projectexplorer/devicesupport/devicemanager.cpp @@ -433,7 +433,7 @@ private: IDeviceWidget *createWidget() { return 0; } QList actionIds() const { return QList(); } QString displayNameForActionId(Core::Id) const { return QString(); } - void executeAction(Core::Id, QWidget *) const { } + void executeAction(Core::Id, QWidget *) { } Ptr clone() const { return Ptr(new TestDevice(*this)); } }; diff --git a/src/plugins/projectexplorer/devicesupport/devicesettingswidget.cpp b/src/plugins/projectexplorer/devicesupport/devicesettingswidget.cpp index 432cfb339f4..b7f62a22a94 100644 --- a/src/plugins/projectexplorer/devicesupport/devicesettingswidget.cpp +++ b/src/plugins/projectexplorer/devicesupport/devicesettingswidget.cpp @@ -336,10 +336,13 @@ void DeviceSettingsWidget::clearDetails() void DeviceSettingsWidget::handleAdditionalActionRequest(int actionId) { - const IDevice::ConstPtr device = m_deviceManager->find(currentDevice()->id()); + const IDevice::Ptr device = m_deviceManager->mutableDevice(currentDevice()->id()); QTC_ASSERT(device, return); updateDeviceFromUi(); device->executeAction(Core::Id::fromUniqueIdentifier(actionId), this); + + // Widget must be set up from scratch, because the action could have changed random attributes. + currentDeviceChanged(currentIndex()); } void DeviceSettingsWidget::handleProcessListRequested() diff --git a/src/plugins/projectexplorer/devicesupport/idevice.h b/src/plugins/projectexplorer/devicesupport/idevice.h index b8e928f6945..8291a6c0091 100644 --- a/src/plugins/projectexplorer/devicesupport/idevice.h +++ b/src/plugins/projectexplorer/devicesupport/idevice.h @@ -111,7 +111,7 @@ public: virtual IDeviceWidget *createWidget() = 0; virtual QList actionIds() const = 0; virtual QString displayNameForActionId(Core::Id actionId) const = 0; - virtual void executeAction(Core::Id actionId, QWidget *parent = 0) const = 0; + virtual void executeAction(Core::Id actionId, QWidget *parent = 0) = 0; virtual DeviceProcessSupport::Ptr processSupport() const; // Devices that can auto detect ports need not return a ports gathering method. Such devices can diff --git a/src/plugins/qnx/blackberrydeviceconfiguration.cpp b/src/plugins/qnx/blackberrydeviceconfiguration.cpp index 0d3ca734225..ace022255c0 100644 --- a/src/plugins/qnx/blackberrydeviceconfiguration.cpp +++ b/src/plugins/qnx/blackberrydeviceconfiguration.cpp @@ -143,7 +143,7 @@ QString BlackBerryDeviceConfiguration::displayNameForActionId(Core::Id actionId) return QString(); } -void BlackBerryDeviceConfiguration::executeAction(Core::Id actionId, QWidget *parent) const +void BlackBerryDeviceConfiguration::executeAction(Core::Id actionId, QWidget *parent) { Q_UNUSED(parent); diff --git a/src/plugins/qnx/blackberrydeviceconfiguration.h b/src/plugins/qnx/blackberrydeviceconfiguration.h index 50b35eb84a1..950233637c7 100644 --- a/src/plugins/qnx/blackberrydeviceconfiguration.h +++ b/src/plugins/qnx/blackberrydeviceconfiguration.h @@ -62,7 +62,7 @@ public: ProjectExplorer::IDeviceWidget *createWidget(); QList actionIds() const; QString displayNameForActionId(Core::Id actionId) const; - void executeAction(Core::Id actionId, QWidget *parent) const; + void executeAction(Core::Id actionId, QWidget *parent); ProjectExplorer::IDevice::Ptr clone() const; bool hasDeviceTester() const; diff --git a/src/plugins/remotelinux/linuxdevice.cpp b/src/plugins/remotelinux/linuxdevice.cpp index 64570c225f6..5d707b23545 100644 --- a/src/plugins/remotelinux/linuxdevice.cpp +++ b/src/plugins/remotelinux/linuxdevice.cpp @@ -217,7 +217,7 @@ QString LinuxDevice::displayNameForActionId(Core::Id actionId) const return QString(); // Can't happen. } -void LinuxDevice::executeAction(Core::Id actionId, QWidget *parent) const +void LinuxDevice::executeAction(Core::Id actionId, QWidget *parent) { QTC_ASSERT(actionIds().contains(actionId), return); diff --git a/src/plugins/remotelinux/linuxdevice.h b/src/plugins/remotelinux/linuxdevice.h index 85946e735ea..f19a2476b2d 100644 --- a/src/plugins/remotelinux/linuxdevice.h +++ b/src/plugins/remotelinux/linuxdevice.h @@ -66,7 +66,7 @@ public: ProjectExplorer::IDeviceWidget *createWidget(); QList actionIds() const; QString displayNameForActionId(Core::Id actionId) const; - void executeAction(Core::Id actionId, QWidget *parent) const; + void executeAction(Core::Id actionId, QWidget *parent); ProjectExplorer::IDevice::Ptr clone() const; ProjectExplorer::DeviceProcessSupport::Ptr processSupport() const;