From 2fd4ce55af8c68b8ae5eea72566cdb6d87d3a842 Mon Sep 17 00:00:00 2001
From: Rider Linden <rider@lindenlab.com>
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(+)

(limited to 'indra/newview')

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<LLRadioGroup>(RDG_ENVIRONMENT_SELECT)->getSelectedIndex();
@@ -272,6 +298,7 @@ void LLPanelEnvironmentInfo::setControlsEnabled(bool enabled)
     getChild<LLUICtrl>(PNL_BUTTONS)->setVisible(!is_unavailable);
     getChild<LLUICtrl>(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