From 4e518758d78b4b60d1b123eafc7df5ff4b8c44c6 Mon Sep 17 00:00:00 2001 From: Mike Antipov Date: Tue, 5 Jan 2010 16:38:18 +0200 Subject: Fixed major bug EXT-3852 ([BSI] Tabs in Tabbed Instant Messaging do not auto focus the text field when clicked) -- the reason: LLTabContainer set focus to the first panel child; -- fix: capture mouse with Input field to avoid processing of the input focus by LLTabContainer. --HG-- branch : product-engine --- indra/newview/llimfloater.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'indra/newview') diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp index 259f629bdd..9bd5a8d5aa 100644 --- a/indra/newview/llimfloater.cpp +++ b/indra/newview/llimfloater.cpp @@ -120,6 +120,12 @@ void LLIMFloater::onFocusLost() void LLIMFloater::onFocusReceived() { LLIMModel::getInstance()->setActiveSessionID(mSessionID); + + // return focus to the input field when active tab in the multitab container is clicked. + if (isChatMultiTab() && mInputEditor) + { + mInputEditor->setFocus(TRUE); + } } // virtual @@ -618,6 +624,14 @@ void LLIMFloater::onInputEditorFocusReceived( LLFocusableElement* caller, void* //in disconnected state IM input editor should be disabled self->mInputEditor->setEnabled(!gDisconnected); } + + // when IM Floater is a part of the multitab container LLTabContainer set focus to the first + // child on tab button's mouse up. This leads input field lost focus. See EXT-3852. + if (isChatMultiTab()) + { + // So, let capture mouse tp prevent LLTabContainer set focus on the panel's first child. + gFocusMgr.setMouseCapture(self->mInputEditor); + } } // static -- cgit v1.2.3