diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index f1de4e298246769f0f85b16e6bc16df06eb655ff..f646bcccb581b85fa9d7708cca7aee261925230e 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -459,6 +459,14 @@ LLIMChiclet::LLIMChiclet(const LLIMChiclet::Params& p)
 	enableCounterControl(p.enable_counter);
 }
 
+/* virtual*/
+BOOL LLIMChiclet::postBuild()
+{
+	mChicletButton = getChild<LLButton>("chiclet_button");
+	mChicletButton->setCommitCallback(boost::bind(&LLIMChiclet::onMouseDown, this));
+	mChicletButton->setDoubleClickCallback(boost::bind(&LLIMChiclet::onMouseDown, this));
+	return TRUE;
+}
 void LLIMChiclet::setShowSpeaker(bool show)
 {
 	bool needs_resize = getShowSpeaker() != show;
@@ -583,12 +591,6 @@ void LLIMChiclet::setToggleState(bool toggle)
 	mChicletButton->setToggleState(toggle);
 }
 
-BOOL LLIMChiclet::handleMouseDown(S32 x, S32 y, MASK mask)
-{
-	onMouseDown();
-	return LLChiclet::handleMouseDown(x, y, mask);
-}
-
 void LLIMChiclet::draw()
 {
 	LLUICtrl::draw();
@@ -1905,12 +1907,6 @@ void LLScriptChiclet::onMouseDown()
 	LLScriptFloaterManager::getInstance()->toggleScriptFloater(getSessionId());
 }
 
-BOOL LLScriptChiclet::handleMouseDown(S32 x, S32 y, MASK mask)
-{
-	onMouseDown();
-	return LLChiclet::handleMouseDown(x, y, mask);
-}
-
 //////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////
@@ -1975,10 +1971,4 @@ void LLInvOfferChiclet::onMouseDown()
 	LLScriptFloaterManager::instance().toggleScriptFloater(getSessionId());
 }
 
-BOOL LLInvOfferChiclet::handleMouseDown(S32 x, S32 y, MASK mask)
-{
-	onMouseDown();
-	return LLChiclet::handleMouseDown(x, y, mask);
-}
-
 // EOF
diff --git a/indra/newview/llchiclet.h b/indra/newview/llchiclet.h
index bb4846aa57504e66f992a87deb04698ae5f0e38e..b006ae342073ae9f6f6f863ddf269b6598d0b897 100644
--- a/indra/newview/llchiclet.h
+++ b/indra/newview/llchiclet.h
@@ -327,6 +327,10 @@ class LLIMChiclet : public LLChiclet
 	
 	virtual ~LLIMChiclet() {};
 
+	/**
+	 * It is used for default setting up of chicklet:click handler, etc.  
+	 */
+	BOOL postBuild();
 	/**
 	 * Sets IM session name. This name will be displayed in chiclet tooltip.
 	 */
@@ -428,8 +432,6 @@ class LLIMChiclet : public LLChiclet
 
 	LLIMChiclet(const LLIMChiclet::Params& p);
 
-	/*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask);
-
 protected:
 
 	bool mShowSpeaker;
@@ -640,11 +642,6 @@ class LLScriptChiclet : public LLIMChiclet
 	 */
 	/*virtual*/ void onMouseDown();
 
-	/**
-	 * Override default handler
-	 */
-	/*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask);
-
 protected:
 
 	LLScriptChiclet(const Params&);
@@ -684,12 +681,6 @@ class LLInvOfferChiclet: public LLIMChiclet
 	 */
 	/*virtual*/ void onMouseDown();
 
-	/**
-	 * Override default handler
-	 */
-	/*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask);
-
-
 protected:
 	LLInvOfferChiclet(const Params&);
 	friend class LLUICtrlFactory;