void LLSpinCtrl::onEditorCommit( const LLSD& data ) { BOOL success = FALSE; std::string text = mEditor->getText(); if( LLLineEditor::postvalidateFloat( text ) ) { LLLocale locale(LLLocale::USER_LOCALE); F32 val = (F32) atof(text.c_str()); if (val < mMinValue) val = mMinValue; if (val > mMaxValue) val = mMaxValue; F32 saved_val = getValueF32(); setValue(val); if( !mValidateSignal || (*mValidateSignal)( this, val ) ) { success = TRUE; onCommit(); } else { setValue(saved_val); } } updateEditor(); if( !success ) { reportInvalidData(); } }
void LLSpinCtrl::onDownBtn( const LLSD& data ) { if( getEnabled() ) { std::string text = mEditor->getText(); if( LLLineEditor::postvalidateFloat( text ) ) { LLLocale locale(LLLocale::USER_LOCALE); F32 cur_val = (F32) atof(text.c_str()); F32 val = cur_val - mIncrement; val = clamp_precision(val, mPrecision); val = llmax( val, mMinValue ); if (val < mMinValue) val = mMinValue; if (val > mMaxValue) val = mMaxValue; F32 saved_val = (F32)getValue().asReal(); setValue(val); if( mValidateSignal && !(*mValidateSignal)( this, val ) ) { setValue( saved_val ); reportInvalidData(); updateEditor(); return; } updateEditor(); onCommit(); } } }
void LLSpinCtrl::onUpBtn( const LLSD& data ) { if( getEnabled() ) { std::string text = mEditor->getText(); if( LLLineEditor::postvalidateFloat( text ) ) { LLLocale locale(LLLocale::USER_LOCALE); F32 cur_val = (F32) atof(text.c_str()); // use getValue()/setValue() to force reload from/to control //alt/ctrl/shift keys modify increment F32 inc = mIncrement; if(gKeyboard->getKeyDown(KEY_ALT)) inc *= 10.f; else if(gKeyboard->getKeyDown(KEY_CONTROL)) inc *= 0.1f; else if(gKeyboard->getKeyDown(KEY_SHIFT)) inc *= 0.01f; F32 val = cur_val + inc; val = clamp_precision(val, mPrecision); val = llmin( val, mMaxValue ); if (val < mMinValue) val = mMinValue; if (val > mMaxValue) val = mMaxValue; F32 saved_val = (F32)getValue().asReal(); setValue(val); if( mValidateSignal && !(*mValidateSignal)( this, val ) ) { setValue( saved_val ); reportInvalidData(); updateEditor(); return; } updateEditor(); onCommit(); } } }