forked from qt-creator/qt-creator
QmlDesigner: Start and end transaction for spin box dragging
Using the spin box focus is not safe enough, but using transactions on the dragging works nicely. Change-Id: Iffc15b4ca44cb473b257f58e548ff86ebd56bbf2 Reviewed-by: Henning Gründl <henning.gruendl@qt.io> Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
@@ -46,11 +46,30 @@ Item {
|
||||
width: 96
|
||||
implicitHeight: spinBox.height
|
||||
|
||||
onFocusChanged: transaction.end();
|
||||
|
||||
StudioControls.RealSpinBox {
|
||||
id: spinBox
|
||||
|
||||
onDragStarted: hideCursor();
|
||||
onDragEnded: restoreCursor();
|
||||
onDragStarted: {
|
||||
hideCursor();
|
||||
transaction.start();
|
||||
}
|
||||
|
||||
onDragEnded: {
|
||||
restoreCursor();
|
||||
transaction.end();
|
||||
}
|
||||
|
||||
onRealValueModified: {
|
||||
if (transaction.active())
|
||||
commitValue();
|
||||
}
|
||||
|
||||
function commitValue() {
|
||||
if (spinBox.backendValue.value !== spinBox.realValue)
|
||||
spinBox.backendValue.value = spinBox.realValue;
|
||||
}
|
||||
|
||||
property variant backendValue
|
||||
property bool hasSlider: wrapper.sliderIndicatorVisible
|
||||
@@ -77,9 +96,6 @@ Item {
|
||||
|
||||
labelColor: spinBox.edit ? StudioTheme.Values.themeTextColor : colorLogic.textColor
|
||||
|
||||
onCompressedRealValueModified: {
|
||||
if (spinBox.backendValue.value !== spinBox.realValue)
|
||||
spinBox.backendValue.value = spinBox.realValue;
|
||||
}
|
||||
onCompressedRealValueModified: commitValue()
|
||||
}
|
||||
}
|
||||
|
@@ -41,7 +41,7 @@ void PropertyEditorTransaction::start()
|
||||
if (m_rewriterTransaction.isValid())
|
||||
m_rewriterTransaction.commit();
|
||||
m_rewriterTransaction = m_propertyEditor->beginRewriterTransaction(QByteArrayLiteral("PropertyEditorTransaction::start"));
|
||||
m_timerId = startTimer(4000);
|
||||
m_timerId = startTimer(10000);
|
||||
}
|
||||
|
||||
void PropertyEditorTransaction::end()
|
||||
@@ -52,6 +52,11 @@ void PropertyEditorTransaction::end()
|
||||
}
|
||||
}
|
||||
|
||||
bool PropertyEditorTransaction::active() const
|
||||
{
|
||||
return m_rewriterTransaction.isValid();
|
||||
}
|
||||
|
||||
void PropertyEditorTransaction::timerEvent(QTimerEvent *timerEvent)
|
||||
{
|
||||
if (timerEvent->timerId() != m_timerId)
|
||||
|
@@ -38,6 +38,8 @@ public:
|
||||
Q_INVOKABLE void start();
|
||||
Q_INVOKABLE void end();
|
||||
|
||||
Q_INVOKABLE bool active() const;
|
||||
|
||||
protected:
|
||||
void timerEvent(QTimerEvent *event) override;
|
||||
|
||||
|
Reference in New Issue
Block a user