diff --git a/plotjuggler_plugins/ToolboxQuaternion/toolbox_quaternion.cpp b/plotjuggler_plugins/ToolboxQuaternion/toolbox_quaternion.cpp index 443513ca8..658212ba5 100644 --- a/plotjuggler_plugins/ToolboxQuaternion/toolbox_quaternion.cpp +++ b/plotjuggler_plugins/ToolboxQuaternion/toolbox_quaternion.cpp @@ -118,14 +118,22 @@ bool ToolboxQuaternion::eventFilter(QObject* obj, QEvent* ev) { autoFill(_dragging_curve.left(_dragging_curve.size() - 1)); } + + // Drag & drop for PX4 quaternions (order is WXYZ with entries labeled q.0X) + if ((obj == ui->lineEditX && _dragging_curve.endsWith(".01")) || + (obj == ui->lineEditY && _dragging_curve.endsWith(".02")) || + (obj == ui->lineEditZ && _dragging_curve.endsWith(".03")) || + (obj == ui->lineEditW && _dragging_curve.endsWith(".00"))) + { + autoFill(_dragging_curve.left(_dragging_curve.size() - 3), { ".01", ".02", ".03", ".00" }); + } } return false; } -void ToolboxQuaternion::autoFill(QString prefix) +void ToolboxQuaternion::autoFill(QString prefix, QStringList suffix) { - QStringList suffix = { "x", "y", "z", "w" }; std::array lineEdits = { ui->lineEditX, ui->lineEditY, ui->lineEditZ, ui->lineEditW }; QStringList names; diff --git a/plotjuggler_plugins/ToolboxQuaternion/toolbox_quaternion.h b/plotjuggler_plugins/ToolboxQuaternion/toolbox_quaternion.h index f176f3db0..b1d2e0247 100644 --- a/plotjuggler_plugins/ToolboxQuaternion/toolbox_quaternion.h +++ b/plotjuggler_plugins/ToolboxQuaternion/toolbox_quaternion.h @@ -51,7 +51,7 @@ private slots: QString _dragging_curve; - void autoFill(QString prefix); + void autoFill(QString prefix, QStringList suffix = { "x", "y", "z", "w" }); PJ::PlotWidgetBase* _plot_widget = nullptr;