From b742355130decb1b39d6f95871d4fb575cdd3d65 Mon Sep 17 00:00:00 2001
From: Austin Doupnik <austin@lindenlab.com>
Date: Thu, 9 Jul 2009 22:35:39 +0000
Subject: [PATCH] DEV-35167 Reference counted selection objects were being kept
 around by floaters that were being constructed, but weren't visible. Reviewed
 by Richard.

---
 indra/newview/llfloaterinspect.cpp    | 3 ++-
 indra/newview/llfloateropenobject.cpp | 2 +-
 indra/newview/llfloatertelehub.cpp    | 6 ++++--
 indra/newview/llfloatertelehub.h      | 1 +
 indra/newview/llviewerwindow.cpp      | 8 ++++----
 5 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/indra/newview/llfloaterinspect.cpp b/indra/newview/llfloaterinspect.cpp
index 9f8446210e8..972b3b95288 100644
--- a/indra/newview/llfloaterinspect.cpp
+++ b/indra/newview/llfloaterinspect.cpp
@@ -66,7 +66,6 @@ BOOL LLFloaterInspect::postBuild()
 //	childSetAction("button creator",onClickCreatorProfile, this);
 //	childSetCommitCallback("object_list", onSelectObject, NULL);
 	
-	mObjectSelection = LLSelectMgr::getInstance()->getSelection();
 	refresh();
 	
 	return TRUE;
@@ -120,6 +119,8 @@ void LLFloaterInspect::onOpen(const LLSD& key)
 	BOOL forcesel = LLSelectMgr::getInstance()->setForceSelection(TRUE);
 	LLToolMgr::getInstance()->setTransientTool(LLToolCompInspect::getInstance());
 	LLSelectMgr::getInstance()->setForceSelection(forcesel);	// restore previouis value
+	mObjectSelection = LLSelectMgr::getInstance()->getSelection();
+	refresh();
 }
 void LLFloaterInspect::onClickCreatorProfile()
 {
diff --git a/indra/newview/llfloateropenobject.cpp b/indra/newview/llfloateropenobject.cpp
index 09460e41add..ba23a58b372 100644
--- a/indra/newview/llfloateropenobject.cpp
+++ b/indra/newview/llfloateropenobject.cpp
@@ -74,7 +74,6 @@ LLFloaterOpenObject::~LLFloaterOpenObject()
 // virtual
 BOOL LLFloaterOpenObject::postBuild()
 {
-	mObjectSelection = LLSelectMgr::getInstance()->getEditSelection();
 	childSetTextArg("object_name", "[DESC]", std::string("Object") ); // *Note: probably do not want to translate this
 	mPanelInventory = getChild<LLPanelInventory>("object_contents");
 	return TRUE;
@@ -94,6 +93,7 @@ void LLFloaterOpenObject::onOpen(const LLSD& key)
 		closeFloater();
 		return;
 	}
+	mObjectSelection = LLSelectMgr::getInstance()->getEditSelection();
 }
 void LLFloaterOpenObject::refresh()
 {
diff --git a/indra/newview/llfloatertelehub.cpp b/indra/newview/llfloatertelehub.cpp
index 1d2d3b98f24..174350ddf40 100644
--- a/indra/newview/llfloatertelehub.cpp
+++ b/indra/newview/llfloatertelehub.cpp
@@ -93,8 +93,6 @@ LLFloaterTelehub::LLFloaterTelehub()
 	gMessageSystem->setHandlerFunc("TelehubInfo", processTelehubInfo);
 
 	LLUICtrlFactory::getInstance()->buildFloater(sInstance, "floater_telehub.xml");
-
-	mObjectSelection = LLSelectMgr::getInstance()->getEditSelection();
 }
 BOOL LLFloaterTelehub::postBuild()
 {
@@ -113,6 +111,10 @@ BOOL LLFloaterTelehub::postBuild()
 
 	return TRUE;
 }
+void LLFloaterTelehub::onOpen(const LLSD& key)
+{
+	mObjectSelection = LLSelectMgr::getInstance()->getEditSelection();
+}
 LLFloaterTelehub::~LLFloaterTelehub()
 {
 	sInstance = NULL;
diff --git a/indra/newview/llfloatertelehub.h b/indra/newview/llfloatertelehub.h
index b639338dfce..86749dcc0b7 100644
--- a/indra/newview/llfloatertelehub.h
+++ b/indra/newview/llfloatertelehub.h
@@ -49,6 +49,7 @@ class LLFloaterTelehub : public LLFloater
 
 	virtual void draw();
 	/*virtual*/	BOOL	postBuild();
+	void onOpen(const LLSD& key);
 	static BOOL renderBeacons();
 	static void addBeacons();
 
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index e690ae5f6fc..1ee58770853 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -2868,10 +2868,10 @@ void LLViewerWindow::updateKeyboardFocus()
 	}
 
 	// last ditch force of edit menu to selection manager
-	if (LLEditMenuHandler::gEditMenuHandler == NULL && LLSelectMgr::getInstance()->getSelection()->getObjectCount())
-	{
-		LLEditMenuHandler::gEditMenuHandler = LLSelectMgr::getInstance();
-	}
+//	if (LLEditMenuHandler::gEditMenuHandler == NULL && LLSelectMgr::getInstance()->getSelection()->getObjectCount())
+//	{
+//		LLEditMenuHandler::gEditMenuHandler = LLSelectMgr::getInstance();
+//	}
 
 	if (gFloaterView->getCycleMode())
 	{
-- 
GitLab