Fixed draggable spinboxes updating while the user is typing into them

This commit is contained in:
parax0
2016-03-21 16:51:35 -06:00
parent 9d782f5a4c
commit 87bf3dbfcc
6 changed files with 44 additions and 16 deletions

View File

@@ -7,6 +7,7 @@ WVectorEditor::WVectorEditor(QWidget *pParent) : QWidget(pParent)
mpSpinBoxX->setValue(0.0);
mpSpinBoxY->setValue(0.0);
mpSpinBoxZ->setValue(0.0);
mEditing = false;
}
WVectorEditor::WVectorEditor(const CVector3f& value, QWidget *pParent) : QWidget(pParent)
@@ -16,6 +17,7 @@ WVectorEditor::WVectorEditor(const CVector3f& value, QWidget *pParent) : QWidget
mpSpinBoxX->setValue((double) value.x);
mpSpinBoxY->setValue((double) value.y);
mpSpinBoxZ->setValue((double) value.z);
mEditing = false;
}
WVectorEditor::~WVectorEditor()
@@ -94,19 +96,27 @@ void WVectorEditor::SetLabelsHidden(bool hidden)
}
}
bool WVectorEditor::IsBeingDragged()
bool WVectorEditor::IsBeingDragged() const
{
return (mpSpinBoxX->IsBeingDragged() || mpSpinBoxY->IsBeingDragged() || mpSpinBoxZ->IsBeingDragged());
}
bool WVectorEditor::IsBeingEdited() const
{
return IsBeingDragged() || mEditing;
}
// ************ PUBLIC SLOTS ************
void WVectorEditor::SetX(double x)
{
mValue.x = (float) x;
mpSpinBoxX->blockSignals(true);
mpSpinBoxX->setValue((double) x);
mpSpinBoxX->blockSignals(false);
if (sender() != mpSpinBoxX)
{
mpSpinBoxX->blockSignals(true);
mpSpinBoxX->setValue((double) x);
mpSpinBoxX->blockSignals(false);
}
mEditing = true;
emit ValueChanged(mValue);
@@ -116,9 +126,12 @@ void WVectorEditor::SetY(double y)
{
mValue.y = (float) y;
mpSpinBoxY->blockSignals(true);
mpSpinBoxY->setValue((double) y);
mpSpinBoxY->blockSignals(false);
if (sender() != mpSpinBoxY)
{
mpSpinBoxY->blockSignals(true);
mpSpinBoxY->setValue((double) y);
mpSpinBoxY->blockSignals(false);
}
mEditing = true;
emit ValueChanged(mValue);
@@ -128,9 +141,12 @@ void WVectorEditor::SetZ(double z)
{
mValue.z = (float) z;
mpSpinBoxZ->blockSignals(true);
mpSpinBoxZ->setValue((double) z);
mpSpinBoxZ->blockSignals(false);
if (sender() != mpSpinBoxZ)
{
mpSpinBoxZ->blockSignals(true);
mpSpinBoxZ->setValue((double) z);
mpSpinBoxZ->blockSignals(false);
}
mEditing = true;
emit ValueChanged(mValue);
@@ -176,6 +192,9 @@ void WVectorEditor::SetupUI()
mpZLayout->addWidget(mpSpinBoxZ, 1);
mpZLayout->setSpacing(5);
setTabOrder(mpSpinBoxX, mpSpinBoxY);
setTabOrder(mpSpinBoxY, mpSpinBoxZ);
// Create and initialize widget layout
mpLayout = nullptr;
SetOrientation(Qt::Vertical);