summaryrefslogtreecommitdiffstats
path: root/src/input/frontend/qactioninput.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/input/frontend/qactioninput.cpp')
-rw-r--r--src/input/frontend/qactioninput.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/input/frontend/qactioninput.cpp b/src/input/frontend/qactioninput.cpp
index d3441d284..0be75ec07 100644
--- a/src/input/frontend/qactioninput.cpp
+++ b/src/input/frontend/qactioninput.cpp
@@ -137,12 +137,20 @@ void QActionInput::setSourceDevice(QAbstractPhysicalDevice *sourceDevice)
Q_D(QActionInput);
if (d->m_sourceDevice != sourceDevice) {
+ if (d->m_sourceDevice)
+ d->unregisterDestructionHelper(d->m_sourceDevice);
+
// Check and set parent if needed
// to force creation in the backend
if (sourceDevice && !sourceDevice->parent())
sourceDevice->setParent(this);
d->m_sourceDevice = sourceDevice;
+
+ // Ensures proper bookkeeping
+ if (d->m_sourceDevice)
+ d->registerDestructionHelper(sourceDevice, &QActionInput::setSourceDevice, d->m_sourceDevice);
+
emit sourceDeviceChanged(sourceDevice);
}
}