diff --git a/indra/newview/llfloaterbump.cpp b/indra/newview/llfloaterbump.cpp
index 34904cf7eda2fc38695e57d85ba148cfed3cdff5..957c91b2263eb4f16e74ccfc2197671711158d4c 100755
--- a/indra/newview/llfloaterbump.cpp
+++ b/indra/newview/llfloaterbump.cpp
@@ -32,6 +32,7 @@
 
 #include "llavataractions.h"
 #include "llfloaterbump.h"
+#include "llfloaterreg.h"
 #include "llfloaterreporter.h"
 #include "llmutelist.h"
 #include "llpanelblockedlist.h"
@@ -87,11 +88,11 @@ BOOL LLFloaterBump::postBuild()
 // virtual
 void LLFloaterBump::onOpen(const LLSD& key)
 {
-	mNames.clear();
-	mList->deleteAllItems();
-
 	if (gMeanCollisionList.empty())
 	{
+		mNames.clear();
+		mList->deleteAllItems();
+
 		std::string none_detected = getString("none_detected");
 		LLSD row;
 		row["columns"][0]["value"] = none_detected;
@@ -100,12 +101,20 @@ void LLFloaterBump::onOpen(const LLSD& key)
 	}
 	else
 	{
-		for (mean_collision_list_t::iterator iter = gMeanCollisionList.begin();
-			 iter != gMeanCollisionList.end(); ++iter)
-		{
-			LLMeanCollisionData *mcd = *iter;
-			add(mList, mcd);
-		}
+		populateCollisionList();
+	}
+}
+
+void LLFloaterBump::populateCollisionList()
+{
+	mNames.clear();
+	mList->deleteAllItems();
+
+	for (mean_collision_list_t::iterator iter = gMeanCollisionList.begin();
+				 iter != gMeanCollisionList.end(); ++iter)
+	{
+		LLMeanCollisionData *mcd = *iter;
+		add(mList, mcd);
 	}
 }
 
@@ -247,3 +256,8 @@ void LLFloaterBump::inviteToGroup()
 {
 	LLAvatarActions::inviteToGroup(mItemUUID);
 }
+
+LLFloaterBump* LLFloaterBump::getInstance()
+{
+	return LLFloaterReg::getTypedInstance<LLFloaterBump>("bumps");
+}
diff --git a/indra/newview/llfloaterbump.h b/indra/newview/llfloaterbump.h
index 11b7db9fee054296c83dc9fe08657dfa2143425c..ce52c75255fd42f447a560e1bfaa7a16047b854d 100755
--- a/indra/newview/llfloaterbump.h
+++ b/indra/newview/llfloaterbump.h
@@ -46,6 +46,10 @@ class LLFloaterBump
 	/*virtual*/	BOOL postBuild();
 	/*virtual*/ void onOpen(const LLSD& key);
 	
+	static LLFloaterBump* getInstance();
+
+	void populateCollisionList();
+
 	void startIM();
 	void startCall();
 	void reportAbuse();
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 4e9144ac2691c99820c4203d77f06806f2bfe606..f5350a0b309faa7bfdc8a5742b27769458f7801e 100755
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -57,6 +57,7 @@
 #include "llcallingcard.h"
 #include "llbuycurrencyhtml.h"
 #include "llfirstuse.h"
+#include "llfloaterbump.h"
 #include "llfloaterbuyland.h"
 #include "llfloaterland.h"
 #include "llfloaterregioninfo.h"
@@ -6215,6 +6216,11 @@ void process_mean_collision_alert_message(LLMessageSystem *msgsystem, void **use
 			gCacheName->get(perp, false, boost::bind(&mean_name_callback, _1, _2, _3));
 		}
 	}
+	LLFloaterBump* bumps_floater = LLFloaterBump::getInstance();
+	if(bumps_floater && bumps_floater->isInVisibleChain())
+	{
+		bumps_floater->populateCollisionList();
+	}
 }
 
 void process_frozen_message(LLMessageSystem *msgsystem, void **user_data)
diff --git a/indra/newview/skins/default/xui/en/floater_bumps.xml b/indra/newview/skins/default/xui/en/floater_bumps.xml
index 1f2fe62b3cf85edb2dd0daa44f8173c75356ebb6..126e3aac480a659a242d1fc54f6e54b808ad9b1f 100755
--- a/indra/newview/skins/default/xui/en/floater_bumps.xml
+++ b/indra/newview/skins/default/xui/en/floater_bumps.xml
@@ -7,7 +7,7 @@
  help_topic="floater_bumps"
  save_rect="true"
  title="BUMPS, PUSHES &amp; HITS"
- width="400">
+ width="420">
     <floater.string
      name="none_detected">
         None detected
@@ -34,7 +34,7 @@
     </floater.string>
     <floater.string
      name="timeStr">
-        [[hour,datetime,slt]:[min,datetime,slt]]
+        [[hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt]]
     </floater.string>
     <scroll_list
      draw_border="false"
@@ -45,5 +45,5 @@
      multi_select="true"
      name="bump_list"
      top="20"
-     width="388" />
+     width="408" />
 </floater>