MAINT-1401 FIXED Pressing 'Cancel' button in 'Color picker' dialog changes color of prim to the previous

master
Mnikolenko ProductEngine 2015-12-23 15:18:18 +02:00
parent 68e41999d5
commit 6901fea203
3 changed files with 19 additions and 4 deletions

View File

@ -292,7 +292,7 @@ void LLColorSwatchCtrl::onColorChanged ( void* data, EColorPickOp pick_op )
subject->mColor.mV[VALPHA] ); // keep current alpha
subject->mColor = updatedColor;
subject->setControlValue(updatedColor.getValue());
pickerp->setRevertOnCancel(TRUE);
if (pick_op == COLOR_CANCEL && subject->mOnCancelCallback)
{
subject->mOnCancelCallback( subject, LLSD());

View File

@ -173,6 +173,7 @@ void LLFloaterColorPicker::showUI ()
openFloater(getKey());
setVisible ( TRUE );
setFocus ( TRUE );
setRevertOnCancel(FALSE);
// HACK: if system color picker is required - close the SL one we made and use default system dialog
if ( gSavedSettings.getBOOL ( "UseDefaultColorPicker" ) )
@ -390,7 +391,10 @@ void LLFloaterColorPicker::onClickCancel ( void* data )
if ( self )
{
self->cancelSelection ();
if(self->getRevertOnCancel())
{
self->cancelSelection ();
}
self->closeFloater();
}
}
@ -447,8 +451,7 @@ void LLFloaterColorPicker::onImmediateCheck( LLUICtrl* ctrl, void* data)
if (self)
{
gSavedSettings.setBOOL("ApplyColorImmediately", self->mApplyImmediateCheck->get());
if (self->mApplyImmediateCheck->get())
if (self->mApplyImmediateCheck->get() && self->isColorChanged())
{
LLColorSwatchCtrl::onColorChanged ( self->getSwatch (), LLColorSwatchCtrl::COLOR_CHANGE );
}
@ -473,6 +476,11 @@ F32 LLFloaterColorPicker::getSwatchTransparency()
return getTransparencyType() == TT_ACTIVE ? 1.f : LLFloater::getCurrentTransparency();
}
BOOL LLFloaterColorPicker::isColorChanged()
{
return ((getOrigR() != getCurR()) || (getOrigG() != getCurG()) || (getOrigB() != getCurB()));
}
//////////////////////////////////////////////////////////////////////////////
//
void LLFloaterColorPicker::draw()

View File

@ -104,6 +104,11 @@ class LLFloaterColorPicker
void setMouseDownInSwatch (BOOL mouse_down_in_swatch);
BOOL getMouseDownInSwatch () { return mMouseDownInSwatch; }
void setRevertOnCancel (BOOL revertOnCancel) { mRevertOnCancel = revertOnCancel; };
BOOL getRevertOnCancel () { return mRevertOnCancel; }
BOOL isColorChanged ();
// called when text entries (RGB/HSL etc.) are changed by user
void onTextEntryChanged ( LLUICtrl* ctrl );
@ -144,6 +149,8 @@ class LLFloaterColorPicker
BOOL mMouseDownInHueRegion;
BOOL mMouseDownInSwatch;
BOOL mRevertOnCancel;
const S32 mRGBViewerImageLeft;
const S32 mRGBViewerImageTop;
const S32 mRGBViewerImageWidth;