diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index a17ba79078bf6658736d853e96a82cb5ce708542..e5cc2fce881c5b158d82b23bce432d5ff2f3502d 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -50,7 +50,6 @@ LLBottomTray::LLBottomTray(const LLSD&)
 	mSpeakBtn(NULL),
 	mNearbyChatBar(NULL),
 	mToolbarStack(NULL)
-
 {
 	mFactoryMap["chat_bar"] = LLCallbackMap(LLBottomTray::createNearbyChatBar, NULL);
 
diff --git a/indra/newview/llspeakbutton.cpp b/indra/newview/llspeakbutton.cpp
index cd765b0338fe197c0a1d7af4b95a364bdfe8cc16..312d7050b91bba299eaa32546fe42586b87bb93d 100644
--- a/indra/newview/llspeakbutton.cpp
+++ b/indra/newview/llspeakbutton.cpp
@@ -62,6 +62,15 @@ LLSpeakButton::Params::Params()
 	// See widgets/talk_button.xml
 }
 
+void LLSpeakButton::draw()
+{
+	// gVoiceClient is the authoritative global source of info regarding our open-mic state, we merely reflect that state.
+	bool openmic = gVoiceClient->getUserPTTState();
+	mSpeakBtn->setToggleState(openmic);
+	llinfos << "mic state " << int(openmic) << llendl;
+	LLUICtrl::draw();
+}
+
 LLSpeakButton::LLSpeakButton(const Params& p)
 : LLUICtrl(p)
 , mPrivateCallPanel(NULL)
diff --git a/indra/newview/llspeakbutton.h b/indra/newview/llspeakbutton.h
index f59ded21333eb8b07718f9bcbe02f605a9b31b1d..48a4d5880b246bb4d8eeebc4155b8ebb3ee66cd9 100644
--- a/indra/newview/llspeakbutton.h
+++ b/indra/newview/llspeakbutton.h
@@ -61,6 +61,7 @@ class LLSpeakButton : public LLUICtrl
 	};
 
 	/*virtual*/ ~LLSpeakButton();
+	/*virtual*/ void draw();
 
 	void setSpeakBtnToggleState(bool state);