diff --git a/indra/newview/llsidepaneltaskinfo.cpp b/indra/newview/llsidepaneltaskinfo.cpp
index 6ebe55e3625baa155cbd3d140bf4b7b6f8f460f3..e76397671bfe790c92c9df8a6f9a0f06f29bcb56 100644
--- a/indra/newview/llsidepaneltaskinfo.cpp
+++ b/indra/newview/llsidepaneltaskinfo.cpp
@@ -125,10 +125,8 @@ BOOL LLSidepanelTaskInfo::postBuild()
 	return TRUE;
 }
 
-// virtual
-void LLSidepanelTaskInfo::setVisible(BOOL visible)
+/*virtual*/ void LLSidepanelTaskInfo::handleVisibilityChange ( BOOL visible )
 {
-	LLPanel::setVisible(visible);
 	if (visible)
 	{
 		sActivePanel = this;
@@ -137,9 +135,12 @@ void LLSidepanelTaskInfo::setVisible(BOOL visible)
 	else
 	{
 		sActivePanel = NULL;
+		// drop selection reference
+		mObjectSelection = NULL;
 	}
 }
 
+
 void LLSidepanelTaskInfo::disableAll()
 {
 	childSetEnabled("perm_modify",						FALSE);
diff --git a/indra/newview/llsidepaneltaskinfo.h b/indra/newview/llsidepaneltaskinfo.h
index e41627435fdc852d64f2702c505c7953cdd26249..15274c90db7ef00ef5a4eddde27b1361bb36d5de 100644
--- a/indra/newview/llsidepaneltaskinfo.h
+++ b/indra/newview/llsidepaneltaskinfo.h
@@ -54,7 +54,7 @@ class LLSidepanelTaskInfo : public LLSidepanelInventorySubpanel
 	virtual ~LLSidepanelTaskInfo();
 
 	/*virtual*/	BOOL postBuild();
-	/*virtual*/ void setVisible(BOOL visible);
+	/*virtual*/ void handleVisibilityChange ( BOOL new_visibility );
 
 	void setObjectSelection(LLObjectSelectionHandle selection);