From 0db7f3a783f3514f31a09025bff9ca86589a1ca0 Mon Sep 17 00:00:00 2001 From: Andrew Dyukov Date: Fri, 29 Jan 2010 21:09:28 +0200 Subject: Fixed major bug Bug EXT-4759 (Second incoming call notification doesn't appear if first call was canceled by caller). - Bug was caused by simply closing invite floater when call becomes invalid, so pending invite wasn't removed from IM manager and later this caused failure of check on which floater is shown. Added clearPendingAgentListUpdates() and clearPendingInvitation() before closure. --HG-- branch : product-engine --- indra/newview/llimview.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'indra/newview/llimview.cpp') diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 80d2778934..b7d4db853e 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -1733,6 +1733,9 @@ void LLIncomingCallDialog::onLifetimeExpired() { // close invitation if call is already not valid mLifetimeTimer.stop(); + LLUUID session_id = mPayload["session_id"].asUUID(); + gIMMgr->clearPendingAgentListUpdates(session_id); + gIMMgr->clearPendingInvitation(session_id); closeFloater(); } } -- cgit v1.3 From 7bcba326b32e1aca678edfb4495d1e2d4d44cb71 Mon Sep 17 00:00:00 2001 From: Eugene Mutavchi Date: Mon, 1 Feb 2010 18:25:58 +0200 Subject: Fixed major bug EXT-4798 (Voice notifications steal keyboard focus by default) --HG-- branch : product-engine --- indra/llui/lldockablefloater.cpp | 2 +- indra/llui/llfloater.h | 1 + indra/newview/llimview.cpp | 7 ++++--- 3 files changed, 6 insertions(+), 4 deletions(-) (limited to 'indra/newview/llimview.cpp') diff --git a/indra/llui/lldockablefloater.cpp b/indra/llui/lldockablefloater.cpp index 74438b184a..57baf28dab 100644 --- a/indra/llui/lldockablefloater.cpp +++ b/indra/llui/lldockablefloater.cpp @@ -146,7 +146,7 @@ void LLDockableFloater::setVisible(BOOL visible) if (visible) { - LLFloater::setFrontmost(TRUE); + LLFloater::setFrontmost(getAutoFocus()); } LLFloater::setVisible(visible); } diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h index 8c9dacbd20..2166d8db8a 100644 --- a/indra/llui/llfloater.h +++ b/indra/llui/llfloater.h @@ -301,6 +301,7 @@ protected: const LLRect& getExpandedRect() const { return mExpandedRect; } void setAutoFocus(BOOL focus) { mAutoFocus = focus; } // whether to automatically take focus when opened + BOOL getAutoFocus() const { return mAutoFocus; } LLDragHandle* getDragHandle() const { return mDragHandle; } void destroy() { die(); } // Don't call this directly. You probably want to call closeFloater() diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index b7d4db853e..db6b2041f8 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -1467,6 +1467,7 @@ LLCallDialog::LLCallDialog(const LLSD& payload) mPayload(payload), mLifetime(DEFAULT_LIFETIME) { + setAutoFocus(FALSE); } void LLCallDialog::getAllowedRect(LLRect& rect) @@ -1794,7 +1795,7 @@ BOOL LLIncomingCallDialog::postBuild() childSetAction("Accept", onAccept, this); childSetAction("Reject", onReject, this); childSetAction("Start IM", onStartIM, this); - childSetFocus("Accept"); + setDefaultBtn("Accept"); std::string notify_box_type = mPayload["notify_box_type"].asString(); if(notify_box_type != "VoiceInviteGroup" && notify_box_type != "VoiceInviteAdHoc") @@ -2424,7 +2425,7 @@ void LLIMMgr::inviteToSession( } else { - LLFloaterReg::showInstance("incoming_call", payload, TRUE); + LLFloaterReg::showInstance("incoming_call", payload, FALSE); } mPendingInvitations[session_id.asString()] = LLSD(); } @@ -2437,7 +2438,7 @@ void LLIMMgr::onInviteNameLookup(LLSD payload, const LLUUID& id, const std::stri std::string notify_box_type = payload["notify_box_type"].asString(); - LLFloaterReg::showInstance("incoming_call", payload, TRUE); + LLFloaterReg::showInstance("incoming_call", payload, FALSE); } //*TODO disconnects all sessions -- cgit v1.3