diff options
-rw-r--r-- | ChangeLog.txt | 57 | ||||
-rw-r--r-- | linden/indra/newview/app_settings/settings.xml | 13 | ||||
-rw-r--r-- | linden/indra/newview/llfolderview.cpp | 45 | ||||
-rw-r--r-- | linden/indra/newview/llfolderview.h | 5 | ||||
-rw-r--r-- | linden/indra/newview/llinventoryactions.cpp | 45 | ||||
-rw-r--r-- | linden/indra/newview/llinventorybridge.cpp | 172 | ||||
-rw-r--r-- | linden/indra/newview/llinventoryview.cpp | 9 | ||||
-rw-r--r-- | linden/indra/newview/lltoolpie.cpp | 7 | ||||
-rw-r--r-- | linden/indra/newview/llviewermessage.cpp | 4 | ||||
-rw-r--r-- | linden/indra/newview/llviewerthrottle.cpp | 2 | ||||
-rw-r--r-- | linden/indra/newview/skins/default/xui/en-us/floater_inventory.xml | 18 | ||||
-rw-r--r-- | linden/indra/newview/skins/default/xui/en-us/floater_media_browser.xml | 2 | ||||
-rw-r--r-- | linden/indra/newview/skins/default/xui/en-us/floater_snapshot.xml | 2 | ||||
-rw-r--r-- | linden/indra/newview/skins/default/xui/en-us/panel_avatar.xml | 6 | ||||
-rw-r--r-- | linden/indra/newview/skins/default/xui/en-us/panel_preferences_network.xml | 4 |
15 files changed, 323 insertions, 68 deletions
diff --git a/ChangeLog.txt b/ChangeLog.txt index b117876..14ed9be 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt | |||
@@ -1,4 +1,55 @@ | |||
1 | 2009-09-10 McCabe Maxsted <hakushakukun@gmail.com> | 1 | 2009-09-11 McCabe Maxsted <hakushakukun@gmail.com> |
2 | |||
3 | * Applied inventory Search menu from Emerald viewer (still ugly). | ||
4 | |||
5 | modified: newview/app_settings/settings.xml | ||
6 | modified: newview/llfolderview.cpp | ||
7 | modified: newview/llfolderview.h | ||
8 | modified: newview/llinventoryactions.cpp | ||
9 | modified: newview/llinventoryview.cpp | ||
10 | modified: newview/skins/default/xui/en-us/floater_inventory.xml | ||
11 | |||
12 | |||
13 | * Applied patch for long distance opensim hypergrid tps (SVC-2491) | ||
14 | (Feature currently disabled in OpenSim) | ||
15 | |||
16 | modified: linden/indra/newview/llviewermessage.cpp | ||
17 | |||
18 | |||
19 | * Fixed browser window showing wrong title. | ||
20 | |||
21 | modified: linden/indra/newview/skins/default/xui/en-us/floater_media_browser.xml | ||
22 | |||
23 | |||
24 | * Fixed double click tp from working on HUDs. | ||
25 | |||
26 | modified: linden/indra/newview/lltoolpie.cpp | ||
27 | |||
28 | |||
29 | * Added minimize to snapshot window. | ||
30 | |||
31 | modified: linden/indra/newview/skins/default/xui/en-us/floater_snapshot.xml | ||
32 | |||
33 | |||
34 | * Upped the max bandwidth setting to 5000kbps (default 1000kbps). | ||
35 | |||
36 | modified: linden/indra/newview/llviewerthrottle.cpp | ||
37 | modified: linden/indra/newview/skins/default/xui/en-us/panel_preferences_network.xml | ||
38 | modified: linden/indra/newview/app_settings/settings.xml | ||
39 | |||
40 | |||
41 | * Applied patch to wear multiple attachments at once (VWR-5063). | ||
42 | |||
43 | modified: linden/indra/newview/llinventoryactions.cpp | ||
44 | modified: linden/indra/newview/llinventorybridge.cpp | ||
45 | |||
46 | |||
47 | * Fixed profile account info spacing. | ||
48 | |||
49 | modified: indra/newview/skins/default/xui/en-us/panel_avatar.xml | ||
50 | |||
51 | |||
52 | 2009-09-10 McCabe Maxsted <hakushakukun@gmail.com> | ||
2 | 53 | ||
3 | * Created new toolbar control for windlight presets and options. | 54 | * Created new toolbar control for windlight presets and options. |
4 | 55 | ||
@@ -24,6 +75,8 @@ | |||
24 | 75 | ||
25 | modified: linden/indra/newview/skins/default/xui/en-us/panel_windlight_remote_expanded.xml | 76 | modified: linden/indra/newview/skins/default/xui/en-us/panel_windlight_remote_expanded.xml |
26 | 77 | ||
78 | |||
79 | 2009-09-09 McCabe Maxsted <hakushakukun@gmail.com> | ||
27 | 80 | ||
28 | * Backported clickable object names from 1.23. | 81 | * Backported clickable object names from 1.23. |
29 | 82 | ||
@@ -55,8 +108,6 @@ | |||
55 | modified: newview/skins/default/colors_base.xml | 108 | modified: newview/skins/default/colors_base.xml |
56 | modified: newview/skins/silver/colors_base.xml | 109 | modified: newview/skins/silver/colors_base.xml |
57 | 110 | ||
58 | |||
59 | 2009-09-09 McCabe Maxsted <hakushakukun@gmail.com> | ||
60 | 111 | ||
61 | * Applied ReinstateShowTextureUUID Cool Viewer patch (reverts the "fix" for VWR-1919). | 112 | * Applied ReinstateShowTextureUUID Cool Viewer patch (reverts the "fix" for VWR-1919). |
62 | Patch by Henri Beauchamp, modified by McCabe Maxsted. | 113 | Patch by Henri Beauchamp, modified by McCabe Maxsted. |
diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml index f8a5d71..23602be 100644 --- a/linden/indra/newview/app_settings/settings.xml +++ b/linden/indra/newview/app_settings/settings.xml | |||
@@ -4049,6 +4049,17 @@ | |||
4049 | <key>Value</key> | 4049 | <key>Value</key> |
4050 | <real>1.0</real> | 4050 | <real>1.0</real> |
4051 | </map> | 4051 | </map> |
4052 | <key>InventorySearchType</key> | ||
4053 | <map> | ||
4054 | <key>Comment</key> | ||
4055 | <string>Controls what type of inventory search we perform.</string> | ||
4056 | <key>Persist</key> | ||
4057 | <integer>0</integer> | ||
4058 | <key>Type</key> | ||
4059 | <string>U32</string> | ||
4060 | <key>Value</key> | ||
4061 | <integer>0</integer> | ||
4062 | </map> | ||
4052 | <key>InventorySortOrder</key> | 4063 | <key>InventorySortOrder</key> |
4053 | <map> | 4064 | <map> |
4054 | <key>Comment</key> | 4065 | <key>Comment</key> |
@@ -7968,7 +7979,7 @@ | |||
7968 | <key>Type</key> | 7979 | <key>Type</key> |
7969 | <string>F32</string> | 7980 | <string>F32</string> |
7970 | <key>Value</key> | 7981 | <key>Value</key> |
7971 | <real>500.0</real> | 7982 | <real>1000.0</real> |
7972 | </map> | 7983 | </map> |
7973 | <key>ToolHelpRect</key> | 7984 | <key>ToolHelpRect</key> |
7974 | <map> | 7985 | <map> |
diff --git a/linden/indra/newview/llfolderview.cpp b/linden/indra/newview/llfolderview.cpp index 70c4ead..5407f06 100644 --- a/linden/indra/newview/llfolderview.cpp +++ b/linden/indra/newview/llfolderview.cpp | |||
@@ -281,7 +281,28 @@ void LLFolderViewItem::refreshFromListener() | |||
281 | { | 281 | { |
282 | if(mListener) | 282 | if(mListener) |
283 | { | 283 | { |
284 | //Super crazy hack to build the creator search label - RK | ||
285 | LLInventoryItem* item = gInventory.getItem(mListener->getUUID()); | ||
286 | std::string creator_name; | ||
287 | if(item) | ||
288 | { | ||
289 | if(item->getCreatorUUID().notNull()) | ||
290 | { | ||
291 | gCacheName->getFullName(item->getCreatorUUID(), creator_name); | ||
292 | } | ||
293 | } | ||
294 | mLabelCreator = creator_name; | ||
295 | /*if(creator_name == "(Loading...)") | ||
296 | mLabelCreator = ""; | ||
297 | else | ||
298 | mLabelCreator = creator_name;*/ | ||
299 | |||
300 | //Label for name search | ||
284 | mLabel = mListener->getDisplayName(); | 301 | mLabel = mListener->getDisplayName(); |
302 | |||
303 | //Build label for combined search - RK | ||
304 | mLabelAll = mLabel + " " + mLabelCreator; | ||
305 | |||
285 | setIcon(mListener->getIcon()); | 306 | setIcon(mListener->getIcon()); |
286 | time_t creation_date = mListener->getCreationDate(); | 307 | time_t creation_date = mListener->getCreationDate(); |
287 | if (mCreationDate != creation_date) | 308 | if (mCreationDate != creation_date) |
@@ -299,12 +320,26 @@ void LLFolderViewItem::refresh() | |||
299 | refreshFromListener(); | 320 | refreshFromListener(); |
300 | 321 | ||
301 | std::string searchable_label(mLabel); | 322 | std::string searchable_label(mLabel); |
323 | std::string searchable_label_creator(mLabelCreator); | ||
324 | std::string searchable_label_all(mLabelAll); | ||
325 | |||
326 | //add the (no modify), (no transfer) etc stuff to each label. | ||
302 | searchable_label.append(mLabelSuffix); | 327 | searchable_label.append(mLabelSuffix); |
328 | searchable_label_creator.append(mLabelSuffix); | ||
329 | searchable_label_all.append(mLabelSuffix); | ||
330 | |||
331 | //all labels need to be uppercase. | ||
303 | LLStringUtil::toUpper(searchable_label); | 332 | LLStringUtil::toUpper(searchable_label); |
333 | LLStringUtil::toUpper(searchable_label_creator); | ||
334 | LLStringUtil::toUpper(searchable_label_all); | ||
304 | 335 | ||
305 | if (mSearchableLabel.compare(searchable_label)) | 336 | if (mSearchableLabel.compare(searchable_label) || |
337 | mSearchableLabelCreator.compare(searchable_label_creator)) | ||
306 | { | 338 | { |
307 | mSearchableLabel.assign(searchable_label); | 339 | mSearchableLabel.assign(searchable_label); |
340 | mSearchableLabelCreator.assign(searchable_label_creator); | ||
341 | mSearchableLabelAll.assign(searchable_label_all); | ||
342 | |||
308 | dirtyFilter(); | 343 | dirtyFilter(); |
309 | // some part of label has changed, so overall width has potentially changed | 344 | // some part of label has changed, so overall width has potentially changed |
310 | if (mParentFolder) | 345 | if (mParentFolder) |
@@ -588,7 +623,13 @@ void LLFolderViewItem::rename(const std::string& new_name) | |||
588 | 623 | ||
589 | const std::string& LLFolderViewItem::getSearchableLabel() const | 624 | const std::string& LLFolderViewItem::getSearchableLabel() const |
590 | { | 625 | { |
591 | return mSearchableLabel; | 626 | U32 search_type = gSavedSettings.getU32("InventorySearchType"); |
627 | if(search_type == 4) | ||
628 | return mSearchableLabelAll; | ||
629 | else if(search_type == 1) | ||
630 | return mSearchableLabelCreator; | ||
631 | else | ||
632 | return mSearchableLabel; | ||
592 | } | 633 | } |
593 | 634 | ||
594 | const std::string& LLFolderViewItem::getName( void ) const | 635 | const std::string& LLFolderViewItem::getName( void ) const |
diff --git a/linden/indra/newview/llfolderview.h b/linden/indra/newview/llfolderview.h index 3c350d4..25b4362 100644 --- a/linden/indra/newview/llfolderview.h +++ b/linden/indra/newview/llfolderview.h | |||
@@ -338,6 +338,11 @@ protected: | |||
338 | 338 | ||
339 | std::string mLabel; | 339 | std::string mLabel; |
340 | std::string mSearchableLabel; | 340 | std::string mSearchableLabel; |
341 | std::string mLabelAll; | ||
342 | std::string mSearchableLabelAll; | ||
343 | std::string mLabelCreator; | ||
344 | std::string mSearchableLabelCreator; | ||
345 | |||
341 | std::string mType; | 346 | std::string mType; |
342 | S32 mLabelWidth; | 347 | S32 mLabelWidth; |
343 | U32 mCreationDate; | 348 | U32 mCreationDate; |
diff --git a/linden/indra/newview/llinventoryactions.cpp b/linden/indra/newview/llinventoryactions.cpp index 0bf3ab2..b598c83 100644 --- a/linden/indra/newview/llinventoryactions.cpp +++ b/linden/indra/newview/llinventoryactions.cpp | |||
@@ -85,6 +85,9 @@ | |||
85 | #include "lluictrlfactory.h" | 85 | #include "lluictrlfactory.h" |
86 | #include "llselectmgr.h" | 86 | #include "llselectmgr.h" |
87 | 87 | ||
88 | // Defined in llinventorybridge.cpp | ||
89 | void wear_attachments_on_avatar(const std::set<LLUUID>& item_ids, BOOL remove); | ||
90 | |||
88 | const std::string NEW_LSL_NAME = "New Script"; // *TODO:Translate? (probably not) | 91 | const std::string NEW_LSL_NAME = "New Script"; // *TODO:Translate? (probably not) |
89 | const std::string NEW_NOTECARD_NAME = "New Note"; // *TODO:Translate? (probably not) | 92 | const std::string NEW_NOTECARD_NAME = "New Note"; // *TODO:Translate? (probably not) |
90 | const std::string NEW_GESTURE_NAME = "New Gesture"; // *TODO:Translate? (probably not) | 93 | const std::string NEW_GESTURE_NAME = "New Gesture"; // *TODO:Translate? (probably not) |
@@ -115,6 +118,12 @@ bool doToSelected(LLFolderView* folder, std::string action) | |||
115 | std::set<LLUUID> selected_items; | 118 | std::set<LLUUID> selected_items; |
116 | folder->getSelectionList(selected_items); | 119 | folder->getSelectionList(selected_items); |
117 | 120 | ||
121 | if ( ("attach" == action) && (selected_items.size() > 1) ) | ||
122 | { | ||
123 | wear_attachments_on_avatar(selected_items, FALSE); | ||
124 | return true; | ||
125 | } | ||
126 | |||
118 | LLMultiPreview* multi_previewp = NULL; | 127 | LLMultiPreview* multi_previewp = NULL; |
119 | LLMultiProperties* multi_propertiesp = NULL; | 128 | LLMultiProperties* multi_propertiesp = NULL; |
120 | 129 | ||
@@ -464,6 +473,40 @@ class LLDoCreateFloater : public inventory_listener_t | |||
464 | } | 473 | } |
465 | }; | 474 | }; |
466 | 475 | ||
476 | //Handles the search type buttons | ||
477 | class SetSearchType : public inventory_listener_t | ||
478 | { | ||
479 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) | ||
480 | { | ||
481 | std::string search_type = userdata.asString(); | ||
482 | if(search_type == "name") | ||
483 | { | ||
484 | gSavedSettings.setU32("InventorySearchType", 0); | ||
485 | |||
486 | mPtr->getControl("Inventory.SearchByName")->setValue(TRUE); | ||
487 | mPtr->getControl("Inventory.SearchByCreator")->setValue(FALSE); | ||
488 | mPtr->getControl("Inventory.SearchByAll")->setValue(FALSE); | ||
489 | } | ||
490 | else if(search_type == "creator") | ||
491 | { | ||
492 | gSavedSettings.setU32("InventorySearchType", 1); | ||
493 | |||
494 | mPtr->getControl("Inventory.SearchByName")->setValue(FALSE); | ||
495 | mPtr->getControl("Inventory.SearchByCreator")->setValue(TRUE); | ||
496 | mPtr->getControl("Inventory.SearchByAll")->setValue(FALSE); | ||
497 | } | ||
498 | else if(search_type == "all") | ||
499 | { | ||
500 | gSavedSettings.setU32("InventorySearchType", 4); | ||
501 | |||
502 | mPtr->getControl("Inventory.SearchByName")->setValue(FALSE); | ||
503 | mPtr->getControl("Inventory.SearchByCreator")->setValue(FALSE); | ||
504 | mPtr->getControl("Inventory.SearchByAll")->setValue(TRUE); | ||
505 | } | ||
506 | return true; | ||
507 | } | ||
508 | }; | ||
509 | |||
467 | class LLSetSortBy : public inventory_listener_t | 510 | class LLSetSortBy : public inventory_listener_t |
468 | { | 511 | { |
469 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) | 512 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) |
@@ -711,6 +754,8 @@ void init_inventory_actions(LLInventoryView *floater) | |||
711 | (new LLShowFilters())->registerListener(floater, "Inventory.ShowFilters"); | 754 | (new LLShowFilters())->registerListener(floater, "Inventory.ShowFilters"); |
712 | (new LLResetFilter())->registerListener(floater, "Inventory.ResetFilter"); | 755 | (new LLResetFilter())->registerListener(floater, "Inventory.ResetFilter"); |
713 | (new LLSetSortBy())->registerListener(floater, "Inventory.SetSortBy"); | 756 | (new LLSetSortBy())->registerListener(floater, "Inventory.SetSortBy"); |
757 | |||
758 | (new SetSearchType())->registerListener(floater, "Inventory.SetSearchBy"); | ||
714 | } | 759 | } |
715 | 760 | ||
716 | void init_inventory_panel_actions(LLInventoryPanel *panel) | 761 | void init_inventory_panel_actions(LLInventoryPanel *panel) |
diff --git a/linden/indra/newview/llinventorybridge.cpp b/linden/indra/newview/llinventorybridge.cpp index 52b15cb..3505bd3 100644 --- a/linden/indra/newview/llinventorybridge.cpp +++ b/linden/indra/newview/llinventorybridge.cpp | |||
@@ -111,6 +111,8 @@ void remove_inventory_category_from_avatar(LLInventoryCategory* category); | |||
111 | void remove_inventory_category_from_avatar_step2( BOOL proceed, void* userdata); | 111 | void remove_inventory_category_from_avatar_step2( BOOL proceed, void* userdata); |
112 | void move_task_inventory_callback(S32 option, void* user_data); | 112 | void move_task_inventory_callback(S32 option, void* user_data); |
113 | void confirm_replace_attachment_rez(S32 option, void* user_data); | 113 | void confirm_replace_attachment_rez(S32 option, void* user_data); |
114 | void wear_attachments_on_avatar(const std::set<LLUUID>& item_ids, BOOL remove); | ||
115 | void wear_attachments_on_avatar(const LLInventoryModel::item_array_t& items, BOOL remove); | ||
114 | 116 | ||
115 | std::string ICON_NAME[ICON_NAME_COUNT] = | 117 | std::string ICON_NAME[ICON_NAME_COUNT] = |
116 | { | 118 | { |
@@ -3671,6 +3673,31 @@ private: | |||
3671 | bool mAppend; | 3673 | bool mAppend; |
3672 | }; | 3674 | }; |
3673 | 3675 | ||
3676 | class LLWearAttachmentsCallback : public LLInventoryCallback | ||
3677 | { | ||
3678 | public: | ||
3679 | LLWearAttachmentsCallback(bool append) : mAppend(append) {} | ||
3680 | void fire(const LLUUID& item_id) | ||
3681 | { | ||
3682 | mItemIDs.insert(item_id); | ||
3683 | } | ||
3684 | protected: | ||
3685 | ~LLWearAttachmentsCallback() | ||
3686 | { | ||
3687 | if( LLInventoryCallbackManager::is_instantiated() ) | ||
3688 | { | ||
3689 | wear_attachments_on_avatar(mItemIDs, mAppend); | ||
3690 | } | ||
3691 | else | ||
3692 | { | ||
3693 | llwarns << "Dropping unhandled LLWearAttachments" << llendl; | ||
3694 | } | ||
3695 | } | ||
3696 | private: | ||
3697 | std::set<LLUUID> mItemIDs; | ||
3698 | bool mAppend; | ||
3699 | }; | ||
3700 | |||
3674 | void LLOutfitObserver::done() | 3701 | void LLOutfitObserver::done() |
3675 | { | 3702 | { |
3676 | // We now have an outfit ready to be copied to agent inventory. Do | 3703 | // We now have an outfit ready to be copied to agent inventory. Do |
@@ -4026,57 +4053,7 @@ void wear_inventory_category_on_avatar_step2( BOOL proceed, void* userdata ) | |||
4026 | if( obj_count > 0 ) | 4053 | if( obj_count > 0 ) |
4027 | { | 4054 | { |
4028 | // We've found some attachements. Add these. | 4055 | // We've found some attachements. Add these. |
4029 | 4056 | wear_attachments_on_avatar(obj_item_array, !wear_info->mAppend); | |
4030 | LLVOAvatar* avatar = gAgent.getAvatarObject(); | ||
4031 | if( avatar ) | ||
4032 | { | ||
4033 | // Build a compound message to send all the objects that need to be rezzed. | ||
4034 | |||
4035 | // Limit number of packets to send | ||
4036 | const S32 MAX_PACKETS_TO_SEND = 10; | ||
4037 | const S32 OBJECTS_PER_PACKET = 4; | ||
4038 | const S32 MAX_OBJECTS_TO_SEND = MAX_PACKETS_TO_SEND * OBJECTS_PER_PACKET; | ||
4039 | if( obj_count > MAX_OBJECTS_TO_SEND ) | ||
4040 | { | ||
4041 | obj_count = MAX_OBJECTS_TO_SEND; | ||
4042 | } | ||
4043 | |||
4044 | // Create an id to keep the parts of the compound message together | ||
4045 | LLUUID compound_msg_id; | ||
4046 | compound_msg_id.generate(); | ||
4047 | LLMessageSystem* msg = gMessageSystem; | ||
4048 | |||
4049 | for(i = 0; i < obj_count; ++i) | ||
4050 | { | ||
4051 | if( 0 == (i % OBJECTS_PER_PACKET) ) | ||
4052 | { | ||
4053 | // Start a new message chunk | ||
4054 | msg->newMessageFast(_PREHASH_RezMultipleAttachmentsFromInv); | ||
4055 | msg->nextBlockFast(_PREHASH_AgentData); | ||
4056 | msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); | ||
4057 | msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); | ||
4058 | msg->nextBlockFast(_PREHASH_HeaderData); | ||
4059 | msg->addUUIDFast(_PREHASH_CompoundMsgID, compound_msg_id ); | ||
4060 | msg->addU8Fast(_PREHASH_TotalObjects, obj_count ); | ||
4061 | msg->addBOOLFast(_PREHASH_FirstDetachAll, !wear_info->mAppend ); | ||
4062 | } | ||
4063 | |||
4064 | LLInventoryItem* item = obj_item_array.get(i); | ||
4065 | msg->nextBlockFast(_PREHASH_ObjectData ); | ||
4066 | msg->addUUIDFast(_PREHASH_ItemID, item->getUUID() ); | ||
4067 | msg->addUUIDFast(_PREHASH_OwnerID, item->getPermissions().getOwner()); | ||
4068 | msg->addU8Fast(_PREHASH_AttachmentPt, 0 ); // Wear at the previous or default attachment point | ||
4069 | pack_permissions_slam(msg, item->getFlags(), item->getPermissions()); | ||
4070 | msg->addStringFast(_PREHASH_Name, item->getName()); | ||
4071 | msg->addStringFast(_PREHASH_Description, item->getDescription()); | ||
4072 | |||
4073 | if( (i+1 == obj_count) || ((OBJECTS_PER_PACKET-1) == (i % OBJECTS_PER_PACKET)) ) | ||
4074 | { | ||
4075 | // End of message chunk | ||
4076 | msg->sendReliable( gAgent.getRegion()->getHost() ); | ||
4077 | } | ||
4078 | } | ||
4079 | } | ||
4080 | } | 4057 | } |
4081 | } | 4058 | } |
4082 | delete wear_info; | 4059 | delete wear_info; |
@@ -4160,6 +4137,99 @@ void wear_inventory_category_on_avatar_step3(LLWearableHoldingPattern* holder, B | |||
4160 | dec_busy_count(); | 4137 | dec_busy_count(); |
4161 | } | 4138 | } |
4162 | 4139 | ||
4140 | void wear_attachments_on_avatar(const std::set<LLUUID>& item_ids, BOOL remove) | ||
4141 | { | ||
4142 | // NOTE: the inventory items can reside in the user's inventory, the library, or any combination of the two | ||
4143 | |||
4144 | LLInventoryModel::item_array_t items; | ||
4145 | LLPointer<LLInventoryCallback> cb; | ||
4146 | |||
4147 | for (std::set<LLUUID>::const_iterator it = item_ids.begin(); it != item_ids.end(); ++it) | ||
4148 | { | ||
4149 | LLViewerInventoryItem* item = gInventory.getItem(*it); | ||
4150 | if ( (item) && (LLAssetType::AT_OBJECT == item->getType()) ) | ||
4151 | { | ||
4152 | if ( (gInventory.isObjectDescendentOf(*it, gAgent.getInventoryRootID())) ) | ||
4153 | { | ||
4154 | items.put(item); | ||
4155 | } | ||
4156 | else if ( (item->isComplete()) ) | ||
4157 | { | ||
4158 | if (cb.isNull()) | ||
4159 | cb = new LLWearAttachmentsCallback(remove); | ||
4160 | copy_inventory_item(gAgent.getID(), item->getPermissions().getOwner(), item->getUUID(), LLUUID::null, std::string(), cb); | ||
4161 | } | ||
4162 | } | ||
4163 | } | ||
4164 | |||
4165 | wear_attachments_on_avatar(items, remove); | ||
4166 | } | ||
4167 | |||
4168 | void wear_attachments_on_avatar(const LLInventoryModel::item_array_t& items, BOOL remove) | ||
4169 | { | ||
4170 | // NOTE: all inventory items must reside in the user's inventory | ||
4171 | |||
4172 | LLVOAvatar* avatarp = gAgent.getAvatarObject(); | ||
4173 | if(!avatarp) | ||
4174 | { | ||
4175 | llwarns << "No avatar found." << llendl; | ||
4176 | return; | ||
4177 | } | ||
4178 | |||
4179 | // Build a compound message to send all the objects that need to be rezzed. | ||
4180 | |||
4181 | // Limit number of packets to send | ||
4182 | const S32 MAX_PACKETS_TO_SEND = 10; | ||
4183 | const S32 OBJECTS_PER_PACKET = 4; | ||
4184 | const S32 MAX_OBJECTS_TO_SEND = MAX_PACKETS_TO_SEND * OBJECTS_PER_PACKET; | ||
4185 | |||
4186 | S32 count = items.count(); | ||
4187 | if ( !count ) | ||
4188 | { | ||
4189 | return; | ||
4190 | } | ||
4191 | else if ( count > MAX_OBJECTS_TO_SEND ) | ||
4192 | { | ||
4193 | count = MAX_OBJECTS_TO_SEND; | ||
4194 | } | ||
4195 | |||
4196 | // Create an id to keep the parts of the compound message together | ||
4197 | LLUUID compound_msg_id; | ||
4198 | compound_msg_id.generate(); | ||
4199 | LLMessageSystem* msg = gMessageSystem; | ||
4200 | |||
4201 | for(S32 i = 0; i < count; ++i) | ||
4202 | { | ||
4203 | if( 0 == (i % OBJECTS_PER_PACKET) ) | ||
4204 | { | ||
4205 | // Start a new message chunk | ||
4206 | msg->newMessageFast(_PREHASH_RezMultipleAttachmentsFromInv); | ||
4207 | msg->nextBlockFast(_PREHASH_AgentData); | ||
4208 | msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); | ||
4209 | msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); | ||
4210 | msg->nextBlockFast(_PREHASH_HeaderData); | ||
4211 | msg->addUUIDFast(_PREHASH_CompoundMsgID, compound_msg_id ); | ||
4212 | msg->addU8Fast(_PREHASH_TotalObjects, count ); | ||
4213 | msg->addBOOLFast(_PREHASH_FirstDetachAll, remove ); | ||
4214 | } | ||
4215 | |||
4216 | LLInventoryItem* item = items.get(i); | ||
4217 | msg->nextBlockFast(_PREHASH_ObjectData ); | ||
4218 | msg->addUUIDFast(_PREHASH_ItemID, item->getUUID() ); | ||
4219 | msg->addUUIDFast(_PREHASH_OwnerID, item->getPermissions().getOwner()); | ||
4220 | msg->addU8Fast(_PREHASH_AttachmentPt, 0 ); // Wear at the previous or default attachment point | ||
4221 | pack_permissions_slam(msg, item->getFlags(), item->getPermissions()); | ||
4222 | msg->addStringFast(_PREHASH_Name, item->getName()); | ||
4223 | msg->addStringFast(_PREHASH_Description, item->getDescription()); | ||
4224 | |||
4225 | if( (i+1 == count) || ((OBJECTS_PER_PACKET-1) == (i % OBJECTS_PER_PACKET)) ) | ||
4226 | { | ||
4227 | // End of message chunk | ||
4228 | msg->sendReliable( gAgent.getRegion()->getHost() ); | ||
4229 | } | ||
4230 | } | ||
4231 | } | ||
4232 | |||
4163 | void remove_inventory_category_from_avatar( LLInventoryCategory* category ) | 4233 | void remove_inventory_category_from_avatar( LLInventoryCategory* category ) |
4164 | { | 4234 | { |
4165 | if(!category) return; | 4235 | if(!category) return; |
diff --git a/linden/indra/newview/llinventoryview.cpp b/linden/indra/newview/llinventoryview.cpp index 0f1eb2b..cc89ee1 100644 --- a/linden/indra/newview/llinventoryview.cpp +++ b/linden/indra/newview/llinventoryview.cpp | |||
@@ -521,6 +521,15 @@ void LLInventoryView::init(LLInventoryModel* inventory) | |||
521 | addBoolControl("Inventory.FoldersAlwaysByName", sort_folders_by_name ); | 521 | addBoolControl("Inventory.FoldersAlwaysByName", sort_folders_by_name ); |
522 | addBoolControl("Inventory.SystemFoldersToTop", sort_system_folders_to_top ); | 522 | addBoolControl("Inventory.SystemFoldersToTop", sort_system_folders_to_top ); |
523 | 523 | ||
524 | //Search Controls | ||
525 | U32 search_type = gSavedSettings.getU32("InventorySearchType"); | ||
526 | BOOL search_by_name = (search_type == 0); | ||
527 | |||
528 | addBoolControl("Inventory.SearchByName", search_by_name); | ||
529 | addBoolControl("Inventory.SearchByCreator", !search_by_name); | ||
530 | |||
531 | addBoolControl("Inventory.SearchByAll", !search_by_name); | ||
532 | |||
524 | mSavedFolderState = new LLSaveFolderState(); | 533 | mSavedFolderState = new LLSaveFolderState(); |
525 | mSavedFolderState->setApply(FALSE); | 534 | mSavedFolderState->setApply(FALSE); |
526 | 535 | ||
diff --git a/linden/indra/newview/lltoolpie.cpp b/linden/indra/newview/lltoolpie.cpp index 7f3bd82..921931b 100644 --- a/linden/indra/newview/lltoolpie.cpp +++ b/linden/indra/newview/lltoolpie.cpp | |||
@@ -646,9 +646,10 @@ BOOL LLToolPie::handleDoubleClick(S32 x, S32 y, MASK mask) | |||
646 | else if (mPick.mObjectID.notNull() | 646 | else if (mPick.mObjectID.notNull() |
647 | && !mPick.mPosGlobal.isExactlyZero()) | 647 | && !mPick.mPosGlobal.isExactlyZero()) |
648 | { | 648 | { |
649 | // Hit an object | 649 | //Zwagoth: No more teleport to HUD attachments. >:o |
650 | // HACK: Call the last hit position the point we hit on the object | 650 | if(mPick.getObject().notNull() && mPick.getObject()->isHUDAttachment()) |
651 | //gLastHitPosGlobal += gLastHitObjectOffset; | 651 | return FALSE; |
652 | |||
652 | handle_go_to(); | 653 | handle_go_to(); |
653 | return TRUE; | 654 | return TRUE; |
654 | } | 655 | } |
diff --git a/linden/indra/newview/llviewermessage.cpp b/linden/indra/newview/llviewermessage.cpp index 26dd86c..815dc49 100644 --- a/linden/indra/newview/llviewermessage.cpp +++ b/linden/indra/newview/llviewermessage.cpp | |||
@@ -2754,6 +2754,10 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**) | |||
2754 | // appropriate. | 2754 | // appropriate. |
2755 | LLVector3 shift_vector = regionp->getPosRegionFromGlobal( | 2755 | LLVector3 shift_vector = regionp->getPosRegionFromGlobal( |
2756 | gAgent.getRegion()->getOriginGlobal()); | 2756 | gAgent.getRegion()->getOriginGlobal()); |
2757 | // don't shift objects, if teleporting more than about 1000 sims, as | ||
2758 | // for long teleports shifting objects garbles the view at the target region | ||
2759 | if (shift_vector.lengthSquared() > 6.5e10f) | ||
2760 | shift_vector = LLVector3::zero; | ||
2757 | gAgent.setRegion(regionp); | 2761 | gAgent.setRegion(regionp); |
2758 | gObjectList.shiftObjects(shift_vector); | 2762 | gObjectList.shiftObjects(shift_vector); |
2759 | gAssetStorage->setUpstream(msg->getSender()); | 2763 | gAssetStorage->setUpstream(msg->getSender()); |
diff --git a/linden/indra/newview/llviewerthrottle.cpp b/linden/indra/newview/llviewerthrottle.cpp index 72a8a80..95c6ae2 100644 --- a/linden/indra/newview/llviewerthrottle.cpp +++ b/linden/indra/newview/llviewerthrottle.cpp | |||
@@ -49,7 +49,7 @@ const F32 MAX_FRACTIONAL = 1.5f; | |||
49 | const F32 MIN_FRACTIONAL = 0.2f; | 49 | const F32 MIN_FRACTIONAL = 0.2f; |
50 | 50 | ||
51 | const F32 MIN_BANDWIDTH = 50.f; | 51 | const F32 MIN_BANDWIDTH = 50.f; |
52 | const F32 MAX_BANDWIDTH = 1500.f; | 52 | const F32 MAX_BANDWIDTH = 5000.f; |
53 | const F32 STEP_FRACTIONAL = 0.1f; | 53 | const F32 STEP_FRACTIONAL = 0.1f; |
54 | const F32 TIGHTEN_THROTTLE_THRESHOLD = 3.0f; // packet loss % per s | 54 | const F32 TIGHTEN_THROTTLE_THRESHOLD = 3.0f; // packet loss % per s |
55 | const F32 EASE_THROTTLE_THRESHOLD = 0.5f; // packet loss % per s | 55 | const F32 EASE_THROTTLE_THRESHOLD = 0.5f; // packet loss % per s |
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_inventory.xml b/linden/indra/newview/skins/default/xui/en-us/floater_inventory.xml index 3d1c569..f0c97f2 100644 --- a/linden/indra/newview/skins/default/xui/en-us/floater_inventory.xml +++ b/linden/indra/newview/skins/default/xui/en-us/floater_inventory.xml | |||
@@ -205,5 +205,23 @@ | |||
205 | <on_click filter="" function="Inventory.SetSortBy" userdata="systemfolderstotop" /> | 205 | <on_click filter="" function="Inventory.SetSortBy" userdata="systemfolderstotop" /> |
206 | </menu_item_check> | 206 | </menu_item_check> |
207 | </menu> | 207 | </menu> |
208 | <menu bottom_delta="64" drop_shadow="true" height="49" | ||
209 | label="Search" left="0" mouse_opaque="false" name="Sort" opaque="true" | ||
210 | tear_off="true" width="118"> | ||
211 | <menu_item_check bottom_delta="-18" control_name="Inventory.SearchByName" height="18" | ||
212 | label="By Name" left="0" mouse_opaque="true" name="By Name" width="118"> | ||
213 | <on_click filter="" function="Inventory.SetSearchBy" userdata="name" /> | ||
214 | </menu_item_check> | ||
215 | <menu_item_check bottom_delta="-18" control_name="Inventory.SearchByCreator" height="18" | ||
216 | label="By Creator" left="0" mouse_opaque="true" name="By Creator" width="118"> | ||
217 | <on_click filter="" function="Inventory.SetSearchBy" userdata="creator" /> | ||
218 | </menu_item_check> | ||
219 | <menu_item_separator bottom_delta="-8" height="8" left="0" mouse_opaque="true" name="separator" | ||
220 | width="118" /> | ||
221 | <menu_item_check bottom_delta="-18" control_name="Inventory.SearchByAll" height="18" | ||
222 | label="By All" left="0" mouse_opaque="true" name="By All" width="118"> | ||
223 | <on_click filter="" function="Inventory.SetSearchBy" userdata="all" /> | ||
224 | </menu_item_check> | ||
225 | </menu> | ||
208 | </menu_bar> | 226 | </menu_bar> |
209 | </floater> | 227 | </floater> |
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_media_browser.xml b/linden/indra/newview/skins/default/xui/en-us/floater_media_browser.xml index 318f46a..7beb7e4 100644 --- a/linden/indra/newview/skins/default/xui/en-us/floater_media_browser.xml +++ b/linden/indra/newview/skins/default/xui/en-us/floater_media_browser.xml | |||
@@ -1,7 +1,7 @@ | |||
1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> | 1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> |
2 | <floater can_close="true" can_drag_on_left="false" can_minimize="true" can_resize="true" | 2 | <floater can_close="true" can_drag_on_left="false" can_minimize="true" can_resize="true" |
3 | height="440" min_height="140" min_width="467" name="floater_about" | 3 | height="440" min_height="140" min_width="467" name="floater_about" |
4 | rect_control="FloaterMediaRect" title="Media Browser" width="560"> | 4 | rect_control="FloaterMediaRect" title="Web Browser" width="560"> |
5 | <layout_stack name="stack1" bottom="0" follows="left|right|top|bottom" left="10" top="-20" width="540"> | 5 | <layout_stack name="stack1" bottom="0" follows="left|right|top|bottom" left="10" top="-20" width="540"> |
6 | <layout_panel auto_resize="false" bottom="0" height="20" left="0" name="nav_controls" user_resize="false" | 6 | <layout_panel auto_resize="false" bottom="0" height="20" left="0" name="nav_controls" user_resize="false" |
7 | width="540"> | 7 | width="540"> |
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_snapshot.xml b/linden/indra/newview/skins/default/xui/en-us/floater_snapshot.xml index a9ac7fa..9333153 100644 --- a/linden/indra/newview/skins/default/xui/en-us/floater_snapshot.xml +++ b/linden/indra/newview/skins/default/xui/en-us/floater_snapshot.xml | |||
@@ -1,5 +1,5 @@ | |||
1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> | 1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> |
2 | <floater bottom="-300" can_close="true" can_drag_on_left="false" can_minimize="false" | 2 | <floater bottom="-300" can_close="true" can_drag_on_left="false" can_minimize="true" |
3 | can_resize="false" follows="left|top" height="526" name="Snapshot" | 3 | can_resize="false" follows="left|top" height="526" name="Snapshot" |
4 | rect_control="FloaterSnapshotRect" title="Snapshot Preview" width="215"> | 4 | rect_control="FloaterSnapshotRect" title="Snapshot Preview" width="215"> |
5 | <text bottom_delta="-40" follows="top|left" height="15" left="10" name="type_label" | 5 | <text bottom_delta="-40" follows="top|left" height="15" left="10" name="type_label" |
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_avatar.xml b/linden/indra/newview/skins/default/xui/en-us/panel_avatar.xml index a7a26ab..7a8a396 100644 --- a/linden/indra/newview/skins/default/xui/en-us/panel_avatar.xml +++ b/linden/indra/newview/skins/default/xui/en-us/panel_avatar.xml | |||
@@ -5,9 +5,9 @@ | |||
5 | <panel border="true" bottom="-507" follows="left|top|right|bottom" height="491" | 5 | <panel border="true" bottom="-507" follows="left|top|right|bottom" height="491" |
6 | label="2nd Life" left="1" mouse_opaque="true" name="2nd Life" width="418"> | 6 | label="2nd Life" left="1" mouse_opaque="true" name="2nd Life" width="418"> |
7 | <string name="CaptionTextAcctInfo"> | 7 | <string name="CaptionTextAcctInfo"> |
8 | [ACCTTYPE] | 8 | [ACCTTYPE] |
9 | [PAYMENTINFO] | 9 | [PAYMENTINFO] |
10 | [AGEVERIFICATION] | 10 | [AGEVERIFICATION] |
11 | </string> | 11 | </string> |
12 | <string name="AcctTypeResident"> | 12 | <string name="AcctTypeResident"> |
13 | Resident | 13 | Resident |
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_network.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_network.xml index 48da432..d4ec307 100644 --- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_network.xml +++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_network.xml | |||
@@ -10,8 +10,8 @@ | |||
10 | </text> | 10 | </text> |
11 | <slider bottom_delta="-25" can_edit_text="true" | 11 | <slider bottom_delta="-25" can_edit_text="true" |
12 | decimal_digits="0" enabled="true" follows="left|top" height="15" | 12 | decimal_digits="0" enabled="true" follows="left|top" height="15" |
13 | increment="10" initial_val="50" left_delta="0" max_val="1500" min_val="50" | 13 | increment="10" initial_val="1000" left_delta="0" max_val="5000" min_val="50" |
14 | mouse_opaque="true" name="max_bandwidth" show_text="true" value="500" | 14 | mouse_opaque="true" name="max_bandwidth" show_text="true" value="1000" |
15 | width="180" /> | 15 | width="180" /> |
16 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 16 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
17 | bottom_delta="4" drop_shadow_visible="true" enabled="true" | 17 | bottom_delta="4" drop_shadow_visible="true" enabled="true" |