From 8126418ef3930ae35149e22472a25480638b8fa1 Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Sat, 20 Jul 2019 18:43:10 -0400 Subject: [PATCH] Sync with upstream to kill dependent floaters appropriately --- indra/llui/llfloater.cpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index f5fa3ece2..c86e4ae50 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -674,6 +674,31 @@ void LLFloater::close(bool app_quitting) } } + //If floater is a dependent, remove it from parent (dependee) + LLFloater* dependee = mDependeeHandle.get(); + if (dependee) + { + dependee->removeDependentFloater(this); + } + + // now close dependent floater + for (handle_set_iter_t dependent_it = mDependents.begin(); + dependent_it != mDependents.end(); ) + { + LLFloater* floaterp = dependent_it->get(); + if (floaterp) + { + ++dependent_it; + floaterp->close(app_quitting); + } + else + { + mDependents.erase(dependent_it++); + } + } + + cleanupHandles(); + if (!app_quitting && !getControlName().empty()) setControlValue(false);