void LLSpinCtrl::onEditorCommit( LLUICtrl* caller, void *userdata ) { BOOL success = FALSE; LLSpinCtrl* self = (LLSpinCtrl*) userdata; llassert( caller == self->mEditor ); if( self->mEditor->evaluateFloat() ) { std::string text = self->mEditor->getText(); LLLocale locale(LLLocale::USER_LOCALE); F32 val = (F32) atof(text.c_str()); if (val < self->mMinValue) val = self->mMinValue; if (val > self->mMaxValue) val = self->mMaxValue; if( self->mValidateCallback ) { F32 saved_val = self->mValue; self->mValue = val; if( self->mValidateCallback( self, self->mCallbackUserData ) ) { success = TRUE; self->onCommit(); } else { self->mValue = saved_val; } } else { self->mValue = val; self->onCommit(); success = TRUE; } } else { // We want to update the editor in case it fails while blanking -- MC success = TRUE; } if( success ) { self->updateEditor(); } else { self->reportInvalidData(); } }
// static void LLSpinCtrl::onDownBtn( void *userdata ) { LLSpinCtrl* self = (LLSpinCtrl*) userdata; if( self->getEnabled() ) { F32 val = (F32)self->getValue().asReal() - self->mIncrement; val = clamp_precision(val, self->mPrecision); val = llmax( val, self->mMinValue ); if( self->mValidateCallback ) { F32 saved_val = (F32)self->getValue().asReal(); self->setValue(val); if( !self->mValidateCallback( self, self->mCallbackUserData ) ) { self->setValue( saved_val ); self->reportInvalidData(); self->updateEditor(); return; } } else { self->setValue(val); } self->updateEditor(); self->onCommit(); } }
// static void LLSpinCtrl::onUpBtn( void *userdata ) { LLSpinCtrl* self = (LLSpinCtrl*) userdata; if( self->getEnabled() ) { // use getValue()/setValue() to force reload from/to control F32 val = (F32)self->getValue().asReal() + self->mIncrement; val = clamp_precision(val, self->mPrecision); val = llmin( val, self->mMaxValue ); if( self->mValidateCallback ) { F32 saved_val = (F32)self->getValue().asReal(); self->setValue(val); if( !self->mValidateCallback( self, self->mCallbackUserData ) ) { self->setValue( saved_val ); self->reportInvalidData(); self->updateEditor(); return; } } else { self->setValue(val); } self->updateEditor(); self->onCommit(); } }
// static void LLSpinCtrl::onDownBtn( void *userdata ) { LLSpinCtrl* self = (LLSpinCtrl*) userdata; if( self->getEnabled() ) { F32 val = (F32)self->getValue().asReal() - get_increment(self->mIncrement, self->mPrecision); val = clamp_precision(val, self->mPrecision); val = llmax( val, self->mMinValue ); if (val < self->mMinValue) val = self->mMinValue; if (val > self->mMaxValue) val = self->mMaxValue; F32 saved_val = (F32)self->getValue().asReal(); self->setValue(val); if( (self->mValidateCallback && !self->mValidateCallback( self, self->mCallbackUserData ) ) || (self->mValidateSignal && !(*(self->mValidateSignal))( self, val ) )) { self->setValue( saved_val ); self->reportInvalidData(); self->updateEditor(); return; } self->updateEditor(); self->onCommit(); } }
// static void LLSpinCtrl::onDownBtn( void *userdata ) { LLSpinCtrl* self = (LLSpinCtrl*) userdata; if( self->getEnabled() ) { F32 inc = self->mIncrement; if(gKeyboard->getKeyDown(KEY_CONTROL))inc = inc * 0.10; else if(gKeyboard->getKeyDown(KEY_SHIFT))inc = inc * 0.01; F32 val = (F32)self->getValue().asReal() - inc; val = clamp_precision(val, self->mPrecision); val = llmax( val, self->mMinValue ); if( self->mValidateCallback ) { F32 saved_val = (F32)self->getValue().asReal(); self->setValue(val); if( !self->mValidateCallback( self, self->mCallbackUserData ) ) { self->setValue( saved_val ); self->reportInvalidData(); self->updateEditor(); return; } } else { self->setValue(val); } self->updateEditor(); self->onCommit(); } }
void LLSpinCtrl::onEditorCommit( LLUICtrl* caller, void *userdata ) { BOOL success = FALSE; LLSpinCtrl* self = (LLSpinCtrl*) userdata; llassert( caller == self->mEditor ); std::string text = self->mEditor->getText(); if( LLLineEditor::postvalidateFloat( text ) ) { LLLocale locale(LLLocale::USER_LOCALE); F32 val = (F32) atof(text.c_str()); if (val < self->mMinValue) val = self->mMinValue; if (val > self->mMaxValue) val = self->mMaxValue; if( self->mValidateCallback ) { F32 saved_val = self->mValue; self->mValue = val; if( self->mValidateCallback( self, self->mCallbackUserData ) ) { success = TRUE; self->onCommit(); } else { self->mValue = saved_val; } } else { self->mValue = val; self->onCommit(); success = TRUE; } } self->updateEditor(); if( !success ) { self->reportInvalidData(); } }