diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp
index e1bea086b2ab39a2c272c782c1776da0348123f9..f259e8027ea4fcfc0296a91337aa9417f526374a 100644
--- a/indra/llui/llbutton.cpp
+++ b/indra/llui/llbutton.cpp
@@ -1015,6 +1015,7 @@ void LLButton::resize(LLUIString label)
 				min_width += overlay_width + mImgOverlayLabelSpace;
 				break;
 			case LLFontGL::HCENTER:
+				min_width = llmax(min_width, overlay_width + mLeftHPad + mRightHPad);
 				break;
 			default:
 				// draw nothing
diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp
index 57a915164983e6bc3398a78655b941be69203e88..c5219b11e86f643fc5db6147c74a8994ecdea1f4 100644
--- a/indra/llui/lltoolbar.cpp
+++ b/indra/llui/lltoolbar.cpp
@@ -207,7 +207,7 @@ bool LLToolBar::addCommand(const LLCommandId& commandId)
 	if (add_command)
 	{
 		mButtonCommands.push_back(commandId);
-		createButtons();
+		createButton(commandId);
 	}
 
 	return add_command;
@@ -498,19 +498,25 @@ void LLToolBar::createButtons()
 	
 	BOOST_FOREACH(LLCommandId& command_id, mButtonCommands)
 	{
-		LLCommand* commandp = LLCommandManager::instance().getCommand(command_id);
-		if (!commandp) continue;
+		createButton(command_id);
+	}
 
-		LLToolBarButton::Params button_p;
-		button_p.label = LLTrans::getString(commandp->labelRef());
-		button_p.image_overlay = LLUI::getUIImage(commandp->icon());
-		button_p.overwriteFrom(mButtonParams[mButtonType]);
-		LLToolBarButton* button = LLUICtrlFactory::create<LLToolBarButton>(button_p);
+}
 
-		mButtons.push_back(button);
-		mButtonPanel->addChild(button);
-	}
+void LLToolBar::createButton(const LLCommandId& id)
+{
+	LLCommand* commandp = LLCommandManager::instance().getCommand(id);
+	if (!commandp) return;
+
+	LLToolBarButton::Params button_p;
+	button_p.label = LLTrans::getString(commandp->labelRef());
+	button_p.tool_tip = button_p.label();
+	button_p.image_overlay = LLUI::getUIImage(commandp->icon());
+	button_p.overwriteFrom(mButtonParams[mButtonType]);
+	LLToolBarButton* button = LLUICtrlFactory::create<LLToolBarButton>(button_p);
+
+	mButtons.push_back(button);
+	mButtonPanel->addChild(button);
 
 	mNeedsLayout = true;
 }
-
diff --git a/indra/llui/lltoolbar.h b/indra/llui/lltoolbar.h
index 75ae499a3dbf25ce0a198de093c63edd6fe3472e..02db58128c81e0c214d53f3227b5a3b27c21986d 100644
--- a/indra/llui/lltoolbar.h
+++ b/indra/llui/lltoolbar.h
@@ -135,6 +135,7 @@ class LLToolBar
 	void createContextMenu();
 	void updateLayoutAsNeeded();
 	void createButtons();
+	void createButton(const LLCommandId& id);
 	void resizeButtonsInRow(std::vector<LLToolBarButton*>& buttons_in_row, S32 max_row_girth);
 	BOOL isSettingChecked(const LLSD& userdata);
 	void onSettingEnable(const LLSD& userdata);