From 0fb93246b36b356362e1899eab2d67c8931d9471 Mon Sep 17 00:00:00 2001 From: "Andrew A. de Laix" Date: Wed, 15 Jun 2011 15:12:42 -0700 Subject: Fix VWR-24099: disable teleport button when too many friends are selected; we keep the warning dialog as a failsafe. --- indra/newview/llavataractions.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'indra/newview/llavataractions.cpp') diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index cbbdcb2983..955f19c82c 100755 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -773,6 +773,10 @@ bool LLAvatarActions::canOfferTeleport(const LLUUID& id) // static bool LLAvatarActions::canOfferTeleport(const uuid_vec_t& ids) { + // We can't send more than 250 lures in a single message, so disable this + // button when there are too many id's selected. + if(ids.size() > 250) return false; + bool result = true; for (uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); ++it) { -- cgit v1.2.3 From e2f9276a083f5883e250b0edcc5c68273985be8b Mon Sep 17 00:00:00 2001 From: Leyla Farazha Date: Tue, 21 Jun 2011 15:18:05 -0700 Subject: EXP-877 Profile button not active when selecting items in Marketplace inbox --- indra/newview/llavataractions.cpp | 64 +++++++++++++++++++++++++-------------- 1 file changed, 41 insertions(+), 23 deletions(-) (limited to 'indra/newview/llavataractions.cpp') diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index cbbdcb2983..eeb4ec8458 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -69,6 +69,7 @@ #include "lltrans.h" #include "llcallingcard.h" #include "llslurl.h" // IDEVO +#include "llsidepanelinventory.h" // static void LLAvatarActions::requestFriendshipDialog(const LLUUID& id, const std::string& name) @@ -444,8 +445,6 @@ void LLAvatarActions::share(const LLUUID& id) namespace action_give_inventory { - typedef std::set uuid_set_t; - /** * Returns a pointer to 'Add More' inventory panel of Edit Outfit SP. */ @@ -475,18 +474,16 @@ namespace action_give_inventory /** * Checks My Inventory visibility. */ + static bool is_give_inventory_acceptable() { - LLInventoryPanel* active_panel = get_active_inventory_panel(); - if (!active_panel) return false; - // check selection in the panel - const uuid_set_t inventory_selected_uuids = active_panel->getRootFolder()->getSelectionList(); + const std::set inventory_selected_uuids = LLAvatarActions::getInventorySelectedUUIDs(); if (inventory_selected_uuids.empty()) return false; // nothing selected bool acceptable = false; - uuid_set_t::const_iterator it = inventory_selected_uuids.begin(); - const uuid_set_t::const_iterator it_end = inventory_selected_uuids.end(); + std::set::const_iterator it = inventory_selected_uuids.begin(); + const std::set::const_iterator it_end = inventory_selected_uuids.end(); for (; it != it_end; ++it) { LLViewerInventoryCategory* inv_cat = gInventory.getCategory(*it); @@ -529,12 +526,12 @@ namespace action_give_inventory } } - static void build_items_string(const uuid_set_t& inventory_selected_uuids , std::string& items_string) + static void build_items_string(const std::set& inventory_selected_uuids , std::string& items_string) { llassert(inventory_selected_uuids.size() > 0); const std::string& separator = LLTrans::getString("words_separator"); - for (uuid_set_t::const_iterator it = inventory_selected_uuids.begin(); ; ) + for (std::set::const_iterator it = inventory_selected_uuids.begin(); ; ) { LLViewerInventoryCategory* inv_cat = gInventory.getCategory(*it); if (NULL != inv_cat) @@ -570,10 +567,7 @@ namespace action_give_inventory return; } - LLInventoryPanel* active_panel = get_active_inventory_panel(); - if (!active_panel) return; - - const uuid_set_t inventory_selected_uuids = active_panel->getRootFolder()->getSelectionList(); + const std::set inventory_selected_uuids = LLAvatarActions::getInventorySelectedUUIDs(); if (inventory_selected_uuids.empty()) { return; @@ -590,8 +584,8 @@ namespace action_give_inventory // We souldn't open IM session, just calculate session ID for logging purpose. See EXT-6710 const LLUUID session_id = gIMMgr->computeSessionID(IM_NOTHING_SPECIAL, avatar_uuid); - uuid_set_t::const_iterator it = inventory_selected_uuids.begin(); - const uuid_set_t::const_iterator it_end = inventory_selected_uuids.end(); + std::set::const_iterator it = inventory_selected_uuids.begin(); + const std::set::const_iterator it_end = inventory_selected_uuids.end(); const std::string& separator = LLTrans::getString("words_separator"); std::string noncopy_item_names; @@ -654,10 +648,7 @@ namespace action_give_inventory { llassert(avatar_names.size() == avatar_uuids.size()); - LLInventoryPanel* active_panel = get_active_inventory_panel(); - if (!active_panel) return; - - const uuid_set_t inventory_selected_uuids = active_panel->getRootFolder()->getSelectionList(); + const std::set inventory_selected_uuids = LLAvatarActions::getInventorySelectedUUIDs(); if (inventory_selected_uuids.empty()) { return; @@ -678,6 +669,33 @@ namespace action_give_inventory } } + + +//static +std::set LLAvatarActions::getInventorySelectedUUIDs() +{ + std::set inventory_selected_uuids; + + LLInventoryPanel* active_panel = action_give_inventory::get_active_inventory_panel(); + if (active_panel) + { + inventory_selected_uuids = active_panel->getRootFolder()->getSelectionList(); + } + + if (inventory_selected_uuids.empty()) + { + LLSidepanelInventory * sidepanel_inventory = LLSideTray::getInstance()->getPanel("sidepanel_inventory"); + LLInventoryPanel * inbox = sidepanel_inventory->findChild("inventory_inbox"); + if (inbox) + { + inventory_selected_uuids = inbox->getRootFolder()->getSelectionList(); + } + + } + + return inventory_selected_uuids; +} + //static void LLAvatarActions::shareWithAvatars() { @@ -705,12 +723,12 @@ bool LLAvatarActions::canShareSelectedItems(LLInventoryPanel* inv_panel /* = NUL // check selection in the panel LLFolderView* root_folder = inv_panel->getRootFolder(); - const uuid_set_t inventory_selected_uuids = root_folder->getSelectionList(); + const std::set inventory_selected_uuids = root_folder->getSelectionList(); if (inventory_selected_uuids.empty()) return false; // nothing selected bool can_share = true; - uuid_set_t::const_iterator it = inventory_selected_uuids.begin(); - const uuid_set_t::const_iterator it_end = inventory_selected_uuids.end(); + std::set::const_iterator it = inventory_selected_uuids.begin(); + const std::set::const_iterator it_end = inventory_selected_uuids.end(); for (; it != it_end; ++it) { LLViewerInventoryCategory* inv_cat = gInventory.getCategory(*it); -- cgit v1.2.3 From aecfaef10c41dce7395c3a02dcd84a39b6ffbeee Mon Sep 17 00:00:00 2001 From: Richard Linden Date: Tue, 5 Jul 2011 16:51:04 -0700 Subject: EXP-982 FIX As a user, I would like to see the new web-based profiles without any browser chrome and at an appropriate default size --- indra/newview/llavataractions.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'indra/newview/llavataractions.cpp') diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index eeb4ec8458..b2d97a796a 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -313,7 +313,9 @@ static void on_avatar_name_show_profile(const LLUUID& agent_id, const LLAvatarNa std::string url = getProfileURL(username); // PROFILES: open in webkit window - LLWeb::loadWebURLInternal(url, "", agent_id.asString()); + const bool show_chrome = false; + static LLCachedControl profile_rect(gSavedSettings, "WebProfileRect"); + LLFloaterWebContent::create(url, "", agent_id.asString(), show_chrome, profile_rect); } // static -- cgit v1.2.3 From e92d3dcf1013ab340fdef514b41ebf790f79e04c Mon Sep 17 00:00:00 2001 From: Richard Linden Date: Tue, 5 Jul 2011 23:40:19 -0700 Subject: EXP-971 FIX New Direct Delivery item does not sort as most recent item in Recent Tab if that tab is open when item delivered --- indra/newview/llavataractions.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'indra/newview/llavataractions.cpp') diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index b2d97a796a..4685865bce 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -49,6 +49,7 @@ #include "llfloaterpay.h" #include "llfloaterwebcontent.h" #include "llfloaterworldmap.h" +#include "llfolderview.h" #include "llgiveinventory.h" #include "llinventorybridge.h" #include "llinventorymodel.h" // for gInventory.findCategoryUUIDForType -- cgit v1.2.3 From fa3f4d11665af44234f8e0ae3e8d8c0ce31d356d Mon Sep 17 00:00:00 2001 From: Richard Linden Date: Tue, 12 Jul 2011 20:58:30 -0700 Subject: EXP-880 FIX Enable navigation chrome for Search floater search floater derives from floater_web_content all web content now uses floater_web_content instead of media_browser --- indra/newview/llavataractions.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'indra/newview/llavataractions.cpp') diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index 8344b08bfb..48827676cd 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -316,7 +316,11 @@ static void on_avatar_name_show_profile(const LLUUID& agent_id, const LLAvatarNa // PROFILES: open in webkit window const bool show_chrome = false; static LLCachedControl profile_rect(gSavedSettings, "WebProfileRect"); - LLFloaterWebContent::create(url, "", agent_id.asString(), show_chrome, profile_rect); + LLFloaterWebContent::create(LLFloaterWebContent::Params(). + url(url). + id(agent_id). + show_chrome(show_chrome). + preferred_media_size(profile_rect)); } // static -- cgit v1.2.3 From fecf706f1be58f76df81f8bc1a4a5f3307cee6ff Mon Sep 17 00:00:00 2001 From: Richard Nelson Date: Wed, 20 Jul 2011 20:16:47 -0700 Subject: EXP-880 FIX Enable navigation chrome for Search floater changes in size of target windows other than _blank or "" are not saved EXP-1018 FIX Profile button in Basic mode does not toggle correctly when profile is opened and toggles on and closes other Web Content Panel windows --- indra/newview/llavataractions.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'indra/newview/llavataractions.cpp') diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index 48827676cd..cd6754facd 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -335,7 +335,9 @@ void LLAvatarActions::showProfile(const LLUUID& id) //static bool LLAvatarActions::profileVisible(const LLUUID& id) { - LLFloaterWebContent *browser = dynamic_cast (LLFloaterReg::findInstance("web_content", id.asString())); + LLSD sd; + sd["id"] = id; + LLFloaterWebContent *browser = dynamic_cast (LLFloaterReg::findInstance("web_content", sd)); return browser && browser->isShown(); } @@ -343,7 +345,9 @@ bool LLAvatarActions::profileVisible(const LLUUID& id) //static void LLAvatarActions::hideProfile(const LLUUID& id) { - LLFloaterWebContent *browser = dynamic_cast (LLFloaterReg::findInstance("web_content", id.asString())); + LLSD sd; + sd["id"] = id; + LLFloaterWebContent *browser = dynamic_cast (LLFloaterReg::findInstance("web_content", sd)); if (browser) { browser->closeFloater(); -- cgit v1.2.3 From fd9f3b9fe945cb86f677f5b0cf31302d10bcfa99 Mon Sep 17 00:00:00 2001 From: Richard Nelson Date: Tue, 26 Jul 2011 14:26:27 -0700 Subject: EXP-1021 FIX Position of web content browser dictates position of profile panel - profile panel position changes do not persist EXP-1030 FIX Search button toggle can get out of synch in bottom bar made llinstancetracker::iterator do own nested level management (removing need for separate guard) added support for filename= to floaters can pass in arbitrary window_class to floaters --- indra/newview/llavataractions.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'indra/newview/llavataractions.cpp') diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index cd6754facd..5ccd5ff073 100755 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -320,6 +320,7 @@ static void on_avatar_name_show_profile(const LLUUID& agent_id, const LLAvatarNa url(url). id(agent_id). show_chrome(show_chrome). + window_class("profile"). preferred_media_size(profile_rect)); } -- cgit v1.2.3 From ca9b47ba57efec8953474a5c215f1d7802d927bd Mon Sep 17 00:00:00 2001 From: Richard Linden Date: Thu, 28 Jul 2011 17:38:35 -0700 Subject: EXP-1055 FIX Profile button not toggled on when Profile open in Basic mode --- indra/newview/llavataractions.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'indra/newview/llavataractions.cpp') diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index 5ccd5ff073..03abde938f 100755 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -338,7 +338,7 @@ bool LLAvatarActions::profileVisible(const LLUUID& id) { LLSD sd; sd["id"] = id; - LLFloaterWebContent *browser = dynamic_cast (LLFloaterReg::findInstance("web_content", sd)); + LLFloaterWebContent *browser = dynamic_cast (LLFloaterReg::findInstance("profile", sd)); return browser && browser->isShown(); } @@ -348,7 +348,7 @@ void LLAvatarActions::hideProfile(const LLUUID& id) { LLSD sd; sd["id"] = id; - LLFloaterWebContent *browser = dynamic_cast (LLFloaterReg::findInstance("web_content", sd)); + LLFloaterWebContent *browser = dynamic_cast (LLFloaterReg::findInstance("profile", sd)); if (browser) { browser->closeFloater(); -- cgit v1.2.3 From feddda6740f55c5e872be4b608d516e86e0c4182 Mon Sep 17 00:00:00 2001 From: Richard Linden Date: Fri, 29 Jul 2011 16:38:07 -0700 Subject: EXP-1056 FIX Web popup issues with Web Content Browser changed browser id back to a string so it accepts malformed uuid strings coming from webkit - "{uuid}" instead of "uuid" --- indra/newview/llavataractions.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview/llavataractions.cpp') diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index 03abde938f..f22b02093f 100755 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -318,7 +318,7 @@ static void on_avatar_name_show_profile(const LLUUID& agent_id, const LLAvatarNa static LLCachedControl profile_rect(gSavedSettings, "WebProfileRect"); LLFloaterWebContent::create(LLFloaterWebContent::Params(). url(url). - id(agent_id). + id(agent_id.asString()). show_chrome(show_chrome). window_class("profile"). preferred_media_size(profile_rect)); -- cgit v1.2.3 From b6685b5872a4afe976f39d201868b8d656044e84 Mon Sep 17 00:00:00 2001 From: Leslie Linden Date: Mon, 8 Aug 2011 15:13:53 -0700 Subject: EXP-1065 FIX -- Inventory has slowed to a crawl. Clicking between items has an average one second delay. Same with switching between tabs. * Removed numerous places in the code that called findChild across the inventory panel unnecessarily. * Conglomerated uses of inbox and outbox inventory panels to the sidepanel class so the pointers can be cached and functionality like selection handling can be done more efficiently. * Optimized LLView::childHasKeyboardFocus() to work backwards up from the focus object rather than searching for children that may or may not turn out to have focus. Reviewed by Richard. --- indra/newview/llavataractions.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) (limited to 'indra/newview/llavataractions.cpp') diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index f22b02093f..48edecc89c 100755 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -697,12 +697,8 @@ std::set LLAvatarActions::getInventorySelectedUUIDs() if (inventory_selected_uuids.empty()) { LLSidepanelInventory * sidepanel_inventory = LLSideTray::getInstance()->getPanel("sidepanel_inventory"); - LLInventoryPanel * inbox = sidepanel_inventory->findChild("inventory_inbox"); - if (inbox) - { - inventory_selected_uuids = inbox->getRootFolder()->getSelectionList(); - } - + + inventory_selected_uuids = sidepanel_inventory->getInboxOrOutboxSelectionList(); } return inventory_selected_uuids; -- cgit v1.2.3