diff options
author | James Cook <james@lindenlab.com> | 2009-08-19 18:43:46 +0000 |
---|---|---|
committer | James Cook <james@lindenlab.com> | 2009-08-19 18:43:46 +0000 |
commit | 6bcf7a6fe64457ad5f1dc2939820e45182476842 (patch) | |
tree | 5764c94eaea908cbf347acdb1c6207b5b03a1a61 /indra | |
parent | b4f174f9188e18ab66e0246ebd0bcf68fba9f067 (diff) |
EXT-592 IM chat is not updated for the first text message. PE added LLIMFloater::toggle() to show and hide the IM window when chiclets were clicked. This was not invoking the custom logic in LLIMFloater::show() that causes the message list to update. Reviewed with Leyla.
Diffstat (limited to 'indra')
-rw-r--r-- | indra/newview/llimpanel.cpp | 17 | ||||
-rw-r--r-- | indra/newview/llimpanel.h | 4 |
2 files changed, 18 insertions, 3 deletions
diff --git a/indra/newview/llimpanel.cpp b/indra/newview/llimpanel.cpp index 65bf1176ff..954da8abd7 100644 --- a/indra/newview/llimpanel.cpp +++ b/indra/newview/llimpanel.cpp @@ -2232,9 +2232,22 @@ LLIMFloater* LLIMFloater::show(const LLUUID& session_id) } //static -BOOL LLIMFloater::toggle(const LLUUID& session_id) +bool LLIMFloater::toggle(const LLUUID& session_id) { - return LLFloaterReg::toggleInstance("impanel", session_id); + LLIMFloater* floater = LLFloaterReg::findTypedInstance<LLIMFloater>("impanel", session_id); + if (floater && floater->getVisible()) + { + // clicking on chiclet to close floater just hides it to maintain existing + // scroll/text entry state + floater->setVisible(false); + return false; + } + else + { + // ensure the list of messages is updated when floater is made visible + show(session_id); + return true; + } } void LLIMFloater::updateMessages() diff --git a/indra/newview/llimpanel.h b/indra/newview/llimpanel.h index 52f67df4b7..284a486b0f 100644 --- a/indra/newview/llimpanel.h +++ b/indra/newview/llimpanel.h @@ -384,10 +384,12 @@ public: // LLFloater overrides /*virtual*/ void setDocked(bool docked, bool pop_on_undock = true); + // Make IM conversion visible and update the message history static LLIMFloater* show(const LLUUID& session_id); // Toggle panel specified by session_id - static BOOL toggle(const LLUUID& session_id); + // Returns true iff panel became visible + static bool toggle(const LLUUID& session_id); // get new messages from LLIMModel void updateMessages(); |