From 2fd4ce55af8c68b8ae5eea72566cdb6d87d3a842 Mon Sep 17 00:00:00 2001 From: Rider Linden Date: Mon, 10 Sep 2018 11:22:36 -0700 Subject: MAINT-9115: When selecting no parcel or a parcel without a day cycle, close the day cycle editor if it is not dirty, if dirty just disable commit. --- indra/newview/llpanelenvironment.cpp | 27 +++++++++++++++++++++++++++ indra/newview/llpanelenvironment.h | 1 + 2 files changed, 28 insertions(+) diff --git a/indra/newview/llpanelenvironment.cpp b/indra/newview/llpanelenvironment.cpp index 51b2fa380f..e1676fbb13 100644 --- a/indra/newview/llpanelenvironment.cpp +++ b/indra/newview/llpanelenvironment.cpp @@ -141,6 +141,7 @@ void LLPanelEnvironmentInfo::refresh() return; setControlsEnabled(canEdit()); + if (!mCurrentEnvironment) { return; @@ -240,6 +241,7 @@ LLFloaterEditExtDayCycle * LLPanelEnvironmentInfo::getEditFloater(bool create) if (!editor) return nullptr; + mEditFloater = editor->getHandle(); } if (editor && !mCommitConnection.connected()) @@ -248,6 +250,30 @@ LLFloaterEditExtDayCycle * LLPanelEnvironmentInfo::getEditFloater(bool create) return editor; } + +void LLPanelEnvironmentInfo::updateEditFloater(const LLEnvironment::EnvironmentInfo::ptr_t &nextenv) +{ + LLFloaterEditExtDayCycle *dayeditor(getEditFloater(false)); + + if (!dayeditor) + return; + + if (!nextenv || !nextenv->mDayCycle) + { + if (mCommitConnection.connected()) + mCommitConnection.disconnect(); + + if (dayeditor->isDirty()) + dayeditor->refresh(); + else + dayeditor->closeFloater(); + } + else + { + /*TODO: Swap in new day to edit?*/ + } +} + void LLPanelEnvironmentInfo::setControlsEnabled(bool enabled) { S32 rdo_selection = getChild(RDG_ENVIRONMENT_SELECT)->getSelectedIndex(); @@ -272,6 +298,7 @@ void LLPanelEnvironmentInfo::setControlsEnabled(bool enabled) getChild(PNL_BUTTONS)->setVisible(!is_unavailable); getChild(PNL_DISABLED)->setVisible(is_unavailable); + updateEditFloater(mCurrentEnvironment); } void LLPanelEnvironmentInfo::setApplyProgress(bool started) diff --git a/indra/newview/llpanelenvironment.h b/indra/newview/llpanelenvironment.h index b867a7b61d..a8a1f018cf 100644 --- a/indra/newview/llpanelenvironment.h +++ b/indra/newview/llpanelenvironment.h @@ -121,6 +121,7 @@ protected: LLFloaterSettingsPicker * getSettingsPicker(); LLFloaterEditExtDayCycle * getEditFloater(bool create = true); + void updateEditFloater(const LLEnvironment::EnvironmentInfo::ptr_t &nextenv); LLEnvironment::EnvironmentInfo::ptr_t mCurrentEnvironment; S32 mCurrentParcelId; -- cgit v1.2.3