Since multiwear, the low 8 bit of inventory items, if they are of type
IT_WEARABLE, is used for the wearable type (WT_*). Older viewers and
bots (like Second Inventory) create inventory items with 0 in those
bits. This causes all those item to appear as shapes in multi-wear
capable viewers.
This gives rise to many problems:
1) You can't wear them, because the inventory and asset wearable type
mismatch, which makes Singularity just abort.
2) Before it aborts, it already removed your old shape, thinking you
are about to wear another shape - and told the server that you are
wearing this broken item now. The result is that you see no change,
until you relog when you are suddenly wearing the broken "shape"
and stay a cloud forever.
This commit detects the problem for AT_CLOTHING wearables, because
they are not compatible with the type 'shape' after all (which is
is AT_BODYPART). It still doesn't know what the wearable type is, but
sets the type temporarily to the new value WT_UNKNOWN. Since this is
at least not a shape anymore, it doesn't cause you shape to be removed
when wearing it. Moreover, once the asset is downloaded, the mismatch
is detected and corrected: you can now wear -say- pants, or other
clothing.
Inventory clothing items with an unknown wearable type now have a
red question mark icon in the inventory.
What does NOT work yet:
1) If you copy such an item and paste it, then the new copy has
a shape icon again (and all the previously mentioned problems).
2) If you wear broken hair, skin or eyes (which still show as
shapes in the inventory) then your shape is still removed, and
wearing them fails because they are not multiwear capable and you
are already wearing such a body part. What should be done here
is that the removed shape is added back and the real body part
that you're trying to wear is removed.
3) Although this code attempts to fix the mFlags in the inventory,
the icon in the inventory doesn't change from question mark to the
right thing.
Params for LLScrollListCell, LLScrollListItem, and LLScrollListColumn
Moves code block for creating a LLScrollListCell out of LLScrollListCtrl::fromXML and into LLScrollListCell::create
Removes mDefaultListTextColor from LLScrollListCtrl, it is now used only in LLScrollListCell::create
Adds LLScrollListCtrl::addRow and LLScrollListCtrl::addColumn functions that take these Params
Separators are now built from an icon.. we may want to tweak it in the future, looks alright though
LLFloaterAvatarList::refreshAvatarList now builds elements with these Params instead of by LLSD
Conflicts:
indra/newview/llfloateractivespeakers.h - llparticipantlist.h got changed from a panel to a layoutpanel
indra/newview/lloverlaybar.cpp - Silly conflict, I change one line, Shyotl changes the next two.
Compile fixies:
indra/newview/llavataractions.cpp needed to include llnotifications.h
indra/newview/llvoicechannel.cpp needed to include llnotifications.h
Added libpathing to LLPHYSICSEXTENSIONS_INCLUDE_DIRS
llviewermenu updated a bit to be closer to v-d/rlva. Best viewed without space changes.
Updated llresmgr.cpp from v-d to "handle special case of input value being zero"
pipeline update: hideObject, restoreHiddenObject, hideDrawable, and unhideDrawable added.
Thanks to Henri Beauchamp for some UI code touchups, thanks to Zi Ree for Rebake notification.
Thanks to Mobius Ryba and Ansariel Hiller for the V1-style pathfinding icons.
Note: When opening from pie menu object selection is lost, unless the floater is already open..
This provides a more reliable reproduction of the bug we've been having with inspect.
Conflicts:
indra/newview/app_settings/settings.xml - Removed SinguMuteGestures, since it's EnableGestureSounds now.
~removed in llviewermessage.cpp as well.
Added History Button to group conferences and group chats.
Added Inventory Expand All icon and button added to inventory floater.
Thanks to Naudia Nadezda for pointing out that these parts of UI just work.