summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
Diffstat (limited to 'indra')
-rw-r--r--indra/llcharacter/llkeyframemotion.cpp7
-rw-r--r--indra/llcommon/llsdserialize.cpp139
-rw-r--r--indra/llcommon/llsdserialize.h4
-rw-r--r--indra/llimage/llimage.cpp30
-rw-r--r--indra/llimage/llimage.h14
-rw-r--r--indra/llinventory/CMakeLists.txt2
-rw-r--r--indra/llinventory/llinventory.cpp81
-rw-r--r--indra/llinventory/llinventory.h297
-rw-r--r--indra/llinventory/llinventorydefines.cpp37
-rw-r--r--indra/llinventory/llinventorydefines.h106
-rw-r--r--indra/llinventory/llinventorytype.h1
-rw-r--r--indra/llmath/llvolume.cpp141
-rw-r--r--indra/llmath/llvolume.h6
-rw-r--r--indra/llmessage/llcurl.cpp3
-rw-r--r--indra/llmessage/message_prehash.cpp2
-rw-r--r--indra/llplugin/llplugincookiestore.cpp36
-rw-r--r--indra/llplugin/tests/llplugincookiestore_test.cpp2
-rw-r--r--indra/llrender/llglslshader.cpp14
-rw-r--r--indra/llrender/llglslshader.h3
-rw-r--r--indra/llrender/llimagegl.cpp16
-rw-r--r--indra/llrender/llimagegl.h2
-rw-r--r--indra/llrender/llshadermgr.cpp8
-rw-r--r--indra/llrender/llvertexbuffer.cpp14
-rw-r--r--indra/llrender/llvertexbuffer.h5
-rw-r--r--indra/llui/llaccordionctrl.cpp24
-rw-r--r--indra/llui/llaccordionctrltab.cpp11
-rw-r--r--indra/llui/llaccordionctrltab.h2
-rw-r--r--indra/llui/llbutton.cpp2
-rw-r--r--indra/llui/llcombobox.cpp1
-rw-r--r--indra/llui/lleditmenuhandler.cpp7
-rw-r--r--indra/llui/lleditmenuhandler.h2
-rw-r--r--indra/llui/llflatlistview.cpp25
-rw-r--r--indra/llui/llflatlistview.h7
-rw-r--r--indra/llui/llfloater.cpp2
-rw-r--r--indra/llui/lllineeditor.cpp118
-rw-r--r--indra/llui/lllineeditor.h4
-rw-r--r--indra/llui/llmenugl.cpp2
-rw-r--r--indra/llui/llmultifloater.cpp2
-rw-r--r--indra/llui/llnotifications.h2
-rw-r--r--indra/llui/llscrollingpanellist.cpp28
-rw-r--r--indra/llui/llscrollingpanellist.h6
-rw-r--r--indra/llui/llscrolllistctrl.cpp5
-rw-r--r--indra/llui/lltextbase.cpp7
-rw-r--r--indra/llui/lltextbase.h1
-rw-r--r--indra/llui/lltexteditor.cpp245
-rw-r--r--indra/llui/lltexteditor.h12
-rw-r--r--indra/llui/llui.cpp7
-rw-r--r--indra/llui/llui.h2
-rw-r--r--indra/llui/llurlentry.cpp31
-rw-r--r--indra/llui/llurlentry.h12
-rw-r--r--indra/llui/llurlregistry.cpp2
-rw-r--r--indra/llui/llview.cpp2
-rw-r--r--indra/llwindow/llwindowwin32.cpp73
-rw-r--r--indra/media_plugins/webkit/CMakeLists.txt8
-rw-r--r--indra/media_plugins/webkit/dummy_volume_catcher.cpp63
-rw-r--r--indra/media_plugins/webkit/linux_volume_catcher.cpp72
-rw-r--r--indra/media_plugins/webkit/media_plugin_webkit.cpp16
-rw-r--r--indra/media_plugins/webkit/volume_catcher.h59
-rw-r--r--indra/newview/app_settings/settings.xml76
-rw-r--r--indra/newview/app_settings/settings_per_account.xml56
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl28
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl26
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl19
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl16
-rw-r--r--indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl28
-rw-r--r--indra/newview/llagent.cpp10
-rw-r--r--indra/newview/llagentcamera.cpp4
-rw-r--r--indra/newview/llagentwearables.cpp4
-rw-r--r--indra/newview/llagentwearables.h2
-rw-r--r--indra/newview/llagentwearablesfetch.cpp46
-rw-r--r--indra/newview/llagentwearablesfetch.h10
-rw-r--r--indra/newview/llappearancemgr.cpp290
-rw-r--r--indra/newview/llappearancemgr.h31
-rw-r--r--indra/newview/llappviewer.cpp77
-rw-r--r--indra/newview/llappviewer.h2
-rw-r--r--indra/newview/llassetuploadresponders.cpp3
-rw-r--r--indra/newview/llavatarlist.cpp7
-rw-r--r--indra/newview/llavatarlist.h6
-rw-r--r--indra/newview/llcallfloater.cpp10
-rw-r--r--indra/newview/llchathistory.cpp11
-rw-r--r--indra/newview/llcompilequeue.cpp26
-rw-r--r--indra/newview/llcompilequeue.h12
-rw-r--r--indra/newview/lldrawpoolavatar.cpp32
-rw-r--r--indra/newview/lldrawpoolavatar.h2
-rw-r--r--indra/newview/lldynamictexture.cpp2
-rw-r--r--indra/newview/lldynamictexture.h13
-rw-r--r--indra/newview/llface.cpp18
-rw-r--r--indra/newview/llface.h4
-rw-r--r--indra/newview/llfloateranimpreview.cpp6
-rw-r--r--indra/newview/llfloateranimpreview.h2
-rw-r--r--indra/newview/llfloaterbulkpermission.cpp9
-rw-r--r--indra/newview/llfloaterbulkpermission.h4
-rw-r--r--indra/newview/llfloaterbuy.cpp11
-rw-r--r--indra/newview/llfloaterbuy.h2
-rw-r--r--indra/newview/llfloaterbuycontents.cpp9
-rw-r--r--indra/newview/llfloaterbuycontents.h2
-rw-r--r--indra/newview/llfloatergesture.cpp4
-rw-r--r--indra/newview/llfloatergodtools.cpp1
-rw-r--r--indra/newview/llfloaterimagepreview.cpp10
-rw-r--r--indra/newview/llfloaterimagepreview.h4
-rw-r--r--indra/newview/llfloaterland.cpp5
-rw-r--r--indra/newview/llfloaterland.h5
-rw-r--r--indra/newview/llfloateropenobject.cpp4
-rw-r--r--indra/newview/llfloaterpreference.cpp36
-rw-r--r--indra/newview/llfloaterproperties.cpp16
-rw-r--r--indra/newview/llfloatersnapshot.cpp20
-rw-r--r--indra/newview/llfloatertos.cpp44
-rw-r--r--indra/newview/llfloatertos.h7
-rw-r--r--indra/newview/llfloaterworldmap.cpp2
-rw-r--r--indra/newview/llfolderview.cpp8
-rw-r--r--indra/newview/llfoldervieweventlistener.h2
-rw-r--r--indra/newview/llfolderviewitem.cpp45
-rw-r--r--indra/newview/llfriendcard.cpp2
-rw-r--r--indra/newview/llgesturemgr.cpp4
-rw-r--r--indra/newview/llgroupactions.cpp5
-rw-r--r--indra/newview/llinventorybridge.cpp1154
-rw-r--r--indra/newview/llinventorybridge.h455
-rw-r--r--indra/newview/llinventoryfunctions.cpp46
-rw-r--r--indra/newview/llinventoryfunctions.h10
-rw-r--r--indra/newview/llinventorymodel.cpp2
-rw-r--r--indra/newview/llinventorymodelbackgroundfetch.cpp2
-rw-r--r--indra/newview/llinventoryobserver.cpp36
-rw-r--r--indra/newview/llinventoryobserver.h57
-rw-r--r--indra/newview/llinventorypanel.cpp109
-rw-r--r--indra/newview/llinventorypanel.h16
-rw-r--r--indra/newview/lllocationinputctrl.cpp5
-rw-r--r--indra/newview/lllogininstance.cpp10
-rw-r--r--indra/newview/llnearbychat.cpp2
-rw-r--r--indra/newview/llnotificationtiphandler.cpp4
-rw-r--r--indra/newview/llpanelcontents.cpp3
-rw-r--r--indra/newview/llpaneleditwearable.cpp27
-rw-r--r--indra/newview/llpaneleditwearable.h4
-rw-r--r--indra/newview/llpanelgrouplandmoney.cpp2
-rw-r--r--indra/newview/llpanelgroupnotices.cpp3
-rw-r--r--indra/newview/llpanellandmarks.cpp23
-rw-r--r--indra/newview/llpanellandmarks.h1
-rw-r--r--indra/newview/llpanelmaininventory.cpp10
-rw-r--r--indra/newview/llpanelnearbymedia.cpp17
-rw-r--r--indra/newview/llpanelnearbymedia.h4
-rw-r--r--indra/newview/llpanelobjectinventory.cpp35
-rw-r--r--indra/newview/llpanelobjectinventory.h6
-rw-r--r--indra/newview/llpaneloutfitedit.cpp83
-rw-r--r--indra/newview/llpaneloutfitedit.h13
-rw-r--r--indra/newview/llpaneloutfitsinventory.cpp160
-rw-r--r--indra/newview/llpaneloutfitsinventory.h4
-rw-r--r--indra/newview/llpanelpeople.cpp6
-rw-r--r--indra/newview/llpanelplaces.cpp14
-rw-r--r--indra/newview/llpanelplaces.h2
-rw-r--r--indra/newview/llpanelplacestab.cpp1
-rw-r--r--indra/newview/llpanelplacestab.h2
-rw-r--r--indra/newview/llpanelteleporthistory.cpp16
-rw-r--r--indra/newview/llpanelteleporthistory.h1
-rw-r--r--indra/newview/llparticipantlist.cpp6
-rw-r--r--indra/newview/llplacesinventorybridge.cpp13
-rw-r--r--indra/newview/llplacesinventorybridge.h38
-rw-r--r--indra/newview/llplacesinventorypanel.cpp34
-rw-r--r--indra/newview/llpopupview.cpp22
-rw-r--r--indra/newview/llpreview.cpp2
-rw-r--r--indra/newview/llpreviewgesture.cpp3
-rw-r--r--indra/newview/llpreviewnotecard.cpp1
-rw-r--r--indra/newview/llpreviewscript.cpp3
-rw-r--r--indra/newview/llscreenchannel.cpp36
-rw-r--r--indra/newview/llsidepanelappearance.cpp20
-rw-r--r--indra/newview/llsidepanelinventory.cpp2
-rw-r--r--indra/newview/llsidepaneliteminfo.cpp15
-rw-r--r--indra/newview/llspatialpartition.cpp7
-rw-r--r--indra/newview/llspatialpartition.h7
-rw-r--r--indra/newview/llstartup.cpp11
-rw-r--r--indra/newview/lltexlayer.cpp6
-rw-r--r--indra/newview/lltexlayer.h1
-rw-r--r--indra/newview/lltexturecache.cpp70
-rw-r--r--indra/newview/lltexturecache.h3
-rw-r--r--indra/newview/lltoast.cpp59
-rw-r--r--indra/newview/lltoast.h37
-rw-r--r--indra/newview/lltoastalertpanel.cpp3
-rw-r--r--indra/newview/lltooldraganddrop.cpp28
-rw-r--r--indra/newview/lltoolmorph.cpp12
-rw-r--r--indra/newview/lltoolmorph.h3
-rw-r--r--indra/newview/lltoolpie.cpp31
-rw-r--r--indra/newview/lltracker.cpp7
-rw-r--r--indra/newview/llurllineeditorctrl.cpp7
-rw-r--r--indra/newview/llurllineeditorctrl.h2
-rw-r--r--indra/newview/llviewercontrol.cpp13
-rw-r--r--indra/newview/llviewerinventory.cpp11
-rw-r--r--indra/newview/llviewerinventory.h4
-rw-r--r--indra/newview/llviewermedia.cpp13
-rw-r--r--indra/newview/llviewermenu.cpp31
-rw-r--r--indra/newview/llviewermenu.h1
-rw-r--r--indra/newview/llviewermenufile.cpp5
-rw-r--r--indra/newview/llviewermessage.cpp27
-rw-r--r--indra/newview/llviewermessage.h2
-rw-r--r--indra/newview/llviewerobject.cpp27
-rw-r--r--indra/newview/llviewerobject.h6
-rw-r--r--indra/newview/llviewershadermgr.cpp25
-rw-r--r--indra/newview/llviewershadermgr.h3
-rw-r--r--indra/newview/llviewertexteditor.cpp4
-rw-r--r--indra/newview/llviewertexture.cpp8
-rw-r--r--indra/newview/llviewerwindow.cpp175
-rw-r--r--indra/newview/llvoavatar.cpp133
-rw-r--r--indra/newview/llvoavatar.h1
-rw-r--r--indra/newview/llvoicechannel.cpp7
-rw-r--r--indra/newview/llvoiceclient.cpp2
-rw-r--r--indra/newview/llvoinventorylistener.h2
-rw-r--r--indra/newview/llvovolume.cpp20
-rw-r--r--indra/newview/llworldmapview.cpp20
-rw-r--r--indra/newview/llxmlrpctransaction.cpp4
-rw-r--r--indra/newview/pipeline.cpp125
-rw-r--r--indra/newview/pipeline.h3
-rw-r--r--indra/newview/skins/default/colors.xml16
-rw-r--r--indra/newview/skins/default/textures/arrow_down.tgabin0 -> 1068 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Generic_Group_Large.pngbin2282 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Progress_1.pngbin464 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Progress_10.pngbin461 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Progress_11.pngbin471 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Progress_12.pngbin457 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Progress_2.pngbin461 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Progress_3.pngbin487 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Progress_4.pngbin466 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Progress_5.pngbin477 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Progress_6.pngbin460 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Progress_7.pngbin483 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Progress_8.pngbin467 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Progress_9.pngbin483 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/textures.xml183
-rw-r--r--indra/newview/skins/default/xui/en/alert_line_editor.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_about.xml11
-rw-r--r--indra/newview/skins/default/xui/en/floater_about_land.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_animation_preview.xml152
-rw-r--r--indra/newview/skins/default/xui/en/floater_buy_land.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_god_tools.xml8
-rw-r--r--indra/newview/skins/default/xui/en/floater_hardware_settings.xml22
-rw-r--r--indra/newview/skins/default/xui/en/floater_image_preview.xml30
-rw-r--r--indra/newview/skins/default/xui/en/floater_outfit_save_as.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_preview_notecard.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_report_abuse.xml7
-rw-r--r--indra/newview/skins/default/xui/en/floater_test_text_editor.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_tools.xml30
-rw-r--r--indra/newview/skins/default/xui/en/floater_tos.xml5
-rw-r--r--indra/newview/skins/default/xui/en/floater_ui_preview.xml3
-rw-r--r--indra/newview/skins/default/xui/en/floater_wearable_save_as.xml1
-rw-r--r--indra/newview/skins/default/xui/en/inspector_info_ctrl.xml6
-rw-r--r--indra/newview/skins/default/xui/en/menu_edit.xml89
-rw-r--r--indra/newview/skins/default/xui/en/menu_login.xml137
-rw-r--r--indra/newview/skins/default/xui/en/menu_viewer.xml599
-rw-r--r--indra/newview/skins/default/xui/en/notifications.xml22
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_alpha.xml53
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_eyes.xml55
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_gloves.xml51
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_hair.xml55
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_jacket.xml61
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_pants.xml51
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_shape.xml90
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_shirt.xml47
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_shoes.xml51
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_skin.xml57
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_skirt.xml51
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_socks.xml51
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_tattoo.xml37
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_underpants.xml51
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_undershirt.xml51
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_wearable.xml68
-rw-r--r--indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_im_control_panel.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_login.xml3
-rw-r--r--indra/newview/skins/default/xui/en/panel_main_inventory.xml635
-rw-r--r--indra/newview/skins/default/xui/en/panel_nearby_media.xml16
-rw-r--r--indra/newview/skins/default/xui/en/panel_online_status_toast.xml8
-rw-r--r--indra/newview/skins/default/xui/en/panel_outfit_edit.xml5
-rw-r--r--indra/newview/skins/default/xui/en/panel_outfits_inventory.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_people.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_place_profile.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_places.xml11
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_advanced.xml43
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_general.xml19
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml29
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_privacy.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_setup.xml15
-rw-r--r--indra/newview/skins/default/xui/en/panel_region_covenant.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_script_ed.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_scrolling_param.xml32
-rw-r--r--indra/newview/skins/default/xui/en/panel_status_bar.xml8
-rw-r--r--indra/newview/skins/default/xui/en/panel_toast.xml1
-rw-r--r--indra/newview/skins/default/xui/en/sidepanel_appearance.xml4
-rw-r--r--indra/newview/skins/default/xui/en/widgets/line_editor.xml1
-rw-r--r--indra/newview/skins/default/xui/es/floater_about_land.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_buy_land.xml36
-rw-r--r--indra/newview/skins/default/xui/es/floater_customize.xml14
-rw-r--r--indra/newview/skins/default/xui/es/floater_incoming_call.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_inventory_view_finder.xml8
-rw-r--r--indra/newview/skins/default/xui/es/floater_land_holdings.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_preferences.xml4
-rw-r--r--indra/newview/skins/default/xui/es/floater_tools.xml8
-rw-r--r--indra/newview/skins/default/xui/es/menu_attachment_self.xml2
-rw-r--r--indra/newview/skins/default/xui/es/menu_avatar_self.xml2
-rw-r--r--indra/newview/skins/default/xui/es/menu_inspect_self_gear.xml2
-rw-r--r--indra/newview/skins/default/xui/es/menu_land.xml2
-rw-r--r--indra/newview/skins/default/xui/es/menu_object.xml4
-rw-r--r--indra/newview/skins/default/xui/es/menu_participant_list.xml2
-rw-r--r--indra/newview/skins/default/xui/es/menu_people_nearby.xml2
-rw-r--r--indra/newview/skins/default/xui/es/menu_people_nearby_multiselect.xml2
-rw-r--r--indra/newview/skins/default/xui/es/menu_viewer.xml2
-rw-r--r--indra/newview/skins/default/xui/es/notifications.xml42
-rw-r--r--indra/newview/skins/default/xui/es/panel_edit_classified.xml2
-rw-r--r--indra/newview/skins/default/xui/es/panel_edit_pick.xml4
-rw-r--r--indra/newview/skins/default/xui/es/panel_notes.xml2
-rw-r--r--indra/newview/skins/default/xui/es/panel_people.xml4
-rw-r--r--indra/newview/skins/default/xui/es/panel_preferences_chat.xml2
-rw-r--r--indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml2
-rw-r--r--indra/newview/skins/default/xui/es/panel_region_general.xml3
-rw-r--r--indra/newview/skins/default/xui/es/panel_side_tray.xml14
-rw-r--r--indra/newview/skins/default/xui/es/strings.xml10
-rw-r--r--indra/newview/skins/default/xui/es/teleport_strings.xml14
-rw-r--r--indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml10
-rw-r--r--indra/newview/skins/default/xui/fr/floater_preferences.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/floater_tools.xml6
-rw-r--r--indra/newview/skins/default/xui/it/floater_about_land.xml2
-rw-r--r--indra/newview/skins/default/xui/it/floater_buy_land.xml38
-rw-r--r--indra/newview/skins/default/xui/it/floater_inventory_view_finder.xml2
-rw-r--r--indra/newview/skins/default/xui/it/floater_preferences.xml4
-rw-r--r--indra/newview/skins/default/xui/it/floater_tools.xml8
-rw-r--r--indra/newview/skins/default/xui/it/panel_group_invite.xml2
-rw-r--r--indra/newview/skins/default/xui/it/panel_login.xml11
-rw-r--r--indra/newview/skins/default/xui/it/panel_preferences_sound.xml4
-rw-r--r--indra/newview/skins/default/xui/it/role_actions.xml2
-rw-r--r--indra/newview/skins/default/xui/it/strings.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/floater_report_abuse.xml2
-rw-r--r--indra/newview/skins/default/xui/nl/floater_about.xml67
-rw-r--r--indra/newview/skins/default/xui/nl/floater_mute_object.xml13
-rw-r--r--indra/newview/skins/default/xui/nl/floater_report_abuse.xml106
-rw-r--r--indra/newview/skins/default/xui/nl/floater_stats.xml71
-rw-r--r--indra/newview/skins/default/xui/nl/menu_inventory.xml24
-rw-r--r--indra/newview/skins/default/xui/nl/menu_inventory_add.xml32
-rw-r--r--indra/newview/skins/default/xui/nl/menu_picks.xml8
-rw-r--r--indra/newview/skins/default/xui/nl/panel_group_roles.xml136
-rw-r--r--indra/newview/skins/default/xui/nl/panel_login.xml62
-rw-r--r--indra/newview/skins/default/xui/nl/panel_main_inventory.xml64
-rw-r--r--indra/newview/skins/default/xui/nl/panel_world_map.xml6
-rw-r--r--indra/newview/skins/default/xui/nl/strings.xml2867
-rw-r--r--indra/newview/skins/default/xui/nl/teleport_strings.xml8
-rw-r--r--indra/newview/skins/default/xui/pl/panel_preferences_sound.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/floater_inventory_view_finder.xml6
-rw-r--r--indra/newview/skins/default/xui/pt/floater_preferences.xml4
-rw-r--r--indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml10
-rwxr-xr-xindra/newview/viewer_manifest.py8
344 files changed, 8030 insertions, 5283 deletions
diff --git a/indra/llcharacter/llkeyframemotion.cpp b/indra/llcharacter/llkeyframemotion.cpp
index 5a2e3f73f9..f4dc3b927b 100644
--- a/indra/llcharacter/llkeyframemotion.cpp
+++ b/indra/llcharacter/llkeyframemotion.cpp
@@ -658,7 +658,12 @@ BOOL LLKeyframeMotion::onActivate()
// If the keyframe anim has an associated emote, trigger it.
if( mJointMotionList->mEmoteName.length() > 0 )
{
- mCharacter->startMotion( gAnimLibrary.stringToAnimState(mJointMotionList->mEmoteName) );
+ LLUUID emote_anim_id = gAnimLibrary.stringToAnimState(mJointMotionList->mEmoteName);
+ // don't start emote if already active to avoid recursion
+ if (!mCharacter->isMotionActive(emote_anim_id))
+ {
+ mCharacter->startMotion( emote_anim_id );
+ }
}
mLastLoopedTime = 0.f;
diff --git a/indra/llcommon/llsdserialize.cpp b/indra/llcommon/llsdserialize.cpp
index cf337be161..fdeb93e27f 100644
--- a/indra/llcommon/llsdserialize.cpp
+++ b/indra/llcommon/llsdserialize.cpp
@@ -39,6 +39,7 @@
#include <iostream>
#include "apr_base64.h"
+#include "zlib/zlib.h" // for davep's dirty little zip functions
#if !LL_WINDOWS
#include <netinet/in.h> // htonl & ntohl
@@ -1989,3 +1990,141 @@ std::ostream& operator<<(std::ostream& s, const LLSD& llsd)
return s;
}
+
+//dirty little zippers -- yell at davep if these are horrid
+
+//return a string containing gzipped bytes of binary serialized LLSD
+// VERY inefficient -- creates several copies of LLSD block in memory
+std::string zip_llsd(LLSD& data)
+{
+ std::stringstream llsd_strm;
+
+ LLSDSerialize::serialize(data, llsd_strm, LLSDSerialize::LLSD_BINARY);
+
+ z_stream strm;
+ strm.zalloc = Z_NULL;
+ strm.zfree = Z_NULL;
+ strm.opaque = Z_NULL;
+
+ S32 ret = deflateInit(&strm, Z_BEST_COMPRESSION);
+ if (ret != Z_OK)
+ {
+ llwarns << "Failed to compress LLSD block." << llendl;
+ return std::string();
+ }
+
+ std::string source = llsd_strm.str();
+
+ strm.avail_in = source.size();
+ strm.next_in = (U8*) source.data();
+ U8* output = new U8[strm.avail_in];
+ strm.avail_out = strm.avail_in;
+ strm.next_out = output;
+ ret = deflate(&strm, Z_FINISH);
+ if (ret != Z_STREAM_END)
+ {
+ delete [] output;
+ llwarns << "Failed to compress LLSD block." << llendl;
+ return std::string();
+ }
+
+ std::string::size_type size = source.size()-strm.avail_out;
+
+ std::string result((char*) output, size);
+ deflateEnd(&strm);
+ delete [] output;
+
+ return result;
+}
+
+//decompress a block of LLSD from provided istream
+// not very efficient -- creats a copy of decompressed LLSD block in memory
+// and deserializes from that copy using LLSDSerialize
+bool unzip_llsd(LLSD& data, std::istream& is, S32 size)
+{
+ U8* result = NULL;
+ U32 cur_size = 0;
+ z_stream strm;
+
+ const U32 CHUNK = 65536;
+
+ U8 *in = new U8[size];
+ is.read((char*) in, size);
+
+ U8 out[CHUNK];
+
+ strm.zalloc = Z_NULL;
+ strm.zfree = Z_NULL;
+ strm.opaque = Z_NULL;
+ strm.avail_in = size;
+ strm.next_in = in;
+
+ S32 ret = inflateInit(&strm);
+
+ if (ret != Z_OK)
+ {
+ llerrs << "WTF?" << llendl;
+ }
+
+ do
+ {
+ strm.avail_out = CHUNK;
+ strm.next_out = out;
+ ret = inflate(&strm, Z_NO_FLUSH);
+ if (ret == Z_STREAM_ERROR)
+ {
+ inflateEnd(&strm);
+ free(result);
+ delete [] in;
+ return false;
+ }
+
+ switch (ret)
+ {
+ case Z_NEED_DICT:
+ ret = Z_DATA_ERROR;
+ case Z_DATA_ERROR:
+ case Z_MEM_ERROR:
+ inflateEnd(&strm);
+ free(result);
+ delete [] in;
+ return false;
+ break;
+ }
+
+ U32 have = CHUNK-strm.avail_out;
+
+ result = (U8*) realloc(result, cur_size + have);
+ memcpy(result+cur_size, out, have);
+ cur_size += have;
+
+ } while (strm.avail_out == 0);
+
+ inflateEnd(&strm);
+ delete [] in;
+
+ if (ret != Z_STREAM_END)
+ {
+ free(result);
+ return false;
+ }
+
+ //result now points to the decompressed LLSD block
+ {
+ std::string res_str((char*) result, cur_size);
+ std::istringstream istr(res_str);
+
+ if (!LLSDSerialize::deserialize(data, istr, cur_size))
+ {
+ llwarns << "Failed to unzip LLSD block" << llendl;
+ free(result);
+ return false;
+ }
+ }
+
+ free(result);
+ return true;
+}
+
+
+
diff --git a/indra/llcommon/llsdserialize.h b/indra/llcommon/llsdserialize.h
index 2f2b292189..390eaca783 100644
--- a/indra/llcommon/llsdserialize.h
+++ b/indra/llcommon/llsdserialize.h
@@ -796,4 +796,8 @@ public:
}
};
+//dirty little zip functions -- yell at davep
+LL_COMMON_API std::string zip_llsd(LLSD& data);
+LL_COMMON_API bool unzip_llsd(LLSD& data, std::istream& is, S32 size);
+
#endif // LL_LLSDSERIALIZE_H
diff --git a/indra/llimage/llimage.cpp b/indra/llimage/llimage.cpp
index 7d0de18c7c..0874f574c5 100644
--- a/indra/llimage/llimage.cpp
+++ b/indra/llimage/llimage.cpp
@@ -93,9 +93,10 @@ LLImageBase::LLImageBase()
mWidth(0),
mHeight(0),
mComponents(0),
+ mBadBufferAllocation(false),
+ mAllowOverSize(false),
mMemType(LLMemType::MTYPE_IMAGEBASE)
{
- mBadBufferAllocation = FALSE ;
}
// virtual
@@ -134,8 +135,6 @@ void LLImageBase::sanityCheck()
}
}
-BOOL LLImageBase::sSizeOverride = FALSE;
-
// virtual
void LLImageBase::deleteData()
{
@@ -157,23 +156,32 @@ U8* LLImageBase::allocateData(S32 size)
llerrs << llformat("LLImageBase::allocateData called with bad dimensions: %dx%dx%d",mWidth,mHeight,mComponents) << llendl;
}
}
- if (size < 1 || (size > 4096*4096*16 && sSizeOverride == FALSE))
+
+ //make this function thread-safe.
+ static const U32 MAX_BUFFER_SIZE = 4096 * 4096 * 16 ; //256 MB
+ if (size < 1 || size > MAX_BUFFER_SIZE)
{
llinfos << "width: " << mWidth << " height: " << mHeight << " components: " << mComponents << llendl ;
+ if(mAllowOverSize)
+ {
+ llinfos << "Oversize: " << size << llendl ;
+ }
+ else
+ {
llerrs << "LLImageBase::allocateData: bad size: " << size << llendl;
}
-
+ }
if (!mData || size != mDataSize)
{
deleteData(); // virtual
- mBadBufferAllocation = FALSE ;
+ mBadBufferAllocation = false ;
mData = new U8[size];
if (!mData)
{
llwarns << "allocate image data: " << size << llendl;
size = 0 ;
mWidth = mHeight = 0 ;
- mBadBufferAllocation = TRUE ;
+ mBadBufferAllocation = true ;
}
mDataSize = size;
}
@@ -222,7 +230,7 @@ U8* LLImageBase::getData()
return mData;
}
-BOOL LLImageBase::isBufferInvalid()
+bool LLImageBase::isBufferInvalid()
{
return mBadBufferAllocation || mData == NULL ;
}
@@ -258,7 +266,11 @@ LLImageRaw::LLImageRaw(U16 width, U16 height, S8 components)
: LLImageBase()
{
mMemType = LLMemType::MTYPE_IMAGERAW;
- llassert( S32(width) * S32(height) * S32(components) <= MAX_IMAGE_DATA_SIZE );
+ //llassert( S32(width) * S32(height) * S32(components) <= MAX_IMAGE_DATA_SIZE );
+ if(S32(width) * S32(height) * S32(components) > MAX_IMAGE_DATA_SIZE)
+ {
+ llwarns << "over size: width: " << (S32)width << " height: " << (S32)height << " components: " << (S32)components << llendl ;
+ }
allocateDataSize(width, height, components);
++sRawImageCount;
}
diff --git a/indra/llimage/llimage.h b/indra/llimage/llimage.h
index 686f583886..10444e7f89 100644
--- a/indra/llimage/llimage.h
+++ b/indra/llimage/llimage.h
@@ -48,7 +48,7 @@ const S32 MAX_IMAGE_SIZE = (1<<MAX_IMAGE_MIP); // 2048
const S32 MIN_IMAGE_AREA = MIN_IMAGE_SIZE * MIN_IMAGE_SIZE;
const S32 MAX_IMAGE_AREA = MAX_IMAGE_SIZE * MAX_IMAGE_SIZE;
const S32 MAX_IMAGE_COMPONENTS = 8;
-const S32 MAX_IMAGE_DATA_SIZE = MAX_IMAGE_AREA * MAX_IMAGE_COMPONENTS;
+const S32 MAX_IMAGE_DATA_SIZE = MAX_IMAGE_AREA * MAX_IMAGE_COMPONENTS; //2048 * 2048 * 8 = 16 MB
// Note! These CANNOT be changed without modifying simulator code
// *TODO: change both to 1024 when SIM texture fetching is deprecated
@@ -124,10 +124,12 @@ public:
const U8 *getData() const ;
U8 *getData() ;
- BOOL isBufferInvalid() ;
+ bool isBufferInvalid() ;
void setSize(S32 width, S32 height, S32 ncomponents);
U8* allocateDataSize(S32 width, S32 height, S32 ncomponents, S32 size = -1); // setSize() + allocateData()
+ void enableOverSize() {mAllowOverSize = true ;}
+ void disableOverSize() {mAllowOverSize = false; }
protected:
// special accessor to allow direct setting of mData and mDataSize by LLImageFormatted
@@ -140,8 +142,6 @@ public:
// <= 0 priority means that there's no need for more data.
static F32 calc_download_priority(F32 virtual_size, F32 visible_area, S32 bytes_sent);
- static void setSizeOverride(BOOL enabled) { sSizeOverride = enabled; }
-
static EImageCodec getCodecFromExtension(const std::string& exten);
private:
@@ -153,12 +153,10 @@ private:
S8 mComponents;
- BOOL mBadBufferAllocation ;
-
+ bool mBadBufferAllocation ;
+ bool mAllowOverSize ;
public:
LLMemType::DeclareMemType& mMemType; // debug
-
- static BOOL sSizeOverride;
};
// Raw representation of an image (used for textures, and other uncompressed formats
diff --git a/indra/llinventory/CMakeLists.txt b/indra/llinventory/CMakeLists.txt
index b358f0a013..a563db901a 100644
--- a/indra/llinventory/CMakeLists.txt
+++ b/indra/llinventory/CMakeLists.txt
@@ -20,6 +20,7 @@ set(llinventory_SOURCE_FILES
llcategory.cpp
lleconomy.cpp
llinventory.cpp
+ llinventorydefines.cpp
llinventorytype.cpp
lllandmark.cpp
llnotecard.cpp
@@ -36,6 +37,7 @@ set(llinventory_HEADER_FILES
llcategory.h
lleconomy.h
llinventory.h
+ llinventorydefines.h
llinventorytype.h
lllandmark.h
llnotecard.h
diff --git a/indra/llinventory/llinventory.cpp b/indra/llinventory/llinventory.cpp
index d665deb605..2c767a4857 100644
--- a/indra/llinventory/llinventory.cpp
+++ b/indra/llinventory/llinventory.cpp
@@ -31,10 +31,10 @@
*/
#include "linden_common.h"
-
#include "llinventory.h"
#include "lldbstrings.h"
+#include "llinventorydefines.h"
#include "llxorcipher.h"
#include "llsd.h"
#include "message.h"
@@ -43,9 +43,8 @@
#include "llsdutil.h"
///----------------------------------------------------------------------------
-/// exported functions
+/// Exported functions
///----------------------------------------------------------------------------
-
static const std::string INV_ITEM_ID_LABEL("item_id");
static const std::string INV_FOLDER_ID_LABEL("folder_id");
static const std::string INV_PARENT_ID_LABEL("parent_id");
@@ -64,25 +63,23 @@ static const std::string INV_CREATION_DATE_LABEL("created_at");
// key used by agent-inventory-service
static const std::string INV_ASSET_TYPE_LABEL_WS("type_default");
static const std::string INV_FOLDER_ID_LABEL_WS("category_id");
+
///----------------------------------------------------------------------------
/// Local function declarations, constants, enums, and typedefs
///----------------------------------------------------------------------------
-
const U8 TASK_INVENTORY_ITEM_KEY = 0;
const U8 TASK_INVENTORY_ASSET_KEY = 1;
const LLUUID MAGIC_ID("3c115e51-04f4-523c-9fa6-98aff1034730");
-
///----------------------------------------------------------------------------
/// Class LLInventoryObject
///----------------------------------------------------------------------------
-LLInventoryObject::LLInventoryObject(
- const LLUUID& uuid,
- const LLUUID& parent_uuid,
- LLAssetType::EType type,
- const std::string& name) :
+LLInventoryObject::LLInventoryObject(const LLUUID& uuid,
+ const LLUUID& parent_uuid,
+ LLAssetType::EType type,
+ const std::string& name) :
mUUID(uuid),
mParentUUID(parent_uuid),
mType(type),
@@ -99,7 +96,7 @@ LLInventoryObject::LLInventoryObject() :
{
}
-LLInventoryObject::~LLInventoryObject( void )
+LLInventoryObject::~LLInventoryObject()
{
}
@@ -292,18 +289,17 @@ void LLInventoryObject::updateServer(BOOL) const
/// Class LLInventoryItem
///----------------------------------------------------------------------------
-LLInventoryItem::LLInventoryItem(
- const LLUUID& uuid,
- const LLUUID& parent_uuid,
- const LLPermissions& permissions,
- const LLUUID& asset_uuid,
- LLAssetType::EType type,
- LLInventoryType::EType inv_type,
- const std::string& name,
- const std::string& desc,
- const LLSaleInfo& sale_info,
- U32 flags,
- S32 creation_date_utc) :
+LLInventoryItem::LLInventoryItem(const LLUUID& uuid,
+ const LLUUID& parent_uuid,
+ const LLPermissions& permissions,
+ const LLUUID& asset_uuid,
+ LLAssetType::EType type,
+ LLInventoryType::EType inv_type,
+ const std::string& name,
+ const std::string& desc,
+ const LLSaleInfo& sale_info,
+ U32 flags,
+ S32 creation_date_utc) :
LLInventoryObject(uuid, parent_uuid, type, name),
mPermissions(permissions),
mAssetUUID(asset_uuid),
@@ -458,11 +454,18 @@ void LLInventoryItem::setCreationDate(time_t creation_date_utc)
mCreationDate = creation_date_utc;
}
+// Currently only used in the Viewer to handle calling cards
+// where the creator is actually used to store the target.
+void LLInventoryItem::setCreator(const LLUUID& creator)
+{
+ mPermissions.setCreator(creator);
+}
+
void LLInventoryItem::accumulatePermissionSlamBits(const LLInventoryItem& old_item)
{
// Remove any pre-existing II_FLAGS_PERM_OVERWRITE_MASK flags
// because we now detect when they should be set.
- setFlags( old_item.getFlags() | (getFlags() & ~(LLInventoryItem::II_FLAGS_PERM_OVERWRITE_MASK)) );
+ setFlags( old_item.getFlags() | (getFlags() & ~(LLInventoryItemFlags::II_FLAGS_PERM_OVERWRITE_MASK)) );
// Enforce the PERM_OVERWRITE flags for any masks that are different
// but only for AT_OBJECT's since that is the only asset type that can
@@ -473,20 +476,20 @@ void LLInventoryItem::accumulatePermissionSlamBits(const LLInventoryItem& old_it
U32 flags_to_be_set = 0;
if(old_permissions.getMaskNextOwner() != getPermissions().getMaskNextOwner())
{
- flags_to_be_set |= LLInventoryItem::II_FLAGS_OBJECT_SLAM_PERM;
+ flags_to_be_set |= LLInventoryItemFlags::II_FLAGS_OBJECT_SLAM_PERM;
}
if(old_permissions.getMaskEveryone() != getPermissions().getMaskEveryone())
{
- flags_to_be_set |= LLInventoryItem::II_FLAGS_OBJECT_PERM_OVERWRITE_EVERYONE;
+ flags_to_be_set |= LLInventoryItemFlags::II_FLAGS_OBJECT_PERM_OVERWRITE_EVERYONE;
}
if(old_permissions.getMaskGroup() != getPermissions().getMaskGroup())
{
- flags_to_be_set |= LLInventoryItem::II_FLAGS_OBJECT_PERM_OVERWRITE_GROUP;
+ flags_to_be_set |= LLInventoryItemFlags::II_FLAGS_OBJECT_PERM_OVERWRITE_GROUP;
}
LLSaleInfo old_sale_info = old_item.getSaleInfo();
if(old_sale_info != getSaleInfo())
{
- flags_to_be_set |= LLInventoryItem::II_FLAGS_OBJECT_SLAM_SALE;
+ flags_to_be_set |= LLInventoryItemFlags::II_FLAGS_OBJECT_SLAM_SALE;
}
setFlags(getFlags() | flags_to_be_set);
}
@@ -1304,28 +1307,14 @@ void LLInventoryItem::unpackBinaryBucket(U8* bin_bucket, S32 bin_bucket_size)
setCreationDate(now);
}
-// returns TRUE if a should appear before b
-BOOL item_dictionary_sort( LLInventoryItem* a, LLInventoryItem* b )
-{
- return (LLStringUtil::compareDict( a->getName().c_str(), b->getName().c_str() ) < 0);
-}
-
-// returns TRUE if a should appear before b
-BOOL item_date_sort( LLInventoryItem* a, LLInventoryItem* b )
-{
- return a->getCreationDate() < b->getCreationDate();
-}
-
-
///----------------------------------------------------------------------------
/// Class LLInventoryCategory
///----------------------------------------------------------------------------
-LLInventoryCategory::LLInventoryCategory(
- const LLUUID& uuid,
- const LLUUID& parent_uuid,
- LLFolderType::EType preferred_type,
- const std::string& name) :
+LLInventoryCategory::LLInventoryCategory(const LLUUID& uuid,
+ const LLUUID& parent_uuid,
+ LLFolderType::EType preferred_type,
+ const std::string& name) :
LLInventoryObject(uuid, parent_uuid, LLAssetType::AT_CATEGORY, name),
mPreferredType(preferred_type)
{
diff --git a/indra/llinventory/llinventory.h b/indra/llinventory/llinventory.h
index 9faecbea85..b083e305b1 100644
--- a/indra/llinventory/llinventory.h
+++ b/indra/llinventory/llinventory.h
@@ -33,8 +33,6 @@
#ifndef LL_LLINVENTORY_H
#define LL_LLINVENTORY_H
-#include <functional>
-
#include "lldarray.h"
#include "llfoldertype.h"
#include "llinventorytype.h"
@@ -45,180 +43,94 @@
#include "llsd.h"
#include "lluuid.h"
-// consts for Key field in the task inventory update message
-extern const U8 TASK_INVENTORY_ITEM_KEY;
-extern const U8 TASK_INVENTORY_ASSET_KEY;
-
-// anonymous enumeration to specify a max inventory buffer size for
-// use in packBinaryBucket()
-enum
-{
- MAX_INVENTORY_BUFFER_SIZE = 1024
-};
-
-
+class LLMessageSystem;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Class LLInventoryObject
//
-// This is the base class for inventory objects that handles the
-// common code between items and categories. The 'mParentUUID' member
-// means the parent category since all inventory objects except each
-// user's root category are in some category. Each user's root
-// category will have mParentUUID==LLUUID::null.
+// Base class for anything in the user's inventory. Handles the common code
+// between items and categories.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-class LLMessageSystem;
-
class LLInventoryObject : public LLRefCount
{
-protected:
- LLUUID mUUID;
- LLUUID mParentUUID;
- LLAssetType::EType mType;
- std::string mName;
+public:
+ typedef std::list<LLPointer<LLInventoryObject> > object_list_t;
-protected:
- virtual ~LLInventoryObject( void );
-
+ //--------------------------------------------------------------------
+ // Initialization
+ //--------------------------------------------------------------------
public:
MEM_TYPE_NEW(LLMemType::MTYPE_INVENTORY);
- LLInventoryObject(const LLUUID& uuid, const LLUUID& parent_uuid,
- LLAssetType::EType type, const std::string& name);
LLInventoryObject();
+ LLInventoryObject(const LLUUID& uuid,
+ const LLUUID& parent_uuid,
+ LLAssetType::EType type,
+ const std::string& name);
void copyObject(const LLInventoryObject* other); // LLRefCount requires custom copy
+protected:
+ virtual ~LLInventoryObject();
- // accessors
- virtual const LLUUID& getUUID() const;
+ //--------------------------------------------------------------------
+ // Accessors
+ //--------------------------------------------------------------------
+public:
+ virtual const LLUUID& getUUID() const; // inventoryID that this item points to
+ virtual const LLUUID& getLinkedUUID() const; // inventoryID that this item points to, else this item's inventoryID
const LLUUID& getParentUUID() const;
- virtual const LLUUID& getLinkedUUID() const; // get the inventoryID that this item points to, else this item's inventoryID
virtual const std::string& getName() const;
virtual LLAssetType::EType getType() const;
LLAssetType::EType getActualType() const; // bypasses indirection for linked items
BOOL getIsLinkType() const;
- // mutators - will not call updateServer();
+
+ //--------------------------------------------------------------------
+ // Mutators
+ // Will not call updateServer
+ //--------------------------------------------------------------------
+public:
void setUUID(const LLUUID& new_uuid);
virtual void rename(const std::string& new_name);
void setParent(const LLUUID& new_parent);
void setType(LLAssetType::EType type);
- // file support - implemented here so that a minimal information
- // set can be transmitted between simulator and viewer.
-// virtual BOOL importFile(LLFILE* fp);
+ //--------------------------------------------------------------------
+ // File Support
+ // Implemented here so that a minimal information set can be transmitted
+ // between simulator and viewer.
+ //--------------------------------------------------------------------
+public:
+ // virtual BOOL importFile(LLFILE* fp);
virtual BOOL exportFile(LLFILE* fp, BOOL include_asset_key = TRUE) const;
-
virtual BOOL importLegacyStream(std::istream& input_stream);
virtual BOOL exportLegacyStream(std::ostream& output_stream, BOOL include_asset_key = TRUE) const;
- // virtual methods
virtual void removeFromServer();
virtual void updateParentOnServer(BOOL) const;
virtual void updateServer(BOOL) const;
+
+ //--------------------------------------------------------------------
+ // Member Variables
+ //--------------------------------------------------------------------
+protected:
+ LLUUID mUUID;
+ LLUUID mParentUUID; // Parent category. Root categories have LLUUID::NULL.
+ LLAssetType::EType mType;
+ std::string mName;
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Class LLInventoryItem
//
-// An inventory item represents something that the current user has in
-// their inventory.
+// An item in the current user's inventory.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
class LLInventoryItem : public LLInventoryObject
{
public:
typedef LLDynamicArray<LLPointer<LLInventoryItem> > item_array_t;
-
-protected:
- LLPermissions mPermissions;
- LLUUID mAssetUUID;
- std::string mDescription;
- LLSaleInfo mSaleInfo;
- LLInventoryType::EType mInventoryType;
- U32 mFlags;
- time_t mCreationDate; // seconds from 1/1/1970, UTC
+ //--------------------------------------------------------------------
+ // Initialization
+ //--------------------------------------------------------------------
public:
-
- /**
- * Anonymous enumeration for specifying the inventory item flags.
- */
- enum
- {
- // The shared flags at the top are shared among all inventory
- // types. After that section, all values of flags are type
- // dependent. The shared flags will start at 2^30 and work
- // down while item type specific flags will start at 2^0 and
- // work up.
- II_FLAGS_NONE = 0,
-
-
- //
- // Shared flags
- //
- //
-
- // This value means that the asset has only one reference in
- // the system. If the inventory item is deleted, or the asset
- // id updated, then we can remove the old reference.
- II_FLAGS_SHARED_SINGLE_REFERENCE = 0x40000000,
-
-
- //
- // Landmark flags
- //
- II_FLAGS_LANDMARK_VISITED = 1,
-
- //
- // Object flags
- //
-
- // flag to indicate that object permissions should have next
- // owner perm be more restrictive on rez. We bump this into
- // the second byte of the flags since the low byte is used to
- // track attachment points.
- II_FLAGS_OBJECT_SLAM_PERM = 0x100,
-
- // flag to indicate that the object sale information has been changed.
- II_FLAGS_OBJECT_SLAM_SALE = 0x1000,
-
- // These flags specify which permissions masks to overwrite
- // upon rez. Normally, if no permissions slam (above) or
- // overwrite flags are set, the asset's permissions are
- // used and the inventory's permissions are ignored. If
- // any of these flags are set, the inventory's permissions
- // take precedence.
- II_FLAGS_OBJECT_PERM_OVERWRITE_BASE = 0x010000,
- II_FLAGS_OBJECT_PERM_OVERWRITE_OWNER = 0x020000,
- II_FLAGS_OBJECT_PERM_OVERWRITE_GROUP = 0x040000,
- II_FLAGS_OBJECT_PERM_OVERWRITE_EVERYONE = 0x080000,
- II_FLAGS_OBJECT_PERM_OVERWRITE_NEXT_OWNER = 0x100000,
-
- // flag to indicate whether an object that is returned is composed
- // of muiltiple items or not.
- II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS = 0x200000,
-
- //
- // wearables use the low order byte of flags to store the
- // EWearableType enumeration found in newview/llwearable.h
- //
- II_FLAGS_WEARABLES_MASK = 0xff,
-
- // these bits need to be cleared whenever the asset_id is updated
- // on a pre-existing inventory item (DEV-28098 and DEV-30997)
- II_FLAGS_PERM_OVERWRITE_MASK = II_FLAGS_OBJECT_SLAM_PERM
- | II_FLAGS_OBJECT_SLAM_SALE
- | II_FLAGS_OBJECT_PERM_OVERWRITE_BASE
- | II_FLAGS_OBJECT_PERM_OVERWRITE_OWNER
- | II_FLAGS_OBJECT_PERM_OVERWRITE_GROUP
- | II_FLAGS_OBJECT_PERM_OVERWRITE_EVERYONE
- | II_FLAGS_OBJECT_PERM_OVERWRITE_NEXT_OWNER,
- };
-
-protected:
- ~LLInventoryItem(); // ref counted
-
-public:
-
MEM_TYPE_NEW(LLMemType::MTYPE_INVENTORY);
LLInventoryItem(const LLUUID& uuid,
const LLUUID& parent_uuid,
@@ -237,10 +149,14 @@ public:
// is prohibited
LLInventoryItem(const LLInventoryItem* other);
virtual void copyItem(const LLInventoryItem* other); // LLRefCount requires custom copy
-
void generateUUID() { mUUID.generate(); }
+protected:
+ ~LLInventoryItem(); // ref counted
- // accessors
+ //--------------------------------------------------------------------
+ // Accessors
+ //--------------------------------------------------------------------
+public:
virtual const LLUUID& getLinkedUUID() const;
virtual const LLPermissions& getPermissions() const;
virtual const LLUUID& getCreatorUUID() const;
@@ -252,8 +168,12 @@ public:
virtual time_t getCreationDate() const;
virtual U32 getCRC32() const; // really more of a checksum.
- // mutators - will not call updateServer(), and will never fail
- // (though it may correct to sane values)
+ //--------------------------------------------------------------------
+ // Mutators
+ // Will not call updateServer and will never fail
+ // (though it may correct to sane values)
+ //--------------------------------------------------------------------
+public:
void setAssetUUID(const LLUUID& asset_id);
void setDescription(const std::string& new_desc);
void setSaleInfo(const LLSaleInfo& sale_info);
@@ -261,62 +181,68 @@ public:
void setInventoryType(LLInventoryType::EType inv_type);
void setFlags(U32 flags);
void setCreationDate(time_t creation_date_utc);
+ void setCreator(const LLUUID& creator); // only used for calling cards
// Check for changes in permissions masks and sale info
- // and set the corresponding bits in mFlags
+ // and set the corresponding bits in mFlags.
void accumulatePermissionSlamBits(const LLInventoryItem& old_item);
-
- // This is currently only used in the Viewer to handle calling cards
- // where the creator is actually used to store the target.
- void setCreator(const LLUUID& creator) { mPermissions.setCreator(creator); }
- // Put this inventory item onto the current outgoing mesage. It
- // assumes you have already called nextBlock().
+ // Put this inventory item onto the current outgoing mesage.
+ // Assumes you have already called nextBlock().
virtual void packMessage(LLMessageSystem* msg) const;
- // unpack returns TRUE if the inventory item came through the
- // network ok. It uses a simple crc check which is defeatable, but
- // we want to detect network mangling somehow.
+ // Returns TRUE if the inventory item came through the network correctly.
+ // Uses a simple crc check which is defeatable, but we want to detect
+ // network mangling somehow.
virtual BOOL unpackMessage(LLMessageSystem* msg, const char* block, S32 block_num = 0);
- // file support
+
+ //--------------------------------------------------------------------
+ // File Support
+ //--------------------------------------------------------------------
+public:
virtual BOOL importFile(LLFILE* fp);
virtual BOOL exportFile(LLFILE* fp, BOOL include_asset_key = TRUE) const;
-
virtual BOOL importLegacyStream(std::istream& input_stream);
virtual BOOL exportLegacyStream(std::ostream& output_stream, BOOL include_asset_key = TRUE) const;
- // helper functions
-
- // pack all information needed to reconstruct this item into the given binary bucket.
- // perm_override is optional
+ //--------------------------------------------------------------------
+ // Helper Functions
+ //--------------------------------------------------------------------
+public:
+ // Pack all information needed to reconstruct this item into the given binary bucket.
S32 packBinaryBucket(U8* bin_bucket, LLPermissions* perm_override = NULL) const;
void unpackBinaryBucket(U8* bin_bucket, S32 bin_bucket_size);
LLSD asLLSD() const;
void asLLSD( LLSD& sd ) const;
bool fromLLSD(const LLSD& sd);
+ //--------------------------------------------------------------------
+ // Member Variables
+ //--------------------------------------------------------------------
+protected:
+ LLPermissions mPermissions;
+ LLUUID mAssetUUID;
+ std::string mDescription;
+ LLSaleInfo mSaleInfo;
+ LLInventoryType::EType mInventoryType;
+ U32 mFlags;
+ time_t mCreationDate; // seconds from 1/1/1970, UTC
};
-BOOL item_dictionary_sort(LLInventoryItem* a,LLInventoryItem* b);
-BOOL item_date_sort(LLInventoryItem* a, LLInventoryItem* b);
-
-
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Class LLInventoryCategory
//
-// An instance of this class represents a category of inventory
-// items. Users come with a set of default categories, and can create
-// new ones as needed.
+// A category/folder of inventory items. Users come with a set of default
+// categories, and can create new ones as needed.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
class LLInventoryCategory : public LLInventoryObject
{
public:
typedef LLDynamicArray<LLPointer<LLInventoryCategory> > cat_array_t;
-protected:
- ~LLInventoryCategory();
-
+ //--------------------------------------------------------------------
+ // Initialization
+ //--------------------------------------------------------------------
public:
MEM_TYPE_NEW(LLMemType::MTYPE_INVENTORY);
LLInventoryCategory(const LLUUID& uuid, const LLUUID& parent_uuid,
@@ -325,40 +251,49 @@ public:
LLInventoryCategory();
LLInventoryCategory(const LLInventoryCategory* other);
void copyCategory(const LLInventoryCategory* other); // LLRefCount requires custom copy
+protected:
+ ~LLInventoryCategory();
- // accessors and mutators
+ //--------------------------------------------------------------------
+ // Accessors And Mutators
+ //--------------------------------------------------------------------
+public:
LLFolderType::EType getPreferredType() const;
void setPreferredType(LLFolderType::EType type);
- // For messaging system support
- virtual void packMessage(LLMessageSystem* msg) const;
- virtual void unpackMessage(LLMessageSystem* msg, const char* block, S32 block_num = 0);
-
LLSD asLLSD() const;
bool fromLLSD(const LLSD& sd);
- // file support
+ //--------------------------------------------------------------------
+ // Messaging
+ //--------------------------------------------------------------------
+public:
+ virtual void packMessage(LLMessageSystem* msg) const;
+ virtual void unpackMessage(LLMessageSystem* msg, const char* block, S32 block_num = 0);
+
+ //--------------------------------------------------------------------
+ // File Support
+ //--------------------------------------------------------------------
+public:
virtual BOOL importFile(LLFILE* fp);
virtual BOOL exportFile(LLFILE* fp, BOOL include_asset_key = TRUE) const;
-
virtual BOOL importLegacyStream(std::istream& input_stream);
virtual BOOL exportLegacyStream(std::ostream& output_stream, BOOL include_asset_key = TRUE) const;
+ //--------------------------------------------------------------------
+ // Member Variables
+ //--------------------------------------------------------------------
protected:
- // May be the type that this category was "meant" to hold (although it may hold any type).
- LLFolderType::EType mPreferredType;
+ LLFolderType::EType mPreferredType; // Type that this category was "meant" to hold (although it may hold any type).
};
//-----------------------------------------------------------------------------
-// Useful bits
+// Convertors
+//
+// These functions convert between structured data and an inventory
+// item, appropriate for serialization.
//-----------------------------------------------------------------------------
-
-typedef std::list<LLPointer<LLInventoryObject> > InventoryObjectList;
-
-// These functions convert between structured data and an inventory
-// item, appropriate for serialization.
LLSD ll_create_sd_from_inventory_item(LLPointer<LLInventoryItem> item);
-//LLPointer<LLInventoryItem> ll_create_item_from_sd(const LLSD& sd_item);
LLSD ll_create_sd_from_inventory_category(LLPointer<LLInventoryCategory> cat);
LLPointer<LLInventoryCategory> ll_create_category_from_sd(const LLSD& sd_cat);
diff --git a/indra/llinventory/llinventorydefines.cpp b/indra/llinventory/llinventorydefines.cpp
new file mode 100644
index 0000000000..a9610d4d4b
--- /dev/null
+++ b/indra/llinventory/llinventorydefines.cpp
@@ -0,0 +1,37 @@
+/**
+ * @file llinventorydefines.cpp
+ * @brief Implementation of the inventory defines.
+ *
+ * $LicenseInfo:firstyear=2001&license=viewergpl$
+ *
+ * Copyright (c) 2001-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#include "linden_common.h"
+#include "llinventorydefines.h"
+
+const U8 TASK_INVENTORY_ITEM_KEY = 0;
+const U8 TASK_INVENTORY_ASSET_KEY = 1;
diff --git a/indra/llinventory/llinventorydefines.h b/indra/llinventory/llinventorydefines.h
new file mode 100644
index 0000000000..ccf1a356de
--- /dev/null
+++ b/indra/llinventory/llinventorydefines.h
@@ -0,0 +1,106 @@
+/**
+ * @file llinventorydefines.h
+ * @brief LLInventoryDefines
+ *
+ * $LicenseInfo:firstyear=2001&license=viewergpl$
+ *
+ * Copyright (c) 2001-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLINVENTORYDEFINES_H
+#define LL_LLINVENTORYDEFINES_H
+
+// Consts for "key" field in the task inventory update message
+extern const U8 TASK_INVENTORY_ITEM_KEY;
+extern const U8 TASK_INVENTORY_ASSET_KEY;
+
+// Max inventory buffer size (for use in packBinaryBucket)
+enum
+{
+ MAX_INVENTORY_BUFFER_SIZE = 1024
+};
+
+//--------------------------------------------------------------------
+// Inventory item flags enums
+// The shared flags at the top are shared among all inventory
+// types. After that section, all values of flags are type
+// dependent. The shared flags will start at 2^30 and work
+// down while item type specific flags will start at 2^0 and work up.
+//--------------------------------------------------------------------
+class LLInventoryItemFlags
+{
+public:
+ enum EType
+ {
+ II_FLAGS_NONE = 0,
+
+ II_FLAGS_SHARED_SINGLE_REFERENCE = 0x40000000,
+ // The asset has only one reference in the system. If the
+ // inventory item is deleted, or the assetid updated, then we
+ // can remove the old reference.
+
+ II_FLAGS_LANDMARK_VISITED = 1,
+
+ II_FLAGS_OBJECT_SLAM_PERM = 0x100,
+ // Object permissions should have next owner perm be more
+ // restrictive on rez. We bump this into the second byte of the
+ // flags since the low byte is used to track attachment points.
+
+ II_FLAGS_OBJECT_SLAM_SALE = 0x1000,
+ // The object sale information has been changed.
+
+ II_FLAGS_OBJECT_PERM_OVERWRITE_BASE = 0x010000,
+ II_FLAGS_OBJECT_PERM_OVERWRITE_OWNER = 0x020000,
+ II_FLAGS_OBJECT_PERM_OVERWRITE_GROUP = 0x040000,
+ II_FLAGS_OBJECT_PERM_OVERWRITE_EVERYONE = 0x080000,
+ II_FLAGS_OBJECT_PERM_OVERWRITE_NEXT_OWNER = 0x100000,
+ // Specify which permissions masks to overwrite
+ // upon rez. Normally, if no permissions slam (above) or
+ // overwrite flags are set, the asset's permissions are
+ // used and the inventory's permissions are ignored. If
+ // any of these flags are set, the inventory's permissions
+ // take precedence.
+
+ II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS = 0x200000,
+ // Whether a returned object is composed of multiple items.
+
+ II_FLAGS_WEARABLES_MASK = 0xff,
+ // Wearables use the low order byte of flags to store the
+ // EWearableType enumeration found in newview/llwearable.h
+
+ II_FLAGS_PERM_OVERWRITE_MASK = (II_FLAGS_OBJECT_SLAM_PERM |
+ II_FLAGS_OBJECT_SLAM_SALE |
+ II_FLAGS_OBJECT_PERM_OVERWRITE_BASE |
+ II_FLAGS_OBJECT_PERM_OVERWRITE_OWNER |
+ II_FLAGS_OBJECT_PERM_OVERWRITE_GROUP |
+ II_FLAGS_OBJECT_PERM_OVERWRITE_EVERYONE |
+ II_FLAGS_OBJECT_PERM_OVERWRITE_NEXT_OWNER),
+ // These bits need to be cleared whenever the asset_id is updated
+ // on a pre-existing inventory item (DEV-28098 and DEV-30997)
+ };
+};
+
+#endif // LL_LLINVENTORYDEFINES_H
diff --git a/indra/llinventory/llinventorytype.h b/indra/llinventory/llinventorytype.h
index af426b9007..37829f5eae 100644
--- a/indra/llinventory/llinventorytype.h
+++ b/indra/llinventory/llinventorytype.h
@@ -77,7 +77,6 @@ public:
// machine transation between type and strings
static EType lookup(const std::string& name);
static const std::string &lookup(EType type);
-
// translation from a type to a human readable form.
static const std::string &lookupHumanReadable(EType type);
diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp
index 52a3fb2195..fdd48b9e9e 100644
--- a/indra/llmath/llvolume.cpp
+++ b/indra/llmath/llvolume.cpp
@@ -47,8 +47,6 @@
#include "llvolume.h"
#include "llstl.h"
#include "llsdserialize.h"
-#include "zlib/zlib.h"
-
#define DEBUG_SILHOUETTE_BINORMALS 0
#define DEBUG_SILHOUETTE_NORMALS 0 // TomY: Use this to display normals using the silhouette
@@ -1964,97 +1962,15 @@ BOOL LLVolume::createVolumeFacesFromStream(std::istream& is)
bool LLVolume::unpackVolumeFaces(std::istream& is, S32 size)
{
- U8* result = NULL;
- U32 cur_size = 0;
-
- {
- //input stream is now pointing at a zlib compressed block of LLSD
- //decompress block
- z_stream strm;
-
- const U32 CHUNK = 65536;
-
- U8 *in = new U8[size];
- is.read((char*) in, size);
-
- U8 out[CHUNK];
-
- strm.zalloc = Z_NULL;
- strm.zfree = Z_NULL;
- strm.opaque = Z_NULL;
- strm.avail_in = size;
- strm.next_in = in;
-
- S32 ret = inflateInit(&strm);
-
- if (ret != Z_OK)
- {
- llerrs << "WTF?" << llendl;
- }
-
- do
- {
- strm.avail_out = CHUNK;
- strm.next_out = out;
- ret = inflate(&strm, Z_NO_FLUSH);
- if (ret == Z_STREAM_ERROR)
- {
- inflateEnd(&strm);
- free(result);
- delete [] in;
- return false;
- }
-
- switch (ret)
- {
- case Z_NEED_DICT:
- ret = Z_DATA_ERROR;
- case Z_DATA_ERROR:
- case Z_MEM_ERROR:
- inflateEnd(&strm);
- free(result);
- delete [] in;
- return false;
- break;
- }
-
- U32 have = CHUNK-strm.avail_out;
-
- result = (U8*) realloc(result, cur_size + have);
- memcpy(result+cur_size, out, have);
- cur_size += have;
-
- } while (strm.avail_out == 0);
-
- inflateEnd(&strm);
- delete [] in;
-
- if (ret != Z_STREAM_END)
- {
- free(result);
- return false;
- }
- }
-
- //result now points to the decompressed LLSD block
-
+ //input stream is now pointing at a zlib compressed block of LLSD
+ //decompress block
LLSD mdl;
-
+ if (!unzip_llsd(mdl, is, size))
{
- std::string res_str((char*) result, cur_size);
- std::istringstream istr(res_str);
-
- if (!LLSDSerialize::deserialize(mdl, istr, cur_size))
- {
- llwarns << "not a valid mesh asset!" << llendl;
- return false;
- }
+ llwarns << "not a valid mesh asset!" << llendl;
+ return false;
}
-
-
- free(result);
-
-
+
{
U32 face_count = mdl.size();
@@ -2094,11 +2010,56 @@ bool LLVolume::unpackVolumeFaces(std::istream& is, S32 size)
U32 num_verts = pos.size()/(3*2);
face.mVertices.resize(num_verts);
+ if (mdl[i].has("Weights"))
+ {
+ face.mWeights.resize(num_verts);
+
+ LLSD::Binary weights = mdl[i]["Weights"];
+
+ U32 idx = 0;
+
+ U32 cur_vertex = 0;
+ while (idx < weights.size() && cur_vertex < num_verts)
+ {
+ const U8 END_INFLUENCES = 0xFF;
+ U8 joint = weights[idx++];
+
+ U32 cur_influence = 0;
+ while (joint != END_INFLUENCES)
+ {
+ U16 influence = weights[idx++];
+ influence = influence << 8;
+ influence |= weights[idx++];
+
+ F32 w = llmin((F32) influence / 65535.f, 0.99999f);
+ face.mWeights[cur_vertex].mV[cur_influence++] = (F32) joint + w;
+
+ if (cur_influence >= 4)
+ {
+ joint = END_INFLUENCES;
+ }
+ else
+ {
+ joint = weights[idx++];
+ }
+ }
+
+ cur_vertex++;
+ }
+
+ if (cur_vertex != num_verts || idx != weights.size())
+ {
+ llwarns << "Vertex weight count does not match vertex count!" << llendl;
+ }
+
+ }
+
LLVector3 min_pos;
LLVector3 max_pos;
LLVector2 min_tc;
LLVector2 max_tc;
+
min_pos.setValue(mdl[i]["PositionDomain"]["Min"]);
max_pos.setValue(mdl[i]["PositionDomain"]["Max"]);
min_tc.setValue(mdl[i]["TexCoord0Domain"]["Min"]);
diff --git a/indra/llmath/llvolume.h b/indra/llmath/llvolume.h
index 60c1569e55..c6a156ae37 100644
--- a/indra/llmath/llvolume.h
+++ b/indra/llmath/llvolume.h
@@ -49,6 +49,7 @@ class LLVolume;
//#include "vmath.h"
#include "v2math.h"
#include "v3math.h"
+#include "v4math.h"
#include "llquaternion.h"
#include "llstrider.h"
#include "v4coloru.h"
@@ -887,6 +888,11 @@ public:
std::vector<U16> mTriStrip;
std::vector<S32> mEdge;
+ //list of skin weights for rigged volumes
+ // format is mWeights[vertex_index].mV[influence] = <joint_index>.<weight>
+ // mWeights.size() should be empty or match mVertices.size()
+ std::vector<LLVector4> mWeights;
+
private:
BOOL createUnCutCubeCap(LLVolume* volume, BOOL partial_build = FALSE);
BOOL createCap(LLVolume* volume, BOOL partial_build = FALSE);
diff --git a/indra/llmessage/llcurl.cpp b/indra/llmessage/llcurl.cpp
index f8a7eb0417..5caf620059 100644
--- a/indra/llmessage/llcurl.cpp
+++ b/indra/llmessage/llcurl.cpp
@@ -1180,6 +1180,5 @@ void LLCurl::cleanupClass()
{
llerrs << "CURL easy handles not cleaned up on shutdown!" << llendl;
}
-
- curl_global_cleanup();
}
+
diff --git a/indra/llmessage/message_prehash.cpp b/indra/llmessage/message_prehash.cpp
index 9e3986f257..a118e21ffb 100644
--- a/indra/llmessage/message_prehash.cpp
+++ b/indra/llmessage/message_prehash.cpp
@@ -1147,7 +1147,7 @@ char* _PREHASH_ForceObjectSelect = LLMessageStringTable::getInstance()->getStrin
char* _PREHASH_Price = LLMessageStringTable::getInstance()->getString("Price");
char* _PREHASH_SunDirection = LLMessageStringTable::getInstance()->getString("SunDirection");
char* _PREHASH_FromName = LLMessageStringTable::getInstance()->getString("FromName");
-char* _PREHASH_ChangeInventoryItemFlags = LLMessageStringTable::getInstance()->getString("ChangeInventoryItemFlags");
+char* _PREHASH_ChangeInventoryItemFlags = LLMessageStringTable::getInstance()->getString("ChangLLInventoryItemFlags");
char* _PREHASH_Force = LLMessageStringTable::getInstance()->getString("Force");
char* _PREHASH_TransactionBlock = LLMessageStringTable::getInstance()->getString("TransactionBlock");
char* _PREHASH_PowersMask = LLMessageStringTable::getInstance()->getString("PowersMask");
diff --git a/indra/llplugin/llplugincookiestore.cpp b/indra/llplugin/llplugincookiestore.cpp
index 85b1e70d78..da770c5f2e 100644
--- a/indra/llplugin/llplugincookiestore.cpp
+++ b/indra/llplugin/llplugincookiestore.cpp
@@ -99,7 +99,7 @@ bool LLPluginCookieStore::Cookie::parse(const std::string &host)
std::string::size_type cookie_end = mCookie.size();
std::string::size_type field_start = 0;
- lldebugs << "parsing cookie: " << mCookie << llendl;
+ LL_DEBUGS("CookieStoreParse") << "parsing cookie: " << mCookie << LL_ENDL;
while(field_start < cookie_end)
{
// Finding the start of the next field requires honoring special quoting rules
@@ -167,10 +167,10 @@ bool LLPluginCookieStore::Cookie::parse(const std::string &host)
++value_end;
}
- lldebugs
+ LL_DEBUGS("CookieStoreParse")
<< " field name: \"" << mCookie.substr(name_start, name_end - name_start)
<< "\", value: \"" << mCookie.substr(value_start, value_end - value_start) << "\""
- << llendl;
+ << LL_ENDL;
// See whether this field is one we know
if(first_field)
@@ -195,13 +195,13 @@ bool LLPluginCookieStore::Cookie::parse(const std::string &host)
#if 1
time_t date = curl_getdate(date_string.c_str(), NULL );
mDate.secondsSinceEpoch((F64)date);
- lldebugs << " expire date parsed to: " << mDate.asRFC1123() << llendl;
+ LL_DEBUGS("CookieStoreParse") << " expire date parsed to: " << mDate.asRFC1123() << LL_ENDL;
#else
// This doesn't work (rfc1123-format dates cause it to fail)
if(!mDate.fromString(date_string))
{
// Date failed to parse.
- llwarns << "failed to parse cookie's expire date: " << date << llendl;
+ LL_WARNS("CookieStoreParse") << "failed to parse cookie's expire date: " << date << LL_ENDL;
return false;
}
#endif
@@ -232,9 +232,14 @@ bool LLPluginCookieStore::Cookie::parse(const std::string &host)
{
// We don't care about the value of this field (yet)
}
+ else if(matchName(name_start, name_end, "httponly"))
+ {
+ // We don't care about the value of this field (yet)
+ }
else
{
// An unknown field is a parse failure
+ LL_WARNS("CookieStoreParse") << "unexpected field name: " << mCookie.substr(name_start, name_end - name_start) << LL_ENDL;
return false;
}
@@ -270,7 +275,7 @@ bool LLPluginCookieStore::Cookie::parse(const std::string &host)
mCookie += host;
mDomainEnd = mCookie.size();
- lldebugs << "added domain (" << mDomainStart << " to " << mDomainEnd << "), new cookie is: " << mCookie << llendl;
+ LL_DEBUGS("CookieStoreParse") << "added domain (" << mDomainStart << " to " << mDomainEnd << "), new cookie is: " << mCookie << LL_ENDL;
}
// If the cookie doesn't have a path, add "/".
@@ -288,7 +293,7 @@ bool LLPluginCookieStore::Cookie::parse(const std::string &host)
mCookie += "/";
mPathEnd = mCookie.size();
- lldebugs << "added path (" << mPathStart << " to " << mPathEnd << "), new cookie is: " << mCookie << llendl;
+ LL_DEBUGS("CookieStoreParse") << "added path (" << mPathStart << " to " << mPathEnd << "), new cookie is: " << mCookie << LL_ENDL;
}
@@ -566,7 +571,7 @@ void LLPluginCookieStore::setOneCookie(const std::string &s, std::string::size_t
Cookie *cookie = Cookie::createFromString(s, cookie_start, cookie_end, host);
if(cookie)
{
- lldebugs << "setting cookie: " << cookie->getCookie() << llendl;
+ LL_DEBUGS("CookieStoreUpdate") << "setting cookie: " << cookie->getCookie() << LL_ENDL;
// Create a key for this cookie
std::string key = cookie->getKey();
@@ -579,7 +584,7 @@ void LLPluginCookieStore::setOneCookie(const std::string &s, std::string::size_t
{
// If we're marking cookies as changed, we should keep it anyway since we'll need to send it out with deltas.
cookie->setDead(true);
- lldebugs << " marking dead" << llendl;
+ LL_DEBUGS("CookieStoreUpdate") << " marking dead" << LL_ENDL;
}
else
{
@@ -590,7 +595,7 @@ void LLPluginCookieStore::setOneCookie(const std::string &s, std::string::size_t
delete cookie;
cookie = NULL;
- lldebugs << " removing" << llendl;
+ LL_DEBUGS("CookieStoreUpdate") << " removing" << LL_ENDL;
}
}
@@ -607,7 +612,7 @@ void LLPluginCookieStore::setOneCookie(const std::string &s, std::string::size_t
delete cookie;
cookie = NULL;
- lldebugs << " unchanged" << llendl;
+ LL_DEBUGS("CookieStoreUpdate") << " unchanged" << LL_ENDL;
}
else
{
@@ -619,7 +624,7 @@ void LLPluginCookieStore::setOneCookie(const std::string &s, std::string::size_t
if(mark_changed)
mHasChangedCookies = true;
- lldebugs << " replacing" << llendl;
+ LL_DEBUGS("CookieStoreUpdate") << " replacing" << LL_ENDL;
}
}
else
@@ -631,10 +636,15 @@ void LLPluginCookieStore::setOneCookie(const std::string &s, std::string::size_t
if(mark_changed)
mHasChangedCookies = true;
- lldebugs << " adding" << llendl;
+ LL_DEBUGS("CookieStoreUpdate") << " adding" << LL_ENDL;
}
}
}
+ else
+ {
+ LL_WARNS("CookieStoreUpdate") << "failed to parse cookie: " << s.substr(cookie_start, cookie_end - cookie_start) << LL_ENDL;
+ }
+
}
void LLPluginCookieStore::clearCookies()
diff --git a/indra/llplugin/tests/llplugincookiestore_test.cpp b/indra/llplugin/tests/llplugincookiestore_test.cpp
index 020d9c1977..c903464c64 100644
--- a/indra/llplugin/tests/llplugincookiestore_test.cpp
+++ b/indra/llplugin/tests/llplugincookiestore_test.cpp
@@ -127,7 +127,7 @@ namespace tut
// Valid, distinct cookies:
std::string cookie01 = "cookieA=value; domain=example.com; path=/";
- std::string cookie02 = "cookieB=value; domain=example.com; path=/"; // different name
+ std::string cookie02 = "cookieB=value; Domain=example.com; Path=/; Max-Age=10; Secure; Version=1; Comment=foo!; HTTPOnly"; // cookie with every supported field, in different cases.
std::string cookie03 = "cookieA=value; domain=foo.example.com; path=/"; // different domain
std::string cookie04 = "cookieA=value; domain=example.com; path=/bar/"; // different path
std::string cookie05 = "cookieC; domain=example.com; path=/"; // empty value
diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp
index ca92cb6580..949057df04 100644
--- a/indra/llrender/llglslshader.cpp
+++ b/indra/llrender/llglslshader.cpp
@@ -61,7 +61,7 @@ BOOL shouldChange(const LLVector4& v1, const LLVector4& v2)
LLShaderFeatures::LLShaderFeatures()
: calculatesLighting(false), isShiny(false), isFullbright(false), hasWaterFog(false),
-hasTransport(false), hasSkinning(false), hasAtmospherics(false), isSpecular(false),
+hasTransport(false), hasSkinning(false), hasObjectSkinning(false), hasAtmospherics(false), isSpecular(false),
hasGamma(false), hasLighting(false), calculatesAtmospherics(false)
{
}
@@ -717,6 +717,18 @@ GLint LLGLSLShader::getUniformLocation(const string& uniform)
return -1;
}
+GLint LLGLSLShader::getAttribLocation(U32 attrib)
+{
+ if (attrib < mAttribute.size())
+ {
+ return mAttribute[attrib];
+ }
+ else
+ {
+ return -1;
+ }
+}
+
void LLGLSLShader::uniform1i(const string& uniform, GLint v)
{
GLint location = getUniformLocation(uniform);
diff --git a/indra/llrender/llglslshader.h b/indra/llrender/llglslshader.h
index 166d4af04c..dc493ba162 100644
--- a/indra/llrender/llglslshader.h
+++ b/indra/llrender/llglslshader.h
@@ -48,6 +48,7 @@ public:
bool hasWaterFog; // implies no gamma
bool hasTransport; // implies no lighting (it's possible to have neither though)
bool hasSkinning;
+ bool hasObjectSkinning;
bool hasAtmospherics;
bool hasGamma;
@@ -109,7 +110,7 @@ public:
void vertexAttrib4fv(U32 index, GLfloat* v);
GLint getUniformLocation(const std::string& uniform);
-
+ GLint getAttribLocation(U32 attrib);
GLint mapUniformTextureChannel(GLint location, GLenum type);
diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp
index 2ab6e327b7..dae759ca5f 100644
--- a/indra/llrender/llimagegl.cpp
+++ b/indra/llrender/llimagegl.cpp
@@ -105,9 +105,9 @@ void check_all_images()
}
}
-void LLImageGL::checkTexSize() const
+void LLImageGL::checkTexSize(bool forced) const
{
- if (gDebugGL && mTarget == GL_TEXTURE_2D)
+ if ((forced || gDebugGL) && mTarget == GL_TEXTURE_2D)
{
GLint texname;
glGetIntegerv(GL_TEXTURE_BINDING_2D, &texname);
@@ -129,6 +129,8 @@ void LLImageGL::checkTexSize() const
glGetTexLevelParameteriv(mTarget, 0, GL_TEXTURE_WIDTH, (GLint*)&x);
glGetTexLevelParameteriv(mTarget, 0, GL_TEXTURE_HEIGHT, (GLint*)&y) ;
stop_glerror() ;
+ llcallstacks << "w: " << x << " h: " << y << llcallstacksendl ;
+
if(!x || !y)
{
return ;
@@ -138,11 +140,13 @@ void LLImageGL::checkTexSize() const
error = TRUE;
if (gDebugSession)
{
- gFailLog << "wrong texture size and discard level!" << std::endl;
+ gFailLog << "wrong texture size and discard level!" <<
+ mWidth << " Height: " << mHeight << " Current Level: " << mCurrentDiscardLevel << std::endl;
}
else
{
- llerrs << "wrong texture size and discard level!" << llendl ;
+ llerrs << "wrong texture size and discard level: width: " <<
+ mWidth << " Height: " << mHeight << " Current Level: " << mCurrentDiscardLevel << llendl ;
}
}
@@ -1044,7 +1048,9 @@ BOOL LLImageGL::setSubImageFromFrameBuffer(S32 fb_x, S32 fb_y, S32 x_pos, S32 y_
{
if (gGL.getTexUnit(0)->bind(this, false, true))
{
- //checkTexSize() ;
+ checkTexSize(true) ;
+ llcallstacks << fb_x << " : " << fb_y << " : " << x_pos << " : " << y_pos << " : " << width << " : " << height << llcallstacksendl ;
+
glCopyTexSubImage2D(GL_TEXTURE_2D, 0, fb_x, fb_y, x_pos, y_pos, width, height);
mGLTextureCreated = true;
stop_glerror();
diff --git a/indra/llrender/llimagegl.h b/indra/llrender/llimagegl.h
index 1b303307f6..03939888a5 100644
--- a/indra/llrender/llimagegl.h
+++ b/indra/llrender/llimagegl.h
@@ -157,7 +157,7 @@ public:
void updatePickMask(S32 width, S32 height, const U8* data_in);
BOOL getMask(const LLVector2 &tc);
- void checkTexSize() const ;
+ void checkTexSize(bool forced = false) const ;
// Sets the addressing mode used to sample the texture
// (such as wrapping, mirrored wrapping, and clamp)
diff --git a/indra/llrender/llshadermgr.cpp b/indra/llrender/llshadermgr.cpp
index 1286e91e49..23b76351eb 100644
--- a/indra/llrender/llshadermgr.cpp
+++ b/indra/llrender/llshadermgr.cpp
@@ -152,6 +152,14 @@ BOOL LLShaderMgr::attachShaderFeatures(LLGLSLShader * shader)
return FALSE;
}
}
+
+ if (features->hasObjectSkinning)
+ {
+ if (!shader->attachObject("avatar/objectSkinV.glsl"))
+ {
+ return FALSE;
+ }
+ }
///////////////////////////////////////
// Attach Fragment Shader Features Next
diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp
index 4064e688e8..d5b00f27a7 100644
--- a/indra/llrender/llvertexbuffer.cpp
+++ b/indra/llrender/llvertexbuffer.cpp
@@ -62,6 +62,7 @@ BOOL LLVertexBuffer::sIBOActive = FALSE;
U32 LLVertexBuffer::sAllocatedBytes = 0;
BOOL LLVertexBuffer::sMapped = FALSE;
BOOL LLVertexBuffer::sUseStreamDraw = TRUE;
+S32 LLVertexBuffer::sWeight4Loc = -1;
std::vector<U32> LLVertexBuffer::sDeleteList;
@@ -76,6 +77,7 @@ S32 LLVertexBuffer::sTypeOffsets[LLVertexBuffer::TYPE_MAX] =
sizeof(LLColor4U), // TYPE_COLOR,
sizeof(LLVector3), // TYPE_BINORMAL,
sizeof(F32), // TYPE_WEIGHT,
+ sizeof(LLVector4), // TYPE_WEIGHT4,
sizeof(LLVector4), // TYPE_CLOTHWEIGHT,
};
@@ -1015,6 +1017,12 @@ bool LLVertexBuffer::getWeightStrider(LLStrider<F32>& strider, S32 index)
{
return VertexBufferStrider<F32,TYPE_WEIGHT>::get(*this, strider, index);
}
+
+bool LLVertexBuffer::getWeight4Strider(LLStrider<LLVector4>& strider, S32 index)
+{
+ return VertexBufferStrider<LLVector4,TYPE_WEIGHT4>::get(*this, strider, index);
+}
+
bool LLVertexBuffer::getClothWeightStrider(LLStrider<LLVector4>& strider, S32 index)
{
return VertexBufferStrider<LLVector4,TYPE_CLOTHWEIGHT>::get(*this, strider, index);
@@ -1284,6 +1292,12 @@ void LLVertexBuffer::setupVertexBuffer(U32 data_mask) const
{
glVertexAttribPointerARB(1, 1, GL_FLOAT, FALSE, stride, (void*)(base + mOffsets[TYPE_WEIGHT]));
}
+
+ if (data_mask & MAP_WEIGHT4 && sWeight4Loc != -1)
+ {
+ glVertexAttribPointerARB(sWeight4Loc, 4, GL_FLOAT, FALSE, stride, (void*)(base+mOffsets[TYPE_WEIGHT4]));
+ }
+
if (data_mask & MAP_CLOTHWEIGHT)
{
glVertexAttribPointerARB(4, 4, GL_FLOAT, TRUE, stride, (void*)(base + mOffsets[TYPE_CLOTHWEIGHT]));
diff --git a/indra/llrender/llvertexbuffer.h b/indra/llrender/llvertexbuffer.h
index e2fecdffef..225237215c 100644
--- a/indra/llrender/llvertexbuffer.h
+++ b/indra/llrender/llvertexbuffer.h
@@ -84,6 +84,8 @@ public:
static LLVBOPool sStreamIBOPool;
static LLVBOPool sDynamicIBOPool;
+ static S32 sWeight4Loc;
+
static BOOL sUseStreamDraw;
static void initClass(bool use_vbo);
@@ -109,6 +111,7 @@ public:
// These use VertexAttribPointer and should possibly be made generic
TYPE_BINORMAL,
TYPE_WEIGHT,
+ TYPE_WEIGHT4,
TYPE_CLOTHWEIGHT,
TYPE_MAX,
TYPE_INDEX,
@@ -124,6 +127,7 @@ public:
// These use VertexAttribPointer and should possibly be made generic
MAP_BINORMAL = (1<<TYPE_BINORMAL),
MAP_WEIGHT = (1<<TYPE_WEIGHT),
+ MAP_WEIGHT4 = (1<<TYPE_WEIGHT4),
MAP_CLOTHWEIGHT = (1<<TYPE_CLOTHWEIGHT),
};
@@ -173,6 +177,7 @@ public:
bool getBinormalStrider(LLStrider<LLVector3>& strider, S32 index=0);
bool getColorStrider(LLStrider<LLColor4U>& strider, S32 index=0);
bool getWeightStrider(LLStrider<F32>& strider, S32 index=0);
+ bool getWeight4Strider(LLStrider<LLVector4>& strider, S32 index=0);
bool getClothWeightStrider(LLStrider<LLVector4>& strider, S32 index=0);
BOOL isEmpty() const { return mEmpty; }
diff --git a/indra/llui/llaccordionctrl.cpp b/indra/llui/llaccordionctrl.cpp
index 2ed1082f56..cdcf780d2e 100644
--- a/indra/llui/llaccordionctrl.cpp
+++ b/indra/llui/llaccordionctrl.cpp
@@ -372,11 +372,33 @@ void LLAccordionCtrl::arrangeSinge()
}
else
{
- panel_height = expanded_height;
+ if(mFitParent)
+ {
+ panel_height = expanded_height;
+ }
+ else
+ {
+ if(accordion_tab->getAccordionView())
+ {
+ panel_height = accordion_tab->getAccordionView()->getRect().getHeight() +
+ accordion_tab->getHeaderHeight() + 2*BORDER_MARGIN;
+ }
+ else
+ {
+ panel_height = accordion_tab->getRect().getHeight();
+ }
+ }
}
+
+ // make sure at least header is shown
+ panel_height = llmax(panel_height, accordion_tab->getHeaderHeight());
+
ctrlSetLeftTopAndSize(mAccordionTabs[i], panel_left, panel_top, panel_width, panel_height);
panel_top-=mAccordionTabs[i]->getRect().getHeight();
}
+
+ show_hide_scrollbar(getRect().getWidth(), getRect().getHeight());
+ updateLayout(getRect().getWidth(), getRect().getHeight());
}
void LLAccordionCtrl::arrangeMultiple()
diff --git a/indra/llui/llaccordionctrltab.cpp b/indra/llui/llaccordionctrltab.cpp
index 0959722aa6..dfb427f293 100644
--- a/indra/llui/llaccordionctrltab.cpp
+++ b/indra/llui/llaccordionctrltab.cpp
@@ -860,5 +860,16 @@ void LLAccordionCtrlTab::ctrlSetLeftTopAndSize(LLView* panel, S32 left, S32 top,
panel->reshape( width, height, 1);
panel->setRect(panel_rect);
}
+BOOL LLAccordionCtrlTab::handleToolTip(S32 x, S32 y, MASK mask)
+{
+ //header may be not the first child but we need to process it first
+ if(y >= (getRect().getHeight() - HEADER_HEIGHT - HEADER_HEIGHT/2) )
+ {
+ //inside tab header
+ //fix for EXT-6619
+ return TRUE;
+ }
+ return LLUICtrl::handleToolTip(x, y, mask);
+}
diff --git a/indra/llui/llaccordionctrltab.h b/indra/llui/llaccordionctrltab.h
index 4b8b22405e..fb19d17e99 100644
--- a/indra/llui/llaccordionctrltab.h
+++ b/indra/llui/llaccordionctrltab.h
@@ -148,6 +148,8 @@ public:
virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask);
virtual BOOL handleKey(KEY key, MASK mask, BOOL called_from_parent);
+ virtual BOOL handleToolTip(S32 x, S32 y, MASK mask);
+
virtual bool addChild(LLView* child, S32 tab_group);
bool isExpanded() { return mDisplayChildren; }
diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp
index 1d4dc35cee..33c6a8b6ac 100644
--- a/indra/llui/llbutton.cpp
+++ b/indra/llui/llbutton.cpp
@@ -824,7 +824,7 @@ void LLButton::draw()
x = text_right;
break;
case LLFontGL::HCENTER:
- x = getRect().getWidth() / 2;
+ x = text_left + (text_width / 2);
break;
case LLFontGL::LEFT:
default:
diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp
index 3a8efadaa4..cc107c972d 100644
--- a/indra/llui/llcombobox.cpp
+++ b/indra/llui/llcombobox.cpp
@@ -495,7 +495,6 @@ void LLComboBox::createLineEditor(const LLComboBox::Params& p)
params.max_length_bytes(mMaxChars);
params.commit_callback.function(boost::bind(&LLComboBox::onTextCommit, this, _2));
params.keystroke_callback(boost::bind(&LLComboBox::onTextEntry, this, _1));
- params.handle_edit_keys_directly(true);
params.commit_on_focus_lost(false);
params.follows.flags(FOLLOWS_ALL);
params.label(mLabel);
diff --git a/indra/llui/lleditmenuhandler.cpp b/indra/llui/lleditmenuhandler.cpp
index 821afae8fd..245bce76f5 100644
--- a/indra/llui/lleditmenuhandler.cpp
+++ b/indra/llui/lleditmenuhandler.cpp
@@ -37,3 +37,10 @@
/* static */
LLEditMenuHandler* LLEditMenuHandler::gEditMenuHandler = NULL;
+LLEditMenuHandler::~LLEditMenuHandler()
+{
+ if (gEditMenuHandler == this)
+ {
+ gEditMenuHandler = NULL;
+ }
+}
diff --git a/indra/llui/lleditmenuhandler.h b/indra/llui/lleditmenuhandler.h
index 1de9c56afb..d72283cd99 100644
--- a/indra/llui/lleditmenuhandler.h
+++ b/indra/llui/lleditmenuhandler.h
@@ -38,7 +38,7 @@ class LLEditMenuHandler
{
public:
// this is needed even though this is just an interface class.
- virtual ~LLEditMenuHandler() {};
+ virtual ~LLEditMenuHandler();
virtual void undo() {};
virtual BOOL canUndo() const { return FALSE; }
diff --git a/indra/llui/llflatlistview.cpp b/indra/llui/llflatlistview.cpp
index d8084fd9aa..35f5a6bbb9 100644
--- a/indra/llui/llflatlistview.cpp
+++ b/indra/llui/llflatlistview.cpp
@@ -558,14 +558,6 @@ BOOL LLFlatListView::handleKeyHere(KEY key, MASK mask)
}
break;
}
- case 'A':
- {
- if(MASK_CONTROL & mask)
- {
- handled = (BOOL)selectAll();
- }
- break;
- }
default:
break;
}
@@ -790,10 +782,15 @@ bool LLFlatListView::selectNextItemPair(bool is_up_direction, bool reset_selecti
return false;
}
-bool LLFlatListView::selectAll()
+BOOL LLFlatListView::canSelectAll() const
+{
+ return !mItemPairs.empty() && mAllowSelection && mMultipleSelection;
+}
+
+void LLFlatListView::selectAll()
{
if (!mAllowSelection || !mMultipleSelection)
- return false;
+ return;
mSelectedItemPairs.clear();
@@ -813,8 +810,6 @@ bool LLFlatListView::selectAll()
// Stretch selected item rect to ensure it won't be clipped
mSelectedItemsBorder->setRect(getLastSelectedItemRect().stretch(-1));
-
- return true;
}
bool LLFlatListView::isSelected(item_pair_t* item_pair) const
@@ -952,11 +947,17 @@ void LLFlatListView::getValues(std::vector<LLSD>& values) const
void LLFlatListView::onFocusReceived()
{
mSelectedItemsBorder->setVisible(TRUE);
+ gEditMenuHandler = this;
}
// virtual
void LLFlatListView::onFocusLost()
{
mSelectedItemsBorder->setVisible(FALSE);
+ // Route menu back to the default
+ if( gEditMenuHandler == this )
+ {
+ gEditMenuHandler = NULL;
+ }
}
//virtual
diff --git a/indra/llui/llflatlistview.h b/indra/llui/llflatlistview.h
index dc6400c926..e3c07e811f 100644
--- a/indra/llui/llflatlistview.h
+++ b/indra/llui/llflatlistview.h
@@ -58,7 +58,7 @@
* - Order of returned selected items are not guaranteed
* - The control assumes that all items being added are unique.
*/
-class LLFlatListView : public LLScrollContainer
+class LLFlatListView : public LLScrollContainer, public LLEditMenuHandler
{
public:
@@ -114,8 +114,6 @@ public:
Params();
};
- virtual ~LLFlatListView() { clear(); };
-
/**
* Connects callback to signal called when Return key is pressed.
*/
@@ -344,7 +342,8 @@ protected:
virtual bool selectNextItemPair(bool is_up_direction, bool reset_selection);
- virtual bool selectAll();
+ virtual BOOL canSelectAll() const;
+ virtual void selectAll();
virtual bool isSelected(item_pair_t* item_pair) const;
diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index e672252a50..a55e9c0395 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -563,6 +563,7 @@ void LLFloater::handleVisibilityChange ( BOOL new_visibility )
void LLFloater::openFloater(const LLSD& key)
{
+ llinfos << "Opening floater " << getName() << llendl;
mKey = key; // in case we need to open ourselves again
if (getSoundFlags() != SILENT
@@ -603,6 +604,7 @@ void LLFloater::openFloater(const LLSD& key)
void LLFloater::closeFloater(bool app_quitting)
{
+ llinfos << "Closing floater " << getName() << llendl;
if (app_quitting)
{
LLFloater::sQuitting = true;
diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp
index 483a394bbd..843f72d8e4 100644
--- a/indra/llui/lllineeditor.cpp
+++ b/indra/llui/lllineeditor.cpp
@@ -91,7 +91,6 @@ LLLineEditor::Params::Params()
background_image_disabled("background_image_disabled"),
background_image_focused("background_image_focused"),
select_on_focus("select_on_focus", false),
- handle_edit_keys_directly("handle_edit_keys_directly", false),
revert_on_esc("revert_on_esc", true),
commit_on_focus_lost("commit_on_focus_lost", true),
ignore_tab("ignore_tab", true),
@@ -136,7 +135,6 @@ LLLineEditor::LLLineEditor(const LLLineEditor::Params& p)
mIgnoreArrowKeys( FALSE ),
mIgnoreTab( p.ignore_tab ),
mDrawAsterixes( FALSE ),
- mHandleEditKeysDirectly(p.handle_edit_keys_directly),
mSelectAllonFocusReceived( p.select_on_focus ),
mPassDelete(FALSE),
mReadOnly(FALSE),
@@ -192,12 +190,8 @@ LLLineEditor::~LLLineEditor()
{
mCommitOnFocusLost = FALSE;
+ // calls onCommit() while LLLineEditor still valid
gFocusMgr.releaseFocusIfNeeded( this );
-
- if( gEditMenuHandler == this )
- {
- gEditMenuHandler = NULL;
- }
}
@@ -497,6 +491,7 @@ void LLLineEditor::selectAll()
setCursor(mSelectionEnd);
//mScrollHPos = 0;
mIsSelecting = TRUE;
+ updatePrimary();
}
@@ -788,7 +783,7 @@ void LLLineEditor::removeChar()
}
else
{
- reportBadKeystroke();
+ LLUI::reportBadKeystroke();
}
}
@@ -827,7 +822,7 @@ void LLLineEditor::addChar(const llwchar uni_char)
}
else
{
- reportBadKeystroke();
+ LLUI::reportBadKeystroke();
}
getWindow()->hideCursorUntilMouseMove();
@@ -916,7 +911,7 @@ BOOL LLLineEditor::handleSelectionKey(KEY key, MASK mask)
}
else
{
- reportBadKeystroke();
+ LLUI::reportBadKeystroke();
}
break;
@@ -932,7 +927,7 @@ BOOL LLLineEditor::handleSelectionKey(KEY key, MASK mask)
}
else
{
- reportBadKeystroke();
+ LLUI::reportBadKeystroke();
}
break;
@@ -958,22 +953,6 @@ BOOL LLLineEditor::handleSelectionKey(KEY key, MASK mask)
}
}
- if (!handled && mHandleEditKeysDirectly)
- {
- if( (MASK_CONTROL & mask) && ('A' == key) )
- {
- if( canSelectAll() )
- {
- selectAll();
- }
- else
- {
- reportBadKeystroke();
- }
- handled = TRUE;
- }
- }
-
if(handled)
{
// take selection to 'primary' clipboard
@@ -1020,7 +999,7 @@ void LLLineEditor::cut()
if( need_to_rollback )
{
rollback.doRollback( this );
- reportBadKeystroke();
+ LLUI::reportBadKeystroke();
}
else
if( mKeystrokeCallback )
@@ -1129,7 +1108,7 @@ void LLLineEditor::pasteHelper(bool is_primary)
}
// Truncate the clean string at the limit of what will fit
clean_string = clean_string.substr(0, wchars_that_fit);
- reportBadKeystroke();
+ LLUI::reportBadKeystroke();
}
mText.insert(getCursor(), clean_string);
@@ -1141,7 +1120,7 @@ void LLLineEditor::pasteHelper(bool is_primary)
if( need_to_rollback )
{
rollback.doRollback( this );
- reportBadKeystroke();
+ LLUI::reportBadKeystroke();
}
else
if( mKeystrokeCallback )
@@ -1206,7 +1185,7 @@ BOOL LLLineEditor::handleSpecialKey(KEY key, MASK mask)
}
else
{
- reportBadKeystroke();
+ LLUI::reportBadKeystroke();
}
}
handled = TRUE;
@@ -1255,7 +1234,7 @@ BOOL LLLineEditor::handleSpecialKey(KEY key, MASK mask)
}
else
{
- reportBadKeystroke();
+ LLUI::reportBadKeystroke();
}
handled = TRUE;
}
@@ -1282,7 +1261,7 @@ BOOL LLLineEditor::handleSpecialKey(KEY key, MASK mask)
}
else
{
- reportBadKeystroke();
+ LLUI::reportBadKeystroke();
}
handled = TRUE;
}
@@ -1299,7 +1278,7 @@ BOOL LLLineEditor::handleSpecialKey(KEY key, MASK mask)
}
else
{
- reportBadKeystroke();
+ LLUI::reportBadKeystroke();
}
handled = TRUE;
}
@@ -1316,7 +1295,7 @@ BOOL LLLineEditor::handleSpecialKey(KEY key, MASK mask)
}
else
{
- reportBadKeystroke();
+ LLUI::reportBadKeystroke();
}
handled = TRUE;
}
@@ -1339,64 +1318,6 @@ BOOL LLLineEditor::handleSpecialKey(KEY key, MASK mask)
break;
}
- if( !handled && mHandleEditKeysDirectly )
- {
- // Standard edit keys (Ctrl-X, Delete, etc,) are handled here instead of routed by the menu system.
- if( KEY_DELETE == key )
- {
- if( canDoDelete() )
- {
- doDelete();
- }
- else
- {
- reportBadKeystroke();
- }
- handled = TRUE;
- }
- else
- if( MASK_CONTROL & mask )
- {
- if( 'C' == key )
- {
- if( canCopy() )
- {
- copy();
- }
- else
- {
- reportBadKeystroke();
- }
- handled = TRUE;
- }
- else
- if( 'V' == key )
- {
- if( canPaste() )
- {
- paste();
- }
- else
- {
- reportBadKeystroke();
- }
- handled = TRUE;
- }
- else
- if( 'X' == key )
- {
- if( canCut() )
- {
- cut();
- }
- else
- {
- reportBadKeystroke();
- }
- handled = TRUE;
- }
- }
- }
return handled;
}
@@ -1451,7 +1372,7 @@ BOOL LLLineEditor::handleKeyHere(KEY key, MASK mask )
{
rollback.doRollback(this);
- reportBadKeystroke();
+ LLUI::reportBadKeystroke();
}
// Notify owner if requested
@@ -1499,7 +1420,7 @@ BOOL LLLineEditor::handleUnicodeCharHere(llwchar uni_char)
{
rollback.doRollback( this );
- reportBadKeystroke();
+ LLUI::reportBadKeystroke();
}
// Notify owner if requested
@@ -1544,7 +1465,7 @@ void LLLineEditor::doDelete()
if( need_to_rollback )
{
rollback.doRollback( this );
- reportBadKeystroke();
+ LLUI::reportBadKeystroke();
}
else
{
@@ -1879,11 +1800,6 @@ S32 LLLineEditor::findPixelNearestPos(const S32 cursor_offset) const
return result;
}
-void LLLineEditor::reportBadKeystroke()
-{
- make_ui_sound("UISndBadKeystroke");
-}
-
//virtual
void LLLineEditor::clear()
{
diff --git a/indra/llui/lllineeditor.h b/indra/llui/lllineeditor.h
index b62138426b..9489e723e3 100644
--- a/indra/llui/lllineeditor.h
+++ b/indra/llui/lllineeditor.h
@@ -81,7 +81,6 @@ public:
background_image_focused;
Optional<bool> select_on_focus,
- handle_edit_keys_directly,
revert_on_esc,
commit_on_focus_lost,
ignore_tab;
@@ -215,7 +214,6 @@ public:
void extendSelection(S32 new_cursor_pos);
void deleteSelection();
- void setHandleEditKeysDirectly( BOOL b ) { mHandleEditKeysDirectly = b; }
void setSelectAllonFocusReceived(BOOL b);
typedef boost::function<void (LLLineEditor* caller, void* user_data)> callback_t;
@@ -247,7 +245,6 @@ private:
void addChar(const llwchar c);
void setCursorAtLocalPos(S32 local_mouse_x);
S32 findPixelNearestPos(S32 cursor_offset = 0) const;
- void reportBadKeystroke();
BOOL handleSpecialKey(KEY key, MASK mask);
BOOL handleSelectionKey(KEY key, MASK mask);
BOOL handleControlKey(KEY key, MASK mask);
@@ -325,7 +322,6 @@ protected:
BOOL mIgnoreTab;
BOOL mDrawAsterixes;
- BOOL mHandleEditKeysDirectly; // If true, the standard edit keys (Ctrl-X, Delete, etc,) are handled here instead of routed by the menu system
BOOL mSelectAllonFocusReceived;
BOOL mPassDelete;
diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
index fb4a9d032d..e0e86ae228 100644
--- a/indra/llui/llmenugl.cpp
+++ b/indra/llui/llmenugl.cpp
@@ -3345,7 +3345,7 @@ void LLMenuHolderGL::draw()
LLView::draw();
// now draw last selected item as overlay
LLMenuItemGL* selecteditem = (LLMenuItemGL*)sItemLastSelectedHandle.get();
- if (selecteditem && sItemActivationTimer.getStarted() && sItemActivationTimer.getElapsedTimeF32() < ACTIVATE_HIGHLIGHT_TIME)
+ if (selecteditem && selecteditem->getVisible() && sItemActivationTimer.getStarted() && sItemActivationTimer.getElapsedTimeF32() < ACTIVATE_HIGHLIGHT_TIME)
{
// make sure toggle items, for example, show the proper state when fading out
selecteditem->buildDrawLabel();
diff --git a/indra/llui/llmultifloater.cpp b/indra/llui/llmultifloater.cpp
index 4af9108329..3aea648562 100644
--- a/indra/llui/llmultifloater.cpp
+++ b/indra/llui/llmultifloater.cpp
@@ -345,7 +345,7 @@ void LLMultiFloater::setVisible(BOOL visible)
BOOL LLMultiFloater::handleKeyHere(KEY key, MASK mask)
{
- if (key == 'W' && mask == MASK_CONTROL)
+ if (key == 'W' && mask == (MASK_CONTROL|MASK_SHIFT))
{
LLFloater* floater = getActiveFloater();
// is user closeable and is system closeable
diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h
index 707a84bdfe..1799ca65b7 100644
--- a/indra/llui/llnotifications.h
+++ b/indra/llui/llnotifications.h
@@ -994,7 +994,7 @@ private:
protected:
LLPostponedNotification() {}
- ~LLPostponedNotification() {}
+ virtual ~LLPostponedNotification() {}
/**
* Abstract method provides possibility to modify notification parameters and
diff --git a/indra/llui/llscrollingpanellist.cpp b/indra/llui/llscrollingpanellist.cpp
index 4f55c0507c..b7840d1b59 100644
--- a/indra/llui/llscrollingpanellist.cpp
+++ b/indra/llui/llscrollingpanellist.cpp
@@ -47,7 +47,12 @@ void LLScrollingPanelList::clearPanels()
{
deleteAllChildren();
mPanelList.clear();
- reshape( 1, 1, FALSE );
+
+ LLRect rc = getRect();
+ rc.setLeftTopAndSize(rc.mLeft, rc.mTop, 1, 1);
+ setRect(rc);
+
+ notifySizeChanged(rc.getHeight());
}
S32 LLScrollingPanelList::addPanel( LLScrollingPanel* panel )
@@ -67,7 +72,11 @@ S32 LLScrollingPanelList::addPanel( LLScrollingPanel* panel )
max_width = llmax( max_width, childp->getRect().getWidth() );
cur_gap = GAP_BETWEEN_PANELS;
}
- reshape( max_width, total_height, FALSE );
+ LLRect rc = getRect();
+ rc.setLeftTopAndSize(rc.mLeft, rc.mTop, max_width, total_height);
+ setRect(rc);
+
+ notifySizeChanged(rc.getHeight());
// Reposition each of the child views
S32 cur_y = total_height;
@@ -131,7 +140,11 @@ void LLScrollingPanelList::removePanel( U32 panel_index )
max_width = llmax( max_width, childp->getRect().getWidth() );
cur_gap = GAP_BETWEEN_PANELS;
}
- reshape( max_width, total_height, FALSE );
+ LLRect rc = getRect();
+ rc.setLeftTopAndSize(rc.mLeft, rc.mTop, max_width, total_height);
+ setRect(rc);
+
+ notifySizeChanged(rc.getHeight());
// Reposition each of the child views
S32 cur_y = total_height;
@@ -200,3 +213,12 @@ void LLScrollingPanelList::draw()
LLUICtrl::draw();
}
+void LLScrollingPanelList::notifySizeChanged(S32 height)
+{
+ LLSD info;
+ info["action"] = "size_changes";
+ info["height"] = height;
+ notifyParent(info);
+}
+
+// EOF
diff --git a/indra/llui/llscrollingpanellist.h b/indra/llui/llscrollingpanellist.h
index 3abfbcbbe7..5f1996159b 100644
--- a/indra/llui/llscrollingpanellist.h
+++ b/indra/llui/llscrollingpanellist.h
@@ -61,7 +61,6 @@ public:
Params()
{
name = "scrolling_panel_list";
- follows.flags = FOLLOWS_LEFT | FOLLOWS_BOTTOM;
}
};
LLScrollingPanelList(const Params& p)
@@ -86,6 +85,11 @@ public:
private:
void updatePanelVisiblilty();
+ /**
+ * Notify parent about size change, makes sense when used inside accordion
+ */
+ void notifySizeChanged(S32 height);
+
panel_list_t mPanelList;
};
diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp
index bf0866a655..db0f2bd6e2 100644
--- a/indra/llui/llscrolllistctrl.cpp
+++ b/indra/llui/llscrolllistctrl.cpp
@@ -324,11 +324,6 @@ LLScrollListCtrl::~LLScrollListCtrl()
delete mSortCallback;
std::for_each(mItemList.begin(), mItemList.end(), DeletePointer());
-
- if( gEditMenuHandler == this )
- {
- gEditMenuHandler = NULL;
- }
}
diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index 56d7a63832..e08026eaf4 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -1059,6 +1059,13 @@ void LLTextBase::setValue(const LLSD& value )
}
//virtual
+BOOL LLTextBase::canDeselect() const
+{
+ return hasSelection();
+}
+
+
+//virtual
void LLTextBase::deselect()
{
mSelectionStart = 0;
diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h
index 5b24c63557..8ed0680df9 100644
--- a/indra/llui/lltextbase.h
+++ b/indra/llui/lltextbase.h
@@ -132,6 +132,7 @@ public:
/*virtual*/ LLTextViewModel* getViewModel() const;
// LLEditMenuHandler interface
+ /*virtual*/ BOOL canDeselect() const;
/*virtual*/ void deselect();
// used by LLTextSegment layout code
diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp
index 7d230f7d42..a1cae4bb98 100644
--- a/indra/llui/lltexteditor.cpp
+++ b/indra/llui/lltexteditor.cpp
@@ -240,7 +240,6 @@ LLTextEditor::Params::Params()
prevalidate_callback("prevalidate_callback"),
embedded_items("embedded_items", false),
ignore_tab("ignore_tab", true),
- handle_edit_keys_directly("handle_edit_keys_directly", false),
show_line_numbers("show_line_numbers", false),
default_color("default_color"),
commit_on_focus_lost("commit_on_focus_lost", false),
@@ -258,7 +257,6 @@ LLTextEditor::LLTextEditor(const LLTextEditor::Params& p) :
mShowLineNumbers ( p.show_line_numbers ),
mCommitOnFocusLost( p.commit_on_focus_lost),
mAllowEmbeddedItems( p.embedded_items ),
- mHandleEditKeysDirectly( p.handle_edit_keys_directly ),
mMouseDownX(0),
mMouseDownY(0),
mTabsToNextField(p.ignore_tab),
@@ -305,12 +303,6 @@ LLTextEditor::~LLTextEditor()
{
gFocusMgr.releaseFocusIfNeeded( this ); // calls onCommit() while LLTextEditor still valid
- // Route menu back to the default
- if( gEditMenuHandler == this )
- {
- gEditMenuHandler = NULL;
- }
-
// Scrollbar is deleted by LLView
std::for_each(mUndoStack.begin(), mUndoStack.end(), DeletePointer());
@@ -507,21 +499,6 @@ void LLTextEditor::getSegmentsInRange(LLTextEditor::segment_vec_t& segments_out,
}
}
-// virtual
-BOOL LLTextEditor::canDeselect() const
-{
- return hasSelection();
-}
-
-
-void LLTextEditor::deselect()
-{
- mSelectionStart = 0;
- mSelectionEnd = 0;
- mIsSelecting = FALSE;
-}
-
-
BOOL LLTextEditor::selectionContainsLineBreaks()
{
if (hasSelection())
@@ -668,6 +645,7 @@ void LLTextEditor::selectAll()
mSelectionStart = getLength();
mSelectionEnd = 0;
setCursorPos(mSelectionEnd);
+ updatePrimary();
}
BOOL LLTextEditor::handleMouseDown(S32 x, S32 y, MASK mask)
@@ -1025,7 +1003,7 @@ void LLTextEditor::removeCharOrTab()
}
else
{
- reportBadKeystroke();
+ LLUI::reportBadKeystroke();
}
}
@@ -1048,7 +1026,7 @@ void LLTextEditor::removeChar()
}
else
{
- reportBadKeystroke();
+ LLUI::reportBadKeystroke();
}
}
@@ -1198,22 +1176,6 @@ BOOL LLTextEditor::handleSelectionKey(const KEY key, const MASK mask)
}
}
- if( !handled && mHandleEditKeysDirectly )
- {
- if( (MASK_CONTROL & mask) && ('A' == key) )
- {
- if( canSelectAll() )
- {
- selectAll();
- }
- else
- {
- reportBadKeystroke();
- }
- handled = TRUE;
- }
- }
-
if( handled )
{
// take selection to 'primary' clipboard
@@ -1247,6 +1209,7 @@ BOOL LLTextEditor::handleNavigationKey(const KEY key, const MASK mask)
case KEY_DOWN:
changeLine( 1 );
+ deselect();
break;
case KEY_PAGE_DOWN:
@@ -1260,7 +1223,7 @@ BOOL LLTextEditor::handleNavigationKey(const KEY key, const MASK mask)
case KEY_LEFT:
if( hasSelection() )
{
- setCursorPos(llmin( mCursorPos - 1, mSelectionStart, mSelectionEnd ));
+ setCursorPos(llmin( mSelectionStart, mSelectionEnd ));
}
else
{
@@ -1270,7 +1233,7 @@ BOOL LLTextEditor::handleNavigationKey(const KEY key, const MASK mask)
}
else
{
- reportBadKeystroke();
+ LLUI::reportBadKeystroke();
}
}
break;
@@ -1278,7 +1241,7 @@ BOOL LLTextEditor::handleNavigationKey(const KEY key, const MASK mask)
case KEY_RIGHT:
if( hasSelection() )
{
- setCursorPos(llmax( mCursorPos + 1, mSelectionStart, mSelectionEnd ));
+ setCursorPos(llmax( mSelectionStart, mSelectionEnd ));
}
else
{
@@ -1288,7 +1251,7 @@ BOOL LLTextEditor::handleNavigationKey(const KEY key, const MASK mask)
}
else
{
- reportBadKeystroke();
+ LLUI::reportBadKeystroke();
}
}
break;
@@ -1299,6 +1262,11 @@ BOOL LLTextEditor::handleNavigationKey(const KEY key, const MASK mask)
}
}
+ if (handled)
+ {
+ deselect();
+ }
+
return handled;
}
@@ -1551,75 +1519,13 @@ BOOL LLTextEditor::handleControlKey(const KEY key, const MASK mask)
return handled;
}
-BOOL LLTextEditor::handleEditKey(const KEY key, const MASK mask)
-{
- BOOL handled = FALSE;
- // Standard edit keys (Ctrl-X, Delete, etc,) are handled here instead of routed by the menu system.
- if( KEY_DELETE == key )
- {
- if( canDoDelete() )
- {
- doDelete();
- }
- else
- {
- reportBadKeystroke();
- }
- handled = TRUE;
- }
- else
- if( MASK_CONTROL & mask )
+BOOL LLTextEditor::handleSpecialKey(const KEY key, const MASK mask)
{
- if( 'C' == key )
- {
- if( canCopy() )
- {
- copy();
- }
- else
- {
- reportBadKeystroke();
- }
- handled = TRUE;
- }
- else
- if( 'V' == key )
- {
- if( canPaste() )
- {
- paste();
- }
- else
- {
- reportBadKeystroke();
- }
- handled = TRUE;
- }
- else
- if( 'X' == key )
- {
- if( canCut() )
- {
- cut();
- }
- else
- {
- reportBadKeystroke();
- }
- handled = TRUE;
- }
- }
-
- return handled;
-}
-
-
-BOOL LLTextEditor::handleSpecialKey(const KEY key, const MASK mask, BOOL* return_key_hit)
-{
- *return_key_hit = FALSE;
BOOL handled = TRUE;
+ if (mReadOnly) return FALSE;
+
switch( key )
{
case KEY_INSERT:
@@ -1641,7 +1547,7 @@ BOOL LLTextEditor::handleSpecialKey(const KEY key, const MASK mask, BOOL* return
}
else
{
- reportBadKeystroke();
+ LLUI::reportBadKeystroke();
}
break;
@@ -1694,6 +1600,10 @@ BOOL LLTextEditor::handleSpecialKey(const KEY key, const MASK mask, BOOL* return
break;
}
+ if (handled)
+ {
+ onKeyStroke();
+ }
return handled;
}
@@ -1714,9 +1624,6 @@ void LLTextEditor::unindentLineBeforeCloseBrace()
BOOL LLTextEditor::handleKeyHere(KEY key, MASK mask )
{
BOOL handled = FALSE;
- BOOL selection_modified = FALSE;
- BOOL return_key_hit = FALSE;
- BOOL text_may_have_changed = TRUE;
// Special case for TAB. If want to move to next field, report
// not handled and let the parent take care of field movement.
@@ -1724,116 +1631,24 @@ BOOL LLTextEditor::handleKeyHere(KEY key, MASK mask )
{
return FALSE;
}
- /*
- if (KEY_F10 == key)
- {
- LLComboBox::Params cp;
- cp.name = "combo box";
- cp.label = "my combo";
- cp.rect.width = 100;
- cp.rect.height = 20;
- cp.items.add().label = "item 1";
- cp.items.add().label = "item 2";
- cp.items.add().label = "item 3";
- appendWidget(LLUICtrlFactory::create<LLComboBox>(cp), "combo", true, false);
- }
- if (KEY_F11 == key)
- {
- LLButton::Params bp;
- bp.name = "text button";
- bp.label = "Click me";
- bp.rect.width = 100;
- bp.rect.height = 20;
-
- appendWidget(LLUICtrlFactory::create<LLButton>(bp), "button", true, false);
- }
- */
- if (mReadOnly)
+ if (mReadOnly && mScroller)
{
- if(mScroller)
- {
- handled = mScroller->handleKeyHere( key, mask );
+ handled = (mScroller && mScroller->handleKeyHere( key, mask ))
+ || handleSelectionKey(key, mask)
+ || handleControlKey(key, mask);
}
else
{
- handled = handleNavigationKey( key, mask );
- }
-
- }
- else
- {
- // handle navigation keys ourself
- handled = handleNavigationKey( key, mask );
- }
-
-
- if( handled )
- {
- text_may_have_changed = FALSE;
- }
-
- if( !handled )
- {
- handled = handleSelectionKey( key, mask );
- if( handled )
- {
- selection_modified = TRUE;
- }
- }
-
- if( !handled )
- {
- handled = handleControlKey( key, mask );
- if( handled )
- {
- selection_modified = TRUE;
- }
- }
-
- if( !handled && mHandleEditKeysDirectly )
- {
- handled = handleEditKey( key, mask );
- if( handled )
- {
- selection_modified = TRUE;
- text_may_have_changed = TRUE;
- }
- }
-
- // Handle most keys only if the text editor is writeable.
- if( !mReadOnly )
- {
- if( !handled )
- {
- handled = handleSpecialKey( key, mask, &return_key_hit );
- if( handled )
- {
- selection_modified = TRUE;
- text_may_have_changed = TRUE;
- }
- }
-
+ handled = handleNavigationKey( key, mask )
+ || handleSelectionKey(key, mask)
+ || handleControlKey(key, mask)
+ || handleSpecialKey(key, mask);
}
if( handled )
{
resetCursorBlink();
-
- // Most keystrokes will make the selection box go away, but not all will.
- if( !selection_modified &&
- KEY_SHIFT != key &&
- KEY_CONTROL != key &&
- KEY_ALT != key &&
- KEY_CAPSLOCK )
- {
- deselect();
- }
-
- if(text_may_have_changed)
- {
- onKeyStroke();
- }
needsScroll();
}
@@ -2334,7 +2149,7 @@ void LLTextEditor::getCurrentLineAndColumn( S32* line, S32* col, BOOL include_wo
void LLTextEditor::autoIndent()
{
// Count the number of spaces in the current line
- S32 line = getLineNumFromDocIndex(mCursorPos);
+ S32 line = getLineNumFromDocIndex(mCursorPos, false);
S32 line_start = getLineStart(line);
S32 space_count = 0;
S32 i;
diff --git a/indra/llui/lltexteditor.h b/indra/llui/lltexteditor.h
index 71d937b2c4..9b3ab9414c 100644
--- a/indra/llui/lltexteditor.h
+++ b/indra/llui/lltexteditor.h
@@ -68,7 +68,6 @@ public:
Optional<bool> embedded_items,
ignore_tab,
- handle_edit_keys_directly,
show_line_numbers,
commit_on_focus_lost,
show_context_menu;
@@ -146,8 +145,6 @@ public:
virtual BOOL canDoDelete() const;
virtual void selectAll();
virtual BOOL canSelectAll() const;
- virtual void deselect();
- virtual BOOL canDeselect() const;
void selectNext(const std::string& search_text_in, BOOL case_insensitive, BOOL wrap = TRUE);
BOOL replaceText(const std::string& search_text, const std::string& replace_text, BOOL case_insensitive, BOOL wrap = TRUE);
@@ -218,13 +215,10 @@ protected:
S32 indentLine( S32 pos, S32 spaces );
void unindentLineBeforeCloseBrace();
- void reportBadKeystroke() { make_ui_sound("UISndBadKeystroke"); }
-
BOOL handleNavigationKey(const KEY key, const MASK mask);
- BOOL handleSpecialKey(const KEY key, const MASK mask, BOOL* return_key_hit);
+ BOOL handleSpecialKey(const KEY key, const MASK mask);
BOOL handleSelectionKey(const KEY key, const MASK mask);
BOOL handleControlKey(const KEY key, const MASK mask);
- BOOL handleEditKey(const KEY key, const MASK mask);
BOOL selectionContainsLineBreaks();
void deleteSelection(BOOL transient_operation);
@@ -329,10 +323,6 @@ private:
LLUUID mSourceID;
- // If true, the standard edit keys (Ctrl-X, Delete, etc,) are handled here
- //instead of routed by the menu system
- BOOL mHandleEditKeysDirectly;
-
LLCoordGL mLastIMEPosition; // Last position of the IME editor
keystroke_signal_t mKeystrokeSignal;
diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp
index b049895526..f9a4ed7285 100644
--- a/indra/llui/llui.cpp
+++ b/indra/llui/llui.cpp
@@ -1914,7 +1914,12 @@ void LLUI::clearPopups()
}
}
-
+//static
+void LLUI::reportBadKeystroke()
+{
+ make_ui_sound("UISndBadKeystroke");
+}
+
//static
// spawn_x and spawn_y are top left corner of view in screen GL coordinates
void LLUI::positionViewNearMouse(LLView* view, S32 spawn_x, S32 spawn_y)
diff --git a/indra/llui/llui.h b/indra/llui/llui.h
index 30f3623ded..c18262ef76 100644
--- a/indra/llui/llui.h
+++ b/indra/llui/llui.h
@@ -217,6 +217,8 @@ public:
static void removePopup(LLView*);
static void clearPopups();
+ static void reportBadKeystroke();
+
// Ensures view does not overlap mouse cursor, but is inside
// the view's parent rectangle. Used for tooltips, inspectors.
// Optionally override the view's default X/Y, which are relative to the
diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp
index e8e3459673..736de651da 100644
--- a/indra/llui/llurlentry.cpp
+++ b/indra/llui/llurlentry.cpp
@@ -493,6 +493,35 @@ std::string LLUrlEntryInventory::getLabel(const std::string &url, const LLUrlLab
return LLURI::unescape(label.empty() ? url : label);
}
+//
+// LLUrlEntryObjectIM Describes a Second Life inspector for the object Url, e.g.,
+// secondlife:///app/objectim/7bcd7864-da6b-e43f-4486-91d28a28d95b?name=Object&owner=3de548e1-57be-cfea-2b78-83ae3ad95998&slurl=Danger!%20Danger!/200/200/30/&groupowned=1
+//
+LLUrlEntryObjectIM::LLUrlEntryObjectIM()
+{
+ mPattern = boost::regex("secondlife:///app/objectim/[\\da-f-]+\?.*",
+ boost::regex::perl|boost::regex::icase);
+ mMenuName = "menu_url_objectim.xml";
+}
+
+std::string LLUrlEntryObjectIM::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
+{
+ LLURI uri(url);
+ LLSD query_map = uri.queryMap();
+ if (query_map.has("name"))
+ return query_map["name"];
+ return unescapeUrl(url);
+}
+
+std::string LLUrlEntryObjectIM::getLocation(const std::string &url) const
+{
+ LLURI uri(url);
+ LLSD query_map = uri.queryMap();
+ if (query_map.has("slurl"))
+ return query_map["slurl"];
+ return LLUrlEntryBase::getLocation(url);
+}
+
///
/// LLUrlEntryParcel Describes a Second Life parcel Url, e.g.,
/// secondlife:///app/parcel/0000060e-4b39-e00b-d0c3-d98b1934e3a8/about
@@ -703,7 +732,7 @@ std::string LLUrlEntryWorldMap::getLabel(const std::string &url, const LLUrlLabe
}
const std::string label = LLTrans::getString("SLurlLabelShowOnMap");
- std::string location = path_array[2];
+ std::string location = unescapeUrl(path_array[2]);
std::string x = (path_parts > 3) ? path_array[3] : "128";
std::string y = (path_parts > 4) ? path_array[4] : "128";
std::string z = (path_parts > 5) ? path_array[5] : "0";
diff --git a/indra/llui/llurlentry.h b/indra/llui/llurlentry.h
index 84d0968779..29575d752c 100644
--- a/indra/llui/llurlentry.h
+++ b/indra/llui/llurlentry.h
@@ -201,6 +201,18 @@ public:
private:
};
+///
+/// LLUrlEntryObjectIM Describes a Second Life inspector for the object Url, e.g.,
+/// secondlife:///app/objectim/7bcd7864-da6b-e43f-4486-91d28a28d95b?name=Object&owner=3de548e1-57be-cfea-2b78-83ae3ad95998&slurl=Danger!%20Danger!/200/200/30/&groupowned=1
+///
+class LLUrlEntryObjectIM : public LLUrlEntryBase
+{
+public:
+ LLUrlEntryObjectIM();
+ /*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb);
+ /*virtual*/ std::string getLocation(const std::string &url) const;
+private:
+};
///
/// LLUrlEntryParcel Describes a Second Life parcel Url, e.g.,
diff --git a/indra/llui/llurlregistry.cpp b/indra/llui/llurlregistry.cpp
index faa02e1904..0a70aa586a 100644
--- a/indra/llui/llurlregistry.cpp
+++ b/indra/llui/llurlregistry.cpp
@@ -53,8 +53,10 @@ LLUrlRegistry::LLUrlRegistry()
registerUrl(new LLUrlEntryParcel());
registerUrl(new LLUrlEntryTeleport());
registerUrl(new LLUrlEntryWorldMap());
+ registerUrl(new LLUrlEntryObjectIM());
registerUrl(new LLUrlEntryPlace());
registerUrl(new LLUrlEntryInventory());
+ registerUrl(new LLUrlEntryObjectIM());
//LLUrlEntrySL and LLUrlEntrySLLabel have more common pattern,
//so it should be registered in the end of list
registerUrl(new LLUrlEntrySL());
diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp
index 781c111474..e67f0ec3fc 100644
--- a/indra/llui/llview.cpp
+++ b/indra/llui/llview.cpp
@@ -1321,6 +1321,8 @@ void LLView::drawChildren()
if (viewp->getVisible() && viewp->getRect().isValid())
{
+ // check for bad data
+ llassert_always(viewp->getVisible() == TRUE);
// Only draw views that are within the root view
localRectToScreen(viewp->getRect(),&screenRect);
if ( rootRect.overlaps(screenRect) && LLUI::sDirtyRect.overlaps(screenRect))
diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp
index d726c60018..95c1980dd6 100644
--- a/indra/llwindow/llwindowwin32.cpp
+++ b/indra/llwindow/llwindowwin32.cpp
@@ -2999,79 +2999,6 @@ void LLWindowWin32::spawnWebBrowser(const std::string& escaped_url, bool async)
sei.lpVerb = L"open";
sei.lpFile = url_utf16.c_str();
ShellExecuteEx( &sei );
-
- //// TODO: LEAVING OLD CODE HERE SO I DON'T BONE OTHER MERGES
- //// DELETE THIS ONCE THE MERGES ARE DONE
-
- // Figure out the user's default web browser
- // HKEY_CLASSES_ROOT\http\shell\open\command
- /*
- std::string reg_path_str = gURLProtocolWhitelistHandler[i] + "\\shell\\open\\command";
- WCHAR reg_path_wstr[256];
- mbstowcs( reg_path_wstr, reg_path_str.c_str(), LL_ARRAY_SIZE(reg_path_wstr) );
-
- HKEY key;
- WCHAR browser_open_wstr[1024];
- DWORD buffer_length = 1024;
- RegOpenKeyEx(HKEY_CLASSES_ROOT, reg_path_wstr, 0, KEY_QUERY_VALUE, &key);
- RegQueryValueEx(key, NULL, NULL, NULL, (LPBYTE)browser_open_wstr, &buffer_length);
- RegCloseKey(key);
-
- // Convert to STL string
- LLWString browser_open_wstring = utf16str_to_wstring(browser_open_wstr);
-
- if (browser_open_wstring.length() < 2)
- {
- LL_WARNS("Window") << "Invalid browser executable in registry " << browser_open_wstring << LL_ENDL;
- return;
- }
-
- // Extract the process that's supposed to be launched
- LLWString browser_executable;
- if (browser_open_wstring[0] == '"')
- {
- // executable is quoted, find the matching quote
- size_t quote_pos = browser_open_wstring.find('"', 1);
- // copy out the string including both quotes
- browser_executable = browser_open_wstring.substr(0, quote_pos+1);
- }
- else
- {
- // executable not quoted, find a space
- size_t space_pos = browser_open_wstring.find(' ', 1);
- browser_executable = browser_open_wstring.substr(0, space_pos);
- }
-
- LL_DEBUGS("Window") << "Browser reg key: " << wstring_to_utf8str(browser_open_wstring) << LL_ENDL;
- LL_INFOS("Window") << "Browser executable: " << wstring_to_utf8str(browser_executable) << LL_ENDL;
-
- // Convert URL to wide string for Windows API
- // Assume URL is UTF8, as can come from scripts
- LLWString url_wstring = utf8str_to_wstring(escaped_url);
- llutf16string url_utf16 = wstring_to_utf16str(url_wstring);
-
- // Convert executable and path to wide string for Windows API
- llutf16string browser_exec_utf16 = wstring_to_utf16str(browser_executable);
-
- // ShellExecute returns HINSTANCE for backwards compatiblity.
- // MS docs say to cast to int and compare to 32.
- HWND our_window = NULL;
- LPCWSTR directory_wstr = NULL;
- int retval = (int) ShellExecute(our_window, // Flawfinder: ignore
- L"open",
- browser_exec_utf16.c_str(),
- url_utf16.c_str(),
- directory_wstr,
- SW_SHOWNORMAL);
- if (retval > 32)
- {
- LL_DEBUGS("Window") << "load_url success with " << retval << LL_ENDL;
- }
- else
- {
- LL_INFOS("Window") << "load_url failure with " << retval << LL_ENDL;
- }
- */
}
/*
diff --git a/indra/media_plugins/webkit/CMakeLists.txt b/indra/media_plugins/webkit/CMakeLists.txt
index 9f66a77c64..c3a3f8e2b2 100644
--- a/indra/media_plugins/webkit/CMakeLists.txt
+++ b/indra/media_plugins/webkit/CMakeLists.txt
@@ -45,12 +45,16 @@ set(media_plugin_webkit_LINK_LIBRARIES
${PULSEAUDIO_LIBRARIES}
)
-if (LINUX)
+# Select which VolumeCatcher implementation to use
+if (LINUX AND PULSEAUDIO)
list(APPEND media_plugin_webkit_SOURCE_FILES linux_volume_catcher.cpp)
list(APPEND media_plugin_webkit_LINK_LIBRARIES
${UI_LIBRARIES} # for glib/GTK
)
-endif (LINUX)
+else (LINUX AND PULSEAUDIO)
+ # All other platforms use the dummy volume catcher for now.
+ list(APPEND media_plugin_webkit_SOURCE_FILES dummy_volume_catcher.cpp)
+endif (LINUX AND PULSEAUDIO)
add_library(media_plugin_webkit
SHARED
diff --git a/indra/media_plugins/webkit/dummy_volume_catcher.cpp b/indra/media_plugins/webkit/dummy_volume_catcher.cpp
new file mode 100644
index 0000000000..45b2c62eba
--- /dev/null
+++ b/indra/media_plugins/webkit/dummy_volume_catcher.cpp
@@ -0,0 +1,63 @@
+/**
+ * @file dummy_volume_catcher.cpp
+ * @brief A null implementation of the "VolumeCatcher" class for platforms where it's not implemented yet.
+ *
+ * @cond
+ * $LicenseInfo:firstyear=2010&license=viewergpl$
+ *
+ * Copyright (c) 2010, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlife.com/developers/opensource/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at http://secondlife.com/developers/opensource/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ * @endcond
+ */
+
+#include "volume_catcher.h"
+
+
+class VolumeCatcherImpl
+{
+};
+
+/////////////////////////////////////////////////////
+
+VolumeCatcher::VolumeCatcher()
+{
+ pimpl = NULL;
+}
+
+VolumeCatcher::~VolumeCatcher()
+{
+}
+
+void VolumeCatcher::setVolume(F32 volume)
+{
+}
+
+void VolumeCatcher::setPan(F32 pan)
+{
+}
+
+void VolumeCatcher::pump()
+{
+}
+
diff --git a/indra/media_plugins/webkit/linux_volume_catcher.cpp b/indra/media_plugins/webkit/linux_volume_catcher.cpp
index 52ab766f7f..2e7fda865e 100644
--- a/indra/media_plugins/webkit/linux_volume_catcher.cpp
+++ b/indra/media_plugins/webkit/linux_volume_catcher.cpp
@@ -42,11 +42,9 @@
#include "linden_common.h"
-#include "linux_volume_catcher.h"
+#include "volume_catcher.h"
-#if LL_PULSEAUDIO_ENABLED
-
extern "C" {
#include <glib.h>
@@ -161,11 +159,11 @@ extern "C" {
}
-class LinuxVolumeCatcherImpl
+class VolumeCatcherImpl
{
public:
- LinuxVolumeCatcherImpl();
- ~LinuxVolumeCatcherImpl();
+ VolumeCatcherImpl();
+ ~VolumeCatcherImpl();
void setVolume(F32 volume);
void pump(void);
@@ -189,7 +187,7 @@ public:
bool mGotSyms;
};
-LinuxVolumeCatcherImpl::LinuxVolumeCatcherImpl()
+VolumeCatcherImpl::VolumeCatcherImpl()
: mDesiredVolume(0.0f),
mMainloop(NULL),
mPAContext(NULL),
@@ -199,17 +197,17 @@ LinuxVolumeCatcherImpl::LinuxVolumeCatcherImpl()
init();
}
-LinuxVolumeCatcherImpl::~LinuxVolumeCatcherImpl()
+VolumeCatcherImpl::~VolumeCatcherImpl()
{
cleanup();
}
-bool LinuxVolumeCatcherImpl::loadsyms(std::string pulse_dso_name)
+bool VolumeCatcherImpl::loadsyms(std::string pulse_dso_name)
{
return grab_pa_syms(pulse_dso_name);
}
-void LinuxVolumeCatcherImpl::init()
+void VolumeCatcherImpl::init()
{
// try to be as defensive as possible because PA's interface is a
// bit fragile and (for our purposes) we'd rather simply not function
@@ -262,7 +260,7 @@ void LinuxVolumeCatcherImpl::init()
}
}
-void LinuxVolumeCatcherImpl::cleanup()
+void VolumeCatcherImpl::cleanup()
{
mConnected = false;
@@ -280,7 +278,7 @@ void LinuxVolumeCatcherImpl::cleanup()
mMainloop = NULL;
}
-void LinuxVolumeCatcherImpl::setVolume(F32 volume)
+void VolumeCatcherImpl::setVolume(F32 volume)
{
mDesiredVolume = volume;
@@ -294,13 +292,13 @@ void LinuxVolumeCatcherImpl::setVolume(F32 volume)
pump();
}
-void LinuxVolumeCatcherImpl::pump()
+void VolumeCatcherImpl::pump()
{
gboolean may_block = FALSE;
g_main_context_iteration(g_main_context_default(), may_block);
}
-void LinuxVolumeCatcherImpl::connected_okay()
+void VolumeCatcherImpl::connected_okay()
{
pa_operation *op;
@@ -324,7 +322,7 @@ void LinuxVolumeCatcherImpl::connected_okay()
}
}
-void LinuxVolumeCatcherImpl::update_all_volumes(F32 volume)
+void VolumeCatcherImpl::update_all_volumes(F32 volume)
{
for (std::set<U32>::iterator it = mSinkInputIndices.begin();
it != mSinkInputIndices.end(); ++it)
@@ -333,7 +331,7 @@ void LinuxVolumeCatcherImpl::update_all_volumes(F32 volume)
}
}
-void LinuxVolumeCatcherImpl::update_index_volume(U32 index, F32 volume)
+void VolumeCatcherImpl::update_index_volume(U32 index, F32 volume)
{
static pa_cvolume cvol;
llpa_cvolume_set(&cvol, mSinkInputNumChannels[index],
@@ -355,7 +353,7 @@ void LinuxVolumeCatcherImpl::update_index_volume(U32 index, F32 volume)
void callback_discovered_sinkinput(pa_context *context, const pa_sink_input_info *sii, int eol, void *userdata)
{
- LinuxVolumeCatcherImpl *impl = dynamic_cast<LinuxVolumeCatcherImpl*>((LinuxVolumeCatcherImpl*)userdata);
+ VolumeCatcherImpl *impl = dynamic_cast<VolumeCatcherImpl*>((VolumeCatcherImpl*)userdata);
llassert(impl);
if (0 == eol)
@@ -386,7 +384,7 @@ void callback_discovered_sinkinput(pa_context *context, const pa_sink_input_info
void callback_subscription_alert(pa_context *context, pa_subscription_event_type_t t, uint32_t index, void *userdata)
{
- LinuxVolumeCatcherImpl *impl = dynamic_cast<LinuxVolumeCatcherImpl*>((LinuxVolumeCatcherImpl*)userdata);
+ VolumeCatcherImpl *impl = dynamic_cast<VolumeCatcherImpl*>((VolumeCatcherImpl*)userdata);
llassert(impl);
switch (t & PA_SUBSCRIPTION_EVENT_FACILITY_MASK) {
@@ -420,7 +418,7 @@ void callback_subscription_alert(pa_context *context, pa_subscription_event_type
void callback_context_state(pa_context *context, void *userdata)
{
- LinuxVolumeCatcherImpl *impl = dynamic_cast<LinuxVolumeCatcherImpl*>((LinuxVolumeCatcherImpl*)userdata);
+ VolumeCatcherImpl *impl = dynamic_cast<VolumeCatcherImpl*>((VolumeCatcherImpl*)userdata);
llassert(impl);
switch (llpa_context_get_state(context))
@@ -441,48 +439,30 @@ void callback_context_state(pa_context *context, void *userdata)
/////////////////////////////////////////////////////
-LinuxVolumeCatcher::LinuxVolumeCatcher()
+VolumeCatcher::VolumeCatcher()
{
- pimpl = new LinuxVolumeCatcherImpl();
+ pimpl = new VolumeCatcherImpl();
}
-LinuxVolumeCatcher::~LinuxVolumeCatcher()
+VolumeCatcher::~VolumeCatcher()
{
delete pimpl;
pimpl = NULL;
}
-void LinuxVolumeCatcher::setVolume(F32 volume)
+void VolumeCatcher::setVolume(F32 volume)
{
llassert(pimpl);
pimpl->setVolume(volume);
}
-void LinuxVolumeCatcher::pump()
-{
- llassert(pimpl);
- pimpl->pump();
-}
-
-#else // !LL_PULSEAUDIO_ENABLED
-
-// stub.
-
-LinuxVolumeCatcher::LinuxVolumeCatcher()
-{
- pimpl = NULL;
-}
-
-LinuxVolumeCatcher::~LinuxVolumeCatcher()
+void VolumeCatcher::setPan(F32 pan)
{
+ // TODO: implement this (if possible)
}
-void LinuxVolumeCatcher::setVolume(F32 volume)
-{
-}
-
-void LinuxVolumeCatcher::pump()
+void VolumeCatcher::pump()
{
+ llassert(pimpl);
+ pimpl->pump();
}
-
-#endif // LL_PULSEAUDIO_ENABLED
diff --git a/indra/media_plugins/webkit/media_plugin_webkit.cpp b/indra/media_plugins/webkit/media_plugin_webkit.cpp
index 436e077e9b..47766a24cb 100644
--- a/indra/media_plugins/webkit/media_plugin_webkit.cpp
+++ b/indra/media_plugins/webkit/media_plugin_webkit.cpp
@@ -50,9 +50,7 @@
# define LL_QTWEBKIT_USES_PIXMAPS 0
#endif // LL_LINUX
-#if LL_LINUX
-# include "linux_volume_catcher.h"
-#endif // LL_LINUX
+# include "volume_catcher.h"
#if LL_WINDOWS
# include <direct.h>
@@ -119,9 +117,7 @@ private:
F32 mBackgroundG;
F32 mBackgroundB;
-#if LL_LINUX
- LinuxVolumeCatcher mLinuxVolumeCatcher;
-#endif // LL_LINUX
+ VolumeCatcher mVolumeCatcher;
void setInitState(int state)
{
@@ -135,9 +131,7 @@ private:
{
LLQtWebKit::getInstance()->pump( milliseconds );
-#if LL_LINUX
- mLinuxVolumeCatcher.pump();
-#endif // LL_LINUX
+ mVolumeCatcher.pump();
checkEditState();
@@ -1139,9 +1133,7 @@ void MediaPluginWebKit::receiveMessage(const char *message_string)
void MediaPluginWebKit::setVolume(F32 volume)
{
-#if LL_LINUX
- mLinuxVolumeCatcher.setVolume(volume);
-#endif // LL_LINUX
+ mVolumeCatcher.setVolume(volume);
}
int init_media_plugin(LLPluginInstance::sendMessageFunction host_send_func, void *host_user_data, LLPluginInstance::sendMessageFunction *plugin_send_func, void **plugin_user_data)
diff --git a/indra/media_plugins/webkit/volume_catcher.h b/indra/media_plugins/webkit/volume_catcher.h
new file mode 100644
index 0000000000..77b10cfed0
--- /dev/null
+++ b/indra/media_plugins/webkit/volume_catcher.h
@@ -0,0 +1,59 @@
+/**
+ * @file volume_catcher.h
+ * @brief Interface to a class with platform-specific implementations that allows control of the audio volume of all sources in the current process.
+ *
+ * @cond
+ * $LicenseInfo:firstyear=2010&license=viewergpl$
+ *
+ * Copyright (c) 2010, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlife.com/developers/opensource/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at http://secondlife.com/developers/opensource/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ * @endcond
+ */
+
+#ifndef VOLUME_CATCHER_H
+#define VOLUME_CATCHER_H
+
+#include "linden_common.h"
+
+class VolumeCatcherImpl;
+
+class VolumeCatcher
+{
+ public:
+ VolumeCatcher();
+ ~VolumeCatcher();
+
+ void setVolume(F32 volume); // 0.0 - 1.0
+
+ // Set the left-right pan of audio sources
+ // where -1.0 = left, 0 = center, and 1.0 = right
+ void setPan(F32 pan);
+
+ void pump(); // call this at least a few times a second if you can - it affects how quickly we can 'catch' a new audio source and adjust its volume
+
+ private:
+ VolumeCatcherImpl *pimpl;
+};
+
+#endif // VOLUME_CATCHER_H
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 14acf3eada..a53aba691d 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -2575,6 +2575,17 @@
<key>Value</key>
<real>0.10000000149</real>
</map>
+ <key>DragAndDropDistanceThreshold</key>
+ <map>
+ <key>Comment</key>
+ <string>Number of pixels that mouse should move before triggering drag and drop mode</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>S32</string>
+ <key>Value</key>
+ <integer>3</integer>
+ </map>
<key>DropShadowButton</key>
<map>
<key>Comment</key>
@@ -6481,6 +6492,52 @@
<real>0.01</real>
</map>
+ <key>RenderShadowBiasError</key>
+ <map>
+ <key>Comment</key>
+ <string>Error scale for shadow bias (based on altitude).</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>F32</string>
+ <key>Value</key>
+ <real>0</real>
+ </map>
+ <key>RenderShadowOffsetError</key>
+ <map>
+ <key>Comment</key>
+ <string>Error scale for shadow offset (based on altitude).</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>F32</string>
+ <key>Value</key>
+ <real>0</real>
+ </map>
+
+ <key>RenderSpotShadowBias</key>
+ <map>
+ <key>Comment</key>
+ <string>Bias value for shadows (prevent shadow acne).</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>F32</string>
+ <key>Value</key>
+ <real>-0.0005</real>
+ </map>
+ <key>RenderSpotShadowOffset</key>
+ <map>
+ <key>Comment</key>
+ <string>Offset value for shadows (prevent shadow acne).</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>F32</string>
+ <key>Value</key>
+ <real>0.01</real>
+ </map>
+
<key>RenderShadowResolutionScale</key>
<map>
<key>Comment</key>
@@ -6493,8 +6550,6 @@
<real>1.0</real>
</map>
-
-
<key>RenderDeferredTreeShadowBias</key>
<map>
<key>Comment</key>
@@ -8163,13 +8218,13 @@
<key>NearbyPeopleSortOrder</key>
<map>
<key>Comment</key>
- <string>Specifies sort order for nearby people (0 = by name, 2 = by most recent)</string>
+ <string>Specifies sort order for nearby people (0 = by name, 3 = by distance, 4 = by most recent)</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>U32</string>
<key>Value</key>
- <integer>2</integer>
+ <integer>4</integer>
</map>
<key>RecentPeopleSortOrder</key>
<map>
@@ -8699,17 +8754,6 @@
<key>Value</key>
<integer>1</integer>
</map>
- <key>SmallAvatarNames</key>
- <map>
- <key>Comment</key>
- <string>Display avatar name text in smaller font</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
<key>SnapEnabled</key>
<map>
<key>Comment</key>
@@ -10646,7 +10690,7 @@
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
- <integer>0</integer>
+ <integer>1</integer>
</map>
<key>WaterEditPresets</key>
<map>
diff --git a/indra/newview/app_settings/settings_per_account.xml b/indra/newview/app_settings/settings_per_account.xml
index af5fa4f388..3ce32a05b0 100644
--- a/indra/newview/app_settings/settings_per_account.xml
+++ b/indra/newview/app_settings/settings_per_account.xml
@@ -22,17 +22,6 @@
<key>Value</key>
<string>|TOKEN COPY BusyModeResponse|</string>
</map>
- <key>InstantMessageLogFolder</key>
- <map>
- <key>Comment</key>
- <string>Top level folder to your log files.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>String</string>
- <key>Value</key>
- <string />
- </map>
<key>InstantMessageLogPath</key>
<map>
<key>Comment</key>
@@ -55,10 +44,10 @@
<key>Value</key>
<integer>0</integer>
</map>
- <key>LogChat</key>
+ <key>LogNearbyChat</key>
<map>
<key>Comment</key>
- <string>Log Chat</string>
+ <string>Log Nearby Chat messages to a file. Is used instead of LogChat but with the "1" default value.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -110,5 +99,46 @@
<key>Value</key>
<integer>1</integer>
</map>
+
+ <!-- Settings below are for back compatibility only.
+ They are not used in current viewer anymore. But they can't be removed to avoid
+ influence on previous versions of the viewer in case of settings are not used or default value
+ should be changed. See EXT-6661. -->
+
+ <!-- 1.23 settings -->
+ <key>LogChat</key>
+ <map>
+ <key>Comment</key>
+ <string>Log Chat</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
+ <key>LogChatIM</key>
+ <map>
+ <key>Comment</key>
+ <string>Log Incoming Instant Messages with Chat</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
+ <key>LogChatTimestamp</key>
+ <map>
+ <key>Comment</key>
+ <string>Log Timestamp of Chat</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
+ <!-- End of back compatibility settings -->
</map>
</llsd>
diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
index 155f03fdcf..158eef9319 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
@@ -282,12 +282,13 @@ void main()
{
// the old infinite-sky shiny reflection
//
- vec3 refnorm = normalize(reflect(pos.xyz, norm.xyz));
- float sa = dot(refnorm, vary_light.xyz);
+ vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
+ float sa = dot(refnormpersp, vary_light.xyz);
vec3 dumbshiny = vary_SunlitColor*scol_ambocc.r*texture2D(lightFunc, vec2(sa, spec.a)).a;
// screen-space cheap fakey reflection map
//
+ vec3 refnorm = normalize(reflect(vec3(0,0,-1), norm.xyz));
depth -= 0.5; // unbias depth
// first figure out where we'll make our 2D guess from
vec2 ref2d = (0.25 * screen_res.y) * (refnorm.xy) * abs(refnorm.z) / depth;
@@ -298,22 +299,33 @@ void main()
// The goal of the blur is to soften reflections in surfaces
// with low shinyness, and also to disguise our lameness.
float checkerboard = floor(mod(tc.x+tc.y, 2.0)); // 0.0, 1.0
- ref2d += normalize(ref2d)*14.0*(1.0-spec.a)*(checkerboard-0.5);
+ vec2 checkoffset = normalize(ref2d)*5.0*(1.0-spec.a)*(checkerboard-0.5);
+ ref2d += checkoffset;
ref2d += tc.xy; // use as offset from destination
- // get attributes from the 2D guess point
+ // Get attributes from the 2D guess point.
+ // We average two samples of diffuse (not of anything else) per
+ // pixel to try to reduce aliasing some more.
+ // ---------------------
+ // ^ ^ ^ ^ ^
+ // a . b o c . d check=0:avg(a,b) check=1:avg(c,d)
+ vec3 refcol = 0.5 * (texture2DRect(diffuseRect, ref2d).rgb +
+ texture2DRect(diffuseRect, ref2d + checkoffset*2.0).rgb);
float refdepth = texture2DRect(depthMap, ref2d).a;
vec3 refpos = getPosition_d(ref2d, refdepth).xyz;
- vec3 refcol = texture2DRect(diffuseRect, ref2d).rgb;
vec3 refn = normalize(texture2DRect(normalMap, ref2d).rgb * 2.0 - 1.0);
// figure out how appropriate our guess actually was
float refapprop = max(0.0, dot(-refnorm, normalize(pos - refpos)));
// darken reflections from points which face away from the reflected ray - our guess was a back-face
//refapprop *= step(dot(refnorm, refn), 0.0);
refapprop = min(refapprop, max(0.0, -dot(refnorm, refn))); // more conservative variant
- // get appropriate light strength for guess-point
- float reflit = max(dot(refn, lightnorm.xyz), 0.0);
+ // get appropriate light strength for guess-point.
+ // reflect light direction to increase the illusion that
+ // these are reflections.
+ vec3 reflight = reflect(lightnorm.xyz, norm.xyz);
+ float reflit = max(dot(refn, reflight.xyz), 0.0);
// apply sun color to guess-point, dampen according to inappropriateness of guess
- vec3 refprod = (vary_SunlitColor*reflit) * refcol.rgb * refapprop;
+ float refmod = min(refapprop, reflit);
+ vec3 refprod = vary_SunlitColor * refcol.rgb * refmod;
vec3 ssshiny = (refprod * spec.a);
// add the two types of shiny together
diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
index 922a07c306..dbccb7fb8b 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
@@ -281,12 +281,13 @@ void main()
{
// the old infinite-sky shiny reflection
//
- vec3 refnorm = normalize(reflect(pos.xyz, norm.xyz));
- float sa = dot(refnorm, vary_light.xyz);
+ vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
+ float sa = dot(refnormpersp, vary_light.xyz);
vec3 dumbshiny = vary_SunlitColor*scol_ambocc.r*texture2D(lightFunc, vec2(sa, spec.a)).a;
// screen-space cheap fakey reflection map
//
+ vec3 refnorm = normalize(reflect(vec3(0,0,-1), norm.xyz));
depth -= 0.5; // unbias depth
// first figure out where we'll make our 2D guess from
vec2 ref2d = (0.25 * screen_res.y) * (refnorm.xy) * abs(refnorm.z) / depth;
@@ -297,12 +298,19 @@ void main()
// The goal of the blur is to soften reflections in surfaces
// with low shinyness, and also to disguise our lameness.
float checkerboard = floor(mod(tc.x+tc.y, 2.0)); // 0.0, 1.0
- ref2d += normalize(ref2d)*14.0*(1.0-spec.a)*(checkerboard-0.5);
+ vec2 checkoffset = normalize(ref2d)*5.0*(1.0-spec.a)*(checkerboard-0.5);
+ ref2d += checkoffset;
ref2d += tc.xy; // use as offset from destination
- // get attributes from the 2D guess point
+ // Get attributes from the 2D guess point.
+ // We average two samples of diffuse (not of anything else) per
+ // pixel to try to reduce aliasing some more.
+ // ---------------------
+ // ^ ^ ^ ^ ^
+ // a . b o c . d check=0:avg(a,b) check=1:avg(c,d)
+ vec3 refcol = 0.5 * (texture2DRect(diffuseRect, ref2d).rgb +
+ texture2DRect(diffuseRect, ref2d + checkoffset*2.0).rgb);
float refdepth = texture2DRect(depthMap, ref2d).a;
vec3 refpos = getPosition_d(ref2d, refdepth).xyz;
- vec3 refcol = texture2DRect(diffuseRect, ref2d).rgb;
float refshad = texture2DRect(lightMap, ref2d).r;
vec3 refn = normalize(texture2DRect(normalMap, ref2d).rgb * 2.0 - 1.0);
// figure out how appropriate our guess actually was
@@ -311,9 +319,13 @@ void main()
//refapprop *= step(dot(refnorm, refn), 0.0);
refapprop = min(refapprop, max(0.0, -dot(refnorm, refn))); // more conservative variant
// get appropriate light strength for guess-point
- float reflit = min(max(dot(refn, lightnorm.xyz), 0.0), refshad);
+ // reflect light direction to increase the illusion that
+ // these are reflections.
+ vec3 reflight = reflect(lightnorm.xyz, norm.xyz);
+ float reflit = min(max(dot(refn, reflight.xyz), 0.0), refshad);
// apply sun color to guess-point, dampen according to inappropriateness of guess
- vec3 refprod = (vary_SunlitColor*reflit) * refcol.rgb * refapprop;
+ float refmod = min(refapprop, reflit);
+ vec3 refprod = vary_SunlitColor * refcol.rgb * refmod;
vec3 ssshiny = (refprod * spec.a);
// add the two types of shiny together
diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl
index 04c9a4d19a..46db3c990c 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl
@@ -41,6 +41,9 @@ uniform vec2 proj_shadow_res;
uniform float shadow_bias;
uniform float shadow_offset;
+uniform float spot_shadow_bias;
+uniform float spot_shadow_offset;
+
vec4 getPosition(vec2 pos_screen)
{
float depth = texture2DRect(depthMap, pos_screen.xy).a;
@@ -75,7 +78,7 @@ float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc, float scl)
float pcfShadow(sampler2DShadow shadowMap, vec4 stc, float scl)
{
stc.xyz /= stc.w;
- stc.z += shadow_bias*scl;
+ stc.z += spot_shadow_bias*scl;
float cs = shadow2D(shadowMap, stc.xyz).x;
float shadow = cs;
@@ -86,8 +89,7 @@ float pcfShadow(sampler2DShadow shadowMap, vec4 stc, float scl)
shadow += max(shadow2D(shadowMap, stc.xyz+vec3(off.x, -off.y, 0.0)).x, cs);
shadow += max(shadow2D(shadowMap, stc.xyz+vec3(-off.x, off.y, 0.0)).x, cs);
shadow += max(shadow2D(shadowMap, stc.xyz+vec3(-off.x, -off.y, 0.0)).x, cs);
-
-
+
return shadow/5.0;
//return shadow;
@@ -114,7 +116,10 @@ void main()
float shadow = 1.0;
float dp_directional_light = max(0.0, dot(norm, vary_light.xyz));
- vec4 spos = vec4(pos.xyz + displace*norm + vary_light.xyz * (1.0-dp_directional_light)*shadow_offset, 1.0);
+ vec3 shadow_pos = pos.xyz + displace*norm;
+ vec3 offset = vary_light.xyz * (1.0-dp_directional_light);
+
+ vec4 spos = vec4(shadow_pos+offset*shadow_offset, 1.0);
if (spos.z > -shadow_clip.w)
{
@@ -176,13 +181,15 @@ void main()
gl_FragColor[0] = shadow;
gl_FragColor[1] = 1.0;
+ spos.xyz = shadow_pos+offset*spot_shadow_offset;
+
//spotlight shadow 1
vec4 lpos = shadow_matrix[4]*spos;
- gl_FragColor[2] = pcfShadow(shadowMap4, lpos, 0.8).x;
+ gl_FragColor[2] = pcfShadow(shadowMap4, lpos, 0.8);
//spotlight shadow 2
lpos = shadow_matrix[5]*spos;
- gl_FragColor[3] = pcfShadow(shadowMap5, lpos, 0.8).x;
+ gl_FragColor[3] = pcfShadow(shadowMap5, lpos, 0.8);
//gl_FragColor.rgb = pos.xyz;
//gl_FragColor.b = shadow;
diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl
index d77d17942a..a0dfc96f14 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl
@@ -40,6 +40,9 @@ uniform vec2 proj_shadow_res;
uniform float shadow_bias;
uniform float shadow_offset;
+uniform float spot_shadow_bias;
+uniform float spot_shadow_offset;
+
vec4 getPosition(vec2 pos_screen)
{
float depth = texture2DRect(depthMap, pos_screen.xy).a;
@@ -134,7 +137,7 @@ float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc, float scl)
float pcfShadow(sampler2DShadow shadowMap, vec4 stc, float scl)
{
stc.xyz /= stc.w;
- stc.z += shadow_bias*scl;
+ stc.z += spot_shadow_bias*scl;
float cs = shadow2D(shadowMap, stc.xyz).x;
float shadow = cs;
@@ -173,7 +176,10 @@ void main()
float shadow = 1.0;
float dp_directional_light = max(0.0, dot(norm, vary_light.xyz));
- vec4 spos = vec4(pos.xyz + displace*norm + vary_light.xyz * (1.0-dp_directional_light)*shadow_offset, 1.0);
+ vec3 shadow_pos = pos.xyz + displace*norm;
+ vec3 offset = vary_light.xyz * (1.0-dp_directional_light);
+
+ vec4 spos = vec4(shadow_pos+offset*shadow_offset, 1.0);
if (spos.z > -shadow_clip.w)
{
@@ -235,13 +241,15 @@ void main()
gl_FragColor[0] = shadow;
gl_FragColor[1] = calcAmbientOcclusion(pos, norm);
+ spos.xyz = shadow_pos+offset*spot_shadow_offset;
+
//spotlight shadow 1
vec4 lpos = shadow_matrix[4]*spos;
- gl_FragColor[2] = pcfShadow(shadowMap4, lpos, 0.8).x;
+ gl_FragColor[2] = pcfShadow(shadowMap4, lpos, 0.8);
//spotlight shadow 2
lpos = shadow_matrix[5]*spos;
- gl_FragColor[3] = pcfShadow(shadowMap5, lpos, 0.8).x;
+ gl_FragColor[3] = pcfShadow(shadowMap5, lpos, 0.8);
//gl_FragColor.rgb = pos.xyz;
//gl_FragColor.b = shadow;
diff --git a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
index ddd69befc3..ef81ed1308 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
@@ -284,12 +284,13 @@ void main()
{
// the old infinite-sky shiny reflection
//
- vec3 refnorm = normalize(reflect(pos.xyz, norm.xyz));
- float sa = dot(refnorm, vary_light.xyz);
+ vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
+ float sa = dot(refnormpersp, vary_light.xyz);
vec3 dumbshiny = vary_SunlitColor*scol*texture2D(lightFunc, vec2(sa, spec.a)).a;
// screen-space cheap fakey reflection map
//
+ vec3 refnorm = normalize(reflect(vec3(0,0,-1), norm.xyz));
depth -= 0.5; // unbias depth
// first figure out where we'll make our 2D guess from
vec2 ref2d = (0.25 * screen_res.y) * (refnorm.xy) * abs(refnorm.z) / depth;
@@ -300,12 +301,19 @@ void main()
// The goal of the blur is to soften reflections in surfaces
// with low shinyness, and also to disguise our lameness.
float checkerboard = floor(mod(tc.x+tc.y, 2.0)); // 0.0, 1.0
- ref2d += normalize(ref2d)*14.0*(1.0-spec.a)*(checkerboard-0.5);
+ vec2 checkoffset = normalize(ref2d)*5.0*(1.0-spec.a)*(checkerboard-0.5);
+ ref2d += checkoffset;
ref2d += tc.xy; // use as offset from destination
- // get attributes from the 2D guess point
+ // Get attributes from the 2D guess point.
+ // We average two samples of diffuse (not of anything else) per
+ // pixel to try to reduce aliasing some more.
+ // ---------------------
+ // ^ ^ ^ ^ ^
+ // a . b o c . d check=0:avg(a,b) check=1:avg(c,d)
+ vec3 refcol = 0.5 * (texture2DRect(diffuseRect, ref2d).rgb +
+ texture2DRect(diffuseRect, ref2d + checkoffset*2.0).rgb);
float refdepth = texture2DRect(depthMap, ref2d).a;
vec3 refpos = getPosition_d(ref2d, refdepth).xyz;
- vec3 refcol = texture2DRect(diffuseRect, ref2d).rgb;
float refshad = texture2DRect(lightMap, ref2d).r;
vec3 refn = normalize(texture2DRect(normalMap, ref2d).rgb * 2.0 - 1.0);
// figure out how appropriate our guess actually was
@@ -313,10 +321,14 @@ void main()
// darken reflections from points which face away from the reflected ray - our guess was a back-face
//refapprop *= step(dot(refnorm, refn), 0.0);
refapprop = min(refapprop, max(0.0, -dot(refnorm, refn))); // more conservative variant
- // get appropriate light strength for guess-point
- float reflit = min(max(dot(refn, lightnorm.xyz), 0.0), refshad);
+ // get appropriate light strength for guess-point.
+ // reflect light direction to increase the illusion that
+ // these are reflections.
+ vec3 reflight = reflect(lightnorm.xyz, norm.xyz);
+ float reflit = min(max(dot(refn, reflight.xyz), 0.0), refshad);
// apply sun color to guess-point, dampen according to inappropriateness of guess
- vec3 refprod = (vary_SunlitColor*reflit) * refcol.rgb * refapprop;
+ float refmod = min(refapprop, reflit);
+ vec3 refprod = vary_SunlitColor * refcol.rgb * refmod;
vec3 ssshiny = (refprod * spec.a);
// add the two types of shiny together
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index f434782977..ec465358fa 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -1295,6 +1295,11 @@ void LLAgent::stopAutoPilot(BOOL user_cancel)
{
resetAxes(mAutoPilotTargetFacing);
}
+ // If the user cancelled, don't change the fly state
+ if (!user_cancel)
+ {
+ setFlying(mAutoPilotFlyOnStop);
+ }
//NB: auto pilot can terminate for a reason other than reaching the destination
if (mAutoPilotFinishedCallback)
{
@@ -1302,11 +1307,6 @@ void LLAgent::stopAutoPilot(BOOL user_cancel)
}
mLeaderID = LLUUID::null;
- // If the user cancelled, don't change the fly state
- if (!user_cancel)
- {
- setFlying(mAutoPilotFlyOnStop);
- }
setControlFlags(AGENT_CONTROL_STOP);
if (user_cancel && !mAutoPilotBehaviorName.empty())
diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp
index 908bcfab6a..9638d0e94f 100644
--- a/indra/newview/llagentcamera.cpp
+++ b/indra/newview/llagentcamera.cpp
@@ -1124,9 +1124,9 @@ void LLAgentCamera::updateLookAt(const S32 mouse_x, const S32 mouse_y)
{
// range from -.5 to .5
F32 x_from_center =
- ((F32) mouse_x / (F32) gViewerWindow->getWindowWidthScaled() ) - 0.5f;
+ ((F32) mouse_x / (F32) gViewerWindow->getWorldViewWidthScaled() ) - 0.5f;
F32 y_from_center =
- ((F32) mouse_y / (F32) gViewerWindow->getWindowHeightScaled() ) - 0.5f;
+ ((F32) mouse_y / (F32) gViewerWindow->getWorldViewHeightScaled() ) - 0.5f;
frameCamera.yaw( - x_from_center * gSavedSettings.getF32("YawFromMousePosition") * DEG_TO_RAD);
frameCamera.pitch( - y_from_center * gSavedSettings.getF32("PitchFromMousePosition") * DEG_TO_RAD);
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index 0542e73bfd..9d3b5763e8 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -954,7 +954,7 @@ void LLAgentWearables::processAgentInitialWearablesUpdate(LLMessageSystem* mesgs
// that will trigger when the complete information is fetched.
uuid_vec_t folders;
folders.push_back(current_outfit_id);
- outfit->fetchDescendents(folders);
+ outfit->fetch(folders);
if(outfit->isEverythingComplete())
{
// everything is already here - call done.
@@ -2070,7 +2070,7 @@ void LLAgentWearables::populateMyOutfitsFolder(void)
folders.push_back(outfits->mMyOutfitsID);
gInventory.addObserver(outfits);
- outfits->fetchDescendents(folders);
+ outfits->fetch(folders);
if (outfits->isEverythingComplete())
{
outfits->done();
diff --git a/indra/newview/llagentwearables.h b/indra/newview/llagentwearables.h
index 9f8aadeae7..b76367324c 100644
--- a/indra/newview/llagentwearables.h
+++ b/indra/newview/llagentwearables.h
@@ -174,7 +174,7 @@ public:
// Should only be called if we *know* we've never done so before, since users may
// not want the Library outfits to stay in their quick outfit selector and can delete them.
- void populateMyOutfitsFolder(void);
+ void populateMyOutfitsFolder();
private:
void makeNewOutfitDone(S32 type, U32 index);
diff --git a/indra/newview/llagentwearablesfetch.cpp b/indra/newview/llagentwearablesfetch.cpp
index 45274a8e2c..3d6740f5a1 100644
--- a/indra/newview/llagentwearablesfetch.cpp
+++ b/indra/newview/llagentwearablesfetch.cpp
@@ -54,7 +54,7 @@ void LLInitialWearablesFetch::done()
// gInventory.notifyObservers. The results will be handled in the next
// idle tick instead.
gInventory.removeObserver(this);
- doOnIdle(boost::bind(&LLInitialWearablesFetch::processContents,this));
+ doOnIdleOneTime(boost::bind(&LLInitialWearablesFetch::processContents,this));
}
void LLInitialWearablesFetch::add(InitialWearableData &data)
@@ -69,7 +69,7 @@ void LLInitialWearablesFetch::processContents()
LLInventoryModel::cat_array_t cat_array;
LLInventoryModel::item_array_t wearable_array;
LLFindWearables is_wearable;
- gInventory.collectDescendentsIf(mCompleteFolders.front(), cat_array, wearable_array,
+ gInventory.collectDescendentsIf(mComplete.front(), cat_array, wearable_array,
LLInventoryModel::EXCLUDE_TRASH, is_wearable);
LLAppearanceMgr::instance().setAttachmentInvLinkEnable(true);
@@ -89,7 +89,7 @@ void LLInitialWearablesFetch::processContents()
class LLFetchAndLinkObserver: public LLInventoryFetchObserver
{
public:
- LLFetchAndLinkObserver(LLInventoryFetchObserver::item_ref_t& ids):
+ LLFetchAndLinkObserver(uuid_vec_t& ids):
m_ids(ids),
LLInventoryFetchObserver(true) // retry for missing items
{
@@ -103,7 +103,7 @@ public:
// Link to all fetched items in COF.
LLPointer<LLInventoryCallback> link_waiter = new LLUpdateAppearanceOnDestroy;
- for (LLInventoryFetchObserver::item_ref_t::iterator it = m_ids.begin();
+ for (uuid_vec_t::iterator it = m_ids.begin();
it != m_ids.end();
++it)
{
@@ -124,7 +124,7 @@ public:
}
}
private:
- LLInventoryFetchObserver::item_ref_t m_ids;
+ uuid_vec_t m_ids;
};
void LLInitialWearablesFetch::processWearablesMessage()
@@ -132,7 +132,7 @@ void LLInitialWearablesFetch::processWearablesMessage()
if (!mAgentInitialWearables.empty()) // We have an empty current outfit folder, use the message data instead.
{
const LLUUID current_outfit_id = LLAppearanceMgr::instance().getCOF();
- LLInventoryFetchObserver::item_ref_t ids;
+ uuid_vec_t ids;
for (U8 i = 0; i < mAgentInitialWearables.size(); ++i)
{
// Populate the current outfit folder with links to the wearables passed in the message
@@ -173,7 +173,7 @@ void LLInitialWearablesFetch::processWearablesMessage()
// Need to fetch the inventory items for ids, then create links to them after they arrive.
LLFetchAndLinkObserver *fetcher = new LLFetchAndLinkObserver(ids);
- fetcher->fetchItems(ids);
+ fetcher->fetch(ids);
// If no items to be fetched, done will never be triggered.
// TODO: Change LLInventoryFetchObserver::fetchItems to trigger done() on this condition.
if (fetcher->isEverythingComplete())
@@ -210,8 +210,8 @@ void LLLibraryOutfitsFetch::done()
{
// Delay this until idle() routine, since it's a heavy operation and
// we also can't have it run within notifyObservers.
- doOnIdle(boost::bind(&LLLibraryOutfitsFetch::doneIdle,this));
- gInventory.removeObserver(this); // Prevent doOnIdle from being added twice.
+ doOnIdleOneTime(boost::bind(&LLLibraryOutfitsFetch::doneIdle,this));
+ gInventory.removeObserver(this); // Prevent doOnIdleOneTime from being added twice.
}
void LLLibraryOutfitsFetch::doneIdle()
@@ -254,7 +254,7 @@ void LLLibraryOutfitsFetch::doneIdle()
}
}
-void LLLibraryOutfitsFetch::folderDone(void)
+void LLLibraryOutfitsFetch::folderDone()
{
LLInventoryModel::cat_array_t cat_array;
LLInventoryModel::item_array_t wearable_array;
@@ -282,20 +282,20 @@ void LLLibraryOutfitsFetch::folderDone(void)
mLibraryClothingID = cat->getUUID();
}
- mCompleteFolders.clear();
+ mComplete.clear();
// Get the complete information on the items in the inventory.
uuid_vec_t folders;
folders.push_back(mClothingID);
folders.push_back(mLibraryClothingID);
- fetchDescendents(folders);
+ fetch(folders);
if (isEverythingComplete())
{
done();
}
}
-void LLLibraryOutfitsFetch::outfitsDone(void)
+void LLLibraryOutfitsFetch::outfitsDone()
{
LLInventoryModel::cat_array_t cat_array;
LLInventoryModel::item_array_t wearable_array;
@@ -336,9 +336,9 @@ void LLLibraryOutfitsFetch::outfitsDone(void)
mImportedClothingID = cat->getUUID();
}
- mCompleteFolders.clear();
+ mComplete.clear();
- fetchDescendents(folders);
+ fetch(folders);
if (isEverythingComplete())
{
done();
@@ -372,7 +372,7 @@ private:
};
// Copy the clothing folders from the library into the imported clothing folder
-void LLLibraryOutfitsFetch::libraryDone(void)
+void LLLibraryOutfitsFetch::libraryDone()
{
if (mImportedClothingID != LLUUID::null)
{
@@ -427,22 +427,22 @@ void LLLibraryOutfitsFetch::libraryDone(void)
}
}
-void LLLibraryOutfitsFetch::importedFolderFetch(void)
+void LLLibraryOutfitsFetch::importedFolderFetch()
{
// Fetch the contents of the Imported Clothing Folder
uuid_vec_t folders;
folders.push_back(mImportedClothingID);
- mCompleteFolders.clear();
+ mComplete.clear();
- fetchDescendents(folders);
+ fetch(folders);
if (isEverythingComplete())
{
done();
}
}
-void LLLibraryOutfitsFetch::importedFolderDone(void)
+void LLLibraryOutfitsFetch::importedFolderDone()
{
LLInventoryModel::cat_array_t cat_array;
LLInventoryModel::item_array_t wearable_array;
@@ -463,15 +463,15 @@ void LLLibraryOutfitsFetch::importedFolderDone(void)
mImportedClothingFolders.push_back(cat->getUUID());
}
- mCompleteFolders.clear();
- fetchDescendents(folders);
+ mComplete.clear();
+ fetch(folders);
if (isEverythingComplete())
{
done();
}
}
-void LLLibraryOutfitsFetch::contentsDone(void)
+void LLLibraryOutfitsFetch::contentsDone()
{
LLInventoryModel::cat_array_t cat_array;
LLInventoryModel::item_array_t wearable_array;
diff --git a/indra/newview/llagentwearablesfetch.h b/indra/newview/llagentwearablesfetch.h
index 72063114b8..1d0c6739ba 100644
--- a/indra/newview/llagentwearablesfetch.h
+++ b/indra/newview/llagentwearablesfetch.h
@@ -100,11 +100,11 @@ public:
LLUUID mMyOutfitsID;
void importedFolderFetch();
protected:
- void folderDone(void);
- void outfitsDone(void);
- void libraryDone(void);
- void importedFolderDone(void);
- void contentsDone(void);
+ void folderDone();
+ void outfitsDone();
+ void libraryDone();
+ void importedFolderDone();
+ void contentsDone();
enum ELibraryOutfitFetchStep mCurrFetchStep;
uuid_vec_t mLibraryClothingFolders;
uuid_vec_t mImportedClothingFolders;
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 8c5352ded7..e0f1d5348d 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -74,23 +74,6 @@ LLUUID findDescendentCategoryIDByName(const LLUUID& parent_id,const std::string&
}
}
-// support for secondlife:///app/appearance SLapps
-class LLAppearanceHandler : public LLCommandHandler
-{
-public:
- // requests will be throttled from a non-trusted browser
- LLAppearanceHandler() : LLCommandHandler("appearance", UNTRUSTED_THROTTLE) {}
-
- bool handle(const LLSD& params, const LLSD& query_map, LLMediaCtrl* web)
- {
- // support secondlife:///app/appearance/show, but for now we just
- // make all secondlife:///app/appearance SLapps behave this way
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD());
- return true;
- }
-};
-LLAppearanceHandler gAppearanceHandler;
-
class LLWearInventoryCategoryCallback : public LLInventoryCallback
{
public:
@@ -133,175 +116,6 @@ private:
bool mAppend;
};
-class LLOutfitObserver : public LLInventoryFetchObserver
-{
-public:
- LLOutfitObserver(const LLUUID& cat_id, bool copy_items, bool append) :
- mCatID(cat_id),
- mCopyItems(copy_items),
- mAppend(append)
- {}
- ~LLOutfitObserver() {}
- virtual void done();
- void doWearCategory();
-
-protected:
- LLUUID mCatID;
- bool mCopyItems;
- bool mAppend;
-};
-
-void LLOutfitObserver::done()
-{
- llinfos << "done 2nd stage fetch" << llendl;
- gInventory.removeObserver(this);
- doOnIdle(boost::bind(&LLOutfitObserver::doWearCategory,this));
-}
-
-void LLOutfitObserver::doWearCategory()
-{
- llinfos << "starting" << llendl;
-
- // We now have an outfit ready to be copied to agent inventory. Do
- // it, and wear that outfit normally.
- if(mCopyItems)
- {
- LLInventoryCategory* cat = gInventory.getCategory(mCatID);
- std::string name;
- if(!cat)
- {
- // should never happen.
- name = "New Outfit";
- }
- else
- {
- name = cat->getName();
- }
- LLViewerInventoryItem* item = NULL;
- item_ref_t::iterator it = mComplete.begin();
- item_ref_t::iterator end = mComplete.end();
- LLUUID pid;
- for(; it < end; ++it)
- {
- item = (LLViewerInventoryItem*)gInventory.getItem(*it);
- if(item)
- {
- if(LLInventoryType::IT_GESTURE == item->getInventoryType())
- {
- pid = gInventory.findCategoryUUIDForType(LLFolderType::FT_GESTURE);
- }
- else
- {
- pid = gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING);
- }
- break;
- }
- }
- if(pid.isNull())
- {
- pid = gInventory.getRootFolderID();
- }
-
- LLUUID cat_id = gInventory.createNewCategory(
- pid,
- LLFolderType::FT_NONE,
- name);
- mCatID = cat_id;
- LLPointer<LLInventoryCallback> cb = new LLWearInventoryCategoryCallback(mCatID, mAppend);
- it = mComplete.begin();
- for(; it < end; ++it)
- {
- item = (LLViewerInventoryItem*)gInventory.getItem(*it);
- if(item)
- {
- copy_inventory_item(
- gAgent.getID(),
- item->getPermissions().getOwner(),
- item->getUUID(),
- cat_id,
- std::string(),
- cb);
- }
- }
- // BAP fixes a lag in display of created dir.
- gInventory.notifyObservers();
- }
- else
- {
- // Wear the inventory category.
- LLAppearanceMgr::instance().wearInventoryCategoryOnAvatar(gInventory.getCategory(mCatID), mAppend);
- }
- delete this;
-}
-
-class LLOutfitFetch : public LLInventoryFetchDescendentsObserver
-{
-public:
- LLOutfitFetch(bool copy_items, bool append) : mCopyItems(copy_items), mAppend(append) {}
- ~LLOutfitFetch() {}
- virtual void done();
-protected:
- bool mCopyItems;
- bool mAppend;
-};
-
-void LLOutfitFetch::done()
-{
- // What we do here is get the complete information on the items in
- // the library, and set up an observer that will wait for that to
- // happen.
- llinfos << "done first stage fetch" << llendl;
-
- LLInventoryModel::cat_array_t cat_array;
- LLInventoryModel::item_array_t item_array;
- gInventory.collectDescendents(mCompleteFolders.front(),
- cat_array,
- item_array,
- LLInventoryModel::EXCLUDE_TRASH);
- S32 count = item_array.count();
- if(!count)
- {
- llwarns << "Nothing fetched in category " << mCompleteFolders.front()
- << llendl;
- //dec_busy_count();
- gInventory.removeObserver(this);
- delete this;
- return;
- }
-
- LLOutfitObserver* outfit_observer = new LLOutfitObserver(mCompleteFolders.front(), mCopyItems, mAppend);
- LLInventoryFetchObserver::item_ref_t ids;
- for(S32 i = 0; i < count; ++i)
- {
- ids.push_back(item_array.get(i)->getUUID());
- }
-
- // clean up, and remove this as an observer since the call to the
- // outfit could notify observers and throw us into an infinite
- // loop.
- //dec_busy_count();
- gInventory.removeObserver(this);
-
- // increment busy count and either tell the inventory to check &
- // call done, or add this object to the inventory for observation.
- //inc_busy_count();
-
- // do the fetch
- outfit_observer->fetchItems(ids);
- if(outfit_observer->isEverythingComplete())
- {
- // everything is already here - call done.
- outfit_observer->done();
- }
- else
- {
- // it's all on it's way - add an observer, and the inventory
- // will call done for us when everything is here.
- gInventory.addObserver(outfit_observer);
- }
- delete this;
-}
-
LLUpdateAppearanceOnDestroy::LLUpdateAppearanceOnDestroy():
mFireCount(0)
{
@@ -1309,24 +1123,85 @@ void LLAppearanceMgr::wearInventoryCategory(LLInventoryCategory* category, bool
llinfos << "wearInventoryCategory( " << category->getName()
<< " )" << llendl;
- // What we do here is get the complete information on the items in
- // the inventory, and set up an observer that will wait for that to
- // happen.
- LLOutfitFetch* outfit_fetcher = new LLOutfitFetch(copy, append);
- uuid_vec_t folders;
- folders.push_back(category->getUUID());
- outfit_fetcher->fetchDescendents(folders);
- //inc_busy_count();
- if(outfit_fetcher->isEverythingComplete())
+ callAfterCategoryFetch(category->getUUID(),boost::bind(&LLAppearanceMgr::wearCategoryFinal,
+ &LLAppearanceMgr::instance(),
+ category->getUUID(), copy, append));
+}
+
+void LLAppearanceMgr::wearCategoryFinal(LLUUID& cat_id, bool copy_items, bool append)
+{
+ llinfos << "starting" << llendl;
+
+ // We now have an outfit ready to be copied to agent inventory. Do
+ // it, and wear that outfit normally.
+ LLInventoryCategory* cat = gInventory.getCategory(cat_id);
+ if(copy_items)
{
- // everything is already here - call done.
- outfit_fetcher->done();
+ LLInventoryModel::cat_array_t* cats;
+ LLInventoryModel::item_array_t* items;
+ gInventory.getDirectDescendentsOf(cat_id, cats, items);
+ std::string name;
+ if(!cat)
+ {
+ // should never happen.
+ name = "New Outfit";
+ }
+ else
+ {
+ name = cat->getName();
+ }
+ LLViewerInventoryItem* item = NULL;
+ LLInventoryModel::item_array_t::const_iterator it = items->begin();
+ LLInventoryModel::item_array_t::const_iterator end = items->end();
+ LLUUID pid;
+ for(; it < end; ++it)
+ {
+ item = *it;
+ if(item)
+ {
+ if(LLInventoryType::IT_GESTURE == item->getInventoryType())
+ {
+ pid = gInventory.findCategoryUUIDForType(LLFolderType::FT_GESTURE);
+ }
+ else
+ {
+ pid = gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING);
+ }
+ break;
+ }
+ }
+ if(pid.isNull())
+ {
+ pid = gInventory.getRootFolderID();
+ }
+
+ LLUUID new_cat_id = gInventory.createNewCategory(
+ pid,
+ LLFolderType::FT_NONE,
+ name);
+ LLPointer<LLInventoryCallback> cb = new LLWearInventoryCategoryCallback(new_cat_id, append);
+ it = items->begin();
+ for(; it < end; ++it)
+ {
+ item = *it;
+ if(item)
+ {
+ copy_inventory_item(
+ gAgent.getID(),
+ item->getPermissions().getOwner(),
+ item->getUUID(),
+ new_cat_id,
+ std::string(),
+ cb);
+ }
+ }
+ // BAP fixes a lag in display of created dir.
+ gInventory.notifyObservers();
}
else
{
- // it's all on it's way - add an observer, and the inventory
- // will call done for us when everything is here.
- gInventory.addObserver(outfit_fetcher);
+ // Wear the inventory category.
+ LLAppearanceMgr::instance().wearInventoryCategoryOnAvatar(cat, append);
}
}
@@ -1436,6 +1311,8 @@ private:
};
+// BAP - note that this runs asynchronously if the item is not already loaded from inventory.
+// Dangerous if caller assumes link will exist after calling the function.
void LLAppearanceMgr::addCOFItemLink(const LLUUID &item_id, bool do_update )
{
const LLInventoryItem *item = gInventory.getItem(item_id);
@@ -1616,7 +1493,7 @@ void LLAppearanceMgr::updateIsDirty()
}
}
-void LLAppearanceMgr::onFirstFullyVisible()
+void LLAppearanceMgr::autopopulateOutfits()
{
// If this is the very first time the user has logged into viewer2+ (from a legacy viewer, or new account)
// then auto-populate outfits from the library into the My Outfits folder.
@@ -1633,6 +1510,12 @@ void LLAppearanceMgr::onFirstFullyVisible()
check_populate_my_outfits = false;
}
+// Handler for anything that's deferred until avatar de-clouds.
+void LLAppearanceMgr::onFirstFullyVisible()
+{
+ autopopulateOutfits();
+}
+
//#define DUMP_CAT_VERBOSE
void LLAppearanceMgr::dumpCat(const LLUUID& cat_id, const std::string& msg)
@@ -1684,6 +1567,7 @@ void LLAppearanceMgr::setAttachmentInvLinkEnable(bool val)
mAttachmentInvLinkEnabled = val;
}
+// BAP TODO - mRegisteredAttachments is currently maintained but not used for anything. Consider yanking.
void dumpAttachmentSet(const std::set<LLUUID>& atts, const std::string& msg)
{
llinfos << msg << llendl;
@@ -1705,7 +1589,6 @@ void LLAppearanceMgr::registerAttachment(const LLUUID& item_id)
{
mRegisteredAttachments.insert(item_id);
gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id);
- //dumpAttachmentSet(mRegisteredAttachments,"after register:");
if (mAttachmentInvLinkEnabled)
{
@@ -1722,11 +1605,8 @@ void LLAppearanceMgr::unregisterAttachment(const LLUUID& item_id)
mRegisteredAttachments.erase(item_id);
gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id);
- //dumpAttachmentSet(mRegisteredAttachments,"after unregister:");
-
if (mAttachmentInvLinkEnabled)
{
- //LLAppearanceMgr::dumpCat(LLAppearanceMgr::getCOF(),"Removing attachment link:");
LLAppearanceMgr::removeCOFItemLinks(item_id, false);
}
else
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index 2d6a0a10ed..40b8844731 100644
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -53,6 +53,7 @@ public:
void updateCOF(const LLUUID& category, bool append = false);
void wearInventoryCategory(LLInventoryCategory* category, bool copy, bool append);
void wearInventoryCategoryOnAvatar(LLInventoryCategory* category, bool append);
+ void wearCategoryFinal(LLUUID& cat_id, bool copy_items, bool append);
void wearOutfitByName(const std::string& name);
void changeOutfit(bool proceed, const LLUUID& category, bool append);
@@ -118,6 +119,9 @@ public:
// Called when self avatar is first fully visible.
void onFirstFullyVisible();
+
+ // Create initial outfits from library.
+ void autopopulateOutfits();
protected:
LLAppearanceMgr();
@@ -173,17 +177,17 @@ LLUUID findDescendentCategoryIDByName(const LLUUID& parent_id,const std::string&
// Shim class and template function to allow arbitrary boost::bind
// expressions to be run as one-time idle callbacks.
template <typename T>
-class OnIdleCallback
+class OnIdleCallbackOneTime
{
public:
- OnIdleCallback(T callable):
+ OnIdleCallbackOneTime(T callable):
mCallable(callable)
{
}
static void onIdle(void *data)
{
gIdleCallbacks.deleteFunction(onIdle, data);
- OnIdleCallback<T>* self = reinterpret_cast<OnIdleCallback<T>*>(data);
+ OnIdleCallbackOneTime<T>* self = reinterpret_cast<OnIdleCallbackOneTime<T>*>(data);
self->call();
delete self;
}
@@ -196,14 +200,15 @@ private:
};
template <typename T>
-void doOnIdle(T callable)
+void doOnIdleOneTime(T callable)
{
- OnIdleCallback<T>* cb_functor = new OnIdleCallback<T>(callable);
- gIdleCallbacks.addFunction(&OnIdleCallback<T>::onIdle,cb_functor);
+ OnIdleCallbackOneTime<T>* cb_functor = new OnIdleCallbackOneTime<T>(callable);
+ gIdleCallbacks.addFunction(&OnIdleCallbackOneTime<T>::onIdle,cb_functor);
}
// Shim class and template function to allow arbitrary boost::bind
// expressions to be run as recurring idle callbacks.
+// Callable should return true when done, false to continue getting called.
template <typename T>
class OnIdleCallbackRepeating
{
@@ -212,7 +217,7 @@ public:
mCallable(callable)
{
}
- // Will keep getting called until the callable returns false.
+ // Will keep getting called until the callable returns true.
static void onIdle(void *data)
{
OnIdleCallbackRepeating<T>* self = reinterpret_cast<OnIdleCallbackRepeating<T>*>(data);
@@ -252,7 +257,7 @@ public:
virtual void done()
{
gInventory.removeObserver(this);
- doOnIdle(mCallable);
+ doOnIdleOneTime(mCallable);
delete this;
}
protected:
@@ -277,14 +282,14 @@ public:
// happen.
LLInventoryModel::cat_array_t cat_array;
LLInventoryModel::item_array_t item_array;
- gInventory.collectDescendents(mCompleteFolders.front(),
+ gInventory.collectDescendents(mComplete.front(),
cat_array,
item_array,
LLInventoryModel::EXCLUDE_TRASH);
S32 count = item_array.count();
if(!count)
{
- llwarns << "Nothing fetched in category " << mCompleteFolders.front()
+ llwarns << "Nothing fetched in category " << mComplete.front()
<< llendl;
//dec_busy_count();
gInventory.removeObserver(this);
@@ -293,7 +298,7 @@ public:
}
CallAfterCategoryFetchStage2<T> *stage2 = new CallAfterCategoryFetchStage2<T>(mCallable);
- LLInventoryFetchObserver::item_ref_t ids;
+ uuid_vec_t ids;
for(S32 i = 0; i < count; ++i)
{
ids.push_back(item_array.get(i)->getUUID());
@@ -302,7 +307,7 @@ public:
gInventory.removeObserver(this);
// do the fetch
- stage2->fetchItems(ids);
+ stage2->fetch(ids);
if(stage2->isEverythingComplete())
{
// everything is already here - call done.
@@ -326,7 +331,7 @@ void callAfterCategoryFetch(const LLUUID& cat_id, T callable)
CallAfterCategoryFetchStage1<T> *stage1 = new CallAfterCategoryFetchStage1<T>(callable);
uuid_vec_t folders;
folders.push_back(cat_id);
- stage1->fetchDescendents(folders);
+ stage1->fetch(folders);
if (stage1->isEverythingComplete())
{
stage1->done();
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 34e9497ed8..7a381d05ad 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -2607,6 +2607,8 @@ void LLAppViewer::handleViewerCrash()
{
llinfos << "Handle viewer crash entry." << llendl;
+ llinfos << "Last render pool type: " << LLPipeline::sCurRenderPoolType << llendl ;
+
//print out recorded call stacks if there are any.
LLError::LLCallStacks::print();
@@ -3042,41 +3044,59 @@ void LLAppViewer::migrateCacheDirectory()
#endif // LL_WINDOWS || LL_DARWIN
}
+//static
+S32 LLAppViewer::getCacheVersion()
+{
+ static const S32 cache_version = 7;
+
+ return cache_version ;
+}
+
bool LLAppViewer::initCache()
{
mPurgeCache = false;
- // Purge cache if user requested it
- if (gSavedSettings.getBOOL("PurgeCacheOnStartup") ||
- gSavedSettings.getBOOL("PurgeCacheOnNextStartup"))
- {
- gSavedSettings.setBOOL("PurgeCacheOnNextStartup", false);
- mPurgeCache = true;
- }
- // Purge cache if it belongs to an old version
- else
+ BOOL disable_texture_cache = FALSE ;
+ BOOL read_only = mSecondInstance ? TRUE : FALSE;
+ LLAppViewer::getTextureCache()->setReadOnly(read_only) ;
+
+ if (gSavedSettings.getS32("LocalCacheVersion") != LLAppViewer::getCacheVersion())
{
- static const S32 cache_version = 6;
- if (gSavedSettings.getS32("LocalCacheVersion") != cache_version)
+ if(read_only)
{
- mPurgeCache = true;
- gSavedSettings.setS32("LocalCacheVersion", cache_version);
+ disable_texture_cache = TRUE ; //if the cache version of this viewer is different from the running one, this viewer can not use the texture cache.
+ }
+ else
+ {
+ mPurgeCache = true; // Purge cache if the version number is different.
+ gSavedSettings.setS32("LocalCacheVersion", LLAppViewer::getCacheVersion());
}
}
-
- // We have moved the location of the cache directory over time.
- migrateCacheDirectory();
- // Setup and verify the cache location
- std::string cache_location = gSavedSettings.getString("CacheLocation");
- std::string new_cache_location = gSavedSettings.getString("NewCacheLocation");
- if (new_cache_location != cache_location)
+ if(!read_only)
{
- gDirUtilp->setCacheDir(gSavedSettings.getString("CacheLocation"));
- purgeCache(); // purge old cache
- gSavedSettings.setString("CacheLocation", new_cache_location);
- gSavedSettings.setString("CacheLocationTopFolder", gDirUtilp->getBaseFileName(new_cache_location));
- }
+ // Purge cache if user requested it
+ if (gSavedSettings.getBOOL("PurgeCacheOnStartup") ||
+ gSavedSettings.getBOOL("PurgeCacheOnNextStartup"))
+ {
+ gSavedSettings.setBOOL("PurgeCacheOnNextStartup", false);
+ mPurgeCache = true;
+ }
+ // We have moved the location of the cache directory over time.
+ migrateCacheDirectory();
+
+ // Setup and verify the cache location
+ std::string cache_location = gSavedSettings.getString("CacheLocation");
+ std::string new_cache_location = gSavedSettings.getString("NewCacheLocation");
+ if (new_cache_location != cache_location)
+ {
+ gDirUtilp->setCacheDir(gSavedSettings.getString("CacheLocation"));
+ purgeCache(); // purge old cache
+ gSavedSettings.setString("CacheLocation", new_cache_location);
+ gSavedSettings.setString("CacheLocationTopFolder", gDirUtilp->getBaseFileName(new_cache_location));
+ }
+ }
+
if (!gDirUtilp->setCacheDir(gSavedSettings.getString("CacheLocation")))
{
LL_WARNS("AppCache") << "Unable to set cache location" << LL_ENDL;
@@ -3084,7 +3104,7 @@ bool LLAppViewer::initCache()
gSavedSettings.setString("CacheLocationTopFolder", "");
}
- if (mPurgeCache)
+ if (mPurgeCache && !read_only)
{
LLSplashScreen::update(LLTrans::getString("StartupClearingCache"));
purgeCache();
@@ -3093,14 +3113,13 @@ bool LLAppViewer::initCache()
LLSplashScreen::update(LLTrans::getString("StartupInitializingTextureCache"));
// Init the texture cache
- // Allocate 80% of the cache size for textures
- BOOL read_only = mSecondInstance ? TRUE : FALSE;
+ // Allocate 80% of the cache size for textures
const S32 MB = 1024*1024;
S64 cache_size = (S64)(gSavedSettings.getU32("CacheSize")) * MB;
const S64 MAX_CACHE_SIZE = 1024*MB;
cache_size = llmin(cache_size, MAX_CACHE_SIZE);
S64 texture_cache_size = ((cache_size * 8)/10);
- S64 extra = LLAppViewer::getTextureCache()->initCache(LL_PATH_CACHE, texture_cache_size, read_only);
+ S64 extra = LLAppViewer::getTextureCache()->initCache(LL_PATH_CACHE, texture_cache_size, disable_texture_cache);
texture_cache_size -= extra;
LLSplashScreen::update(LLTrans::getString("StartupInitializingVFS"));
diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h
index a915b7fa50..60645c46d4 100644
--- a/indra/newview/llappviewer.h
+++ b/indra/newview/llappviewer.h
@@ -102,6 +102,8 @@ public:
static LLImageDecodeThread* getImageDecodeThread() { return sImageDecodeThread; }
static LLTextureFetch* getTextureFetch() { return sTextureFetch; }
+ static S32 getCacheVersion() ;
+
const std::string& getSerialNumber() { return mSerialNumber; }
bool getPurgeCache() const { return mPurgeCache; }
diff --git a/indra/newview/llassetuploadresponders.cpp b/indra/newview/llassetuploadresponders.cpp
index c14d234890..f91921f879 100644
--- a/indra/newview/llassetuploadresponders.cpp
+++ b/indra/newview/llassetuploadresponders.cpp
@@ -39,6 +39,7 @@
#include "llcompilequeue.h"
#include "llfloaterbuycurrency.h"
#include "llfilepicker.h"
+#include "llinventorydefines.h"
#include "llinventoryobserver.h"
#include "llinventorypanel.h"
#include "llfloaterimportcollada.h"
@@ -144,7 +145,7 @@ void on_new_single_inventory_upload_complete(
item_name,
item_description,
LLSaleInfo::DEFAULT,
- LLInventoryItem::II_FLAGS_NONE,
+ LLInventoryItemFlags::II_FLAGS_NONE,
creation_date_now);
gInventory.updateItem(item);
diff --git a/indra/newview/llavatarlist.cpp b/indra/newview/llavatarlist.cpp
index 6ec62a61a0..407c5b6153 100644
--- a/indra/newview/llavatarlist.cpp
+++ b/indra/newview/llavatarlist.cpp
@@ -39,6 +39,7 @@
#include "llcallingcard.h" // for LLAvatarTracker
#include "llcachename.h"
#include "llrecentpeople.h"
+#include "lluuid.h"
#include "llvoiceclient.h"
#include "llviewercontrol.h" // for gSavedSettings
@@ -53,7 +54,7 @@ static const unsigned ADD_LIMIT = 50;
bool LLAvatarList::contains(const LLUUID& id)
{
- const uuid_vector_t& ids = getIDs();
+ const uuid_vec_t& ids = getIDs();
return std::find(ids.begin(), ids.end(), id) != ids.end();
}
@@ -303,9 +304,9 @@ void LLAvatarList::refresh()
bool LLAvatarList::filterHasMatches()
{
- uuid_vector_t values = getIDs();
+ uuid_vec_t values = getIDs();
- for (uuid_vector_t::const_iterator it=values.begin(); it != values.end(); it++)
+ for (uuid_vec_t::const_iterator it=values.begin(); it != values.end(); it++)
{
std::string name;
const LLUUID& buddy_id = *it;
diff --git a/indra/newview/llavatarlist.h b/indra/newview/llavatarlist.h
index 5a55975413..0203617867 100644
--- a/indra/newview/llavatarlist.h
+++ b/indra/newview/llavatarlist.h
@@ -53,8 +53,6 @@ class LLAvatarList : public LLFlatListView
{
LOG_CLASS(LLAvatarList);
public:
- typedef uuid_vec_t uuid_vector_t;
-
struct Params : public LLInitParam::Block<Params, LLFlatListView::Params>
{
Optional<bool> ignore_online_status, // show all items as online
@@ -74,7 +72,7 @@ public:
void setNameFilter(const std::string& filter);
void setDirty(bool val = true, bool force_refresh = false);
- uuid_vector_t& getIDs() { return mIDs; }
+ uuid_vec_t& getIDs() { return mIDs; }
bool contains(const LLUUID& id);
void setContextMenu(LLAvatarListItem::ContextMenu* menu) { mContextMenu = menu; }
@@ -122,7 +120,7 @@ private:
LLTimer* mLITUpdateTimer; // last interaction time update timer
std::string mIconParamName;
std::string mNameFilter;
- uuid_vector_t mIDs;
+ uuid_vec_t mIDs;
LLUUID mSessionID;
LLAvatarListItem::ContextMenu* mContextMenu;
diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp
index 4ea3c61ab2..bed5c01d7a 100644
--- a/indra/newview/llcallfloater.cpp
+++ b/indra/newview/llcallfloater.cpp
@@ -131,11 +131,9 @@ LLCallFloater::~LLCallFloater()
mAvatarListRefreshConnection.disconnect();
mVoiceChannelStateChangeConnection.disconnect();
- // Don't use LLVoiceClient::getInstance() here
- // singleton MAY have already been destroyed.
- if(gVoiceClient)
+ if(LLVoiceClient::instanceExists())
{
- gVoiceClient->removeObserver(this);
+ LLVoiceClient::instance().removeObserver(this);
}
LLTransientFloaterMgr::getInstance()->removeControlView(this);
}
@@ -665,8 +663,8 @@ void LLCallFloater::setVoiceRemoveTimer(const LLUUID& voice_speaker_id)
bool LLCallFloater::removeVoiceLeftParticipant(const LLUUID& voice_speaker_id)
{
- LLAvatarList::uuid_vector_t& speaker_uuids = mAvatarList->getIDs();
- LLAvatarList::uuid_vector_t::iterator pos = std::find(speaker_uuids.begin(), speaker_uuids.end(), voice_speaker_id);
+ uuid_vec_t& speaker_uuids = mAvatarList->getIDs();
+ uuid_vec_t::iterator pos = std::find(speaker_uuids.begin(), speaker_uuids.end(), voice_speaker_id);
if(pos != speaker_uuids.end())
{
speaker_uuids.erase(pos);
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index 71e7ae7061..68c31d87fa 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -93,7 +93,7 @@ public:
payload["object_id"] = object_id;
payload["owner_id"] = query_map["owner"];
payload["name"] = query_map["name"];
- payload["slurl"] = query_map["slurl"];
+ payload["slurl"] = LLWeb::escapeURL(query_map["slurl"]);
payload["group_owned"] = query_map["groupowned"];
LLFloaterReg::showInstance("inspect_remote_object", payload);
return true;
@@ -632,7 +632,14 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
if (use_plain_text_chat_history)
{
- mEditor->appendText("[" + chat.mTimeStr + "] ", mEditor->getText().size() != 0, style_params);
+ LLStyle::Params timestamp_style(style_params);
+ if (!message_from_log)
+ {
+ LLColor4 timestamp_color = LLUIColorTable::instance().getColor("ChatTimestampColor");
+ timestamp_style.color(timestamp_color);
+ timestamp_style.readonly_color(timestamp_color);
+ }
+ mEditor->appendText("[" + chat.mTimeStr + "] ", mEditor->getText().size() != 0, timestamp_style);
if (utf8str_trim(chat.mFromName).size() != 0)
{
diff --git a/indra/newview/llcompilequeue.cpp b/indra/newview/llcompilequeue.cpp
index a96981a108..feb8c540ef 100644
--- a/indra/newview/llcompilequeue.cpp
+++ b/indra/newview/llcompilequeue.cpp
@@ -114,7 +114,7 @@ BOOL LLFloaterScriptQueue::postBuild()
// worked on.
// NOT static, virtual!
void LLFloaterScriptQueue::inventoryChanged(LLViewerObject* viewer_object,
- InventoryObjectList* inv,
+ LLInventoryObject::object_list_t* inv,
S32,
void* q_id)
{
@@ -305,7 +305,7 @@ LLFloaterCompileQueue::~LLFloaterCompileQueue()
}
void LLFloaterCompileQueue::handleInventory(LLViewerObject *viewer_object,
- InventoryObjectList* inv)
+ LLInventoryObject::object_list_t* inv)
{
// find all of the lsl, leaving off duplicates. We'll remove
// all matching asset uuids on compilation success.
@@ -313,8 +313,8 @@ void LLFloaterCompileQueue::handleInventory(LLViewerObject *viewer_object,
typedef std::multimap<LLUUID, LLPointer<LLInventoryItem> > uuid_item_map;
uuid_item_map asset_item_map;
- InventoryObjectList::const_iterator it = inv->begin();
- InventoryObjectList::const_iterator end = inv->end();
+ LLInventoryObject::object_list_t::const_iterator it = inv->begin();
+ LLInventoryObject::object_list_t::const_iterator end = inv->end();
for ( ; it != end; ++it)
{
if((*it)->getType() == LLAssetType::AT_LSL_TEXT)
@@ -625,14 +625,14 @@ LLFloaterResetQueue::~LLFloaterResetQueue()
}
void LLFloaterResetQueue::handleInventory(LLViewerObject* viewer_obj,
- InventoryObjectList* inv)
+ LLInventoryObject::object_list_t* inv)
{
// find all of the lsl, leaving off duplicates. We'll remove
// all matching asset uuids on compilation success.
LLDynamicArray<const char*> names;
- InventoryObjectList::const_iterator it = inv->begin();
- InventoryObjectList::const_iterator end = inv->end();
+ LLInventoryObject::object_list_t::const_iterator it = inv->begin();
+ LLInventoryObject::object_list_t::const_iterator end = inv->end();
for ( ; it != end; ++it)
{
if((*it)->getType() == LLAssetType::AT_LSL_TEXT)
@@ -677,14 +677,14 @@ LLFloaterRunQueue::~LLFloaterRunQueue()
}
void LLFloaterRunQueue::handleInventory(LLViewerObject* viewer_obj,
- InventoryObjectList* inv)
+ LLInventoryObject::object_list_t* inv)
{
// find all of the lsl, leaving off duplicates. We'll remove
// all matching asset uuids on compilation success.
LLDynamicArray<const char*> names;
- InventoryObjectList::const_iterator it = inv->begin();
- InventoryObjectList::const_iterator end = inv->end();
+ LLInventoryObject::object_list_t::const_iterator it = inv->begin();
+ LLInventoryObject::object_list_t::const_iterator end = inv->end();
for ( ; it != end; ++it)
{
if((*it)->getType() == LLAssetType::AT_LSL_TEXT)
@@ -732,14 +732,14 @@ LLFloaterNotRunQueue::~LLFloaterNotRunQueue()
}
void LLFloaterNotRunQueue::handleInventory(LLViewerObject* viewer_obj,
- InventoryObjectList* inv)
+ LLInventoryObject::object_list_t* inv)
{
// find all of the lsl, leaving off duplicates. We'll remove
// all matching asset uuids on compilation success.
LLDynamicArray<const char*> names;
- InventoryObjectList::const_iterator it = inv->begin();
- InventoryObjectList::const_iterator end = inv->end();
+ LLInventoryObject::object_list_t::const_iterator it = inv->begin();
+ LLInventoryObject::object_list_t::const_iterator end = inv->end();
for ( ; it != end; ++it)
{
if((*it)->getType() == LLAssetType::AT_LSL_TEXT)
diff --git a/indra/newview/llcompilequeue.h b/indra/newview/llcompilequeue.h
index 2d061f5d8a..4fde2572af 100644
--- a/indra/newview/llcompilequeue.h
+++ b/indra/newview/llcompilequeue.h
@@ -76,13 +76,13 @@ protected:
// This is the callback method for the viewer object currently
// being worked on.
/*virtual*/ void inventoryChanged(LLViewerObject* obj,
- InventoryObjectList* inv,
+ LLInventoryObject::object_list_t* inv,
S32 serial_num,
void* queue);
// This is called by inventoryChanged
virtual void handleInventory(LLViewerObject* viewer_obj,
- InventoryObjectList* inv) = 0;
+ LLInventoryObject::object_list_t* inv) = 0;
static void onCloseBtn(void* user_data);
@@ -145,7 +145,7 @@ protected:
// This is called by inventoryChanged
virtual void handleInventory(LLViewerObject* viewer_obj,
- InventoryObjectList* inv);
+ LLInventoryObject::object_list_t* inv);
// This is the callback for when each script arrives
static void scriptArrived(LLVFS *vfs, const LLUUID& asset_id,
@@ -192,7 +192,7 @@ protected:
// This is called by inventoryChanged
virtual void handleInventory(LLViewerObject* viewer_obj,
- InventoryObjectList* inv);
+ LLInventoryObject::object_list_t* inv);
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -210,7 +210,7 @@ protected:
// This is called by inventoryChanged
virtual void handleInventory(LLViewerObject* viewer_obj,
- InventoryObjectList* inv);
+ LLInventoryObject::object_list_t* inv);
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -228,7 +228,7 @@ protected:
// This is called by inventoryChanged
virtual void handleInventory(LLViewerObject* viewer_obj,
- InventoryObjectList* inv);
+ LLInventoryObject::object_list_t* inv);
};
#endif // LL_LLCOMPILEQUEUE_H
diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp
index 012e41383f..de9b71a9b8 100644
--- a/indra/newview/lldrawpoolavatar.cpp
+++ b/indra/newview/lldrawpoolavatar.cpp
@@ -314,6 +314,11 @@ void LLDrawPoolAvatar::renderShadow(S32 pass)
return;
}
+ if (sShaderLevel > 0)
+ {
+ gAvatarMatrixParam = sVertexProgram->mUniform[LLViewerShaderMgr::AVATAR_MATRIX];
+ }
+
avatarp->renderSkinned(AVATAR_RENDER_PASS_SINGLE);
}
@@ -358,6 +363,9 @@ void LLDrawPoolAvatar::beginRenderPass(S32 pass)
case 2:
beginSkinned();
break;
+ case 3:
+ beginRigged();
+ break;
}
}
@@ -381,6 +389,10 @@ void LLDrawPoolAvatar::endRenderPass(S32 pass)
break;
case 2:
endSkinned();
+ break;
+ case 3:
+ endRigged();
+ break;
}
}
@@ -566,6 +578,20 @@ void LLDrawPoolAvatar::endSkinned()
gGL.getTexUnit(0)->activate();
}
+void LLDrawPoolAvatar::beginRigged()
+{
+ sVertexProgram = NULL;
+ gSkinnedObjectSimpleProgram.bind();
+ LLVertexBuffer::sWeight4Loc = gSkinnedObjectSimpleProgram.getAttribLocation(LLViewerShaderMgr::OBJECT_WEIGHT);
+}
+
+void LLDrawPoolAvatar::endRigged()
+{
+ sVertexProgram = NULL;
+ gSkinnedObjectSimpleProgram.unbind();
+ LLVertexBuffer::sWeight4Loc = -1;
+}
+
void LLDrawPoolAvatar::beginDeferredSkinned()
{
sShaderLevel = mVertexShaderLevel;
@@ -711,6 +737,12 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass)
avatarp->renderRigid();
return;
}
+
+ if (pass == 3)
+ {
+ avatarp->renderSkinnedAttachments();
+ return;
+ }
if (sShaderLevel > 0)
{
diff --git a/indra/newview/lldrawpoolavatar.h b/indra/newview/lldrawpoolavatar.h
index b947943619..c43aa9b1e3 100644
--- a/indra/newview/lldrawpoolavatar.h
+++ b/indra/newview/lldrawpoolavatar.h
@@ -90,10 +90,12 @@ public:
void beginRigid();
void beginFootShadow();
void beginSkinned();
+ void beginRigged();
void endRigid();
void endFootShadow();
void endSkinned();
+ void endRigged();
void beginDeferredImpostor();
void beginDeferredRigid();
diff --git a/indra/newview/lldynamictexture.cpp b/indra/newview/lldynamictexture.cpp
index c7c79401a0..c423473740 100644
--- a/indra/newview/lldynamictexture.cpp
+++ b/indra/newview/lldynamictexture.cpp
@@ -167,6 +167,8 @@ void LLViewerDynamicTexture::postRender(BOOL success)
{
generateGLTexture() ;
}
+ llcallstacks << "class type: " << (S32)getType() << llcallstacksendl ;
+
success = mGLTexturep->setSubImageFromFrameBuffer(0, 0, mOrigin.mX, mOrigin.mY, mFullWidth, mFullHeight);
}
}
diff --git a/indra/newview/lldynamictexture.h b/indra/newview/lldynamictexture.h
index 2a944eaada..caf2603519 100644
--- a/indra/newview/lldynamictexture.h
+++ b/indra/newview/lldynamictexture.h
@@ -41,6 +41,19 @@
class LLViewerDynamicTexture : public LLViewerTexture
{
+public:
+ enum
+ {
+ LL_VIEWER_DYNAMIC_TEXTURE = LLViewerTexture::DYNAMIC_TEXTURE,
+ LL_TEX_LAYER_SET_BUFFER = LLViewerTexture::INVALID_TEXTURE_TYPE + 1,
+ LL_VISUAL_PARAM_HINT,
+ LL_VISUAL_PARAM_RESET,
+ LL_PREVIEW_ANIMATION,
+ LL_IMAGE_PREVIEW_SCULPTED,
+ LL_IMAGE_PREVIEW_AVATAR,
+ INVALID_DYNAMIC_TEXTURE
+ };
+
protected:
/*virtual*/ ~LLViewerDynamicTexture();
diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp
index 53330e4d98..bc3e04db18 100644
--- a/indra/newview/llface.cpp
+++ b/indra/newview/llface.cpp
@@ -888,7 +888,8 @@ static LLFastTimer::DeclareTimer FTM_FACE_GET_GEOM("Face Geom");
BOOL LLFace::getGeometryVolume(const LLVolume& volume,
const S32 &f,
const LLMatrix4& mat_vert, const LLMatrix3& mat_normal,
- const U16 &index_offset)
+ const U16 &index_offset,
+ bool force_rebuild)
{
LLFastTimer t(FTM_FACE_GET_GEOM);
const LLVolumeFace &vf = volume.getVolumeFace(f);
@@ -925,8 +926,9 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
LLStrider<LLColor4U> colors;
LLStrider<LLVector3> binormals;
LLStrider<U16> indicesp;
+ LLStrider<LLVector4> weights;
- BOOL full_rebuild = mDrawablep->isState(LLDrawable::REBUILD_VOLUME);
+ BOOL full_rebuild = force_rebuild || mDrawablep->isState(LLDrawable::REBUILD_VOLUME);
BOOL global_volume = mDrawablep->getVOVolume()->isVolumeGlobal();
LLVector3 scale;
@@ -944,6 +946,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
BOOL rebuild_tcoord = full_rebuild || mDrawablep->isState(LLDrawable::REBUILD_TCOORD);
BOOL rebuild_normal = rebuild_pos && mVertexBuffer->hasDataType(LLVertexBuffer::TYPE_NORMAL);
BOOL rebuild_binormal = rebuild_pos && mVertexBuffer->hasDataType(LLVertexBuffer::TYPE_BINORMAL);
+ bool rebuild_weights = rebuild_pos && mVertexBuffer->hasDataType(LLVertexBuffer::TYPE_WEIGHT4);
const LLTextureEntry *tep = mVObjp->getTE(f);
U8 bump_code = tep ? tep->getBumpmap() : 0;
@@ -960,7 +963,11 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
{
mVertexBuffer->getBinormalStrider(binormals, mGeomIndex);
}
-
+ if (rebuild_weights)
+ {
+ mVertexBuffer->getWeight4Strider(weights, mGeomIndex);
+ }
+
F32 tcoord_xoffset = 0.f ;
F32 tcoord_yoffset = 0.f ;
F32 tcoord_xscale = 1.f ;
@@ -1338,6 +1345,11 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
*binormals++ = binormal;
}
+ if (rebuild_weights)
+ {
+ *weights++ = vf.mWeights[i];
+ }
+
if (rebuild_color)
{
*colors++ = color;
diff --git a/indra/newview/llface.h b/indra/newview/llface.h
index 67dd97e6f7..06ec043c76 100644
--- a/indra/newview/llface.h
+++ b/indra/newview/llface.h
@@ -73,6 +73,7 @@ public:
HUD_RENDER = 0x0008,
USE_FACE_COLOR = 0x0010,
TEXTURE_ANIM = 0x0020,
+ RIGGED = 0x0040,
};
static void initClass();
@@ -145,7 +146,8 @@ public:
BOOL getGeometryVolume(const LLVolume& volume,
const S32 &f,
const LLMatrix4& mat_vert, const LLMatrix3& mat_normal,
- const U16 &index_offset);
+ const U16 &index_offset,
+ bool force_rebuild = false);
// For avatar
U16 getGeometryAvatar(
diff --git a/indra/newview/llfloateranimpreview.cpp b/indra/newview/llfloateranimpreview.cpp
index 7dcf4350aa..07551e0290 100644
--- a/indra/newview/llfloateranimpreview.cpp
+++ b/indra/newview/llfloateranimpreview.cpp
@@ -1070,6 +1070,12 @@ LLPreviewAnimation::~LLPreviewAnimation()
mDummyAvatar->markDead();
}
+//virtual
+S8 LLPreviewAnimation::getType() const
+{
+ return LLViewerDynamicTexture::LL_PREVIEW_ANIMATION ;
+}
+
//-----------------------------------------------------------------------------
// update()
//-----------------------------------------------------------------------------
diff --git a/indra/newview/llfloateranimpreview.h b/indra/newview/llfloateranimpreview.h
index 3ee1f419ab..84f131a322 100644
--- a/indra/newview/llfloateranimpreview.h
+++ b/indra/newview/llfloateranimpreview.h
@@ -50,6 +50,8 @@ protected:
public:
LLPreviewAnimation(S32 width, S32 height);
+ /*virtual*/ S8 getType() const ;
+
BOOL render();
void requestUpdate();
void rotate(F32 yaw_radians, F32 pitch_radians);
diff --git a/indra/newview/llfloaterbulkpermission.cpp b/indra/newview/llfloaterbulkpermission.cpp
index b2f700069f..766fc0723c 100644
--- a/indra/newview/llfloaterbulkpermission.cpp
+++ b/indra/newview/llfloaterbulkpermission.cpp
@@ -37,6 +37,7 @@
#include "llfloaterperms.h" // for utilities
#include "llagent.h"
#include "llchat.h"
+#include "llinventorydefines.h"
#include "llviewerwindow.h"
#include "llviewerobject.h"
#include "llviewerobjectlist.h"
@@ -116,7 +117,7 @@ void LLFloaterBulkPermission::doApply()
// worked on.
// NOT static, virtual!
void LLFloaterBulkPermission::inventoryChanged(LLViewerObject* viewer_object,
- InventoryObjectList* inv,
+ LLInventoryObject::object_list_t* inv,
S32,
void* q_id)
{
@@ -250,12 +251,12 @@ void LLFloaterBulkPermission::doCheckUncheckAll(BOOL check)
}
-void LLFloaterBulkPermission::handleInventory(LLViewerObject* viewer_obj, InventoryObjectList* inv)
+void LLFloaterBulkPermission::handleInventory(LLViewerObject* viewer_obj, LLInventoryObject::object_list_t* inv)
{
LLScrollListCtrl* list = getChild<LLScrollListCtrl>("queue output");
- InventoryObjectList::const_iterator it = inv->begin();
- InventoryObjectList::const_iterator end = inv->end();
+ LLInventoryObject::object_list_t::const_iterator it = inv->begin();
+ LLInventoryObject::object_list_t::const_iterator end = inv->end();
for ( ; it != end; ++it)
{
LLAssetType::EType asstype = (*it)->getType();
diff --git a/indra/newview/llfloaterbulkpermission.h b/indra/newview/llfloaterbulkpermission.h
index bffcff7059..80dc88fbb1 100644
--- a/indra/newview/llfloaterbulkpermission.h
+++ b/indra/newview/llfloaterbulkpermission.h
@@ -63,13 +63,13 @@ private:
// This is the callback method for the viewer object currently
// being worked on.
/*virtual*/ void inventoryChanged(LLViewerObject* obj,
- InventoryObjectList* inv,
+ LLInventoryObject::object_list_t* inv,
S32 serial_num,
void* queue);
// This is called by inventoryChanged
void handleInventory(LLViewerObject* viewer_obj,
- InventoryObjectList* inv);
+ LLInventoryObject::object_list_t* inv);
void updateInventory(LLViewerObject* object,
diff --git a/indra/newview/llfloaterbuy.cpp b/indra/newview/llfloaterbuy.cpp
index 589f570d96..44c82f1941 100644
--- a/indra/newview/llfloaterbuy.cpp
+++ b/indra/newview/llfloaterbuy.cpp
@@ -44,6 +44,7 @@
#include "llinventorymodel.h" // for gInventory
#include "llfloaterreg.h"
#include "llfloaterinventory.h" // for get_item_icon
+#include "llinventorydefines.h"
#include "llinventoryfunctions.h"
#include "llnotificationsutil.h"
#include "llselectmgr.h"
@@ -195,7 +196,7 @@ void LLFloaterBuy::show(const LLSaleInfo& sale_info)
}
void LLFloaterBuy::inventoryChanged(LLViewerObject* obj,
- InventoryObjectList* inv,
+ LLInventoryObject::object_list_t* inv,
S32 serial_num,
void* data)
{
@@ -220,8 +221,8 @@ void LLFloaterBuy::inventoryChanged(LLViewerObject* obj,
return;
}
- InventoryObjectList::const_iterator it = inv->begin();
- InventoryObjectList::const_iterator end = inv->end();
+ LLInventoryObject::object_list_t::const_iterator it = inv->begin();
+ LLInventoryObject::object_list_t::const_iterator end = inv->end();
for ( ; it != end; ++it )
{
LLInventoryObject* obj = (LLInventoryObject*)(*it);
@@ -246,8 +247,8 @@ void LLFloaterBuy::inventoryChanged(LLViewerObject* obj,
// Compute icon for this item
BOOL item_is_multi = FALSE;
- if ( inv_item->getFlags() & LLInventoryItem::II_FLAGS_LANDMARK_VISITED
- || inv_item->getFlags() & LLInventoryItem::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS)
+ if ( inv_item->getFlags() & LLInventoryItemFlags::II_FLAGS_LANDMARK_VISITED
+ || inv_item->getFlags() & LLInventoryItemFlags::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS)
{
item_is_multi = TRUE;
}
diff --git a/indra/newview/llfloaterbuy.h b/indra/newview/llfloaterbuy.h
index ab38e082dc..411c8fb00e 100644
--- a/indra/newview/llfloaterbuy.h
+++ b/indra/newview/llfloaterbuy.h
@@ -65,7 +65,7 @@ protected:
void requestObjectInventories();
/*virtual*/ void inventoryChanged(LLViewerObject* obj,
- InventoryObjectList* inv,
+ LLInventoryObject::object_list_t* inv,
S32 serial_num,
void* data);
diff --git a/indra/newview/llfloaterbuycontents.cpp b/indra/newview/llfloaterbuycontents.cpp
index 0daef27af2..1d989ad0fd 100644
--- a/indra/newview/llfloaterbuycontents.cpp
+++ b/indra/newview/llfloaterbuycontents.cpp
@@ -44,6 +44,7 @@
#include "llagent.h" // for agent id
#include "llcheckboxctrl.h"
+#include "llinventorydefines.h"
#include "llinventoryfunctions.h"
#include "llinventorymodel.h" // for gInventory
#include "llfloaterreg.h"
@@ -142,7 +143,7 @@ void LLFloaterBuyContents::show(const LLSaleInfo& sale_info)
void LLFloaterBuyContents::inventoryChanged(LLViewerObject* obj,
- InventoryObjectList* inv,
+ LLInventoryObject::object_list_t* inv,
S32 serial_num,
void* data)
{
@@ -176,8 +177,8 @@ void LLFloaterBuyContents::inventoryChanged(LLViewerObject* obj,
LLInventoryType::EType inv_type;
S32 wearable_count = 0;
- InventoryObjectList::const_iterator it = inv->begin();
- InventoryObjectList::const_iterator end = inv->end();
+ LLInventoryObject::object_list_t::const_iterator it = inv->begin();
+ LLInventoryObject::object_list_t::const_iterator end = inv->end();
for ( ; it != end; ++it )
{
@@ -215,7 +216,7 @@ void LLFloaterBuyContents::inventoryChanged(LLViewerObject* obj,
LLSD row;
BOOL item_is_multi = FALSE;
- if ( inv_item->getFlags() & LLInventoryItem::II_FLAGS_LANDMARK_VISITED )
+ if ( inv_item->getFlags() & LLInventoryItemFlags::II_FLAGS_LANDMARK_VISITED )
{
item_is_multi = TRUE;
}
diff --git a/indra/newview/llfloaterbuycontents.h b/indra/newview/llfloaterbuycontents.h
index 8045a46c9f..ab161adfea 100644
--- a/indra/newview/llfloaterbuycontents.h
+++ b/indra/newview/llfloaterbuycontents.h
@@ -59,7 +59,7 @@ public:
protected:
void requestObjectInventories();
/*virtual*/ void inventoryChanged(LLViewerObject* obj,
- InventoryObjectList* inv,
+ LLInventoryObject::object_list_t* inv,
S32 serial_num,
void* data);
diff --git a/indra/newview/llfloatergesture.cpp b/indra/newview/llfloatergesture.cpp
index 0aca12bc5e..8ee8d13a9c 100644
--- a/indra/newview/llfloatergesture.cpp
+++ b/indra/newview/llfloatergesture.cpp
@@ -148,7 +148,7 @@ void LLFloaterGesture::done()
if (!unloaded_folders.empty())
{
LL_DEBUGS("Gesture")<< "Fetching subdirectories....." << LL_ENDL;
- fetchDescendents(unloaded_folders);
+ fetch(unloaded_folders);
}
else
{
@@ -202,7 +202,7 @@ BOOL LLFloaterGesture::postBuild()
folders.push_back(mGestureFolderID);
//perform loading Gesture directory anyway to make sure that all subdirectory are loaded too. See method done() for details.
gInventory.addObserver(this);
- fetchDescendents(folders);
+ fetch(folders);
if (mGestureList)
{
diff --git a/indra/newview/llfloatergodtools.cpp b/indra/newview/llfloatergodtools.cpp
index e7b2da043f..bd07cfdfbf 100644
--- a/indra/newview/llfloatergodtools.cpp
+++ b/indra/newview/llfloatergodtools.cpp
@@ -922,6 +922,7 @@ LLPanelObjectTools::~LLPanelObjectTools()
BOOL LLPanelObjectTools::postBuild()
{
+ refresh();
return TRUE;
}
diff --git a/indra/newview/llfloaterimagepreview.cpp b/indra/newview/llfloaterimagepreview.cpp
index 6b754bd065..ef9da30552 100644
--- a/indra/newview/llfloaterimagepreview.cpp
+++ b/indra/newview/llfloaterimagepreview.cpp
@@ -629,6 +629,11 @@ LLImagePreviewAvatar::~LLImagePreviewAvatar()
mDummyAvatar->markDead();
}
+//virtual
+S8 LLImagePreviewAvatar::getType() const
+{
+ return LLViewerDynamicTexture::LL_IMAGE_PREVIEW_AVATAR ;
+}
void LLImagePreviewAvatar::setPreviewTarget(const std::string& joint_name, const std::string& mesh_name, LLImageRaw* imagep, F32 distance, BOOL male)
{
@@ -808,6 +813,11 @@ LLImagePreviewSculpted::~LLImagePreviewSculpted()
{
}
+//virtual
+S8 LLImagePreviewSculpted::getType() const
+{
+ return LLViewerDynamicTexture::LL_IMAGE_PREVIEW_SCULPTED ;
+}
void LLImagePreviewSculpted::setPreviewTarget(LLImageRaw* imagep, F32 distance)
{
diff --git a/indra/newview/llfloaterimagepreview.h b/indra/newview/llfloaterimagepreview.h
index 4a12543650..466bd1d0ec 100644
--- a/indra/newview/llfloaterimagepreview.h
+++ b/indra/newview/llfloaterimagepreview.h
@@ -54,6 +54,8 @@ protected:
public:
LLImagePreviewSculpted(S32 width, S32 height);
+ /*virtual*/ S8 getType() const ;
+
void setPreviewTarget(LLImageRaw *imagep, F32 distance);
void setTexture(U32 name) { mTextureName = name; }
@@ -85,6 +87,8 @@ protected:
public:
LLImagePreviewAvatar(S32 width, S32 height);
+ /*virtual*/ S8 getType() const ;
+
void setPreviewTarget(const std::string& joint_name, const std::string& mesh_name, LLImageRaw* imagep, F32 distance, BOOL male);
void setTexture(U32 name) { mTextureName = name; }
void clearPreviewTexture(const std::string& mesh_name);
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index 02c83dcd09..2ff483cd34 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -91,6 +91,7 @@ static std::string MATURITY = "[MATURITY]";
// constants used in callbacks below - syntactic sugar.
static const BOOL BUY_GROUP_LAND = TRUE;
static const BOOL BUY_PERSONAL_LAND = FALSE;
+LLPointer<LLParcelSelection> LLPanelLandGeneral::sSelectionForBuyPass = NULL;
// Statics
LLParcelSelectionObserver* LLFloaterLand::sObserver = NULL;
@@ -975,6 +976,8 @@ void LLPanelLandGeneral::onClickBuyPass(void* data)
args["PARCEL_NAME"] = parcel_name;
args["TIME"] = time;
+ // creating pointer on selection to avoid deselection of parcel until we are done with buying pass (EXT-6464)
+ sSelectionForBuyPass = LLViewerParcelMgr::getInstance()->getParcelSelection();
LLNotificationsUtil::add("LandBuyPass", args, LLSD(), cbBuyPass);
}
@@ -1006,6 +1009,8 @@ bool LLPanelLandGeneral::cbBuyPass(const LLSD& notification, const LLSD& respons
// User clicked OK
LLViewerParcelMgr::getInstance()->buyPass();
}
+ // we are done with buying pass, additional selection is no longer needed
+ sSelectionForBuyPass = NULL;
return false;
}
diff --git a/indra/newview/llfloaterland.h b/indra/newview/llfloaterland.h
index fe80766a74..0a743e5215 100644
--- a/indra/newview/llfloaterland.h
+++ b/indra/newview/llfloaterland.h
@@ -234,6 +234,11 @@ protected:
LLSafeHandle<LLParcelSelection>& mParcel;
+ // This pointer is needed to avoid parcel deselection until buying pass is completed or canceled.
+ // Deselection happened because of zero references to parcel selection, which took place when
+ // "Buy Pass" was called from popup menu(EXT-6464)
+ static LLPointer<LLParcelSelection> sSelectionForBuyPass;
+
static LLHandle<LLFloater> sBuyPassDialogHandle;
};
diff --git a/indra/newview/llfloateropenobject.cpp b/indra/newview/llfloateropenobject.cpp
index ec50ed596c..71bfae316a 100644
--- a/indra/newview/llfloateropenobject.cpp
+++ b/indra/newview/llfloateropenobject.cpp
@@ -121,12 +121,12 @@ void LLFloaterOpenObject::refresh()
{
// this folder is coming from an object, as there is only one folder in an object, the root,
// we need to collect the entire contents and handle them as a group
- InventoryObjectList inventory_objects;
+ LLInventoryObject::object_list_t inventory_objects;
object->getInventoryContents(inventory_objects);
if (!inventory_objects.empty())
{
- for (InventoryObjectList::iterator it = inventory_objects.begin();
+ for (LLInventoryObject::object_list_t::iterator it = inventory_objects.begin();
it != inventory_objects.end();
++it)
{
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index d15eedd9c0..00292eecb4 100644
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -107,6 +107,8 @@
#include "llpluginclassmedia.h"
#include "llteleporthistorystorage.h"
+#include "lllogininstance.h" // to check if logged in yet
+
const F32 MAX_USER_FAR_CLIP = 512.f;
const F32 MIN_USER_FAR_CLIP = 64.f;
@@ -182,7 +184,6 @@ void LLVoiceSetKeyDialog::onCancel(void* user_data)
// if creating/destroying these is too slow, we'll need to create
// a static member and update all our static callbacks
-void handleNameTagOptionChanged(const LLSD& newvalue);
bool callback_clear_browser_cache(const LLSD& notification, const LLSD& response);
//bool callback_skip_dialogs(const LLSD& notification, const LLSD& response, LLFloaterPreference* floater);
@@ -218,15 +219,6 @@ bool callback_clear_browser_cache(const LLSD& notification, const LLSD& response
return false;
}
-void handleNameTagOptionChanged(const LLSD& newvalue)
-{
- S32 name_tag_option = S32(newvalue);
- if(name_tag_option==2)
- {
- gSavedSettings.setBOOL("SmallAvatarNames", TRUE);
- }
-}
-
/*bool callback_skip_dialogs(const LLSD& notification, const LLSD& response, LLFloaterPreference* floater)
{
S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
@@ -319,8 +311,6 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key)
mCommitCallbackRegistrar.add("Pref.MaturitySettings", boost::bind(&LLFloaterPreference::onChangeMaturity, this));
sSkin = gSavedSettings.getString("SkinCurrent");
-
- gSavedSettings.getControl("AvatarNameTagMode")->getCommitSignal()->connect(boost::bind(&handleNameTagOptionChanged, _2));
}
BOOL LLFloaterPreference::postBuild()
@@ -336,8 +326,6 @@ BOOL LLFloaterPreference::postBuild()
LLTabContainer* tabcontainer = getChild<LLTabContainer>("pref core");
if (!tabcontainer->selectTab(gSavedSettings.getS32("LastPrefTab")))
tabcontainer->selectFirstTab();
- S32 show_avatar_nametag_options = gSavedSettings.getS32("AvatarNameTagMode");
- handleNameTagOptionChanged(LLSD(show_avatar_nametag_options));
std::string cache_location = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, "");
childSetText("cache_location", cache_location);
@@ -515,13 +503,15 @@ void LLFloaterPreference::onOpen(const LLSD& key)
// if they're not adult or a god, they shouldn't see the adult selection, so delete it
if (!gAgent.isAdult() && !gAgent.isGodlike())
{
- // we're going to remove the adult entry from the combo. This obviously depends
- // on the order of items in the XML file, but there doesn't seem to be a reasonable
- // way to depend on the field in XML called 'name'.
- maturity_combo->remove(0);
+ // we're going to remove the adult entry from the combo
+ LLScrollListCtrl* maturity_list = maturity_combo->findChild<LLScrollListCtrl>("ComboBox");
+ if (maturity_list)
+ {
+ maturity_list->deleteItems(LLSD(SIM_ACCESS_ADULT));
+ }
}
childSetVisible("maturity_desired_combobox", true);
- childSetVisible("maturity_desired_textbox", false);
+ childSetVisible("maturity_desired_textbox", false);
}
else
{
@@ -890,6 +880,8 @@ void LLFloaterPreference::refreshEnabledState()
// now turn off any features that are unavailable
disableUnavailableSettings();
+
+ childSetEnabled ("block_list", LLLoginInstance::getInstance()->authSuccess());
}
void LLFloaterPreference::disableUnavailableSettings()
@@ -1145,10 +1137,8 @@ void LLFloaterPreference::onClickLogPath()
{
return; //Canceled!
}
- std::string chat_log_dir = picker.getDirName();
- std::string chat_log_top_folder= gDirUtilp->getBaseFileName(chat_log_dir);
- gSavedPerAccountSettings.setString("InstantMessageLogPath",chat_log_dir);
- gSavedPerAccountSettings.setString("InstantMessageLogFolder",chat_log_top_folder);
+
+ gSavedPerAccountSettings.setString("InstantMessageLogPath", picker.getDirName());
}
void LLFloaterPreference::setPersonalInfo(const std::string& visibility, bool im_via_email, const std::string& email)
diff --git a/indra/newview/llfloaterproperties.cpp b/indra/newview/llfloaterproperties.cpp
index 5c0593ad29..bb9d151cd2 100644
--- a/indra/newview/llfloaterproperties.cpp
+++ b/indra/newview/llfloaterproperties.cpp
@@ -38,12 +38,12 @@
#include "llcachename.h"
#include "lldbstrings.h"
#include "llfloaterreg.h"
-#include "llinventory.h"
#include "llagent.h"
#include "llbutton.h"
#include "llcheckboxctrl.h"
#include "llavataractions.h"
+#include "llinventorydefines.h"
#include "llinventoryobserver.h"
#include "llinventorymodel.h"
#include "lllineeditor.h"
@@ -380,9 +380,9 @@ void LLFloaterProperties::refreshFromItem(LLInventoryItem* item)
if (item->getType() == LLAssetType::AT_OBJECT)
{
U32 flags = item->getFlags();
- slam_perm = flags & LLInventoryItem::II_FLAGS_OBJECT_SLAM_PERM;
- overwrite_everyone = flags & LLInventoryItem::II_FLAGS_OBJECT_PERM_OVERWRITE_EVERYONE;
- overwrite_group = flags & LLInventoryItem::II_FLAGS_OBJECT_PERM_OVERWRITE_GROUP;
+ slam_perm = flags & LLInventoryItemFlags::II_FLAGS_OBJECT_SLAM_PERM;
+ overwrite_everyone = flags & LLInventoryItemFlags::II_FLAGS_OBJECT_PERM_OVERWRITE_EVERYONE;
+ overwrite_group = flags & LLInventoryItemFlags::II_FLAGS_OBJECT_PERM_OVERWRITE_GROUP;
}
std::string perm_string;
@@ -693,7 +693,7 @@ void LLFloaterProperties::onCommitPermissions()
if((perm.getMaskNextOwner()!=item->getPermissions().getMaskNextOwner())
&& (item->getType() == LLAssetType::AT_OBJECT))
{
- flags |= LLInventoryItem::II_FLAGS_OBJECT_SLAM_PERM;
+ flags |= LLInventoryItemFlags::II_FLAGS_OBJECT_SLAM_PERM;
}
// If everyone permissions have changed (and this is an object)
// then set the overwrite everyone permissions flag so they
@@ -701,7 +701,7 @@ void LLFloaterProperties::onCommitPermissions()
if ((perm.getMaskEveryone()!=item->getPermissions().getMaskEveryone())
&& (item->getType() == LLAssetType::AT_OBJECT))
{
- flags |= LLInventoryItem::II_FLAGS_OBJECT_PERM_OVERWRITE_EVERYONE;
+ flags |= LLInventoryItemFlags::II_FLAGS_OBJECT_PERM_OVERWRITE_EVERYONE;
}
// If group permissions have changed (and this is an object)
// then set the overwrite group permissions flag so they
@@ -709,7 +709,7 @@ void LLFloaterProperties::onCommitPermissions()
if ((perm.getMaskGroup()!=item->getPermissions().getMaskGroup())
&& (item->getType() == LLAssetType::AT_OBJECT))
{
- flags |= LLInventoryItem::II_FLAGS_OBJECT_PERM_OVERWRITE_GROUP;
+ flags |= LLInventoryItemFlags::II_FLAGS_OBJECT_PERM_OVERWRITE_GROUP;
}
new_item->setFlags(flags);
if(mObjectID.isNull())
@@ -821,7 +821,7 @@ void LLFloaterProperties::updateSaleInfo()
if (item->getType() == LLAssetType::AT_OBJECT)
{
U32 flags = new_item->getFlags();
- flags |= LLInventoryItem::II_FLAGS_OBJECT_SLAM_SALE;
+ flags |= LLInventoryItemFlags::II_FLAGS_OBJECT_SLAM_SALE;
new_item->setFlags(flags);
}
diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp
index 357c10c6b6..cd4876834e 100644
--- a/indra/newview/llfloatersnapshot.cpp
+++ b/indra/newview/llfloatersnapshot.cpp
@@ -1321,7 +1321,27 @@ void LLFloaterSnapshot::Impl::updateLayout(LLFloaterSnapshot* floaterp)
// static
void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater)
{
+ LLSnapshotLivePreview* previewp = getPreviewView(floater);
+ if (NULL == previewp)
+ {
+ return;
+ }
+
+ // Disable buttons until Snapshot is ready. EXT-6534
+ BOOL got_snap = previewp->getSnapshotUpToDate();
+
+ // process Main buttons
+ floater->childSetEnabled("share", got_snap);
+ floater->childSetEnabled("save", got_snap);
+ floater->childSetEnabled("set_profile_pic", got_snap);
+
+ // process Share actions buttons
+ floater->childSetEnabled("share_to_web", got_snap);
+ floater->childSetEnabled("share_to_email", got_snap);
+ // process Save actions buttons
+ floater->childSetEnabled("save_to_inventory", got_snap);
+ floater->childSetEnabled("save_to_computer", got_snap);
}
// static
diff --git a/indra/newview/llfloatertos.cpp b/indra/newview/llfloatertos.cpp
index 69ee8cd547..3db9587797 100644
--- a/indra/newview/llfloatertos.cpp
+++ b/indra/newview/llfloatertos.cpp
@@ -57,7 +57,9 @@ LLFloaterTOS::LLFloaterTOS(const LLSD& data)
: LLModalDialog( data["message"].asString() ),
mMessage(data["message"].asString()),
mWebBrowserWindowId( 0 ),
- mLoadCompleteCount( 0 ),
+ mLoadingScreenLoaded(false),
+ mSiteAlive(false),
+ mRealNavigateBegun(false),
mReplyPumpName(data["reply_pump"].asString())
{
}
@@ -138,6 +140,11 @@ BOOL LLFloaterTOS::postBuild()
if ( web_browser )
{
web_browser->addObserver(this);
+
+ // Don't use the start_url parameter for this browser instance -- it may finish loading before we get to add our observer.
+ // Store the URL separately and navigate here instead.
+ web_browser->navigateTo( getString( "loading_url" ) );
+
gResponsePtr = LLIamHere::build( this );
LLHTTPClient::get( getString( "real_url" ), gResponsePtr );
}
@@ -147,15 +154,16 @@ BOOL LLFloaterTOS::postBuild()
void LLFloaterTOS::setSiteIsAlive( bool alive )
{
+ mSiteAlive = alive;
+
// only do this for TOS pages
if (hasChild("tos_html"))
{
- LLMediaCtrl* web_browser = getChild<LLMediaCtrl>("tos_html");
// if the contents of the site was retrieved
if ( alive )
{
// navigate to the "real" page
- web_browser->navigateTo( getString( "real_url" ) );
+ loadIfNeeded();
}
else
{
@@ -167,6 +175,19 @@ void LLFloaterTOS::setSiteIsAlive( bool alive )
}
}
+void LLFloaterTOS::loadIfNeeded()
+{
+ if(!mRealNavigateBegun && mSiteAlive)
+ {
+ LLMediaCtrl* web_browser = getChild<LLMediaCtrl>("tos_html");
+ if(web_browser)
+ {
+ mRealNavigateBegun = true;
+ web_browser->navigateTo( getString( "real_url" ) );
+ }
+ }
+}
+
LLFloaterTOS::~LLFloaterTOS()
{
@@ -216,8 +237,13 @@ void LLFloaterTOS::onCancel( void* userdata )
LLEventPumps::instance().obtain(self->mReplyPumpName).post(LLSD(false));
}
- self->mLoadCompleteCount = 0; // reset counter for next time we come to TOS
- self->closeFloater(); // destroys this object
+ // reset state for next time we come to TOS
+ self->mLoadingScreenLoaded = false;
+ self->mSiteAlive = false;
+ self->mRealNavigateBegun = false;
+
+ // destroys this object
+ self->closeFloater();
}
//virtual
@@ -225,8 +251,12 @@ void LLFloaterTOS::handleMediaEvent(LLPluginClassMedia* /*self*/, EMediaEvent ev
{
if(event == MEDIA_EVENT_NAVIGATE_COMPLETE)
{
- // skip past the loading screen navigate complete
- if ( ++mLoadCompleteCount == 2 )
+ if(!mLoadingScreenLoaded)
+ {
+ mLoadingScreenLoaded = true;
+ loadIfNeeded();
+ }
+ else if(mRealNavigateBegun)
{
llinfos << "NAVIGATE COMPLETE" << llendl;
// enable Agree to TOS radio button now that page has loaded
diff --git a/indra/newview/llfloatertos.h b/indra/newview/llfloatertos.h
index 1d573e8170..6ea56408ee 100644
--- a/indra/newview/llfloatertos.h
+++ b/indra/newview/llfloatertos.h
@@ -66,9 +66,14 @@ public:
/*virtual*/ void handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event);
private:
+
+ void loadIfNeeded();
+
std::string mMessage;
int mWebBrowserWindowId;
- int mLoadCompleteCount;
+ bool mLoadingScreenLoaded;
+ bool mSiteAlive;
+ bool mRealNavigateBegun;
std::string mReplyPumpName;
};
diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp
index f17c9765b9..b3223ad494 100644
--- a/indra/newview/llfloaterworldmap.cpp
+++ b/indra/newview/llfloaterworldmap.cpp
@@ -125,7 +125,7 @@ public:
}
// support the secondlife:///app/worldmap/{LOCATION}/{COORDS} SLapp
- const std::string region_name = params[0].asString();
+ const std::string region_name = LLURI::unescape(params[0].asString());
S32 x = (params.size() > 1) ? params[1].asInteger() : 128;
S32 y = (params.size() > 2) ? params[2].asInteger() : 128;
S32 z = (params.size() > 3) ? params[3].asInteger() : 0;
diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp
index 43743ec37a..8d4d6a178a 100644
--- a/indra/newview/llfolderview.cpp
+++ b/indra/newview/llfolderview.cpp
@@ -276,11 +276,6 @@ LLFolderView::~LLFolderView( void )
mRenamer = NULL;
mStatusTextBox = NULL;
- if( gEditMenuHandler == this )
- {
- gEditMenuHandler = NULL;
- }
-
mAutoOpenItems.removeAllNodes();
gIdleCallbacks.deleteFunction(idle, this);
@@ -2103,8 +2098,7 @@ bool LLFolderView::doToSelected(LLInventoryModel* model, const LLSD& userdata)
if(!folder_item) continue;
LLInvFVBridge* bridge = (LLInvFVBridge*)folder_item->getListener();
if(!bridge) continue;
-
- bridge->performAction(this, model, action);
+ bridge->performAction(model, action);
}
LLFloater::setFloaterHost(NULL);
diff --git a/indra/newview/llfoldervieweventlistener.h b/indra/newview/llfoldervieweventlistener.h
index 12e100caf4..a2ef8c1d12 100644
--- a/indra/newview/llfoldervieweventlistener.h
+++ b/indra/newview/llfoldervieweventlistener.h
@@ -88,7 +88,7 @@ public:
virtual BOOL isUpToDate() const = 0;
virtual BOOL hasChildren() const = 0;
virtual LLInventoryType::EType getInventoryType() const = 0;
- virtual void performAction(LLFolderView* folder, LLInventoryModel* model, std::string action) = 0;
+ virtual void performAction(LLInventoryModel* model, std::string action) = 0;
// This method should be called when a drag begins. returns TRUE
// if the drag can begin, otherwise FALSE.
diff --git a/indra/newview/llfolderviewitem.cpp b/indra/newview/llfolderviewitem.cpp
index c916e4b98c..3208218302 100644
--- a/indra/newview/llfolderviewitem.cpp
+++ b/indra/newview/llfolderviewitem.cpp
@@ -834,13 +834,17 @@ void LLFolderViewItem::draw()
static LLUIColor sFocusOutlineColor = LLUIColorTable::instance().getColor("InventoryFocusOutlineColor", DEFAULT_WHITE);
static LLUIColor sFilterBGColor = LLUIColorTable::instance().getColor("FilterBackgroundColor", DEFAULT_WHITE);
static LLUIColor sFilterTextColor = LLUIColorTable::instance().getColor("FilterTextColor", DEFAULT_WHITE);
- static LLUIColor sSuffixColor = LLUIColorTable::instance().getColor("InventoryItemSuffixColor", DEFAULT_WHITE);
+ static LLUIColor sSuffixColor = LLUIColorTable::instance().getColor("InventoryItemColor", DEFAULT_WHITE);
+ static LLUIColor sLibraryColor = LLUIColorTable::instance().getColor("InventoryItemLibraryColor", DEFAULT_WHITE);
static LLUIColor sSearchStatusColor = LLUIColorTable::instance().getColor("InventorySearchStatusColor", DEFAULT_WHITE);
+
const Params& default_params = LLUICtrlFactory::getDefaultParams<LLFolderViewItem>();
const S32 TOP_PAD = default_params.item_top_pad;
const S32 FOCUS_LEFT = 1;
const LLFontGL* font = getLabelFontForStyle(mLabelStyle);
+ const BOOL in_inventory = getListener() && gInventory.isObjectDescendentOf(getListener()->getUUID(), gInventory.getRootFolderID());
+ const BOOL in_library = getListener() && gInventory.isObjectDescendentOf(getListener()->getUUID(), gInventory.getLibraryRootFolderID());
//--------------------------------------------------------------------------------//
// Draw open folder arrow
@@ -961,6 +965,8 @@ void LLFolderViewItem::draw()
}
LLColor4 color = (mIsSelected && filled) ? sHighlightFgColor : sFgColor;
+ if (in_library) color = sLibraryColor;
+
F32 right_x = 0;
F32 y = (F32)getRect().getHeight() - font->getLineHeight() - (F32)TEXT_PAD - (F32)TOP_PAD;
F32 text_left = (F32)(ARROW_SIZE + TEXT_PAD + ICON_WIDTH + ICON_PAD + mIndentation);
@@ -982,8 +988,6 @@ void LLFolderViewItem::draw()
S32_MAX, S32_MAX, &right_x, FALSE );
text_left = right_x;
}
-
-
//--------------------------------------------------------------------------------//
// Draw the actual label text
//
@@ -995,13 +999,11 @@ void LLFolderViewItem::draw()
// Draw "Loading..." text
//
bool root_is_loading = false;
- if (getListener() && gInventory.isObjectDescendentOf(getListener()->getUUID(),
- gInventory.getRootFolderID())) // Descendent of my inventory
+ if (in_inventory)
{
root_is_loading = LLInventoryModelBackgroundFetch::instance().inventoryFetchInProgress();
}
- if (getListener() && gInventory.isObjectDescendentOf(getListener()->getUUID(),
- gInventory.getLibraryRootFolderID())) // Descendent of library
+ if (in_library)
{
root_is_loading = LLInventoryModelBackgroundFetch::instance().libraryFetchInProgress();
}
@@ -1057,20 +1059,21 @@ void LLFolderViewItem::draw()
///----------------------------------------------------------------------------
LLFolderViewFolder::LLFolderViewFolder( const LLFolderViewItem::Params& p ):
-LLFolderViewItem( p ), // 0 = no create time
-mIsOpen(FALSE),
-mExpanderHighlighted(FALSE),
-mCurHeight(0.f),
-mTargetHeight(0.f),
-mAutoOpenCountdown(0.f),
-mSubtreeCreationDate(0),
-mAmTrash(LLFolderViewFolder::UNKNOWN),
-mLastArrangeGeneration( -1 ),
-mLastCalculatedWidth(0),
-mCompletedFilterGeneration(-1),
-mMostFilteredDescendantGeneration(-1),
-mNeedsSort(false)
-{}
+ LLFolderViewItem( p ), // 0 = no create time
+ mIsOpen(FALSE),
+ mExpanderHighlighted(FALSE),
+ mCurHeight(0.f),
+ mTargetHeight(0.f),
+ mAutoOpenCountdown(0.f),
+ mSubtreeCreationDate(0),
+ mAmTrash(LLFolderViewFolder::UNKNOWN),
+ mLastArrangeGeneration( -1 ),
+ mLastCalculatedWidth(0),
+ mCompletedFilterGeneration(-1),
+ mMostFilteredDescendantGeneration(-1),
+ mNeedsSort(false)
+{
+}
// Destroys the object
LLFolderViewFolder::~LLFolderViewFolder( void )
diff --git a/indra/newview/llfriendcard.cpp b/indra/newview/llfriendcard.cpp
index a848128d67..6f069cca17 100644
--- a/indra/newview/llfriendcard.cpp
+++ b/indra/newview/llfriendcard.cpp
@@ -413,7 +413,7 @@ void LLFriendCardsManager::fetchAndCheckFolderDescendents(const LLUUID& folder_i
uuid_vec_t folders;
folders.push_back(folder_id);
- fetch->fetchDescendents(folders);
+ fetch->fetch(folders);
if(fetch->isEverythingComplete())
{
// everything is already here - call done.
diff --git a/indra/newview/llgesturemgr.cpp b/indra/newview/llgesturemgr.cpp
index fbacbd704f..a4342a4bc9 100644
--- a/indra/newview/llgesturemgr.cpp
+++ b/indra/newview/llgesturemgr.cpp
@@ -1031,9 +1031,9 @@ void LLGestureMgr::onLoadComplete(LLVFS *vfs,
else
{
// Watch this item and set gesture name when item exists in inventory
- item_ref_t ids;
+ uuid_vec_t ids;
ids.push_back(item_id);
- self.fetchItems(ids);
+ self.fetch(ids);
}
self.mActive[item_id] = gesture;
diff --git a/indra/newview/llgroupactions.cpp b/indra/newview/llgroupactions.cpp
index d4eecc8c48..438159b2e6 100644
--- a/indra/newview/llgroupactions.cpp
+++ b/indra/newview/llgroupactions.cpp
@@ -75,12 +75,13 @@ public:
return false;
}
- //*TODO by what to replace showing groups floater?
if (tokens[0].asString() == "list")
{
if (tokens[1].asString() == "show")
{
- //LLFloaterReg::showInstance("contacts", "groups");
+ LLSD params;
+ params["people_panel_tab_name"] = "groups_panel";
+ LLSideTray::getInstance()->showPanel("panel_people", params);
return true;
}
return false;
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index e394b4dfc1..ddd42492a0 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -36,8 +36,6 @@
// external projects
#include "lltransfersourceasset.h"
-
-
#include "llagent.h"
#include "llagentcamera.h"
#include "llagentwearables.h"
@@ -52,6 +50,7 @@
#include "llimfloater.h"
#include "llimview.h"
#include "llinventoryclipboard.h"
+#include "llinventorydefines.h"
#include "llinventoryfunctions.h"
#include "llinventorymodel.h"
#include "llinventorymodelbackgroundfetch.h"
@@ -72,6 +71,18 @@
#include "llwearablelist.h"
#include "llpaneloutfitsinventory.h"
+typedef std::pair<LLUUID, LLUUID> two_uuids_t;
+typedef std::list<two_uuids_t> two_uuids_list_t;
+
+struct LLMoveInv
+{
+ LLUUID mObjectID;
+ LLUUID mCategoryID;
+ two_uuids_list_t mMoveList;
+ void (*mCallback)(S32, void*);
+ void* mUserData;
+};
+
using namespace LLOldEvents;
// Helpers
@@ -95,6 +106,7 @@ void remove_inventory_category_from_avatar(LLInventoryCategory* category);
void remove_inventory_category_from_avatar_step2( BOOL proceed, LLUUID category_id);
bool move_task_inventory_callback(const LLSD& notification, const LLSD& response, LLMoveInv*);
bool confirm_replace_attachment_rez(const LLSD& notification, const LLSD& response);
+void teleport_via_landmark(const LLUUID& asset_id);
std::string ICON_NAME[ICON_NAME_COUNT] =
{
@@ -130,19 +142,22 @@ std::string ICON_NAME[ICON_NAME_COUNT] =
"Inv_Animation",
"Inv_Gesture",
+ "Inv_Mesh",
"Inv_LinkItem",
- "Inv_LinkFolder",
-
- "Inv_Mesh"
+ "Inv_LinkFolder"
};
// +=================================================+
// | LLInvFVBridge |
// +=================================================+
-LLInvFVBridge::LLInvFVBridge(LLInventoryPanel* inventory, const LLUUID& uuid) :
-mUUID(uuid), mInvType(LLInventoryType::IT_NONE)
+LLInvFVBridge::LLInvFVBridge(LLInventoryPanel* inventory,
+ LLFolderView* root,
+ const LLUUID& uuid) :
+ mUUID(uuid),
+ mRoot(root),
+ mInvType(LLInventoryType::IT_NONE)
{
mInventoryPanel = inventory->getHandle();
}
@@ -241,7 +256,7 @@ void LLInvFVBridge::showProperties()
// Disable old properties floater; this is replaced by the sidepanel.
/*
- LLFloaterReg::showInstance("properties", mUUID);
+ LLFloaterReg::showInstance("properties", mUUID);
*/
}
@@ -489,8 +504,8 @@ BOOL LLInvFVBridge::isClipboardPasteableAsLink() const
}
void hide_context_entries(LLMenuGL& menu,
- const menuentry_vec_t &entries_to_show,
- const menuentry_vec_t &disabled_entries)
+ const menuentry_vec_t &entries_to_show,
+ const menuentry_vec_t &disabled_entries)
{
const LLView::child_list_t *list = menu.getChildList();
@@ -864,21 +879,11 @@ void LLInvFVBridge::changeCategoryParent(LLInventoryModel* model,
model->notifyObservers();
}
-
-const std::string safe_inv_type_lookup(LLInventoryType::EType inv_type)
-{
- const std::string rv= LLInventoryType::lookup(inv_type);
- if(rv.empty())
- {
- return std::string("<invalid>");
- }
- return rv;
-}
-
LLInvFVBridge* LLInvFVBridge::createBridge(LLAssetType::EType asset_type,
LLAssetType::EType actual_asset_type,
LLInventoryType::EType inv_type,
LLInventoryPanel* inventory,
+ LLFolderView* root,
const LLUUID& uuid,
U32 flags)
{
@@ -888,111 +893,111 @@ LLInvFVBridge* LLInvFVBridge::createBridge(LLAssetType::EType asset_type,
case LLAssetType::AT_TEXTURE:
if(!(inv_type == LLInventoryType::IT_TEXTURE || inv_type == LLInventoryType::IT_SNAPSHOT))
{
- llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+ llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
}
- new_listener = new LLTextureBridge(inventory, uuid, inv_type);
+ new_listener = new LLTextureBridge(inventory, root, uuid, inv_type);
break;
case LLAssetType::AT_SOUND:
if(!(inv_type == LLInventoryType::IT_SOUND))
{
- llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+ llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
}
- new_listener = new LLSoundBridge(inventory, uuid);
+ new_listener = new LLSoundBridge(inventory, root, uuid);
break;
case LLAssetType::AT_LANDMARK:
if(!(inv_type == LLInventoryType::IT_LANDMARK))
{
- llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+ llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
}
- new_listener = new LLLandmarkBridge(inventory, uuid, flags);
+ new_listener = new LLLandmarkBridge(inventory, root, uuid, flags);
break;
case LLAssetType::AT_CALLINGCARD:
if(!(inv_type == LLInventoryType::IT_CALLINGCARD))
{
- llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+ llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
}
- new_listener = new LLCallingCardBridge(inventory, uuid);
+ new_listener = new LLCallingCardBridge(inventory, root, uuid);
break;
case LLAssetType::AT_SCRIPT:
if(!(inv_type == LLInventoryType::IT_LSL))
{
- llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+ llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
}
- new_listener = new LLScriptBridge(inventory, uuid);
+ new_listener = new LLScriptBridge(inventory, root, uuid);
break;
case LLAssetType::AT_OBJECT:
if(!(inv_type == LLInventoryType::IT_OBJECT || inv_type == LLInventoryType::IT_ATTACHMENT))
{
- llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+ llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
}
- new_listener = new LLObjectBridge(inventory, uuid, inv_type, flags);
+ new_listener = new LLObjectBridge(inventory, root, uuid, inv_type, flags);
break;
case LLAssetType::AT_NOTECARD:
if(!(inv_type == LLInventoryType::IT_NOTECARD))
{
- llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+ llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
}
- new_listener = new LLNotecardBridge(inventory, uuid);
+ new_listener = new LLNotecardBridge(inventory, root, uuid);
break;
case LLAssetType::AT_ANIMATION:
if(!(inv_type == LLInventoryType::IT_ANIMATION))
{
- llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+ llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
}
- new_listener = new LLAnimationBridge(inventory, uuid);
+ new_listener = new LLAnimationBridge(inventory, root, uuid);
break;
case LLAssetType::AT_GESTURE:
if(!(inv_type == LLInventoryType::IT_GESTURE))
{
- llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+ llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
}
- new_listener = new LLGestureBridge(inventory, uuid);
+ new_listener = new LLGestureBridge(inventory, root, uuid);
break;
case LLAssetType::AT_LSL_TEXT:
if(!(inv_type == LLInventoryType::IT_LSL))
{
- llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+ llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
}
- new_listener = new LLLSLTextBridge(inventory, uuid);
+ new_listener = new LLLSLTextBridge(inventory, root, uuid);
break;
case LLAssetType::AT_CLOTHING:
case LLAssetType::AT_BODYPART:
if(!(inv_type == LLInventoryType::IT_WEARABLE))
{
- llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+ llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
}
- new_listener = new LLWearableBridge(inventory, uuid, asset_type, inv_type, (EWearableType)flags);
+ new_listener = new LLWearableBridge(inventory, root, uuid, asset_type, inv_type, (EWearableType)flags);
break;
case LLAssetType::AT_CATEGORY:
if (actual_asset_type == LLAssetType::AT_LINK_FOLDER)
{
// Create a link folder handler instead.
- new_listener = new LLLinkFolderBridge(inventory, uuid);
+ new_listener = new LLLinkFolderBridge(inventory, root, uuid);
break;
}
- new_listener = new LLFolderBridge(inventory, uuid);
+ new_listener = new LLFolderBridge(inventory, root, uuid);
break;
case LLAssetType::AT_LINK:
case LLAssetType::AT_LINK_FOLDER:
// Only should happen for broken links.
- new_listener = new LLLinkItemBridge(inventory, uuid);
+ new_listener = new LLLinkItemBridge(inventory, root, uuid);
break;
case LLAssetType::AT_MESH:
if(!(inv_type == LLInventoryType::IT_MESH))
{
- llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+ llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
}
- new_listener = new LLMeshBridge(inventory, uuid);
+ new_listener = new LLMeshBridge(inventory, root, uuid);
break;
default:
@@ -1042,26 +1047,28 @@ LLInvFVBridge* LLInventoryFVBridgeBuilder::createBridge(LLAssetType::EType asset
LLAssetType::EType actual_asset_type,
LLInventoryType::EType inv_type,
LLInventoryPanel* inventory,
+ LLFolderView* root,
const LLUUID& uuid,
U32 flags /* = 0x00 */) const
{
return LLInvFVBridge::createBridge(asset_type,
- actual_asset_type,
- inv_type,
- inventory,
- uuid,
- flags);
+ actual_asset_type,
+ inv_type,
+ inventory,
+ root,
+ uuid,
+ flags);
}
// +=================================================+
// | LLItemBridge |
// +=================================================+
-void LLItemBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+void LLItemBridge::performAction(LLInventoryModel* model, std::string action)
{
if ("goto" == action)
{
- gotoItem(folder);
+ gotoItem();
}
if ("open" == action)
@@ -1112,7 +1119,7 @@ void LLItemBridge::performAction(LLFolderView* folder, LLInventoryModel* model,
LLInventoryItem* itemp = model->getItem(mUUID);
if (!itemp) return;
- LLFolderViewItem* folder_view_itemp = folder->getItemByID(itemp->getParentUUID());
+ LLFolderViewItem* folder_view_itemp = mRoot->getItemByID(itemp->getParentUUID());
if (!folder_view_itemp) return;
folder_view_itemp->getListener()->pasteFromClipboard();
@@ -1124,7 +1131,7 @@ void LLItemBridge::performAction(LLFolderView* folder, LLInventoryModel* model,
LLInventoryItem* itemp = model->getItem(mUUID);
if (!itemp) return;
- LLFolderViewItem* folder_view_itemp = folder->getItemByID(itemp->getParentUUID());
+ LLFolderViewItem* folder_view_itemp = mRoot->getItemByID(itemp->getParentUUID());
if (!folder_view_itemp) return;
folder_view_itemp->getListener()->pasteLinkFromClipboard();
@@ -1193,7 +1200,7 @@ void LLItemBridge::restoreToWorld()
}
}
-void LLItemBridge::gotoItem(LLFolderView *folder)
+void LLItemBridge::gotoItem()
{
LLInventoryObject *obj = getInventoryObject();
if (obj && obj->getIsLinkType())
@@ -1694,7 +1701,7 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
// Is the destination the trash?
const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
BOOL move_is_into_trash = (mUUID == trash_id)
- || model->isObjectDescendentOf(mUUID, trash_id);
+ || model->isObjectDescendentOf(mUUID, trash_id);
BOOL is_movable = (!LLFolderType::lookupIsProtectedType(inv_cat->getPreferredType()));
const LLUUID current_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);
BOOL move_is_into_current_outfit = (mUUID == current_outfit_id);
@@ -1742,12 +1749,11 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
}
}
-
- accept = is_movable
- && (mUUID != cat_id) // Can't move a folder into itself
- && (mUUID != inv_cat->getParentUUID()) // Avoid moves that would change nothing
- && !(model->isObjectDescendentOf(mUUID, cat_id)); // Avoid circularity
- if(accept && drop)
+ accept = is_movable
+ && (mUUID != cat_id) // Can't move a folder into itself
+ && (mUUID != inv_cat->getParentUUID()) // Avoid moves that would change nothing
+ && !(model->isObjectDescendentOf(mUUID, cat_id)); // Avoid circularity
+ if (accept && drop)
{
// Look for any gestures and deactivate them
if (move_is_into_trash)
@@ -1785,22 +1791,22 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
else
{
#if SUPPORT_ENSEMBLES
- // BAP - should skip if dup.
- if (move_is_into_current_outfit)
- {
- LLAppearanceMgr::instance().addEnsembleLink(inv_cat);
- }
- else
- {
- LLPointer<LLInventoryCallback> cb = NULL;
- link_inventory_item(
- gAgent.getID(),
- inv_cat->getUUID(),
- mUUID,
- inv_cat->getName(),
- LLAssetType::AT_LINK_FOLDER,
- cb);
- }
+ // BAP - should skip if dup.
+ if (move_is_into_current_outfit)
+ {
+ LLAppearanceMgr::instance().addEnsembleLink(inv_cat);
+ }
+ else
+ {
+ LLPointer<LLInventoryCallback> cb = NULL;
+ link_inventory_item(
+ gAgent.getID(),
+ inv_cat->getUUID(),
+ mUUID,
+ inv_cat->getName(),
+ LLAssetType::AT_LINK_FOLDER,
+ cb);
+ }
#endif
}
}
@@ -1817,7 +1823,7 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
}
}
}
- else if(LLToolDragAndDrop::SOURCE_WORLD == source)
+ else if (LLToolDragAndDrop::SOURCE_WORLD == source)
{
// content category has same ID as object itself
LLUUID object_id = inv_cat->getUUID();
@@ -1862,7 +1868,7 @@ BOOL move_inv_category_world_to_agent(const LLUUID& object_id,
// this folder is coming from an object, as there is only one folder in an object, the root,
// we need to collect the entire contents and handle them as a group
- InventoryObjectList inventory_objects;
+ LLInventoryObject::object_list_t inventory_objects;
object->getInventoryContents(inventory_objects);
if (inventory_objects.empty())
@@ -1876,8 +1882,8 @@ BOOL move_inv_category_world_to_agent(const LLUUID& object_id,
// coming from a task. Need to figure out if the person can
// move/copy this item.
- InventoryObjectList::iterator it = inventory_objects.begin();
- InventoryObjectList::iterator end = inventory_objects.end();
+ LLInventoryObject::object_list_t::iterator it = inventory_objects.begin();
+ LLInventoryObject::object_list_t::iterator end = inventory_objects.end();
for ( ; it != end; ++it)
{
// coming from a task. Need to figure out if the person can
@@ -1907,7 +1913,7 @@ BOOL move_inv_category_world_to_agent(const LLUUID& object_id,
if(drop && accept)
{
it = inventory_objects.begin();
- InventoryObjectList::iterator first_it = inventory_objects.begin();
+ LLInventoryObject::object_list_t::iterator first_it = inventory_objects.begin();
LLMoveInv* move_inv = new LLMoveInv;
move_inv->mObjectID = object_id;
move_inv->mCategoryID = category_id;
@@ -1945,7 +1951,7 @@ public:
LLRightClickInventoryFetchObserver(const LLUUID& cat_id, bool copy_items) :
mCatID(cat_id),
mCopyItems(copy_items)
- { };
+ { };
virtual void done()
{
// we've downloaded all the items, so repaint the dialog
@@ -1977,7 +1983,7 @@ void LLRightClickInventoryFetchDescendentsObserver::done()
{
// Avoid passing a NULL-ref as mCompleteFolders.front() down to
// gInventory.collectDescendents()
- if( mCompleteFolders.empty() )
+ if( mComplete.empty() )
{
llwarns << "LLRightClickInventoryFetchDescendentsObserver::done with empty mCompleteFolders" << llendl;
dec_busy_count();
@@ -1991,7 +1997,7 @@ void LLRightClickInventoryFetchDescendentsObserver::done()
// happen.
LLInventoryModel::cat_array_t cat_array;
LLInventoryModel::item_array_t item_array;
- gInventory.collectDescendents(mCompleteFolders.front(),
+ gInventory.collectDescendents(mComplete.front(),
cat_array,
item_array,
LLInventoryModel::EXCLUDE_TRASH);
@@ -2010,8 +2016,8 @@ void LLRightClickInventoryFetchDescendentsObserver::done()
#endif
LLRightClickInventoryFetchObserver* outfit;
- outfit = new LLRightClickInventoryFetchObserver(mCompleteFolders.front(), mCopyItems);
- LLInventoryFetchObserver::item_ref_t ids;
+ outfit = new LLRightClickInventoryFetchObserver(mComplete.front(), mCopyItems);
+ uuid_vec_t ids;
for(S32 i = 0; i < count; ++i)
{
ids.push_back(item_array.get(i)->getUUID());
@@ -2029,19 +2035,19 @@ void LLRightClickInventoryFetchDescendentsObserver::done()
inc_busy_count();
// do the fetch
- outfit->fetchItems(ids);
+ outfit->fetch(ids);
outfit->done(); //Not interested in waiting and this will be right 99% of the time.
//Uncomment the following code for laggy Inventory UI.
/* if(outfit->isEverythingComplete())
{
- // everything is already here - call done.
- outfit->done();
+ // everything is already here - call done.
+ outfit->done();
}
else
{
- // it's all on it's way - add an observer, and the inventory
- // will call done for us when everything is here.
- gInventory.addObserver(outfit);
+ // it's all on it's way - add an observer, and the inventory
+ // will call done for us when everything is here.
+ gInventory.addObserver(outfit);
}*/
}
@@ -2055,7 +2061,8 @@ void LLRightClickInventoryFetchDescendentsObserver::done()
class LLInventoryCopyAndWearObserver : public LLInventoryObserver
{
public:
- LLInventoryCopyAndWearObserver(const LLUUID& cat_id, int count) :mCatID(cat_id), mContentsCount(count), mFolderAdded(FALSE) {}
+ LLInventoryCopyAndWearObserver(const LLUUID& cat_id, int count) :
+ mCatID(cat_id), mContentsCount(count), mFolderAdded(FALSE) {}
virtual ~LLInventoryCopyAndWearObserver() {}
virtual void changed(U32 mask);
@@ -2094,7 +2101,7 @@ void LLInventoryCopyAndWearObserver::changed(U32 mask)
if (NULL == category)
{
llwarns << "gInventory.getCategory(" << mCatID
- << ") was NULL" << llendl;
+ << ") was NULL" << llendl;
}
else
{
@@ -2113,11 +2120,11 @@ void LLInventoryCopyAndWearObserver::changed(U32 mask)
-void LLFolderBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+void LLFolderBridge::performAction(LLInventoryModel* model, std::string action)
{
if ("open" == action)
{
- LLFolderViewFolder *f = dynamic_cast<LLFolderViewFolder *>(folder->getItemByID(mUUID));
+ LLFolderViewFolder *f = dynamic_cast<LLFolderViewFolder *>(mRoot->getItemByID(mUUID));
if (f)
{
f->setOpen(TRUE);
@@ -2473,16 +2480,16 @@ void LLFolderBridge::pasteLinkFromClipboard()
}
else
#endif
- if (LLInventoryItem *item = model->getItem(object_id))
- {
- link_inventory_item(
- gAgent.getID(),
- item->getLinkedUUID(),
- parent_id,
- item->getName(),
- LLAssetType::AT_LINK,
- LLPointer<LLInventoryCallback>(NULL));
- }
+ if (LLInventoryItem *item = model->getItem(object_id))
+ {
+ link_inventory_item(
+ gAgent.getID(),
+ item->getLinkedUUID(),
+ parent_id,
+ item->getName(),
+ LLAssetType::AT_LINK,
+ LLPointer<LLInventoryCallback>(NULL));
+ }
}
}
}
@@ -2507,7 +2514,7 @@ void LLFolderBridge::folderOptionsMenu()
const bool is_system_folder = LLFolderType::lookupIsProtectedType(type);
// BAP change once we're no longer treating regular categories as ensembles.
const bool is_ensemble = (type == LLFolderType::FT_NONE ||
- LLFolderType::lookupIsEnsembleType(type));
+ LLFolderType::lookupIsEnsembleType(type));
// calling card related functionality for folders.
@@ -2637,10 +2644,10 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
const LLUUID lost_and_found_id = model->findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND);
if (lost_and_found_id == mUUID)
- {
+ {
// This is the lost+found folder.
- mItems.push_back(std::string("Empty Lost And Found"));
- }
+ mItems.push_back(std::string("Empty Lost And Found"));
+ }
if(trash_id == mUUID)
{
@@ -2728,7 +2735,7 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
{
folders.push_back(category->getUUID());
}
- fetch->fetchDescendents(folders);
+ fetch->fetch(folders);
inc_busy_count();
if(fetch->isEverythingComplete())
{
@@ -2926,10 +2933,10 @@ void LLFolderBridge::createWearable(const LLUUID &parent_id, EWearableType type)
LLAssetType::EType asset_type = wearable->getAssetType();
LLInventoryType::EType inv_type = LLInventoryType::IT_WEARABLE;
create_inventory_item(gAgent.getID(), gAgent.getSessionID(),
- parent_id, wearable->getTransactionID(), wearable->getName(),
- wearable->getDescription(), asset_type, inv_type, wearable->getType(),
- wearable->getPermissions().getMaskNextOwner(),
- LLPointer<LLInventoryCallback>(NULL));
+ parent_id, wearable->getTransactionID(), wearable->getName(),
+ wearable->getDescription(), asset_type, inv_type, wearable->getType(),
+ wearable->getPermissions().getMaskNextOwner(),
+ LLPointer<LLInventoryCallback>(NULL));
}
void LLFolderBridge::modifyOutfit(BOOL append)
@@ -2953,7 +2960,7 @@ bool move_task_inventory_callback(const LLSD& notification, const LLSD& response
{
if (cat_and_wear && cat_and_wear->mWear)
{
- InventoryObjectList inventory_objects;
+ LLInventoryObject::object_list_t inventory_objects;
object->getInventoryContents(inventory_objects);
int contents_count = inventory_objects.size()-1; //subtract one for containing folder
@@ -2963,8 +2970,8 @@ bool move_task_inventory_callback(const LLSD& notification, const LLSD& response
two_uuids_list_t::iterator move_it;
for (move_it = move_inv->mMoveList.begin();
- move_it != move_inv->mMoveList.end();
- ++move_it)
+ move_it != move_inv->mMoveList.end();
+ ++move_it)
{
object->moveInventory(move_it->first, move_it->second);
}
@@ -3004,11 +3011,11 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
BOOL is_movable = TRUE;
switch( inv_item->getActualType() )
{
- case LLAssetType::AT_CATEGORY:
- is_movable = !LLFolderType::lookupIsProtectedType(((LLInventoryCategory*)inv_item)->getPreferredType());
- break;
- default:
- break;
+ case LLAssetType::AT_CATEGORY:
+ is_movable = !LLFolderType::lookupIsProtectedType(((LLInventoryCategory*)inv_item)->getPreferredType());
+ break;
+ default:
+ break;
}
const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
@@ -3186,7 +3193,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
if(drop)
{
copy_inventory_from_notecard(LLToolDragAndDrop::getInstance()->getObjectID(),
- LLToolDragAndDrop::getInstance()->getSourceID(), inv_item);
+ LLToolDragAndDrop::getInstance()->getSourceID(), inv_item);
}
}
else if(LLToolDragAndDrop::SOURCE_LIBRARY == source)
@@ -3285,7 +3292,7 @@ void LLTextureBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
}
// virtual
-void LLTextureBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+void LLTextureBridge::performAction(LLInventoryModel* model, std::string action)
{
if ("save_as" == action)
{
@@ -3296,7 +3303,7 @@ void LLTextureBridge::performAction(LLFolderView* folder, LLInventoryModel* mode
preview_texture->openToSave();
}
}
- else LLItemBridge::performAction(folder, model, action);
+ else LLItemBridge::performAction(model, action);
}
// +=================================================+
@@ -3321,14 +3328,14 @@ void LLSoundBridge::openItem()
// only open the preview dialog through the contextual right-click menu
// double-click just plays the sound
- LLViewerInventoryItem* item = getItem();
- if(item)
- {
- openSoundPreview((void*)this);
- //send_uuid_sound_trigger(item->getAssetUUID(), 1.0);
- }
-*/
+LLViewerInventoryItem* item = getItem();
+if(item)
+{
+openSoundPreview((void*)this);
+//send_uuid_sound_trigger(item->getAssetUUID(), 1.0);
}
+*/
+ }
void LLSoundBridge::previewItem()
{
@@ -3373,11 +3380,14 @@ void LLSoundBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
// | LLLandmarkBridge |
// +=================================================+
-LLLandmarkBridge::LLLandmarkBridge(LLInventoryPanel* inventory, const LLUUID& uuid, U32 flags/* = 0x00*/) :
-LLItemBridge(inventory, uuid)
+LLLandmarkBridge::LLLandmarkBridge(LLInventoryPanel* inventory,
+ LLFolderView* root,
+ const LLUUID& uuid,
+ U32 flags/* = 0x00*/) :
+ LLItemBridge(inventory, root, uuid)
{
mVisited = FALSE;
- if (flags & LLInventoryItem::II_FLAGS_LANDMARK_VISITED)
+ if (flags & LLInventoryItemFlags::II_FLAGS_LANDMARK_VISITED)
{
mVisited = TRUE;
}
@@ -3435,7 +3445,7 @@ void teleport_via_landmark(const LLUUID& asset_id)
}
// virtual
-void LLLandmarkBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+void LLLandmarkBridge::performAction(LLInventoryModel* model, std::string action)
{
if ("teleport" == action)
{
@@ -3459,7 +3469,7 @@ void LLLandmarkBridge::performAction(LLFolderView* folder, LLInventoryModel* mod
}
else
{
- LLItemBridge::performAction(folder, model, action);
+ LLItemBridge::performAction(model, action);
}
}
@@ -3486,35 +3496,33 @@ void LLLandmarkBridge::openItem()
{
LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
}
-/*
- LLViewerInventoryItem* item = getItem();
- if( item )
- {
- // Opening (double-clicking) a landmark immediately teleports,
- // but warns you the first time.
- // open_landmark(item);
- LLSD payload;
- payload["asset_id"] = item->getAssetUUID();
- LLNotificationsUtil::add("TeleportFromLandmark", LLSD(), payload);
- }
-*/
}
// +=================================================+
// | LLCallingCardObserver |
// +=================================================+
-void LLCallingCardObserver::changed(U32 mask)
+class LLCallingCardObserver : public LLFriendObserver
{
- mBridgep->refreshFolderViewItem();
-}
+public:
+ LLCallingCardObserver(LLCallingCardBridge* bridge) : mBridgep(bridge) {}
+ virtual ~LLCallingCardObserver() { mBridgep = NULL; }
+ virtual void changed(U32 mask)
+ {
+ mBridgep->refreshFolderViewItem();
+ }
+protected:
+ LLCallingCardBridge* mBridgep;
+};
// +=================================================+
// | LLCallingCardBridge |
// +=================================================+
-LLCallingCardBridge::LLCallingCardBridge( LLInventoryPanel* inventory, const LLUUID& uuid ) :
- LLItemBridge(inventory, uuid)
+LLCallingCardBridge::LLCallingCardBridge(LLInventoryPanel* inventory,
+ LLFolderView* root,
+ const LLUUID& uuid ) :
+ LLItemBridge(inventory, root, uuid)
{
mObserver = new LLCallingCardObserver(this);
LLAvatarTracker::instance().addObserver(mObserver);
@@ -3537,7 +3545,7 @@ void LLCallingCardBridge::refreshFolderViewItem()
}
// virtual
-void LLCallingCardBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+void LLCallingCardBridge::performAction(LLInventoryModel* model, std::string action)
{
if ("begin_im" == action)
{
@@ -3563,7 +3571,7 @@ void LLCallingCardBridge::performAction(LLFolderView* folder, LLInventoryModel*
LLAvatarActions::offerTeleport(item->getCreatorUUID());
}
}
- else LLItemBridge::performAction(folder, model, action);
+ else LLItemBridge::performAction(model, action);
}
LLUIImagePtr LLCallingCardBridge::getIcon() const
@@ -3599,11 +3607,11 @@ void LLCallingCardBridge::openItem()
LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
}
/*
- LLViewerInventoryItem* item = getItem();
- if(item && !item->getCreatorUUID().isNull())
- {
- LLAvatarActions::showProfile(item->getCreatorUUID());
- }
+ LLViewerInventoryItem* item = getItem();
+ if(item && !item->getCreatorUUID().isNull())
+ {
+ LLAvatarActions::showProfile(item->getCreatorUUID());
+ }
*/
}
@@ -3626,8 +3634,8 @@ void LLCallingCardBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
LLInventoryItem* item = getItem();
BOOL good_card = (item
- && (LLUUID::null != item->getCreatorUUID())
- && (item->getCreatorUUID() != gAgent.getID()));
+ && (LLUUID::null != item->getCreatorUUID())
+ && (item->getCreatorUUID() != gAgent.getID()));
BOOL user_online = FALSE;
if (item)
{
@@ -3662,16 +3670,16 @@ BOOL LLCallingCardBridge::dragOrDrop(MASK mask, BOOL drop,
// check the type
switch(cargo_type)
{
- case DAD_TEXTURE:
- case DAD_SOUND:
- case DAD_LANDMARK:
- case DAD_SCRIPT:
- case DAD_CLOTHING:
- case DAD_OBJECT:
- case DAD_NOTECARD:
- case DAD_BODYPART:
- case DAD_ANIMATION:
- case DAD_GESTURE:
+ case DAD_TEXTURE:
+ case DAD_SOUND:
+ case DAD_LANDMARK:
+ case DAD_SCRIPT:
+ case DAD_CLOTHING:
+ case DAD_OBJECT:
+ case DAD_NOTECARD:
+ case DAD_BODYPART:
+ case DAD_ANIMATION:
+ case DAD_GESTURE:
case DAD_MESH:
{
LLInventoryItem* inv_item = (LLInventoryItem*)cargo_data;
@@ -3695,7 +3703,7 @@ BOOL LLCallingCardBridge::dragOrDrop(MASK mask, BOOL drop,
}
break;
}
- case DAD_CATEGORY:
+ case DAD_CATEGORY:
{
LLInventoryCategory* inv_cat = (LLInventoryCategory*)cargo_data;
if( gInventory.getCategory( inv_cat->getUUID() ) )
@@ -3717,8 +3725,8 @@ BOOL LLCallingCardBridge::dragOrDrop(MASK mask, BOOL drop,
}
break;
}
- default:
- break;
+ default:
+ break;
}
}
return rv;
@@ -3743,11 +3751,11 @@ void LLNotecardBridge::openItem()
}
/*
- LLViewerInventoryItem* item = getItem();
- if (item)
- {
- LLFloaterReg::showInstance("preview_notecard", LLSD(item->getUUID()), TAKE_FOCUS_YES);
- }
+ LLViewerInventoryItem* item = getItem();
+ if (item)
+ {
+ LLFloaterReg::showInstance("preview_notecard", LLSD(item->getUUID()), TAKE_FOCUS_YES);
+ }
*/
}
@@ -3788,7 +3796,7 @@ std::string LLGestureBridge::getLabelSuffix() const
}
// virtual
-void LLGestureBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+void LLGestureBridge::performAction(LLInventoryModel* model, std::string action)
{
if (isAddAction(action))
{
@@ -3834,7 +3842,7 @@ void LLGestureBridge::performAction(LLFolderView* folder, LLInventoryModel* mode
playGesture(mUUID);
}
}
- else LLItemBridge::performAction(folder, model, action);
+ else LLItemBridge::performAction(model, action);
}
void LLGestureBridge::openItem()
@@ -3846,12 +3854,12 @@ void LLGestureBridge::openItem()
LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
}
/*
- LLViewerInventoryItem* item = getItem();
- if (item)
- {
- LLPreviewGesture* preview = LLPreviewGesture::show(mUUID, LLUUID::null);
- preview->setFocus(TRUE);
- }
+ LLViewerInventoryItem* item = getItem();
+ if (item)
+ {
+ LLPreviewGesture* preview = LLPreviewGesture::show(mUUID, LLUUID::null);
+ preview->setFocus(TRUE);
+ }
*/
}
@@ -3963,7 +3971,7 @@ void LLAnimationBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
}
// virtual
-void LLAnimationBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+void LLAnimationBridge::performAction(LLInventoryModel* model, std::string action)
{
if ((action == "playworld") || (action == "playlocal"))
{
@@ -3982,7 +3990,7 @@ void LLAnimationBridge::performAction(LLFolderView* folder, LLInventoryModel* mo
}
else
{
- LLItemBridge::performAction(folder, model, action);
+ LLItemBridge::performAction(model, action);
}
}
@@ -3995,11 +4003,11 @@ void LLAnimationBridge::openItem()
LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
}
/*
- LLViewerInventoryItem* item = getItem();
- if (item)
- {
- LLFloaterReg::showInstance("preview_anim", LLSD(mUUID), TAKE_FOCUS_YES);
- }
+ LLViewerInventoryItem* item = getItem();
+ if (item)
+ {
+ LLFloaterReg::showInstance("preview_anim", LLSD(mUUID), TAKE_FOCUS_YES);
+ }
*/
}
@@ -4010,12 +4018,17 @@ void LLAnimationBridge::openItem()
// static
LLUUID LLObjectBridge::sContextMenuItemID;
-LLObjectBridge::LLObjectBridge(LLInventoryPanel* inventory, const LLUUID& uuid, LLInventoryType::EType type, U32 flags) :
-LLItemBridge(inventory, uuid), mInvType(type)
+LLObjectBridge::LLObjectBridge(LLInventoryPanel* inventory,
+ LLFolderView* root,
+ const LLUUID& uuid,
+ LLInventoryType::EType type,
+ U32 flags) :
+ LLItemBridge(inventory, root, uuid),
+ mInvType(type)
{
mAttachPt = (flags & 0xff); // low bye of inventory flags
- mIsMultiObject = ( flags & LLInventoryItem::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS ) ? TRUE: FALSE;
+ mIsMultiObject = ( flags & LLInventoryItemFlags::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS ) ? TRUE: FALSE;
}
LLUIImagePtr LLObjectBridge::getIcon() const
@@ -4035,7 +4048,7 @@ LLInventoryObject* LLObjectBridge::getObject() const
}
// virtual
-void LLObjectBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+void LLObjectBridge::performAction(LLInventoryModel* model, std::string action)
{
if (isAddAction(action))
{
@@ -4079,7 +4092,7 @@ void LLObjectBridge::performAction(LLFolderView* folder, LLInventoryModel* model
}
}
}
- else LLItemBridge::performAction(folder, model, action);
+ else LLItemBridge::performAction(model, action);
}
void LLObjectBridge::openItem()
@@ -4097,7 +4110,7 @@ void LLObjectBridge::openItem()
// Disable old properties floater; this is replaced by the sidepanel.
/*
- LLFloaterReg::showInstance("properties", mUUID);
+ LLFloaterReg::showInstance("properties", mUUID);
*/
}
@@ -4348,19 +4361,25 @@ void LLLSLTextBridge::openItem()
{
LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
}
- /*
- LLViewerInventoryItem* item = getItem();
- if (item)
- {
- LLFloaterReg::showInstance("preview_script", LLSD(mUUID), TAKE_FOCUS_YES);
- }
- */
}
// +=================================================+
// | LLWearableBridge |
// +=================================================+
+LLWearableBridge::LLWearableBridge(LLInventoryPanel* inventory,
+ LLFolderView* root,
+ const LLUUID& uuid,
+ LLAssetType::EType asset_type,
+ LLInventoryType::EType inv_type,
+ EWearableType wearable_type) :
+ LLItemBridge(inventory, root, uuid),
+ mAssetType( asset_type ),
+ mInvType(inv_type),
+ mWearableType(wearable_type)
+{
+}
+
// *NOTE: hack to get from avatar inventory to avatar
void wear_inventory_item_on_avatar( LLInventoryItem* item )
{
@@ -4381,10 +4400,10 @@ void wear_add_inventory_item_on_avatar( LLInventoryItem* item )
<< " )" << llendl;
LLWearableList::instance().getAsset(item->getAssetUUID(),
- item->getName(),
- item->getType(),
- LLWearableBridge::onWearAddOnAvatarArrived,
- new LLUUID(item->getUUID()));
+ item->getName(),
+ item->getType(),
+ LLWearableBridge::onWearAddOnAvatarArrived,
+ new LLUUID(item->getUUID()));
}
}
@@ -4544,7 +4563,7 @@ LLUIImagePtr LLWearableBridge::getIcon() const
}
// virtual
-void LLWearableBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+void LLWearableBridge::performAction(LLInventoryModel* model, std::string action)
{
if (isAddAction(action))
{
@@ -4564,7 +4583,7 @@ void LLWearableBridge::performAction(LLFolderView* folder, LLInventoryModel* mod
removeFromAvatar();
return;
}
- else LLItemBridge::performAction(folder, model, action);
+ else LLItemBridge::performAction(model, action);
}
void LLWearableBridge::openItem()
@@ -4575,42 +4594,6 @@ void LLWearableBridge::openItem()
{
LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
}
- /*
- if( isItemInTrash() )
- {
- LLNotificationsUtil::add("CannotWearTrash");
- }
- else if(isAgentInventory())
- {
- if( !get_is_item_worn( mUUID ) )
- {
- wearOnAvatar();
- }
- }
- else
- {
- // must be in the inventory library. copy it to our inventory
- // and put it on right away.
- LLViewerInventoryItem* item = getItem();
- if(item && item->isComplete())
- {
- LLPointer<LLInventoryCallback> cb = new WearOnAvatarCallback();
- copy_inventory_item(
- gAgent.getID(),
- item->getPermissions().getOwner(),
- item->getUUID(),
- LLUUID::null,
- std::string(),
- cb);
- }
- else if(item)
- {
- // *TODO: We should fetch the item details, and then do
- // the operation above.
- LLNotificationsUtil::add("CannotWearInfoNotComplete");
- }
- }
- */
}
void LLWearableBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
@@ -4934,7 +4917,7 @@ void LLWearableBridge::onRemoveFromAvatarArrived(LLWearable* wearable,
delete on_remove_struct;
}
-/* static */
+// static
void LLWearableBridge::removeAllClothesFromAvatar()
{
// Remove COF links.
@@ -4962,7 +4945,7 @@ void LLWearableBridge::removeAllClothesFromAvatar()
LLAgentWearables::userRemoveAllClothes();
}
-/* static */
+// static
void LLWearableBridge::removeItemFromAvatar(LLViewerInventoryItem *item)
{
if (item)
@@ -4986,6 +4969,44 @@ void LLWearableBridge::removeFromAvatar()
// +=================================================+
+// | LLLinkItemBridge |
+// +=================================================+
+// For broken item links
+std::string LLLinkItemBridge::sPrefix("Link: ");
+LLUIImagePtr LLLinkItemBridge::getIcon() const
+{
+ if (LLViewerInventoryItem *item = getItem())
+ {
+ U32 attachment_point = (item->getFlags() & 0xff); // low byte of inventory flags
+ bool is_multi = LLInventoryItemFlags::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS & item->getFlags();
+
+ return get_item_icon(item->getActualType(), item->getInventoryType(), attachment_point, is_multi);
+ }
+ return get_item_icon(LLAssetType::AT_LINK, LLInventoryType::IT_NONE, 0, FALSE);
+}
+void LLLinkItemBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
+{
+ // *TODO: Translate
+ lldebugs << "LLLink::buildContextMenu()" << llendl;
+ menuentry_vec_t items;
+ menuentry_vec_t disabled_items;
+
+ items.push_back(std::string("Find Original"));
+ disabled_items.push_back(std::string("Find Original"));
+
+ if(isItemInTrash())
+ {
+ addTrashContextMenuOptions(items, disabled_items);
+ }
+ else
+ {
+ items.push_back(std::string("Properties"));
+ addDeleteContextMenuOptions(items, disabled_items);
+ }
+ hide_context_entries(menu, items, disabled_items);
+}
+
+// +=================================================+
// | LLMeshBridge |
// +=================================================+
@@ -5042,68 +5063,87 @@ void LLMeshBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
}
-
-LLInvFVBridgeAction* LLInvFVBridgeAction::createAction(LLAssetType::EType asset_type,
- const LLUUID& uuid,LLInventoryModel* model)
+// +=================================================+
+// | LLLinkBridge |
+// +=================================================+
+// For broken folder links.
+std::string LLLinkFolderBridge::sPrefix("Link: ");
+LLUIImagePtr LLLinkFolderBridge::getIcon() const
{
- LLInvFVBridgeAction* action = NULL;
- switch(asset_type)
+ LLFolderType::EType preferred_type = LLFolderType::FT_NONE;
+ if (LLViewerInventoryItem *item = getItem())
{
- case LLAssetType::AT_TEXTURE:
- action = new LLTextureBridgeAction(uuid,model);
- break;
-
- case LLAssetType::AT_SOUND:
- action = new LLSoundBridgeAction(uuid,model);
- break;
-
- case LLAssetType::AT_LANDMARK:
- action = new LLLandmarkBridgeAction(uuid,model);
- break;
-
- case LLAssetType::AT_CALLINGCARD:
- action = new LLCallingCardBridgeAction(uuid,model);
- break;
-
- case LLAssetType::AT_OBJECT:
- action = new LLObjectBridgeAction(uuid,model);
- break;
-
- case LLAssetType::AT_NOTECARD:
- action = new LLNotecardBridgeAction(uuid,model);
- break;
-
- case LLAssetType::AT_ANIMATION:
- action = new LLAnimationBridgeAction(uuid,model);
- break;
-
- case LLAssetType::AT_GESTURE:
- action = new LLGestureBridgeAction(uuid,model);
- break;
-
- case LLAssetType::AT_LSL_TEXT:
- action = new LLLSLTextBridgeAction(uuid,model);
- break;
-
- case LLAssetType::AT_CLOTHING:
- case LLAssetType::AT_BODYPART:
- action = new LLWearableBridgeAction(uuid,model);
-
- break;
-
- case LLAssetType::AT_MESH:
- action = new LLMeshBridgeAction(uuid,model);
- break;
-
+ if (const LLViewerInventoryCategory* cat = item->getLinkedCategory())
+ if(item)
+ {
+ preferred_type = cat->getPreferredType();
+ }
+ }
+ return LLFolderBridge::getIcon(preferred_type);
+}
+void LLLinkFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
+{
+ // *TODO: Translate
+ lldebugs << "LLLink::buildContextMenu()" << llendl;
+ menuentry_vec_t items;
+ menuentry_vec_t disabled_items;
-
- default:
- break;
+ if (isItemInTrash())
+ {
+ addTrashContextMenuOptions(items, disabled_items);
}
- return action;
+ else
+ {
+ items.push_back(std::string("Find Original"));
+ addDeleteContextMenuOptions(items, disabled_items);
+ }
+ hide_context_entries(menu, items, disabled_items);
}
+void LLLinkFolderBridge::performAction(LLInventoryModel* model, std::string action)
+{
+ if ("goto" == action)
+ {
+ gotoItem();
+ return;
+ }
+ LLItemBridge::performAction(model,action);
+}
+void LLLinkFolderBridge::gotoItem()
+{
+ const LLUUID &cat_uuid = getFolderID();
+ if (!cat_uuid.isNull())
+ {
+ if (LLFolderViewItem *base_folder = mRoot->getItemByID(cat_uuid))
+ {
+ if (LLInventoryModel* model = getInventoryModel())
+ {
+ model->fetchDescendentsOf(cat_uuid);
+ }
+ base_folder->setOpen(TRUE);
+ mRoot->setSelectionFromRoot(base_folder,TRUE);
+ mRoot->scrollToShowSelection();
+ }
+ }
+}
+const LLUUID &LLLinkFolderBridge::getFolderID() const
+{
+ if (LLViewerInventoryItem *link_item = getItem())
+ {
+ if (const LLViewerInventoryCategory *cat = link_item->getLinkedCategory())
+ {
+ const LLUUID& cat_uuid = cat->getUUID();
+ return cat_uuid;
+ }
+ }
+ return LLUUID::null;
+}
+
+/********************************************************************************
+ **
+ ** BRIDGE ACTIONS
+ **/
-//static
+// static
void LLInvFVBridgeAction::doAction(LLAssetType::EType asset_type,
const LLUUID& uuid,LLInventoryModel* model)
{
@@ -5115,7 +5155,7 @@ void LLInvFVBridgeAction::doAction(LLAssetType::EType asset_type,
}
}
-//static
+// static
void LLInvFVBridgeAction::doAction(const LLUUID& uuid, LLInventoryModel* model)
{
llassert(model);
@@ -5135,129 +5175,232 @@ void LLInvFVBridgeAction::doAction(const LLUUID& uuid, LLInventoryModel* model)
LLViewerInventoryItem* LLInvFVBridgeAction::getItem() const
{
- if(mModel)
+ if (mModel)
return (LLViewerInventoryItem*)mModel->getItem(mUUID);
return NULL;
}
-//virtual
-void LLTextureBridgeAction::doIt()
+class LLTextureBridgeAction: public LLInvFVBridgeAction
{
- if (getItem())
+ friend class LLInvFVBridgeAction;
+public:
+ virtual void doIt()
{
- LLFloaterReg::showInstance("preview_texture", LLSD(mUUID), TAKE_FOCUS_YES);
+ if (getItem())
+ {
+ LLFloaterReg::showInstance("preview_texture", LLSD(mUUID), TAKE_FOCUS_YES);
+ }
+ LLInvFVBridgeAction::doIt();
}
+ virtual ~LLTextureBridgeAction(){}
+protected:
+ LLTextureBridgeAction(const LLUUID& id,LLInventoryModel* model) : LLInvFVBridgeAction(id,model) {}
+};
- LLInvFVBridgeAction::doIt();
-}
-
-//virtual
-void LLSoundBridgeAction::doIt()
+class LLSoundBridgeAction: public LLInvFVBridgeAction
{
- LLViewerInventoryItem* item = getItem();
- if(item)
+ friend class LLInvFVBridgeAction;
+public:
+ virtual void doIt()
{
- LLFloaterReg::showInstance("preview_sound", LLSD(mUUID), TAKE_FOCUS_YES);
+ LLViewerInventoryItem* item = getItem();
+ if (item)
+ {
+ LLFloaterReg::showInstance("preview_sound", LLSD(mUUID), TAKE_FOCUS_YES);
+ }
+ LLInvFVBridgeAction::doIt();
}
+ virtual ~LLSoundBridgeAction(){}
+protected:
+ LLSoundBridgeAction(const LLUUID& id,LLInventoryModel* model) : LLInvFVBridgeAction(id,model) {}
+};
- LLInvFVBridgeAction::doIt();
-}
-
-
-//virtual
-void LLLandmarkBridgeAction::doIt()
+class LLLandmarkBridgeAction: public LLInvFVBridgeAction
{
- LLViewerInventoryItem* item = getItem();
- if( item )
+ friend class LLInvFVBridgeAction;
+public:
+ virtual void doIt()
{
- // Opening (double-clicking) a landmark immediately teleports,
- // but warns you the first time.
- LLSD payload;
- payload["asset_id"] = item->getAssetUUID();
-
- LLSD args;
- args["LOCATION"] = item->getName();
-
- LLNotificationsUtil::add("TeleportFromLandmark", args, payload);
+ LLViewerInventoryItem* item = getItem();
+ if (item)
+ {
+ // Opening (double-clicking) a landmark immediately teleports,
+ // but warns you the first time.
+ LLSD payload;
+ payload["asset_id"] = item->getAssetUUID();
+
+ LLSD args;
+ args["LOCATION"] = item->getName();
+
+ LLNotificationsUtil::add("TeleportFromLandmark", args, payload);
+ }
+ LLInvFVBridgeAction::doIt();
}
+ virtual ~LLLandmarkBridgeAction(){}
+protected:
+ LLLandmarkBridgeAction(const LLUUID& id,LLInventoryModel* model) : LLInvFVBridgeAction(id,model) {}
+};
- LLInvFVBridgeAction::doIt();
-}
-
-
-//virtual
-void LLCallingCardBridgeAction::doIt()
+class LLCallingCardBridgeAction: public LLInvFVBridgeAction
{
- LLViewerInventoryItem* item = getItem();
- if(item && item->getCreatorUUID().notNull())
+ friend class LLInvFVBridgeAction;
+public:
+ virtual void doIt()
{
- LLAvatarActions::showProfile(item->getCreatorUUID());
+ LLViewerInventoryItem* item = getItem();
+ if (item && item->getCreatorUUID().notNull())
+ {
+ LLAvatarActions::showProfile(item->getCreatorUUID());
+ }
+ LLInvFVBridgeAction::doIt();
}
+ virtual ~LLCallingCardBridgeAction(){}
+protected:
+ LLCallingCardBridgeAction(const LLUUID& id,LLInventoryModel* model) : LLInvFVBridgeAction(id,model) {}
- LLInvFVBridgeAction::doIt();
-}
+};
-//virtual
-void
-LLNotecardBridgeAction::doIt()
+class LLNotecardBridgeAction: public LLInvFVBridgeAction
{
- LLViewerInventoryItem* item = getItem();
- if (item)
+ friend class LLInvFVBridgeAction;
+public:
+ virtual void doIt()
{
- LLFloaterReg::showInstance("preview_notecard", LLSD(item->getUUID()), TAKE_FOCUS_YES);
+ LLViewerInventoryItem* item = getItem();
+ if (item)
+ {
+ LLFloaterReg::showInstance("preview_notecard", LLSD(item->getUUID()), TAKE_FOCUS_YES);
+ }
+ LLInvFVBridgeAction::doIt();
}
+ virtual ~LLNotecardBridgeAction(){}
+protected:
+ LLNotecardBridgeAction(const LLUUID& id,LLInventoryModel* model) : LLInvFVBridgeAction(id,model) {}
+};
- LLInvFVBridgeAction::doIt();
-}
-
-//virtual
-void LLGestureBridgeAction::doIt()
+class LLGestureBridgeAction: public LLInvFVBridgeAction
{
- LLViewerInventoryItem* item = getItem();
- if (item)
+ friend class LLInvFVBridgeAction;
+public:
+ virtual void doIt()
{
- LLPreviewGesture* preview = LLPreviewGesture::show(mUUID, LLUUID::null);
- preview->setFocus(TRUE);
+ LLViewerInventoryItem* item = getItem();
+ if (item)
+ {
+ LLPreviewGesture* preview = LLPreviewGesture::show(mUUID, LLUUID::null);
+ preview->setFocus(TRUE);
+ }
+ LLInvFVBridgeAction::doIt();
}
+ virtual ~LLGestureBridgeAction(){}
+protected:
+ LLGestureBridgeAction(const LLUUID& id,LLInventoryModel* model) : LLInvFVBridgeAction(id,model) {}
+};
- LLInvFVBridgeAction::doIt();
-}
-
-//virtual
-void LLAnimationBridgeAction::doIt()
+class LLAnimationBridgeAction: public LLInvFVBridgeAction
{
- LLViewerInventoryItem* item = getItem();
- if (item)
+ friend class LLInvFVBridgeAction;
+public:
+ virtual void doIt()
{
- LLFloaterReg::showInstance("preview_anim", LLSD(mUUID), TAKE_FOCUS_YES);
+ LLViewerInventoryItem* item = getItem();
+ if (item)
+ {
+ LLFloaterReg::showInstance("preview_anim", LLSD(mUUID), TAKE_FOCUS_YES);
+ }
+ LLInvFVBridgeAction::doIt();
}
+ virtual ~LLAnimationBridgeAction(){}
+protected:
+ LLAnimationBridgeAction(const LLUUID& id,LLInventoryModel* model) : LLInvFVBridgeAction(id,model) {}
+};
- LLInvFVBridgeAction::doIt();
-}
-
-
-//virtual
-void LLObjectBridgeAction::doIt()
+class LLObjectBridgeAction: public LLInvFVBridgeAction
{
- /*
- LLFloaterReg::showInstance("properties", mUUID);
- */
- LLInvFVBridgeAction::doIt();
-}
-
+ friend class LLInvFVBridgeAction;
+public:
+ virtual void doIt()
+ {
+ /*
+ LLFloaterReg::showInstance("properties", mUUID);
+ */
+ LLInvFVBridgeAction::doIt();
+ }
+ virtual ~LLObjectBridgeAction(){}
+protected:
+ LLObjectBridgeAction(const LLUUID& id,LLInventoryModel* model) : LLInvFVBridgeAction(id,model) {}
+};
-//virtual
-void LLLSLTextBridgeAction::doIt()
+class LLLSLTextBridgeAction: public LLInvFVBridgeAction
{
- LLViewerInventoryItem* item = getItem();
- if (item)
+ friend class LLInvFVBridgeAction;
+public:
+ virtual void doIt()
{
- LLFloaterReg::showInstance("preview_script", LLSD(mUUID), TAKE_FOCUS_YES);
+ LLViewerInventoryItem* item = getItem();
+ if (item)
+ {
+ LLFloaterReg::showInstance("preview_script", LLSD(mUUID), TAKE_FOCUS_YES);
+ }
+ LLInvFVBridgeAction::doIt();
}
+ virtual ~LLLSLTextBridgeAction(){}
+protected:
+ LLLSLTextBridgeAction(const LLUUID& id,LLInventoryModel* model) : LLInvFVBridgeAction(id,model) {}
+};
- LLInvFVBridgeAction::doIt();
-}
+class LLWearableBridgeAction: public LLInvFVBridgeAction
+{
+ friend class LLInvFVBridgeAction;
+public:
+ virtual void doIt()
+ {
+ if(isItemInTrash())
+ {
+ LLNotificationsUtil::add("CannotWearTrash");
+ }
+ else if(isAgentInventory())
+ {
+ if(!get_is_item_worn(mUUID))
+ {
+ wearOnAvatar();
+ }
+ }
+ else
+ {
+ // must be in the inventory library. copy it to our inventory
+ // and put it on right away.
+ LLViewerInventoryItem* item = getItem();
+ if(item && item->isComplete())
+ {
+ LLPointer<LLInventoryCallback> cb = new WearOnAvatarCallback();
+ copy_inventory_item(
+ gAgent.getID(),
+ item->getPermissions().getOwner(),
+ item->getUUID(),
+ LLUUID::null,
+ std::string(),
+ cb);
+ }
+ else if(item)
+ {
+ // *TODO: We should fetch the item details, and then do
+ // the operation above.
+ LLNotificationsUtil::add("CannotWearInfoNotComplete");
+ }
+ }
+ LLInvFVBridgeAction::doIt();
+ }
+ virtual ~LLWearableBridgeAction(){}
+protected:
+ LLWearableBridgeAction(const LLUUID& id,LLInventoryModel* model) : LLInvFVBridgeAction(id,model) {}
+ BOOL isItemInTrash() const;
+ // return true if the item is in agent inventory. if false, it
+ // must be lost or in the inventory library.
+ BOOL isAgentInventory() const;
+ void wearOnAvatar();
+};
BOOL LLWearableBridgeAction::isItemInTrash() const
{
@@ -5304,179 +5447,50 @@ void LLWearableBridgeAction::wearOnAvatar()
}
}
-//virtual
-void LLWearableBridgeAction::doIt()
-{
- if(isItemInTrash())
- {
- LLNotificationsUtil::add("CannotWearTrash");
- }
- else if(isAgentInventory())
- {
- if(!get_is_item_worn(mUUID))
- {
- wearOnAvatar();
- }
- }
- else
- {
- // must be in the inventory library. copy it to our inventory
- // and put it on right away.
- LLViewerInventoryItem* item = getItem();
- if(item && item->isComplete())
- {
- LLPointer<LLInventoryCallback> cb = new WearOnAvatarCallback();
- copy_inventory_item(
- gAgent.getID(),
- item->getPermissions().getOwner(),
- item->getUUID(),
- LLUUID::null,
- std::string(),
- cb);
- }
- else if(item)
- {
- // *TODO: We should fetch the item details, and then do
- // the operation above.
- LLNotificationsUtil::add("CannotWearInfoNotComplete");
- }
- }
-
- LLInvFVBridgeAction::doIt();
-}
-
-//virtual
-void LLMeshBridgeAction::doIt()
-{
- LLViewerInventoryItem* item = getItem();
- if(item)
- {
- // do it
- }
-
- LLInvFVBridgeAction::doIt();
-}
-
-// +=================================================+
-// | LLLinkItemBridge |
-// +=================================================+
-// For broken links
-
-std::string LLLinkItemBridge::sPrefix("Link: ");
-
-
-LLUIImagePtr LLLinkItemBridge::getIcon() const
-{
- if (LLViewerInventoryItem *item = getItem())
- {
- U32 attachment_point = (item->getFlags() & 0xff); // low byte of inventory flags
- bool is_multi = LLInventoryItem::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS & item->getFlags();
-
- return get_item_icon(item->getActualType(), item->getInventoryType(), attachment_point, is_multi);
- }
- return get_item_icon(LLAssetType::AT_LINK, LLInventoryType::IT_NONE, 0, FALSE);
-}
-
-void LLLinkItemBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
-{
- // *TODO: Translate
- lldebugs << "LLLink::buildContextMenu()" << llendl;
- menuentry_vec_t items;
- menuentry_vec_t disabled_items;
-
- items.push_back(std::string("Find Original"));
- disabled_items.push_back(std::string("Find Original"));
-
- if(isItemInTrash())
- {
- addTrashContextMenuOptions(items, disabled_items);
- }
- else
- {
- items.push_back(std::string("Properties"));
- addDeleteContextMenuOptions(items, disabled_items);
- }
- hide_context_entries(menu, items, disabled_items);
-}
-
-
-// +=================================================+
-// | LLLinkBridge |
-// +=================================================+
-// For broken links.
-
-std::string LLLinkFolderBridge::sPrefix("Link: ");
-
-
-LLUIImagePtr LLLinkFolderBridge::getIcon() const
-{
- LLFolderType::EType preferred_type = LLFolderType::FT_NONE;
- if (LLViewerInventoryItem *item = getItem())
- {
- if (const LLViewerInventoryCategory* cat = item->getLinkedCategory())
- {
- preferred_type = cat->getPreferredType();
- }
- }
- return LLFolderBridge::getIcon(preferred_type);
-}
-
-void LLLinkFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
-{
- // *TODO: Translate
- lldebugs << "LLLink::buildContextMenu()" << llendl;
- menuentry_vec_t items;
- menuentry_vec_t disabled_items;
-
- if (isItemInTrash())
- {
- addTrashContextMenuOptions(items, disabled_items);
- }
- else
- {
- items.push_back(std::string("Find Original"));
- addDeleteContextMenuOptions(items, disabled_items);
- }
- hide_context_entries(menu, items, disabled_items);
-}
-
-void LLLinkFolderBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
-{
- if ("goto" == action)
- {
- gotoItem(folder);
- return;
- }
- LLItemBridge::performAction(folder,model,action);
-}
-
-void LLLinkFolderBridge::gotoItem(LLFolderView *folder)
+LLInvFVBridgeAction* LLInvFVBridgeAction::createAction(LLAssetType::EType asset_type,
+ const LLUUID& uuid,
+ LLInventoryModel* model)
{
- const LLUUID &cat_uuid = getFolderID();
- if (!cat_uuid.isNull())
+ LLInvFVBridgeAction* action = NULL;
+ switch(asset_type)
{
- if (LLFolderViewItem *base_folder = folder->getItemByID(cat_uuid))
- {
- if (LLInventoryModel* model = getInventoryModel())
- {
- model->fetchDescendentsOf(cat_uuid);
- }
- base_folder->setOpen(TRUE);
- folder->setSelectionFromRoot(base_folder,TRUE);
- folder->scrollToShowSelection();
- }
+ case LLAssetType::AT_TEXTURE:
+ action = new LLTextureBridgeAction(uuid,model);
+ break;
+ case LLAssetType::AT_SOUND:
+ action = new LLSoundBridgeAction(uuid,model);
+ break;
+ case LLAssetType::AT_LANDMARK:
+ action = new LLLandmarkBridgeAction(uuid,model);
+ break;
+ case LLAssetType::AT_CALLINGCARD:
+ action = new LLCallingCardBridgeAction(uuid,model);
+ break;
+ case LLAssetType::AT_OBJECT:
+ action = new LLObjectBridgeAction(uuid,model);
+ break;
+ case LLAssetType::AT_NOTECARD:
+ action = new LLNotecardBridgeAction(uuid,model);
+ break;
+ case LLAssetType::AT_ANIMATION:
+ action = new LLAnimationBridgeAction(uuid,model);
+ break;
+ case LLAssetType::AT_GESTURE:
+ action = new LLGestureBridgeAction(uuid,model);
+ break;
+ case LLAssetType::AT_LSL_TEXT:
+ action = new LLLSLTextBridgeAction(uuid,model);
+ break;
+ case LLAssetType::AT_CLOTHING:
+ case LLAssetType::AT_BODYPART:
+ action = new LLWearableBridgeAction(uuid,model);
+ break;
+ default:
+ break;
}
+ return action;
}
-const LLUUID &LLLinkFolderBridge::getFolderID() const
-{
- if (LLViewerInventoryItem *link_item = getItem())
- {
- if (const LLViewerInventoryCategory *cat = link_item->getLinkedCategory())
- {
- const LLUUID& cat_uuid = cat->getUUID();
- return cat_uuid;
- }
- }
- return LLUUID::null;
-}
+/** Bridge Actions
+ **
+ ********************************************************************************/
diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h
index 318e37f7a1..75b206f3b7 100644
--- a/indra/newview/llinventorybridge.h
+++ b/indra/newview/llinventorybridge.h
@@ -44,80 +44,14 @@
class LLInventoryPanel;
class LLInventoryModel;
class LLMenuGL;
+class LLCallingCardObserver;
+class LLViewerJointAttachment;
-enum EInventoryIcon
-{
- TEXTURE_ICON_NAME,
- SOUND_ICON_NAME,
- CALLINGCARD_ONLINE_ICON_NAME,
- CALLINGCARD_OFFLINE_ICON_NAME,
- LANDMARK_ICON_NAME,
- LANDMARK_VISITED_ICON_NAME,
- SCRIPT_ICON_NAME,
- CLOTHING_ICON_NAME,
- OBJECT_ICON_NAME,
- OBJECT_MULTI_ICON_NAME,
- NOTECARD_ICON_NAME,
- BODYPART_ICON_NAME,
- SNAPSHOT_ICON_NAME,
-
- BODYPART_SHAPE_ICON_NAME,
- BODYPART_SKIN_ICON_NAME,
- BODYPART_HAIR_ICON_NAME,
- BODYPART_EYES_ICON_NAME,
- CLOTHING_SHIRT_ICON_NAME,
- CLOTHING_PANTS_ICON_NAME,
- CLOTHING_SHOES_ICON_NAME,
- CLOTHING_SOCKS_ICON_NAME,
- CLOTHING_JACKET_ICON_NAME,
- CLOTHING_GLOVES_ICON_NAME,
- CLOTHING_UNDERSHIRT_ICON_NAME,
- CLOTHING_UNDERPANTS_ICON_NAME,
- CLOTHING_SKIRT_ICON_NAME,
- CLOTHING_ALPHA_ICON_NAME,
- CLOTHING_TATTOO_ICON_NAME,
-
- ANIMATION_ICON_NAME,
- GESTURE_ICON_NAME,
-
- LINKITEM_ICON_NAME,
- LINKFOLDER_ICON_NAME,
-
- MESH_ICON_NAME,
-
- ICON_NAME_COUNT
-};
-
-extern std::string ICON_NAME[ICON_NAME_COUNT];
-
-typedef std::pair<LLUUID, LLUUID> two_uuids_t;
-typedef std::list<two_uuids_t> two_uuids_list_t;
-typedef std::pair<LLUUID, two_uuids_list_t> uuid_move_list_t;
-
-struct LLMoveInv
-{
- LLUUID mObjectID;
- LLUUID mCategoryID;
- two_uuids_list_t mMoveList;
- void (*mCallback)(S32, void*);
- void* mUserData;
-};
-
-struct LLAttachmentRezAction
-{
- LLUUID mItemID;
- S32 mAttachPt;
-};
typedef std::vector<std::string> menuentry_vec_t;
-const std::string safe_inv_type_lookup(LLInventoryType::EType inv_type);
-void hide_context_entries(LLMenuGL& menu,
- const menuentry_vec_t &entries_to_show,
- const menuentry_vec_t &disabled_entries);
-
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// Class LLInvFVBridge (& its derived classes)
+// Class LLInvFVBridge
//
// Short for Inventory-Folder-View-Bridge. This is an
// implementation class to be able to view inventory items.
@@ -136,6 +70,7 @@ public:
LLAssetType::EType actual_asset_type,
LLInventoryType::EType inv_type,
LLInventoryPanel* inventory,
+ LLFolderView* root,
const LLUUID& uuid,
U32 flags = 0x00);
virtual ~LLInvFVBridge() {}
@@ -177,7 +112,7 @@ public:
virtual void pasteFromClipboard() {}
virtual void pasteLinkFromClipboard() {}
void getClipboardEntries(bool show_asset_id, menuentry_vec_t &items,
- menuentry_vec_t &disabled_items, U32 flags);
+ menuentry_vec_t &disabled_items, U32 flags);
virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
virtual BOOL startDrag(EDragAndDropType* type, LLUUID* id) const;
virtual BOOL dragOrDrop(MASK mask, BOOL drop,
@@ -201,7 +136,7 @@ protected:
menuentry_vec_t &disabled_items);
protected:
- LLInvFVBridge(LLInventoryPanel* inventory, const LLUUID& uuid);
+ LLInvFVBridge(LLInventoryPanel* inventory, LLFolderView* root, const LLUUID& uuid);
LLInventoryObject* getInventoryObject() const;
LLInventoryModel* getInventoryModel() const;
@@ -223,40 +158,89 @@ protected:
void removeBatchNoCheck(LLDynamicArray<LLFolderViewEventListener*>& batch);
protected:
LLHandle<LLPanel> mInventoryPanel;
+ LLFolderView* mRoot;
const LLUUID mUUID; // item id
LLInventoryType::EType mInvType;
void purgeItem(LLInventoryModel *model, const LLUUID &uuid);
};
-/**
- * This class intended to build Folder View Bridge via LLInvFVBridge::createBridge.
- * It can be overridden with another way of creation necessary Inventory-Folder-View-Bridge.
- */
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Class LLInvFVBridge
+//
+// This class intended to build Folder View Bridge via LLInvFVBridge::createBridge.
+// It can be overridden with another way of creation necessary Inventory-Folder-View-Bridge.
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class LLInventoryFVBridgeBuilder
{
public:
- virtual ~LLInventoryFVBridgeBuilder(){}
+ virtual ~LLInventoryFVBridgeBuilder() {}
virtual LLInvFVBridge* createBridge(LLAssetType::EType asset_type,
LLAssetType::EType actual_asset_type,
LLInventoryType::EType inv_type,
LLInventoryPanel* inventory,
+ LLFolderView* root,
const LLUUID& uuid,
U32 flags = 0x00) const;
};
+// Used by LLItemBridge::getIcon
+enum EInventoryIcon
+{
+ TEXTURE_ICON_NAME,
+ SOUND_ICON_NAME,
+ CALLINGCARD_ONLINE_ICON_NAME,
+ CALLINGCARD_OFFLINE_ICON_NAME,
+ LANDMARK_ICON_NAME,
+ LANDMARK_VISITED_ICON_NAME,
+ SCRIPT_ICON_NAME,
+ CLOTHING_ICON_NAME,
+ OBJECT_ICON_NAME,
+ OBJECT_MULTI_ICON_NAME,
+ NOTECARD_ICON_NAME,
+ BODYPART_ICON_NAME,
+ SNAPSHOT_ICON_NAME,
+
+ BODYPART_SHAPE_ICON_NAME,
+ BODYPART_SKIN_ICON_NAME,
+ BODYPART_HAIR_ICON_NAME,
+ BODYPART_EYES_ICON_NAME,
+ CLOTHING_SHIRT_ICON_NAME,
+ CLOTHING_PANTS_ICON_NAME,
+ CLOTHING_SHOES_ICON_NAME,
+ CLOTHING_SOCKS_ICON_NAME,
+ CLOTHING_JACKET_ICON_NAME,
+ CLOTHING_GLOVES_ICON_NAME,
+ CLOTHING_UNDERSHIRT_ICON_NAME,
+ CLOTHING_UNDERPANTS_ICON_NAME,
+ CLOTHING_SKIRT_ICON_NAME,
+ CLOTHING_ALPHA_ICON_NAME,
+ CLOTHING_TATTOO_ICON_NAME,
+
+ ANIMATION_ICON_NAME,
+ GESTURE_ICON_NAME,
+ MESH_ICON_NAME,
+
+ LINKITEM_ICON_NAME,
+ LINKFOLDER_ICON_NAME,
+
+ ICON_NAME_COUNT
+};
+extern std::string ICON_NAME[ICON_NAME_COUNT];
class LLItemBridge : public LLInvFVBridge
{
public:
- LLItemBridge(LLInventoryPanel* inventory, const LLUUID& uuid) :
- LLInvFVBridge(inventory, uuid) {}
+ LLItemBridge(LLInventoryPanel* inventory,
+ LLFolderView* root,
+ const LLUUID& uuid) :
+ LLInvFVBridge(inventory, root, uuid) {}
- virtual void performAction(LLFolderView* folder, LLInventoryModel* model, std::string action);
+ virtual void performAction(LLInventoryModel* model, std::string action);
virtual void selectItem();
virtual void restoreItem();
virtual void restoreToWorld();
- virtual void gotoItem(LLFolderView *folder);
+ virtual void gotoItem();
virtual LLUIImagePtr getIcon() const;
virtual const std::string& getDisplayName() const;
virtual std::string getLabelSuffix() const;
@@ -285,7 +269,6 @@ protected:
mutable std::string mDisplayName;
};
-
class LLFolderBridge : public LLInvFVBridge
{
friend class LLInvFVBridge;
@@ -294,7 +277,7 @@ public:
BOOL drop);
BOOL dragCategoryIntoFolder(LLInventoryCategory* inv_category,
BOOL drop);
- virtual void performAction(LLFolderView* folder, LLInventoryModel* model, std::string action);
+ virtual void performAction(LLInventoryModel* model, std::string action);
virtual void openItem();
virtual void closeItem();
virtual BOOL isItemRenameable() const;
@@ -334,9 +317,10 @@ public:
LLViewerInventoryCategory* getCategory() const;
protected:
- LLFolderBridge(LLInventoryPanel* inventory, const LLUUID& uuid)
- : LLInvFVBridge(inventory, uuid),
-
+ LLFolderBridge(LLInventoryPanel* inventory,
+ LLFolderView* root,
+ const LLUUID& uuid) :
+ LLInvFVBridge(inventory, root, uuid),
mCallingCards(FALSE),
mWearables(FALSE),
mMenu(NULL) {}
@@ -385,11 +369,12 @@ public:
LLUIImagePtr getIcon() const;
protected:
- LLScriptBridge( LLInventoryPanel* inventory, const LLUUID& uuid ) :
- LLItemBridge(inventory, uuid) {}
+ LLScriptBridge(LLInventoryPanel* inventory,
+ LLFolderView* root,
+ const LLUUID& uuid ) :
+ LLItemBridge(inventory, root, uuid) {}
};
-
class LLTextureBridge : public LLItemBridge
{
friend class LLInvFVBridge;
@@ -397,11 +382,16 @@ public:
virtual LLUIImagePtr getIcon() const;
virtual void openItem();
virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
- virtual void performAction(LLFolderView* folder, LLInventoryModel* model, std::string action);
+ virtual void performAction(LLInventoryModel* model, std::string action);
protected:
- LLTextureBridge(LLInventoryPanel* inventory, const LLUUID& uuid, LLInventoryType::EType type) :
- LLItemBridge(inventory, uuid), mInvType(type) {}
+ LLTextureBridge(LLInventoryPanel* inventory,
+ LLFolderView* root,
+ const LLUUID& uuid,
+ LLInventoryType::EType type) :
+ LLItemBridge(inventory, root, uuid),
+ mInvType(type)
+ {}
bool canSaveTexture(void);
LLInventoryType::EType mInvType;
};
@@ -417,39 +407,30 @@ public:
static void openSoundPreview(void*);
protected:
- LLSoundBridge(LLInventoryPanel* inventory, const LLUUID& uuid) :
- LLItemBridge(inventory, uuid) {}
+ LLSoundBridge(LLInventoryPanel* inventory,
+ LLFolderView* root,
+ const LLUUID& uuid) :
+ LLItemBridge(inventory, root, uuid) {}
};
class LLLandmarkBridge : public LLItemBridge
{
friend class LLInvFVBridge;
public:
- virtual void performAction(LLFolderView* folder, LLInventoryModel* model, std::string action);
+ virtual void performAction(LLInventoryModel* model, std::string action);
virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
virtual LLUIImagePtr getIcon() const;
virtual void openItem();
protected:
- LLLandmarkBridge(LLInventoryPanel* inventory, const LLUUID& uuid, U32 flags = 0x00);
-
+ LLLandmarkBridge(LLInventoryPanel* inventory,
+ LLFolderView* root,
+ const LLUUID& uuid,
+ U32 flags = 0x00);
protected:
BOOL mVisited;
};
-class LLCallingCardBridge;
-
-class LLCallingCardObserver : public LLFriendObserver
-{
-public:
- LLCallingCardObserver(LLCallingCardBridge* bridge) : mBridgep(bridge) {}
- virtual ~LLCallingCardObserver() { mBridgep = NULL; }
- virtual void changed(U32 mask);
-
-protected:
- LLCallingCardBridge* mBridgep;
-};
-
class LLCallingCardBridge : public LLItemBridge
{
friend class LLInvFVBridge;
@@ -457,20 +438,18 @@ public:
virtual std::string getLabelSuffix() const;
//virtual const std::string& getDisplayName() const;
virtual LLUIImagePtr getIcon() const;
- virtual void performAction(LLFolderView* folder, LLInventoryModel* model, std::string action);
+ virtual void performAction(LLInventoryModel* model, std::string action);
virtual void openItem();
virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
- //virtual void renameItem(const std::string& new_name);
- //virtual BOOL removeItem();
virtual BOOL dragOrDrop(MASK mask, BOOL drop,
EDragAndDropType cargo_type,
void* cargo_data);
void refreshFolderViewItem();
-
protected:
- LLCallingCardBridge( LLInventoryPanel* inventory, const LLUUID& uuid );
+ LLCallingCardBridge(LLInventoryPanel* inventory,
+ LLFolderView* folder,
+ const LLUUID& uuid );
~LLCallingCardBridge();
-
protected:
LLCallingCardObserver* mObserver;
};
@@ -482,10 +461,11 @@ class LLNotecardBridge : public LLItemBridge
public:
virtual LLUIImagePtr getIcon() const;
virtual void openItem();
-
protected:
- LLNotecardBridge(LLInventoryPanel* inventory, const LLUUID& uuid) :
- LLItemBridge(inventory, uuid) {}
+ LLNotecardBridge(LLInventoryPanel* inventory,
+ LLFolderView* root,
+ const LLUUID& uuid) :
+ LLItemBridge(inventory, root, uuid) {}
};
class LLGestureBridge : public LLItemBridge
@@ -499,7 +479,7 @@ public:
virtual LLFontGL::StyleFlags getLabelStyle() const;
virtual std::string getLabelSuffix() const;
- virtual void performAction(LLFolderView* folder, LLInventoryModel* model, std::string action);
+ virtual void performAction(LLInventoryModel* model, std::string action);
virtual void openItem();
virtual BOOL removeItem();
@@ -508,33 +488,35 @@ public:
static void playGesture(const LLUUID& item_id);
protected:
- LLGestureBridge(LLInventoryPanel* inventory, const LLUUID& uuid)
- : LLItemBridge(inventory, uuid) {}
+ LLGestureBridge(LLInventoryPanel* inventory,
+ LLFolderView* root,
+ const LLUUID& uuid)
+ : LLItemBridge(inventory, root, uuid) {}
};
-
class LLAnimationBridge : public LLItemBridge
{
friend class LLInvFVBridge;
public:
- virtual void performAction(LLFolderView* folder, LLInventoryModel* model, std::string action);
+ virtual void performAction(LLInventoryModel* model, std::string action);
virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
virtual LLUIImagePtr getIcon() const;
virtual void openItem();
protected:
- LLAnimationBridge(LLInventoryPanel* inventory, const LLUUID& uuid) :
- LLItemBridge(inventory, uuid) {}
+ LLAnimationBridge(LLInventoryPanel* inventory,
+ LLFolderView* root,
+ const LLUUID& uuid) :
+ LLItemBridge(inventory, root, uuid) {}
};
-
class LLObjectBridge : public LLItemBridge
{
friend class LLInvFVBridge;
public:
virtual LLUIImagePtr getIcon() const;
- virtual void performAction(LLFolderView* folder, LLInventoryModel* model, std::string action);
+ virtual void performAction(LLInventoryModel* model, std::string action);
virtual void openItem();
virtual LLFontGL::StyleFlags getLabelStyle() const;
virtual std::string getLabelSuffix() const;
@@ -542,10 +524,12 @@ public:
virtual BOOL renameItem(const std::string& new_name);
LLInventoryObject* getObject() const;
-
protected:
- LLObjectBridge(LLInventoryPanel* inventory, const LLUUID& uuid, LLInventoryType::EType type, U32 flags);
-
+ LLObjectBridge(LLInventoryPanel* inventory,
+ LLFolderView* root,
+ const LLUUID& uuid,
+ LLInventoryType::EType type,
+ U32 flags);
protected:
static LLUUID sContextMenuItemID; // Only valid while the context menu is open.
LLInventoryType::EType mInvType;
@@ -553,26 +537,25 @@ protected:
BOOL mIsMultiObject;
};
-
class LLLSLTextBridge : public LLItemBridge
{
friend class LLInvFVBridge;
public:
virtual LLUIImagePtr getIcon() const;
virtual void openItem();
-
protected:
- LLLSLTextBridge( LLInventoryPanel* inventory, const LLUUID& uuid ) :
- LLItemBridge(inventory, uuid) {}
+ LLLSLTextBridge(LLInventoryPanel* inventory,
+ LLFolderView* root,
+ const LLUUID& uuid ) :
+ LLItemBridge(inventory, root, uuid) {}
};
-
class LLWearableBridge : public LLItemBridge
{
friend class LLInvFVBridge;
public:
virtual LLUIImagePtr getIcon() const;
- virtual void performAction(LLFolderView* folder, LLInventoryModel* model, std::string action);
+ virtual void performAction(LLInventoryModel* model, std::string action);
virtual void openItem();
virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
virtual std::string getLabelSuffix() const;
@@ -598,13 +581,12 @@ public:
void removeFromAvatar();
protected:
- LLWearableBridge(LLInventoryPanel* inventory, const LLUUID& uuid, LLAssetType::EType asset_type, LLInventoryType::EType inv_type, EWearableType wearable_type) :
- LLItemBridge(inventory, uuid),
- mAssetType( asset_type ),
- mInvType(inv_type),
- mWearableType(wearable_type)
- {}
-
+ LLWearableBridge(LLInventoryPanel* inventory,
+ LLFolderView* root,
+ const LLUUID& uuid,
+ LLAssetType::EType asset_type,
+ LLInventoryType::EType inv_type,
+ EWearableType wearable_type);
protected:
LLAssetType::EType mAssetType;
LLInventoryType::EType mInvType;
@@ -616,14 +598,13 @@ class LLLinkItemBridge : public LLItemBridge
friend class LLInvFVBridge;
public:
virtual const std::string& getPrefix() { return sPrefix; }
-
virtual LLUIImagePtr getIcon() const;
virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
-
protected:
- LLLinkItemBridge(LLInventoryPanel* inventory, const LLUUID& uuid) :
- LLItemBridge(inventory, uuid) {}
-
+ LLLinkItemBridge(LLInventoryPanel* inventory,
+ LLFolderView* root,
+ const LLUUID& uuid) :
+ LLItemBridge(inventory, root, uuid) {}
protected:
static std::string sPrefix;
};
@@ -633,17 +614,16 @@ class LLLinkFolderBridge : public LLItemBridge
friend class LLInvFVBridge;
public:
virtual const std::string& getPrefix() { return sPrefix; }
-
virtual LLUIImagePtr getIcon() const;
virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
- virtual void performAction(LLFolderView* folder, LLInventoryModel* model, std::string action);
- virtual void gotoItem(LLFolderView *folder);
-
+ virtual void performAction(LLInventoryModel* model, std::string action);
+ virtual void gotoItem();
protected:
- LLLinkFolderBridge(LLInventoryPanel* inventory, const LLUUID& uuid) :
- LLItemBridge(inventory, uuid) {}
+ LLLinkFolderBridge(LLInventoryPanel* inventory,
+ LLFolderView* root,
+ const LLUUID& uuid) :
+ LLItemBridge(inventory, root, uuid) {}
const LLUUID &getFolderID() const;
-
protected:
static std::string sPrefix;
};
@@ -660,15 +640,17 @@ public:
virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
protected:
- LLMeshBridge(LLInventoryPanel* inventory, const LLUUID& uuid) :
- LLItemBridge(inventory, uuid) {}
+ LLMeshBridge(LLInventoryPanel* inventory,
+ LLFolderView* root,
+ const LLUUID& uuid) :
+ LLItemBridge(inventory, root, uuid) {}
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// Class LLInvFVBridgeAction (& its derived classes)
+// Class LLInvFVBridgeAction
//
// This is an implementation class to be able to
// perform action to view inventory items.
@@ -678,154 +660,26 @@ class LLInvFVBridgeAction
{
public:
// This method is a convenience function which creates the correct
- // type of bridge action based on some basic information
+ // type of bridge action based on some basic information.
static LLInvFVBridgeAction* createAction(LLAssetType::EType asset_type,
- const LLUUID& uuid,LLInventoryModel* model);
-
+ const LLUUID& uuid,
+ LLInventoryModel* model);
static void doAction(LLAssetType::EType asset_type,
const LLUUID& uuid, LLInventoryModel* model);
static void doAction(const LLUUID& uuid, LLInventoryModel* model);
- virtual void doIt() { };
- virtual ~LLInvFVBridgeAction(){}//need this because of warning on OSX
+ virtual void doIt() {};
+ virtual ~LLInvFVBridgeAction() {} // need this because of warning on OSX
protected:
- LLInvFVBridgeAction(const LLUUID& id,LLInventoryModel* model):mUUID(id),mModel(model){}
-
+ LLInvFVBridgeAction(const LLUUID& id, LLInventoryModel* model) :
+ mUUID(id), mModel(model) {}
LLViewerInventoryItem* getItem() const;
protected:
- const LLUUID& mUUID; // item id
+ const LLUUID& mUUID; // item id
LLInventoryModel* mModel;
-
-};
-
-
-
-class LLTextureBridgeAction: public LLInvFVBridgeAction
-{
- friend class LLInvFVBridgeAction;
-public:
- virtual void doIt() ;
- virtual ~LLTextureBridgeAction(){}
-protected:
- LLTextureBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){}
-
-};
-
-
-class LLSoundBridgeAction: public LLInvFVBridgeAction
-{
- friend class LLInvFVBridgeAction;
-public:
- virtual void doIt() ;
- virtual ~LLSoundBridgeAction(){}
-protected:
- LLSoundBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){}
-
-};
-
-
-class LLLandmarkBridgeAction: public LLInvFVBridgeAction
-{
- friend class LLInvFVBridgeAction;
-public:
- virtual void doIt() ;
- virtual ~LLLandmarkBridgeAction(){}
-protected:
- LLLandmarkBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){}
-
-};
-
-
-class LLCallingCardBridgeAction: public LLInvFVBridgeAction
-{
- friend class LLInvFVBridgeAction;
-public:
- virtual void doIt() ;
- virtual ~LLCallingCardBridgeAction(){}
-protected:
- LLCallingCardBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){}
-
-};
-
-
-class LLNotecardBridgeAction: public LLInvFVBridgeAction
-{
- friend class LLInvFVBridgeAction;
-public:
- virtual void doIt() ;
- virtual ~LLNotecardBridgeAction(){}
-protected:
- LLNotecardBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){}
-
-};
-
-
-class LLGestureBridgeAction: public LLInvFVBridgeAction
-{
- friend class LLInvFVBridgeAction;
-public:
- virtual void doIt() ;
- virtual ~LLGestureBridgeAction(){}
-protected:
- LLGestureBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){}
-
};
-class LLAnimationBridgeAction: public LLInvFVBridgeAction
-{
- friend class LLInvFVBridgeAction;
-public:
- virtual void doIt() ;
- virtual ~LLAnimationBridgeAction(){}
-protected:
- LLAnimationBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){}
-
-};
-
-
-class LLObjectBridgeAction: public LLInvFVBridgeAction
-{
- friend class LLInvFVBridgeAction;
-public:
- virtual void doIt() ;
- virtual ~LLObjectBridgeAction(){}
-protected:
- LLObjectBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){}
-
-};
-
-
-class LLLSLTextBridgeAction: public LLInvFVBridgeAction
-{
- friend class LLInvFVBridgeAction;
-public:
- virtual void doIt() ;
- virtual ~LLLSLTextBridgeAction(){}
-protected:
- LLLSLTextBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){}
-
-};
-
-
-class LLWearableBridgeAction: public LLInvFVBridgeAction
-{
- friend class LLInvFVBridgeAction;
-public:
- virtual void doIt();
- virtual ~LLWearableBridgeAction(){}
-protected:
- LLWearableBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){}
-
-
- BOOL isItemInTrash() const;
- // return true if the item is in agent inventory. if false, it
- // must be lost or in the inventory library.
- BOOL isAgentInventory() const;
-
- void wearOnAvatar();
-
-};
class LLMeshBridgeAction: public LLInvFVBridgeAction
{
@@ -839,11 +693,10 @@ protected:
};
-
void wear_inventory_item_on_avatar(LLInventoryItem* item);
-class LLViewerJointAttachment;
-void rez_attachment(LLViewerInventoryItem* item, LLViewerJointAttachment* attachment);
+void rez_attachment(LLViewerInventoryItem* item,
+ LLViewerJointAttachment* attachment);
// Move items from an in-world object's "Contents" folder to a specified
// folder in agent inventory.
@@ -853,13 +706,9 @@ BOOL move_inv_category_world_to_agent(const LLUUID& object_id,
void (*callback)(S32, void*) = NULL,
void* user_data = NULL);
-
-
-void teleport_via_landmark(const LLUUID& asset_id);
-
// Utility function to hide all entries except those in the list
void hide_context_entries(LLMenuGL& menu,
- const menuentry_vec_t &entries_to_show,
- const menuentry_vec_t &disabled_entries);
+ const menuentry_vec_t &entries_to_show,
+ const menuentry_vec_t &disabled_entries);
#endif // LL_LLINVENTORYBRIDGE_H
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index 56de7cc771..449b1b5b4d 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -41,6 +41,7 @@
#include "llagentwearables.h"
#include "llcallingcard.h"
#include "llfloaterreg.h"
+#include "llinventorydefines.h"
#include "llsdserialize.h"
#include "llfiltereditor.h"
#include "llspinctrl.h"
@@ -101,30 +102,29 @@ bool LLInventoryCollectFunctor::itemTransferCommonlyAllowed(LLInventoryItem* ite
switch(item->getType())
{
- case LLAssetType::AT_CALLINGCARD:
- // not allowed
- break;
-
- case LLAssetType::AT_OBJECT:
- if (isAgentAvatarValid() && !gAgentAvatarp->isWearingAttachment(item->getUUID()))
- {
- allowed = true;
- }
- break;
-
- case LLAssetType::AT_BODYPART:
- case LLAssetType::AT_CLOTHING:
- if(!gAgentWearables.isWearingItem(item->getUUID()))
- {
+ case LLAssetType::AT_CALLINGCARD:
+ // not allowed
+ break;
+
+ case LLAssetType::AT_OBJECT:
+ if (isAgentAvatarValid() && !gAgentAvatarp->isWearingAttachment(item->getUUID()))
+ {
+ allowed = true;
+ }
+ break;
+
+ case LLAssetType::AT_BODYPART:
+ case LLAssetType::AT_CLOTHING:
+ if(!gAgentWearables.isWearingItem(item->getUUID()))
+ {
+ allowed = true;
+ }
+ break;
+ default:
allowed = true;
- }
- break;
-
- default:
- allowed = true;
- break;
+ break;
}
-
+
return allowed;
}
@@ -409,7 +409,7 @@ void LLOpenFoldersWithSelection::doFolder(LLFolderViewFolder* folder)
static void assign_clothing_bodypart_icon(EInventoryIcon &idx, U32 attachment_point)
{
- const EWearableType wearable_type = EWearableType(LLInventoryItem::II_FLAGS_WEARABLES_MASK & attachment_point);
+ const EWearableType wearable_type = EWearableType(LLInventoryItemFlags::II_FLAGS_WEARABLES_MASK & attachment_point);
switch(wearable_type)
{
case WT_SHAPE:
diff --git a/indra/newview/llinventoryfunctions.h b/indra/newview/llinventoryfunctions.h
index eb33763670..e3cd988e39 100644
--- a/indra/newview/llinventoryfunctions.h
+++ b/indra/newview/llinventoryfunctions.h
@@ -52,7 +52,6 @@
// and override the () operator to return TRUE if you want to collect
// the category or item passed in.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
class LLInventoryCollectFunctor
{
public:
@@ -62,7 +61,6 @@ public:
static bool itemTransferCommonlyAllowed(LLInventoryItem* item);
};
-
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Class LLAssetIDMatches
//
@@ -116,14 +114,12 @@ protected:
LLAssetType::EType mType;
};
-
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Class LLIsNotType
//
// Implementation of a LLInventoryCollectFunctor which returns FALSE if the
// type is the type passed in during construction, otherwise false.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
class LLIsNotType : public LLInventoryCollectFunctor
{
public:
@@ -156,7 +152,6 @@ protected:
// Simple class that collects calling cards that are not null, and not
// the agent. Duplicates are possible.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
class LLBuddyCollector : public LLInventoryCollectFunctor
{
public:
@@ -172,7 +167,6 @@ public:
// Simple class that collects calling cards that are not null, and not
// the agent. Duplicates are discarded.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
class LLUniqueBuddyCollector : public LLInventoryCollectFunctor
{
public:
@@ -202,13 +196,11 @@ protected:
LLUUID mBuddyID;
};
-
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Class LLNameCategoryCollector
//
// Collects categories based on case-insensitive match of prefix
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
class LLNameCategoryCollector : public LLInventoryCollectFunctor
{
public:
@@ -270,7 +262,7 @@ public:
virtual void doItem(LLFolderViewItem* item);
BOOL wasItemSelected() { return mItemSelected; }
protected:
- BOOL mItemSelected;
+ BOOL mItemSelected;
};
class LLOpenFilteredFolders : public LLFolderViewFunctor
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index d1cc0ae936..6452ae82f8 100644
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -1326,7 +1326,7 @@ bool LLInventoryModel::fetchDescendentsOf(const LLUUID& folder_id)
//{
// known_descendents += items->count();
//}
- return cat->fetchDescendents();
+ return cat->fetch();
}
diff --git a/indra/newview/llinventorymodelbackgroundfetch.cpp b/indra/newview/llinventorymodelbackgroundfetch.cpp
index 72e5c0dd75..cfbc2c3e05 100644
--- a/indra/newview/llinventorymodelbackgroundfetch.cpp
+++ b/indra/newview/llinventorymodelbackgroundfetch.cpp
@@ -257,7 +257,7 @@ void LLInventoryModelBackgroundFetch::backgroundFetch()
{
// category exists but has no children yet, fetch the descendants
// for now, just request every time and rely on retry timer to throttle
- if (cat->fetchDescendents())
+ if (cat->fetch())
{
mFetchTimer.reset();
mTimelyFetchPending = TRUE;
diff --git a/indra/newview/llinventoryobserver.cpp b/indra/newview/llinventoryobserver.cpp
index 9913be2e88..83e1bbd5a0 100644
--- a/indra/newview/llinventoryobserver.cpp
+++ b/indra/newview/llinventoryobserver.cpp
@@ -108,6 +108,10 @@ void LLInventoryCompletionObserver::watchItem(const LLUUID& id)
}
}
+LLInventoryFetchObserver::LLInventoryFetchObserver(bool retry_if_missing) :
+ mRetryIfMissing(retry_if_missing)
+{
+}
void LLInventoryFetchObserver::changed(U32 mask)
{
@@ -115,7 +119,7 @@ void LLInventoryFetchObserver::changed(U32 mask)
// appropriate.
if(!mIncomplete.empty())
{
- for(item_ref_t::iterator it = mIncomplete.begin(); it < mIncomplete.end(); )
+ for(uuid_vec_t::iterator it = mIncomplete.begin(); it < mIncomplete.end(); )
{
LLViewerInventoryItem* item = gInventory.getItem(*it);
if(!item)
@@ -219,12 +223,11 @@ void fetch_items_from_llsd(const LLSD& items_llsd)
}
}
-void LLInventoryFetchObserver::fetchItems(
- const LLInventoryFetchObserver::item_ref_t& ids)
+void LLInventoryFetchObserver::fetch(const uuid_vec_t& ids)
{
LLUUID owner_id;
LLSD items_llsd;
- for(item_ref_t::const_iterator it = ids.begin(); it < ids.end(); ++it)
+ for(uuid_vec_t::const_iterator it = ids.begin(); it < ids.end(); ++it)
{
LLViewerInventoryItem* item = gInventory.getItem(*it);
if(item)
@@ -262,30 +265,29 @@ void LLInventoryFetchObserver::fetchItems(
// virtual
void LLInventoryFetchDescendentsObserver::changed(U32 mask)
{
- for(uuid_vec_t::iterator it = mIncompleteFolders.begin(); it < mIncompleteFolders.end();)
+ for(uuid_vec_t::iterator it = mIncomplete.begin(); it < mIncomplete.end();)
{
LLViewerInventoryCategory* cat = gInventory.getCategory(*it);
if(!cat)
{
- it = mIncompleteFolders.erase(it);
+ it = mIncomplete.erase(it);
continue;
}
if(isComplete(cat))
{
- mCompleteFolders.push_back(*it);
- it = mIncompleteFolders.erase(it);
+ mComplete.push_back(*it);
+ it = mIncomplete.erase(it);
continue;
}
++it;
}
- if(mIncompleteFolders.empty())
+ if(mIncomplete.empty())
{
done();
}
}
-void LLInventoryFetchDescendentsObserver::fetchDescendents(
- const uuid_vec_t& ids)
+void LLInventoryFetchDescendentsObserver::fetch(const uuid_vec_t& ids)
{
for(uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); ++it)
{
@@ -293,19 +295,19 @@ void LLInventoryFetchDescendentsObserver::fetchDescendents(
if(!cat) continue;
if(!isComplete(cat))
{
- cat->fetchDescendents(); //blindly fetch it without seeing if anything else is fetching it.
- mIncompleteFolders.push_back(*it); //Add to list of things being downloaded for this observer.
+ cat->fetch(); //blindly fetch it without seeing if anything else is fetching it.
+ mIncomplete.push_back(*it); //Add to list of things being downloaded for this observer.
}
else
{
- mCompleteFolders.push_back(*it);
+ mComplete.push_back(*it);
}
}
}
bool LLInventoryFetchDescendentsObserver::isEverythingComplete() const
{
- return mIncompleteFolders.empty();
+ return mIncomplete.empty();
}
bool LLInventoryFetchDescendentsObserver::isComplete(LLViewerInventoryCategory* cat)
@@ -409,7 +411,7 @@ void LLInventoryFetchComboObserver::fetch(
if(!cat) continue;
if(!gInventory.isCategoryComplete(*fit))
{
- cat->fetchDescendents();
+ cat->fetch();
lldebugs << "fetching folder " << *fit <<llendl;
mIncompleteFolders.push_back(*fit);
}
@@ -475,7 +477,7 @@ void LLInventoryExistenceObserver::changed(U32 mask)
// appropriate.
if(!mMIA.empty())
{
- for(item_ref_t::iterator it = mMIA.begin(); it < mMIA.end(); )
+ for(uuid_vec_t::iterator it = mMIA.begin(); it < mMIA.end(); )
{
LLViewerInventoryItem* item = gInventory.getItem(*it);
if(!item)
diff --git a/indra/newview/llinventoryobserver.h b/indra/newview/llinventoryobserver.h
index e1c8bd3faf..ba70552ebc 100644
--- a/indra/newview/llinventoryobserver.h
+++ b/indra/newview/llinventoryobserver.h
@@ -42,8 +42,8 @@ class LLViewerInventoryCategory;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Class LLInventoryObserver
//
-// This class is designed to be a simple abstract base class which can
-// relay messages when the inventory changes.
+// A simple abstract base class that can relay messages when the inventory
+// changes.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class LLInventoryObserver
@@ -54,17 +54,17 @@ public:
// chaged() to see if the observer is interested in the change.
enum
{
- NONE = 0,
- LABEL = 1, // name changed
- INTERNAL = 2, // internal change (e.g. asset uuid different)
- ADD = 4, // something added
- REMOVE = 8, // something deleted
- STRUCTURE = 16, // structural change (eg item or folder moved)
- CALLING_CARD = 32, // (eg online, grant status, cancel)
- GESTURE = 64,
- REBUILD = 128, // item UI changed (eg item type different)
- SORT = 256, // folder needs to be resorted.
- ALL = 0xffffffff
+ NONE = 0,
+ LABEL = 1, // Name changed
+ INTERNAL = 2, // Internal change (e.g. asset uuid different)
+ ADD = 4, // Something added
+ REMOVE = 8, // Something deleted
+ STRUCTURE = 16, // Structural change (e.g. item or folder moved)
+ CALLING_CARD = 32, // Calling card change (e.g. online, grant status, cancel)
+ GESTURE = 64,
+ REBUILD = 128, // Item UI changed (e.g. item type different)
+ SORT = 256, // Folder needs to be resorted.
+ ALL = 0xffffffff
};
LLInventoryObserver();
virtual ~LLInventoryObserver();
@@ -75,11 +75,10 @@ public:
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Class LLInventoryCompletionObserver
//
-// Class which can be used as a base class for doing something when
-// when all observed items are locally complete. This class implements
-// the changed() method of LLInventoryObserver and declares a new
-// method named done() which is called when all watched items have
-// complete information in the inventory model.
+// Base class for doing something when when all observed items are locally
+// complete. Implements the changed() method of LLInventoryObserver
+// and declares a new method named done() which is called when all watched items
+// have complete information in the inventory model.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class LLInventoryCompletionObserver : public LLInventoryObserver
@@ -109,19 +108,17 @@ protected:
class LLInventoryFetchObserver : public LLInventoryObserver
{
public:
- LLInventoryFetchObserver(bool retry_if_missing = false): mRetryIfMissing(retry_if_missing) {}
+ LLInventoryFetchObserver(bool retry_if_missing = false);
virtual void changed(U32 mask);
- typedef uuid_vec_t item_ref_t;
-
bool isEverythingComplete() const;
- void fetchItems(const item_ref_t& ids);
+ void fetch(const uuid_vec_t& ids);
virtual void done() {};
protected:
bool mRetryIfMissing;
- item_ref_t mComplete;
- item_ref_t mIncomplete;
+ uuid_vec_t mComplete;
+ uuid_vec_t mIncomplete;
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -137,14 +134,14 @@ public:
LLInventoryFetchDescendentsObserver() {}
virtual void changed(U32 mask);
- void fetchDescendents(const uuid_vec_t& ids);
+ void fetch(const uuid_vec_t& ids);
bool isEverythingComplete() const;
virtual void done() = 0;
protected:
bool isComplete(LLViewerInventoryCategory* cat);
- uuid_vec_t mIncompleteFolders;
- uuid_vec_t mCompleteFolders;
+ uuid_vec_t mIncomplete;
+ uuid_vec_t mComplete;
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -192,10 +189,8 @@ public:
protected:
virtual void done() = 0;
-
- typedef uuid_vec_t item_ref_t;
- item_ref_t mExist;
- item_ref_t mMIA;
+ uuid_vec_t mExist;
+ uuid_vec_t mMIA;
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index 83c2d62ee8..c6c2d23a4b 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -80,7 +80,7 @@ protected:
LLInventoryPanel::LLInventoryPanel(const LLInventoryPanel::Params& p) :
LLPanel(p),
mInventoryObserver(NULL),
- mFolders(NULL),
+ mFolderRoot(NULL),
mScroller(NULL),
mSortOrderSetting(p.sort_order_setting),
mInventory(p.inventory),
@@ -124,13 +124,13 @@ BOOL LLInventoryPanel::postBuild()
p.rect = folder_rect;
p.parent_panel = this;
p.tool_tip = p.name;
- mFolders = LLUICtrlFactory::create<LLFolderView>(p);
- mFolders->setAllowMultiSelect(mAllowMultiSelect);
+ mFolderRoot = LLUICtrlFactory::create<LLFolderView>(p);
+ mFolderRoot->setAllowMultiSelect(mAllowMultiSelect);
}
mCommitCallbackRegistrar.popScope();
- mFolders->setCallbackRegistrar(&mCommitCallbackRegistrar);
+ mFolderRoot->setCallbackRegistrar(&mCommitCallbackRegistrar);
// Scroller
{
@@ -144,9 +144,9 @@ BOOL LLInventoryPanel::postBuild()
p.tab_stop(true);
mScroller = LLUICtrlFactory::create<LLScrollContainer>(p);
addChild(mScroller);
- mScroller->addChild(mFolders);
- mFolders->setScrollContainer(mScroller);
- mFolders->addChild(mFolders->mStatusTextBox);
+ mScroller->addChild(mFolderRoot);
+ mFolderRoot->setScrollContainer(mScroller);
+ mFolderRoot->addChild(mFolderRoot->mStatusTextBox);
}
// Set up the callbacks from the inventory we're viewing, and then build everything.
@@ -169,16 +169,16 @@ BOOL LLInventoryPanel::postBuild()
{
setSortOrder(gSavedSettings.getU32(DEFAULT_SORT_ORDER));
}
- mFolders->setSortOrder(getFilter()->getSortOrder());
+ mFolderRoot->setSortOrder(getFilter()->getSortOrder());
return TRUE;
}
LLInventoryPanel::~LLInventoryPanel()
{
- if (mFolders)
+ if (mFolderRoot)
{
- U32 sort_order = mFolders->getSortOrder();
+ U32 sort_order = mFolderRoot->getSortOrder();
if (mSortOrderSetting != INHERIT_SORT_ORDER)
{
gSavedSettings.setU32(mSortOrderSetting, sort_order);
@@ -194,15 +194,15 @@ LLInventoryPanel::~LLInventoryPanel()
void LLInventoryPanel::draw()
{
// Select the desired item (in case it wasn't loaded when the selection was requested)
- mFolders->updateSelection();
+ mFolderRoot->updateSelection();
LLPanel::draw();
}
LLInventoryFilter* LLInventoryPanel::getFilter()
{
- if (mFolders)
+ if (mFolderRoot)
{
- return mFolders->getFilter();
+ return mFolderRoot->getFilter();
}
return NULL;
}
@@ -230,9 +230,9 @@ void LLInventoryPanel::setSortOrder(U32 order)
getFilter()->setSortOrder(order);
if (getFilter()->isModified())
{
- mFolders->setSortOrder(order);
+ mFolderRoot->setSortOrder(order);
// try to keep selection onscreen, even if it wasn't to start with
- mFolders->scrollToShowSelection();
+ mFolderRoot->scrollToShowSelection();
}
}
@@ -277,8 +277,8 @@ void LLInventoryPanel::modelChanged(U32 mask)
{
const LLUUID& item_id = (*items_iter);
const LLInventoryObject* model_item = model->getObject(item_id);
- LLFolderViewItem* view_item = mFolders->getItemByID(item_id);
- LLFolderViewFolder* view_folder = mFolders->getFolderByID(item_id);
+ LLFolderViewItem* view_item = mFolderRoot->getItemByID(item_id);
+ LLFolderViewFolder* view_folder = mFolderRoot->getFolderByID(item_id);
//////////////////////////////
// LABEL Operation
@@ -353,7 +353,7 @@ void LLInventoryPanel::modelChanged(U32 mask)
// Add the UI element for this item.
buildNewViews(item_id);
// Select any newly created object that has the auto rename at top of folder root set.
- if(mFolders->getRoot()->needsAutoRename())
+ if(mFolderRoot->getRoot()->needsAutoRename())
{
setSelection(item_id, FALSE);
}
@@ -368,7 +368,7 @@ void LLInventoryPanel::modelChanged(U32 mask)
// model_item's parent will be NULL.
if (view_item->getRoot() != view_item->getParent())
{
- LLFolderViewFolder* new_parent = (LLFolderViewFolder*)mFolders->getItemByID(model_item->getParentUUID());
+ LLFolderViewFolder* new_parent = (LLFolderViewFolder*)mFolderRoot->getItemByID(model_item->getParentUUID());
// Item has been moved.
if (view_item->getParentFolder() != new_parent)
{
@@ -376,7 +376,7 @@ void LLInventoryPanel::modelChanged(U32 mask)
{
// Item is to be moved and we found its new parent in the panel's directory, so move the item's UI.
view_item->getParentFolder()->extractItem(view_item);
- view_item->addToFolder(new_parent, mFolders);
+ view_item->addToFolder(new_parent, mFolderRoot);
}
else
{
@@ -444,14 +444,14 @@ void LLInventoryPanel::initializeViews()
if (gAgent.isFirstLogin())
{
// Auto open the user's library
- LLFolderViewFolder* lib_folder = mFolders->getFolderByID(gInventory.getLibraryRootFolderID());
+ LLFolderViewFolder* lib_folder = mFolderRoot->getFolderByID(gInventory.getLibraryRootFolderID());
if (lib_folder)
{
lib_folder->setOpen(TRUE);
}
// Auto close the user's my inventory folder
- LLFolderViewFolder* my_inv_folder = mFolders->getFolderByID(gInventory.getRootFolderID());
+ LLFolderViewFolder* my_inv_folder = mFolderRoot->getFolderByID(gInventory.getRootFolderID());
if (my_inv_folder)
{
my_inv_folder->setOpenArrangeRecursively(FALSE, LLFolderViewFolder::RECURSE_DOWN);
@@ -462,7 +462,7 @@ void LLInventoryPanel::initializeViews()
void LLInventoryPanel::rebuildViewsFor(const LLUUID& id)
{
// Destroy the old view for this ID so we can rebuild it.
- LLFolderViewItem* old_view = mFolders->getItemByID(id);
+ LLFolderViewItem* old_view = mFolderRoot->getItemByID(id);
if (old_view && id.notNull())
{
old_view->destroyView();
@@ -479,10 +479,10 @@ void LLInventoryPanel::buildNewViews(const LLUUID& id)
if (objectp)
{
const LLUUID &parent_id = objectp->getParentUUID();
- LLFolderViewFolder* parent_folder = (LLFolderViewFolder*)mFolders->getItemByID(parent_id);
+ LLFolderViewFolder* parent_folder = (LLFolderViewFolder*)mFolderRoot->getItemByID(parent_id);
if (id == mStartFolderID)
{
- parent_folder = mFolders;
+ parent_folder = mFolderRoot;
}
else if ((mStartFolderID != LLUUID::null) && (!gInventory.isObjectDescendentOf(id, mStartFolderID)))
{
@@ -506,19 +506,19 @@ void LLInventoryPanel::buildNewViews(const LLUUID& id)
objectp->getType(),
LLInventoryType::IT_CATEGORY,
this,
+ mFolderRoot,
objectp->getUUID());
-
if (new_listener)
{
LLFolderViewFolder::Params params;
params.name = new_listener->getDisplayName();
params.icon = new_listener->getIcon();
params.icon_open = new_listener->getOpenIcon();
- params.root = mFolders;
+ params.root = mFolderRoot;
params.listener = new_listener;
params.tool_tip = params.name;
LLFolderViewFolder* folderp = LLUICtrlFactory::create<LLFolderViewFolder>(params);
- folderp->setItemSortOrder(mFolders->getSortOrder());
+ folderp->setItemSortOrder(mFolderRoot->getSortOrder());
itemp = folderp;
// Hide the root folder, so we can show the contents of a folder flat
@@ -542,6 +542,7 @@ void LLInventoryPanel::buildNewViews(const LLUUID& id)
item->getActualType(),
item->getInventoryType(),
this,
+ mFolderRoot,
item->getUUID(),
item->getFlags());
@@ -552,7 +553,7 @@ void LLInventoryPanel::buildNewViews(const LLUUID& id)
params.icon = new_listener->getIcon();
params.icon_open = new_listener->getOpenIcon();
params.creation_date = new_listener->getCreationDate();
- params.root = mFolders;
+ params.root = mFolderRoot;
params.listener = new_listener;
params.rect = LLRect (0, 0, 0, 0);
params.tool_tip = params.name;
@@ -562,7 +563,7 @@ void LLInventoryPanel::buildNewViews(const LLUUID& id)
if (itemp)
{
- itemp->addToFolder(parent_folder, mFolders);
+ itemp->addToFolder(parent_folder, mFolderRoot);
// Don't add children of hidden folders unless this is the panel's root folder.
if (itemp->getHidden() && (id != mStartFolderID))
@@ -611,19 +612,19 @@ void LLInventoryPanel::openStartFolderOrMyInventory()
{
if (mStartFolderString != "")
{
- mFolders->openFolder(mStartFolderString);
+ mFolderRoot->openFolder(mStartFolderString);
}
else
{
// Find My Inventory folder and open it up by name
- for (LLView *child = mFolders->getFirstChild(); child; child = mFolders->findNextSibling(child))
+ for (LLView *child = mFolderRoot->getFirstChild(); child; child = mFolderRoot->findNextSibling(child))
{
LLFolderViewFolder *fchild = dynamic_cast<LLFolderViewFolder*>(child);
if (fchild && fchild->getListener() &&
(fchild->getListener()->getUUID() == gInventory.getRootFolderID()))
{
const std::string& child_name = child->getName();
- mFolders->openFolder(child_name);
+ mFolderRoot->openFolder(child_name);
break;
}
}
@@ -632,7 +633,7 @@ void LLInventoryPanel::openStartFolderOrMyInventory()
void LLInventoryPanel::openSelected()
{
- LLFolderViewItem* folder_item = mFolders->getCurSelectedItem();
+ LLFolderViewItem* folder_item = mFolderRoot->getCurSelectedItem();
if(!folder_item) return;
LLInvFVBridge* bridge = (LLInvFVBridge*)folder_item->getListener();
if(!bridge) return;
@@ -668,14 +669,14 @@ BOOL LLInventoryPanel::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
// If folder view is empty the (x, y) point won't be in its rect
// so the handler must be called explicitly.
- if (!mFolders->hasVisibleChildren())
+ if (!mFolderRoot->hasVisibleChildren())
{
- handled = mFolders->handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg);
+ handled = mFolderRoot->handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg);
}
if (handled)
{
- mFolders->setDragAndDropThisFrame();
+ mFolderRoot->setDragAndDropThisFrame();
}
return handled;
@@ -686,20 +687,20 @@ void LLInventoryPanel::onMouseEnter(S32 x, S32 y, MASK mask)
{
LLPanel::onMouseEnter(x, y, mask);
// don't auto-scroll a list when cursor is over Inventory. See EXT-3981.
- mFolders->setEnableScroll(false);
+ mFolderRoot->setEnableScroll(false);
}
// virtual
void LLInventoryPanel::onMouseLeave(S32 x, S32 y, MASK mask)
{
LLPanel::onMouseLeave(x, y, mask);
- mFolders->setEnableScroll(true);
+ mFolderRoot->setEnableScroll(true);
}
void LLInventoryPanel::onFocusLost()
{
// inventory no longer handles cut/copy/paste/delete
- if (LLEditMenuHandler::gEditMenuHandler == mFolders)
+ if (LLEditMenuHandler::gEditMenuHandler == mFolderRoot)
{
LLEditMenuHandler::gEditMenuHandler = NULL;
}
@@ -710,15 +711,15 @@ void LLInventoryPanel::onFocusLost()
void LLInventoryPanel::onFocusReceived()
{
// inventory now handles cut/copy/paste/delete
- LLEditMenuHandler::gEditMenuHandler = mFolders;
+ LLEditMenuHandler::gEditMenuHandler = mFolderRoot;
LLPanel::onFocusReceived();
}
void LLInventoryPanel::openAllFolders()
{
- mFolders->setOpenArrangeRecursively(TRUE, LLFolderViewFolder::RECURSE_DOWN);
- mFolders->arrangeAll();
+ mFolderRoot->setOpenArrangeRecursively(TRUE, LLFolderViewFolder::RECURSE_DOWN);
+ mFolderRoot->arrangeAll();
}
void LLInventoryPanel::setSelection(const LLUUID& obj_id, BOOL take_keyboard_focus)
@@ -729,20 +730,20 @@ void LLInventoryPanel::setSelection(const LLUUID& obj_id, BOOL take_keyboard_foc
{
return;
}
- mFolders->setSelectionByID(obj_id, take_keyboard_focus);
+ mFolderRoot->setSelectionByID(obj_id, take_keyboard_focus);
}
void LLInventoryPanel::setSelectCallback(const LLFolderView::signal_t::slot_type& cb)
{
- if (mFolders)
+ if (mFolderRoot)
{
- mFolders->setSelectCallback(cb);
+ mFolderRoot->setSelectCallback(cb);
}
}
void LLInventoryPanel::clearSelection()
{
- mFolders->clearSelection();
+ mFolderRoot->clearSelection();
}
void LLInventoryPanel::onSelectionChange(const std::deque<LLFolderViewItem*>& items, BOOL user_action)
@@ -761,18 +762,18 @@ void LLInventoryPanel::onSelectionChange(const std::deque<LLFolderViewItem*>& it
void LLInventoryPanel::doToSelected(const LLSD& userdata)
{
- mFolders->doToSelected(&gInventory, userdata);
+ mFolderRoot->doToSelected(&gInventory, userdata);
}
void LLInventoryPanel::doCreate(const LLSD& userdata)
{
- menu_create_inventory_item(mFolders, LLFolderBridge::sSelf, userdata);
+ menu_create_inventory_item(mFolderRoot, LLFolderBridge::sSelf, userdata);
}
bool LLInventoryPanel::beginIMSession()
{
std::set<LLUUID> selected_items;
- mFolders->getSelectionList(selected_items);
+ mFolderRoot->getSelectionList(selected_items);
std::string name;
static int session_num = 1;
@@ -785,7 +786,7 @@ bool LLInventoryPanel::beginIMSession()
{
LLUUID item = *iter;
- LLFolderViewItem* folder_item = mFolders->getItemByID(item);
+ LLFolderViewItem* folder_item = mFolderRoot->getItemByID(item);
if(folder_item)
{
@@ -827,7 +828,7 @@ bool LLInventoryPanel::beginIMSession()
}
else
{
- LLFolderViewItem* folder_item = mFolders->getItemByID(item);
+ LLFolderViewItem* folder_item = mFolderRoot->getItemByID(item);
if(!folder_item) return true;
LLInvFVBridge* listenerp = (LLInvFVBridge*)folder_item->getListener();
@@ -870,7 +871,7 @@ bool LLInventoryPanel::beginIMSession()
bool LLInventoryPanel::attachObject(const LLSD& userdata)
{
std::set<LLUUID> selected_items;
- mFolders->getSelectionList(selected_items);
+ mFolderRoot->getSelectionList(selected_items);
std::string joint_name = userdata.asString();
LLViewerJointAttachment* attachmentp = NULL;
@@ -927,7 +928,7 @@ BOOL LLInventoryPanel::getSinceLogoff()
void LLInventoryPanel::dumpSelectionInformation(void* user_data)
{
LLInventoryPanel* iv = (LLInventoryPanel*)user_data;
- iv->mFolders->dumpSelectionInformation();
+ iv->mFolderRoot->dumpSelectionInformation();
}
BOOL is_inventorysp_active()
diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h
index 928a458b84..160a3d6f23 100644
--- a/indra/newview/llinventorypanel.h
+++ b/indra/newview/llinventorypanel.h
@@ -133,21 +133,21 @@ public:
void clearSelection();
LLInventoryFilter* getFilter();
void setFilterTypes(U64 filter, LLInventoryFilter::EFilterType = LLInventoryFilter::FILTERTYPE_OBJECT);
- U32 getFilterObjectTypes() const { return mFolders->getFilterObjectTypes(); }
+ U32 getFilterObjectTypes() const { return mFolderRoot->getFilterObjectTypes(); }
void setFilterPermMask(PermissionMask filter_perm_mask);
- U32 getFilterPermMask() const { return mFolders->getFilterPermissions(); }
+ U32 getFilterPermMask() const { return mFolderRoot->getFilterPermissions(); }
void setFilterSubString(const std::string& string);
- const std::string getFilterSubString() { return mFolders->getFilterSubString(); }
+ const std::string getFilterSubString() { return mFolderRoot->getFilterSubString(); }
void setSinceLogoff(BOOL sl);
void setHoursAgo(U32 hours);
BOOL getSinceLogoff();
void setShowFolderState(LLInventoryFilter::EFolderShow show);
LLInventoryFilter::EFolderShow getShowFolderState();
- void setAllowMultiSelect(BOOL allow) { mFolders->setAllowMultiSelect(allow); }
+ void setAllowMultiSelect(BOOL allow) { mFolderRoot->setAllowMultiSelect(allow); }
// This method is called when something has changed about the inventory.
void modelChanged(U32 mask);
- LLFolderView* getRootFolder() { return mFolders; }
+ LLFolderView* getRootFolder() { return mFolderRoot; }
LLScrollContainer* getScrollableContainer() { return mScroller; }
void onSelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action);
@@ -162,7 +162,7 @@ public:
static void dumpSelectionInformation(void* user_data);
void openSelected();
- void unSelectAll() { mFolders->setSelection(NULL, FALSE, FALSE); }
+ void unSelectAll() { mFolderRoot->setSelection(NULL, FALSE, FALSE); }
static void onIdle(void* user_data);
@@ -177,7 +177,7 @@ protected:
LLInventoryObserver* mInventoryObserver;
BOOL mAllowMultiSelect;
- LLFolderView* mFolders;
+ LLFolderView* mFolderRoot;
LLScrollContainer* mScroller;
/**
@@ -199,7 +199,7 @@ public:
static const std::string INHERIT_SORT_ORDER;
void setSortOrder(U32 order);
- U32 getSortOrder() const { return mFolders->getSortOrder(); }
+ U32 getSortOrder() const { return mFolderRoot->getSortOrder(); }
private:
std::string mSortOrderSetting;
diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp
index ba50287ebd..4e0be81f62 100644
--- a/indra/newview/lllocationinputctrl.cpp
+++ b/indra/newview/lllocationinputctrl.cpp
@@ -227,7 +227,6 @@ LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p)
params.default_text(LLStringUtil::null);
params.max_length_bytes(p.max_chars);
params.keystroke_callback(boost::bind(&LLComboBox::onTextEntry, this, _1));
- params.handle_edit_keys_directly(true);
params.commit_on_focus_lost(false);
params.follows.flags(FOLLOWS_ALL);
mTextEntry = LLUICtrlFactory::create<LLURLLineEditor>(params);
@@ -391,8 +390,8 @@ LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p)
mAddLandmarkTooltip = LLTrans::getString("LocationCtrlAddLandmarkTooltip");
mEditLandmarkTooltip = LLTrans::getString("LocationCtrlEditLandmarkTooltip");
- getChild<LLView>("Location History")->setToolTip(LLTrans::getString("LocationCtrlComboBtnTooltip"));
- getChild<LLView>("Place Information")->setToolTip(LLTrans::getString("LocationCtrlInfoBtnTooltip"));
+ mButton->setToolTip(LLTrans::getString("LocationCtrlComboBtnTooltip"));
+ mInfoBtn->setToolTip(LLTrans::getString("LocationCtrlInfoBtnTooltip"));
}
LLLocationInputCtrl::~LLLocationInputCtrl()
diff --git a/indra/newview/lllogininstance.cpp b/indra/newview/lllogininstance.cpp
index 24c72c65ce..454fd29fdc 100644
--- a/indra/newview/lllogininstance.cpp
+++ b/indra/newview/lllogininstance.cpp
@@ -352,20 +352,18 @@ void LLLoginInstance::updateApp(bool mandatory, const std::string& auth_msg)
payload["mandatory"] = mandatory;
/*
- We're constructing one of the following 6 strings here:
+ We're constructing one of the following 9 strings here:
"DownloadWindowsMandatory"
"DownloadWindowsReleaseForDownload"
"DownloadWindows"
"DownloadMacMandatory"
"DownloadMacReleaseForDownload"
"DownloadMac"
+ "DownloadLinuxMandatory"
+ "DownloadLinuxReleaseForDownload"
+ "DownloadLinux"
I've called them out explicitly in this comment so that they can be grepped for.
-
- Also, we assume that if we're not Windows we're Mac. If we ever intend to support
- Linux with autoupdate, this should be an explicit #elif LL_DARWIN, but
- we'd rather deliver the wrong message than no message, so until Linux is supported
- we'll leave it alone.
*/
std::string notification_name = "Download";
diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp
index c8d5d782b7..5d72827a7a 100644
--- a/indra/newview/llnearbychat.cpp
+++ b/indra/newview/llnearbychat.cpp
@@ -207,7 +207,7 @@ void LLNearbyChat::addMessage(const LLChat& chat,bool archive,const LLSD &args)
return;
}
- if (gSavedPerAccountSettings.getBOOL("LogChat"))
+ if (gSavedPerAccountSettings.getBOOL("LogNearbyChat"))
{
LLLogChat::saveHistory("chat", chat.mFromName, chat.mFromID, chat.mText);
}
diff --git a/indra/newview/llnotificationtiphandler.cpp b/indra/newview/llnotificationtiphandler.cpp
index 1f1afe293a..afc00bf7ef 100644
--- a/indra/newview/llnotificationtiphandler.cpp
+++ b/indra/newview/llnotificationtiphandler.cpp
@@ -71,8 +71,8 @@ public:
p.notification->getResponseTemplate()));
}
- // set line max count to 2 in case of a very long name
- snapToMessageHeight(getChild<LLTextBox>("message"), 2);
+ // set line max count to 3 in case of a very long name
+ snapToMessageHeight(getChild<LLTextBox>("message"), 3);
}
};
diff --git a/indra/newview/llpanelcontents.cpp b/indra/newview/llpanelcontents.cpp
index 2a7d097f94..f4c0a842e7 100644
--- a/indra/newview/llpanelcontents.cpp
+++ b/indra/newview/llpanelcontents.cpp
@@ -40,6 +40,7 @@
#include "llerror.h"
#include "llfloaterreg.h"
#include "llfontgl.h"
+#include "llinventorydefines.h"
#include "llmaterialtable.h"
#include "llpermissionsflags.h"
#include "llrect.h"
@@ -180,7 +181,7 @@ void LLPanelContents::onClickNewScript(void *userdata)
LLTrans::getString("PanelContentsNewScript"),
desc,
LLSaleInfo::DEFAULT,
- LLViewerInventoryItem::II_FLAGS_NONE,
+ LLInventoryItemFlags::II_FLAGS_NONE,
time_corrected());
object->saveScript(new_item, TRUE, true);
diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
index 805016f089..da74295f9e 100644
--- a/indra/newview/llpaneleditwearable.cpp
+++ b/indra/newview/llpaneleditwearable.cpp
@@ -270,6 +270,8 @@ LLEditWearableDictionary::SubpartEntry::SubpartEntry(ESubpart part,
LLPanelEditWearable::LLPanelEditWearable()
: LLPanel()
+ , mWearablePtr(NULL)
+ , mWearableItem(NULL)
{
}
@@ -338,8 +340,7 @@ BOOL LLPanelEditWearable::isDirty() const
//virtual
void LLPanelEditWearable::draw()
{
- BOOL is_dirty = isDirty();
- mBtnRevert->setEnabled(is_dirty);
+ updateVerbs();
LLPanel::draw();
}
@@ -401,6 +402,9 @@ void LLPanelEditWearable::showWearable(LLWearable* wearable, BOOL show)
return;
}
+ mWearableItem = gInventory.getItem(mWearablePtr->getItemID());
+ llassert(mWearableItem);
+
EWearableType type = wearable->getType();
LLPanel *targetPanel = NULL;
std::string title;
@@ -489,7 +493,7 @@ void LLPanelEditWearable::initializePanel()
updateScrollingPanelUI();
}
-
+ updateVerbs();
}
void LLPanelEditWearable::updateScrollingPanelUI()
@@ -640,18 +644,25 @@ void LLPanelEditWearable::buildParamList(LLScrollingPanelList *panel_list, value
{
LLPanel::Params p;
p.name("LLScrollingPanelParam");
- p.rect(LLRect(0, LLScrollingPanelParam::PARAM_PANEL_HEIGHT, LLScrollingPanelParam::PARAM_PANEL_WIDTH, 0 ));
LLScrollingPanelParam* panel_param = new LLScrollingPanelParam( p, NULL, (*it).second, TRUE, this->getWearable());
height = panel_list->addPanel( panel_param );
}
-
- S32 width = tab->getRect().getWidth();
-
- tab->reshape(width,height + tab->getHeaderHeight()+10,FALSE);
}
}
+void LLPanelEditWearable::updateVerbs()
+{
+ bool can_copy = false;
+ if(mWearableItem)
+ {
+ can_copy = mWearableItem->getPermissions().allowCopyBy(gAgentID);
+ }
+ BOOL is_dirty = isDirty();
+ mBtnRevert->setEnabled(is_dirty);
+ childSetEnabled("save_as_button", is_dirty && can_copy);
+}
+// EOF
diff --git a/indra/newview/llpaneleditwearable.h b/indra/newview/llpaneleditwearable.h
index 4178659617..8b63685177 100644
--- a/indra/newview/llpaneleditwearable.h
+++ b/indra/newview/llpaneleditwearable.h
@@ -41,6 +41,7 @@
class LLWearable;
class LLTextEditor;
class LLTextBox;
+class LLViewerInventoryItem;
class LLViewerVisualParam;
class LLVisualParamHint;
class LLViewerJointMesh;
@@ -73,9 +74,12 @@ private:
LLPanel* getPanel(EWearableType type);
void getSortedParams(value_map_t &sorted_params, const std::string &edit_group);
void buildParamList(LLScrollingPanelList *panel_list, value_map_t &sorted_params, LLAccordionCtrlTab *tab);
+ // update bottom bar buttons ("Save", "Revert", etc)
+ void updateVerbs();
// the pointer to the wearable we're editing. NULL means we're not editing a wearable.
LLWearable *mWearablePtr;
+ LLViewerInventoryItem* mWearableItem;
// these are constant no matter what wearable we're editing
LLButton *mBtnRevert;
diff --git a/indra/newview/llpanelgrouplandmoney.cpp b/indra/newview/llpanelgrouplandmoney.cpp
index f276df8573..9ac3a07041 100644
--- a/indra/newview/llpanelgrouplandmoney.cpp
+++ b/indra/newview/llpanelgrouplandmoney.cpp
@@ -1600,7 +1600,7 @@ void LLPanelGroupLandMoney::setGroupID(const LLUUID& id)
mImplementationp->mMoneySalesTabEHp->setGroupID(mGroupID);
}
- mImplementationp->mBeenActivated = true;
+ mImplementationp->mBeenActivated = false;
activate();
}
diff --git a/indra/newview/llpanelgroupnotices.cpp b/indra/newview/llpanelgroupnotices.cpp
index c2a6828837..e9cde59985 100644
--- a/indra/newview/llpanelgroupnotices.cpp
+++ b/indra/newview/llpanelgroupnotices.cpp
@@ -38,6 +38,7 @@
#include "llinventory.h"
#include "llviewerinventory.h"
+#include "llinventorydefines.h"
#include "llinventoryfunctions.h"
#include "llinventorymodel.h"
#include "llfloaterinventory.h"
@@ -330,7 +331,7 @@ void LLPanelGroupNotices::setItem(LLPointer<LLInventoryItem> inv_item)
mInventoryItem = inv_item;
BOOL item_is_multi = FALSE;
- if ( inv_item->getFlags() & LLInventoryItem::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS )
+ if ( inv_item->getFlags() & LLInventoryItemFlags::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS )
{
item_is_multi = TRUE;
};
diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp
index c7793bbc43..a1cdbdad59 100644
--- a/indra/newview/llpanellandmarks.cpp
+++ b/indra/newview/llpanellandmarks.cpp
@@ -280,6 +280,17 @@ void LLLandmarksPanel::onShowOnMap()
doActionOnCurSelectedLandmark(boost::bind(&LLLandmarksPanel::doShowOnMap, this, _1));
}
+//virtual
+void LLLandmarksPanel::onShowProfile()
+{
+ LLFolderViewItem* cur_item = getCurSelectedItem();
+
+ if(!cur_item)
+ return;
+
+ cur_item->getListener()->performAction(mCurrentSelectedList->getModel(),"about");
+}
+
// virtual
void LLLandmarksPanel::onTeleport()
{
@@ -306,6 +317,7 @@ void LLLandmarksPanel::updateVerbs()
bool landmark_selected = isLandmarkSelected();
mTeleportBtn->setEnabled(landmark_selected && isActionEnabled("teleport"));
mShowOnMapBtn->setEnabled(landmark_selected && isActionEnabled("show_on_map"));
+ mShowProfile->setEnabled(landmark_selected && isActionEnabled("more_info"));
// TODO: mantipov: Uncomment when mShareBtn is supported
// Share button should be enabled when neither a folder nor a landmark is selected
@@ -435,9 +447,9 @@ LLFolderViewItem* LLLandmarksPanel::selectItemInAccordionTab(LLPlacesInventoryPa
if (!inventory_list)
return NULL;
- LLFolderView* folder_view = inventory_list->getRootFolder();
+ LLFolderView* root = inventory_list->getRootFolder();
- LLFolderViewItem* item = folder_view->getItemByID(obj_id);
+ LLFolderViewItem* item = root->getItemByID(obj_id);
if (!item)
return NULL;
@@ -447,7 +459,7 @@ LLFolderViewItem* LLLandmarksPanel::selectItemInAccordionTab(LLPlacesInventoryPa
tab->changeOpenClose(false);
}
- folder_view->setSelection(item, FALSE, take_keyboard_focus);
+ root->setSelection(item, FALSE, take_keyboard_focus);
LLAccordionCtrl* accordion = getChild<LLAccordionCtrl>("landmarks_accordion");
LLRect screen_rc;
@@ -977,13 +989,10 @@ bool LLLandmarksPanel::isActionEnabled(const LLSD& userdata) const
void LLLandmarksPanel::onCustomAction(const LLSD& userdata)
{
- LLFolderViewItem* cur_item = getCurSelectedItem();
- if(!cur_item)
- return;
std::string command_name = userdata.asString();
if("more_info" == command_name)
{
- cur_item->getListener()->performAction(mCurrentSelectedList->getRootFolder(),mCurrentSelectedList->getModel(),"about");
+ onShowProfile();
}
else if ("teleport" == command_name)
{
diff --git a/indra/newview/llpanellandmarks.h b/indra/newview/llpanellandmarks.h
index c9217a4b2f..da5d683cfc 100644
--- a/indra/newview/llpanellandmarks.h
+++ b/indra/newview/llpanellandmarks.h
@@ -57,6 +57,7 @@ public:
/*virtual*/ BOOL postBuild();
/*virtual*/ void onSearchEdit(const std::string& string);
/*virtual*/ void onShowOnMap();
+ /*virtual*/ void onShowProfile();
/*virtual*/ void onTeleport();
/*virtual*/ void updateVerbs();
diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp
index dbc40959d7..8be4c8402c 100644
--- a/indra/newview/llpanelmaininventory.cpp
+++ b/indra/newview/llpanelmaininventory.cpp
@@ -1044,7 +1044,7 @@ void LLPanelMainInventory::onCustomAction(const LLSD& userdata)
{
return;
}
- current_item->getListener()->performAction(getActivePanel()->getRootFolder(), getActivePanel()->getModel(), "goto");
+ current_item->getListener()->performAction(getActivePanel()->getModel(), "goto");
}
if (command_name == "find_links")
@@ -1089,19 +1089,19 @@ BOOL LLPanelMainInventory::isActionEnabled(const LLSD& userdata)
if (command_name == "delete")
{
BOOL can_delete = FALSE;
- LLFolderView *folder = getActivePanel()->getRootFolder();
- if (folder)
+ LLFolderView* root = getActivePanel()->getRootFolder();
+ if (root)
{
can_delete = TRUE;
std::set<LLUUID> selection_set;
- folder->getSelectionList(selection_set);
+ root->getSelectionList(selection_set);
if (selection_set.empty()) return FALSE;
for (std::set<LLUUID>::iterator iter = selection_set.begin();
iter != selection_set.end();
++iter)
{
const LLUUID &item_id = (*iter);
- LLFolderViewItem *item = folder->getItemByID(item_id);
+ LLFolderViewItem *item = root->getItemByID(item_id);
const LLFolderViewEventListener *listener = item->getListener();
llassert(listener);
if (!listener) return FALSE;
diff --git a/indra/newview/llpanelnearbymedia.cpp b/indra/newview/llpanelnearbymedia.cpp
index 4f2d6374ca..93ebae334f 100644
--- a/indra/newview/llpanelnearbymedia.cpp
+++ b/indra/newview/llpanelnearbymedia.cpp
@@ -74,6 +74,7 @@ static const LLUUID PARCEL_AUDIO_LIST_ITEM_UUID = LLUUID("DF4B020D-8A24-4B95-AB5
// LLPanelNearByMedia
//
+
LLPanelNearByMedia::LLPanelNearByMedia()
: mMediaList(NULL),
mEnableAllCtrl(NULL),
@@ -87,6 +88,8 @@ LLPanelNearByMedia::LLPanelNearByMedia()
mParcelAudioAutoStart = gSavedSettings.getBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING) &&
gSavedSettings.getBOOL("MediaTentativeAutoPlay");
+ gSavedSettings.getControl(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING)->getSignal()->connect(boost::bind(&LLPanelNearByMedia::handleMediaAutoPlayChanged, this, _2));
+
mCommitCallbackRegistrar.add("MediaListCtrl.EnableAll", boost::bind(&LLPanelNearByMedia::onClickEnableAll, this));
mCommitCallbackRegistrar.add("MediaListCtrl.DisableAll", boost::bind(&LLPanelNearByMedia::onClickDisableAll, this));
mCommitCallbackRegistrar.add("MediaListCtrl.GoMediaPrefs", boost::bind(&LLPanelNearByMedia::onAdvancedButtonClick, this));
@@ -168,12 +171,19 @@ BOOL LLPanelNearByMedia::postBuild()
mLessRect = getRect();
mLessRect.mBottom = minimized_controls->getRect().mBottom;
- getChild<LLUICtrl>("more_less_btn")->setValue(false);
+ getChild<LLUICtrl>("more_btn")->setVisible(false);
onMoreLess();
return TRUE;
}
+void LLPanelNearByMedia::handleMediaAutoPlayChanged(const LLSD& newvalue)
+{
+ // update mParcelAudioAutoStart if AUTO_PLAY_MEDIA_SETTING changes
+ mParcelAudioAutoStart = gSavedSettings.getBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING) &&
+ gSavedSettings.getBOOL("MediaTentativeAutoPlay");
+}
+
/*virtual*/
void LLPanelNearByMedia::onMouseEnter(S32 x, S32 y, MASK mask)
{
@@ -954,7 +964,7 @@ void LLPanelNearByMedia::onAdvancedButtonClick()
void LLPanelNearByMedia::onMoreLess()
{
- bool is_more = getChild<LLUICtrl>("more_less_btn")->getValue();
+ bool is_more = getChild<LLUICtrl>("more_btn")->getVisible();
mNearbyMediaPanel->setVisible(is_more);
// enable resizing when expanded
@@ -964,6 +974,9 @@ void LLPanelNearByMedia::onMoreLess()
new_rect.translate(getRect().mRight - new_rect.mRight, getRect().mTop - new_rect.mTop);
setShape(new_rect);
+
+ getChild<LLUICtrl>("more_btn")->setVisible(!is_more);
+ getChild<LLUICtrl>("less_btn")->setVisible(is_more);
}
void LLPanelNearByMedia::updateControls()
diff --git a/indra/newview/llpanelnearbymedia.h b/indra/newview/llpanelnearbymedia.h
index af4659365f..7c07867df3 100644
--- a/indra/newview/llpanelnearbymedia.h
+++ b/indra/newview/llpanelnearbymedia.h
@@ -63,6 +63,10 @@ public:
// interaction with our buttons.
bool getParcelAudioAutoStart();
+ // callback for when the auto play media preference changes
+ // to update mParcelAudioAutoStart
+ void handleMediaAutoPlayChanged(const LLSD& newvalue);
+
LLPanelNearByMedia();
virtual ~LLPanelNearByMedia();
diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp
index 95716e0046..47a27c8a85 100644
--- a/indra/newview/llpanelobjectinventory.cpp
+++ b/indra/newview/llpanelobjectinventory.cpp
@@ -50,6 +50,7 @@
#include "llfloaterbuycurrency.h"
#include "llfloaterreg.h"
#include "llinventorybridge.h"
+#include "llinventorydefines.h"
#include "llinventoryfilter.h"
#include "llinventoryfunctions.h"
#include "llpreviewanim.h"
@@ -128,7 +129,7 @@ public:
virtual void pasteFromClipboard();
virtual void pasteLinkFromClipboard();
virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
- virtual void performAction(LLFolderView* folder, LLInventoryModel* model, std::string action);
+ virtual void performAction(LLInventoryModel* model, std::string action);
virtual BOOL isUpToDate() const { return TRUE; }
virtual BOOL hasChildren() const { return FALSE; }
virtual LLInventoryType::EType getInventoryType() const { return LLInventoryType::IT_NONE; }
@@ -344,7 +345,7 @@ time_t LLTaskInvFVBridge::getCreationDate() const
LLUIImagePtr LLTaskInvFVBridge::getIcon() const
{
BOOL item_is_multi = FALSE;
- if ( mFlags & LLInventoryItem::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS )
+ if ( mFlags & LLInventoryItemFlags::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS )
{
item_is_multi = TRUE;
}
@@ -595,7 +596,7 @@ BOOL LLTaskInvFVBridge::dragOrDrop(MASK mask, BOOL drop,
}
// virtual
-void LLTaskInvFVBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+void LLTaskInvFVBridge::performAction(LLInventoryModel* model, std::string action)
{
if (action == "task_buy")
{
@@ -918,7 +919,7 @@ public:
virtual LLUIImagePtr getIcon() const;
virtual void openItem();
- virtual void performAction(LLFolderView* folder, LLInventoryModel* model, std::string action);
+ virtual void performAction(LLInventoryModel* model, std::string action);
virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
static void openSoundPreview(void* data);
};
@@ -955,7 +956,7 @@ void LLTaskSoundBridge::openSoundPreview(void* data)
}
// virtual
-void LLTaskSoundBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+void LLTaskSoundBridge::performAction(LLInventoryModel* model, std::string action)
{
if (action == "task_play")
{
@@ -965,7 +966,7 @@ void LLTaskSoundBridge::performAction(LLFolderView* folder, LLInventoryModel* mo
send_sound_trigger(item->getAssetUUID(), 1.0);
}
}
- LLTaskInvFVBridge::performAction(folder, model, action);
+ LLTaskInvFVBridge::performAction(model, action);
}
void LLTaskSoundBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
@@ -1209,7 +1210,7 @@ LLTaskObjectBridge::LLTaskObjectBridge(
LLUIImagePtr LLTaskObjectBridge::getIcon() const
{
BOOL item_is_multi = FALSE;
- if ( mFlags & LLInventoryItem::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS )
+ if ( mFlags & LLInventoryItemFlags::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS )
{
item_is_multi = TRUE;
}
@@ -1418,7 +1419,7 @@ public:
virtual LLUIImagePtr getIcon() const;
virtual void openItem();
- virtual void performAction(LLFolderView* folder, LLInventoryModel* model, std::string action);
+ virtual void performAction(LLInventoryModel* model, std::string action);
virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
};
@@ -1442,7 +1443,7 @@ void LLTaskMeshBridge::openItem()
// virtual
-void LLTaskMeshBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+void LLTaskMeshBridge::performAction(LLInventoryModel* model, std::string action)
{
if (action == "mesh action")
{
@@ -1452,7 +1453,7 @@ void LLTaskMeshBridge::performAction(LLFolderView* folder, LLInventoryModel* mod
// do action
}
}
- LLTaskInvFVBridge::performAction(folder, model, action);
+ LLTaskInvFVBridge::performAction(model, action);
}
void LLTaskMeshBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
@@ -1732,7 +1733,7 @@ void LLPanelObjectInventory::reset()
}
void LLPanelObjectInventory::inventoryChanged(LLViewerObject* object,
- InventoryObjectList* inventory,
+ LLInventoryObject::object_list_t* inventory,
S32 serial_num,
void* data)
{
@@ -1749,7 +1750,7 @@ void LLPanelObjectInventory::inventoryChanged(LLViewerObject* object,
// refresh any properties floaters that are hanging around.
if(inventory)
{
- for (InventoryObjectList::const_iterator iter = inventory->begin();
+ for (LLInventoryObject::object_list_t::const_iterator iter = inventory->begin();
iter != inventory->end(); )
{
LLInventoryObject* item = *iter++;
@@ -1782,7 +1783,7 @@ void LLPanelObjectInventory::updateInventory()
if (objectp)
{
LLInventoryObject* inventory_root = objectp->getInventoryRoot();
- InventoryObjectList contents;
+ LLInventoryObject::object_list_t contents;
objectp->getInventoryContents(contents);
if (inventory_root)
{
@@ -1836,7 +1837,7 @@ void LLPanelObjectInventory::updateInventory()
// leads to an N^2 based on the category count. This could be greatly
// speeded with an efficient multimap implementation, but we don't
// have that in our current arsenal.
-void LLPanelObjectInventory::createFolderViews(LLInventoryObject* inventory_root, InventoryObjectList& contents)
+void LLPanelObjectInventory::createFolderViews(LLInventoryObject* inventory_root, LLInventoryObject::object_list_t& contents)
{
if (!inventory_root)
{
@@ -1865,7 +1866,7 @@ void LLPanelObjectInventory::createFolderViews(LLInventoryObject* inventory_root
typedef std::pair<LLInventoryObject*, LLFolderViewFolder*> obj_folder_pair;
-void LLPanelObjectInventory::createViewsForCategory(InventoryObjectList* inventory,
+void LLPanelObjectInventory::createViewsForCategory(LLInventoryObject::object_list_t* inventory,
LLInventoryObject* parent,
LLFolderViewFolder* folder)
{
@@ -1874,8 +1875,8 @@ void LLPanelObjectInventory::createViewsForCategory(InventoryObjectList* invento
LLTaskInvFVBridge* bridge;
LLFolderViewItem* view;
- InventoryObjectList::iterator it = inventory->begin();
- InventoryObjectList::iterator end = inventory->end();
+ LLInventoryObject::object_list_t::iterator it = inventory->begin();
+ LLInventoryObject::object_list_t::iterator end = inventory->end();
for( ; it != end; ++it)
{
LLInventoryObject* obj = *it;
diff --git a/indra/newview/llpanelobjectinventory.h b/indra/newview/llpanelobjectinventory.h
index bc339ece35..d015929841 100644
--- a/indra/newview/llpanelobjectinventory.h
+++ b/indra/newview/llpanelobjectinventory.h
@@ -82,12 +82,12 @@ public:
protected:
void reset();
/*virtual*/ void inventoryChanged(LLViewerObject* object,
- InventoryObjectList* inventory,
+ LLInventoryObject::object_list_t* inventory,
S32 serial_num,
void* user_data);
void updateInventory();
- void createFolderViews(LLInventoryObject* inventory_root, InventoryObjectList& contents);
- void createViewsForCategory(InventoryObjectList* inventory,
+ void createFolderViews(LLInventoryObject* inventory_root, LLInventoryObject::object_list_t& contents);
+ void createViewsForCategory(LLInventoryObject::object_list_t* inventory,
LLInventoryObject* parent,
LLFolderViewFolder* folder);
void clearContents();
diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp
index ba22adc01c..cf04ab378f 100644
--- a/indra/newview/llpaneloutfitedit.cpp
+++ b/indra/newview/llpaneloutfitedit.cpp
@@ -113,9 +113,9 @@ private:
LLPanelOutfitEdit::LLPanelOutfitEdit()
-: LLPanel(), mLookID(), mFetchLook(NULL), mSearchFilter(NULL),
+: LLPanel(), mCurrentOutfitID(), mFetchLook(NULL), mSearchFilter(NULL),
mLookContents(NULL), mInventoryItemsPanel(NULL), mAddToLookBtn(NULL),
-mRemoveFromLookBtn(NULL), mLookObserver(NULL), mNumItemsInLook(0)
+mRemoveFromLookBtn(NULL), mLookObserver(NULL)
{
mSavedFolderState = new LLSaveFolderState();
mSavedFolderState->setApply(FALSE);
@@ -157,7 +157,7 @@ BOOL LLPanelOutfitEdit::postBuild()
{
// gInventory.isInventoryUsable() no longer needs to be tested per Richard's fix for race conditions between inventory and panels
- mLookName = getChild<LLTextBox>("curr_look_name");
+ mCurrentOutfitName = getChild<LLTextBox>("curr_outfit_name");
childSetCommitCallback("add_btn", boost::bind(&LLPanelOutfitEdit::showAddWearablesPanel, this), NULL);
@@ -206,7 +206,7 @@ BOOL LLPanelOutfitEdit::postBuild()
mLookContents = getChild<LLScrollListCtrl>("look_items_list");
mLookContents->sortByColumn("look_item_sort", TRUE);
mLookContents->setCommitCallback(boost::bind(&LLPanelOutfitEdit::onLookItemSelectionChange, this));
-
+
/*
LLButton::Params remove_params;
remove_params.name("remove_from_look");
@@ -220,12 +220,12 @@ BOOL LLPanelOutfitEdit::postBuild()
//childSetAction("remove_from_look_btn", boost::bind(&LLPanelOutfitEdit::onRemoveFromLookClicked, this), this);
mRemoveFromLookBtn->setCommitCallback(boost::bind(&LLPanelOutfitEdit::onRemoveFromLookClicked, this));
//getChild<LLPanel>("look_info_group_bar")->addChild(mRemoveFromLookBtn); remove_item_btn
-
+
mEditWearableBtn = getChild<LLButton>("edit_wearable_btn");
mEditWearableBtn->setEnabled(FALSE);
mEditWearableBtn->setVisible(FALSE);
mEditWearableBtn->setCommitCallback(boost::bind(&LLPanelOutfitEdit::onEditWearableClicked, this));
-
+
childSetAction("remove_item_btn", boost::bind(&LLPanelOutfitEdit::onRemoveFromLookClicked, this), this);
return TRUE;
@@ -302,7 +302,7 @@ void LLPanelOutfitEdit::onAddToLookClicked(void)
{
LLFolderViewItem* curr_item = mInventoryItemsPanel->getRootFolder()->getCurSelectedItem();
LLFolderViewEventListener* listenerp = curr_item->getListener();
- link_inventory_item(gAgent.getID(), listenerp->getUUID(), mLookID, listenerp->getName(),
+ link_inventory_item(gAgent.getID(), listenerp->getUUID(), mCurrentOutfitID, listenerp->getName(),
LLAssetType::AT_LINK, LLPointer<LLInventoryCallback>(NULL));
updateLookInfo();
}
@@ -367,19 +367,32 @@ void LLPanelOutfitEdit::onUpClicked(void)
void LLPanelOutfitEdit::onEditWearableClicked(void)
{
LLUUID id_to_edit = mLookContents->getSelectionInterface()->getCurrentID();
-
LLViewerInventoryItem * item_to_edit = gInventory.getItem(id_to_edit);
if (item_to_edit)
{
// returns null if not a wearable (attachment, etc).
LLWearable* wearable_to_edit = gAgentWearables.getWearableFromAssetID(item_to_edit->getAssetUUID());
- if (!wearable_to_edit || !wearable_to_edit->getPermissions().allowModifyBy(gAgent.getID()) )
- {
- LLSidepanelAppearance::editWearable(wearable_to_edit, getParent());
- if (mEditWearableBtn->getVisible())
+ if(wearable_to_edit)
+ {
+ bool can_modify = false;
+ bool is_complete = item_to_edit->isComplete();
+ // if item_to_edit is a link, its properties are not appropriate,
+ // lets get original item with actual properties
+ LLViewerInventoryItem* original_item = gInventory.getItem(wearable_to_edit->getItemID());
+ if(original_item)
{
- mEditWearableBtn->setVisible(FALSE);
+ can_modify = original_item->getPermissions().allowModifyBy(gAgentID);
+ is_complete = original_item->isComplete();
+ }
+
+ if (can_modify && is_complete)
+ {
+ LLSidepanelAppearance::editWearable(wearable_to_edit, getParent());
+ if (mEditWearableBtn->getVisible())
+ {
+ mEditWearableBtn->setVisible(FALSE);
+ }
}
}
}
@@ -413,7 +426,11 @@ void LLPanelOutfitEdit::onLookItemSelectionChange(void)
{
S32 left_offset = -4;
S32 top_offset = -10;
- LLRect rect = mLookContents->getLastSelectedItem()->getRect();
+ LLScrollListItem* item = mLookContents->getLastSelectedItem();
+ if (!item)
+ return;
+
+ LLRect rect = item->getRect();
LLRect btn_rect(
left_offset + rect.mRight - 50,
top_offset + rect.mTop,
@@ -441,7 +458,7 @@ void LLPanelOutfitEdit::lookFetched(void)
// collectDescendentsIf takes non-const reference:
LLFindCOFValidItems is_cof_valid;
- gInventory.collectDescendentsIf(mLookID,
+ gInventory.collectDescendentsIf(mCurrentOutfitID,
cat_array,
item_array,
LLInventoryModel::EXCLUDE_TRASH,
@@ -464,12 +481,6 @@ void LLPanelOutfitEdit::lookFetched(void)
mLookContents->addElement(row);
}
-
- if (mLookContents->getItemCount() != mNumItemsInLook)
- {
- mNumItemsInLook = mLookContents->getItemCount();
- LLAppearanceMgr::instance().updateCOF(mLookID);
- }
}
void LLPanelOutfitEdit::updateLookInfo()
@@ -479,8 +490,8 @@ void LLPanelOutfitEdit::updateLookInfo()
mLookContents->clearRows();
uuid_vec_t folders;
- folders.push_back(mLookID);
- mFetchLook->fetchDescendents(folders);
+ folders.push_back(mCurrentOutfitID);
+ mFetchLook->fetch(folders);
if (mFetchLook->isEverythingComplete())
{
mFetchLook->done();
@@ -492,28 +503,26 @@ void LLPanelOutfitEdit::updateLookInfo()
}
}
-void LLPanelOutfitEdit::displayLookInfo(const LLInventoryCategory* pLook)
+void LLPanelOutfitEdit::displayCurrentOutfit()
{
- if (!pLook)
- {
- return;
- }
-
if (!getVisible())
{
setVisible(TRUE);
}
- if (mLookID != pLook->getUUID())
+ mCurrentOutfitID = LLAppearanceMgr::getInstance()->getCOF();
+
+ std::string current_outfit_name;
+ if (LLAppearanceMgr::getInstance()->getBaseOutfitName(current_outfit_name))
{
- mLookID = pLook->getUUID();
- mLookName->setText(pLook->getName());
- updateLookInfo();
+ mCurrentOutfitName->setText(current_outfit_name);
+ }
+ else
+ {
+ mCurrentOutfitName->setText(getString("No Outfit"));
}
-}
-void LLPanelOutfitEdit::reset()
-{
- mLookID.setNull();
+ updateLookInfo();
}
+
diff --git a/indra/newview/llpaneloutfitedit.h b/indra/newview/llpaneloutfitedit.h
index 5c00f84e0e..ba382d7320 100644
--- a/indra/newview/llpaneloutfitedit.h
+++ b/indra/newview/llpaneloutfitedit.h
@@ -81,10 +81,6 @@ public:
/*virtual*/ BOOL postBuild();
/*virtual*/ void changed(U32 mask);
- void reset();
- // Ignore all old information, useful if you are
- // recycling an existing dialog and need to clear it.
-
/*virtual*/ void setParcelID(const LLUUID& parcel_id);
// Sends a request for data about the given parcel, which will
// only update the location if there is none already available.
@@ -100,7 +96,7 @@ public:
void onEditWearableClicked(void);
void onUpClicked(void);
- void displayLookInfo(const LLInventoryCategory* pLook);
+ void displayCurrentOutfit();
void lookFetched(void);
@@ -108,8 +104,10 @@ public:
private:
- LLUUID mLookID;
- LLTextBox* mLookName;
+ //*TODO got rid of mCurrentOutfitID
+ LLUUID mCurrentOutfitID;
+
+ LLTextBox* mCurrentOutfitName;
LLScrollListCtrl* mLookContents;
LLInventoryPanel* mInventoryItemsPanel;
LLFilterEditor* mSearchFilter;
@@ -119,7 +117,6 @@ private:
LLButton* mRemoveFromLookBtn;
LLButton* mUpBtn;
LLButton* mEditWearableBtn;
- S32 mNumItemsInLook;
LLLookFetchObserver* mFetchLook;
LLInventoryLookObserver* mLookObserver;
diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp
index dd320f8328..7d8b1dea0e 100644
--- a/indra/newview/llpaneloutfitsinventory.cpp
+++ b/indra/newview/llpaneloutfitsinventory.cpp
@@ -48,6 +48,7 @@
#include "lllandmark.h"
#include "lllineeditor.h"
#include "llmodaldialog.h"
+#include "llnotificationsutil.h"
#include "llsidepanelappearance.h"
#include "llsidetray.h"
#include "lltabcontainer.h"
@@ -68,75 +69,13 @@ static const std::string COF_TAB_NAME = "cof_tab";
static LLRegisterPanelClassWrapper<LLPanelOutfitsInventory> t_inventory("panel_outfits_inventory");
bool LLPanelOutfitsInventory::sShowDebugEditor = false;
-class LLOutfitSaveAsDialog : public LLModalDialog
-{
-private:
- std::string mItemName;
- std::string mTempItemName;
-
- boost::signals2::signal<void (const std::string&)> mSaveAsSignal;
-
-public:
- LLOutfitSaveAsDialog( const LLSD& key )
- : LLModalDialog( key ),
- mTempItemName(key.asString())
- {
- }
-
- BOOL postBuild()
- {
- getChild<LLUICtrl>("Save")->setCommitCallback(boost::bind(&LLOutfitSaveAsDialog::onSave, this ));
- getChild<LLUICtrl>("Cancel")->setCommitCallback(boost::bind(&LLOutfitSaveAsDialog::onCancel, this ));
-
- childSetTextArg("name ed", "[DESC]", mTempItemName);
- return TRUE;
- }
-
- void setSaveAsCommit( const boost::signals2::signal<void (const std::string&)>::slot_type& cb )
- {
- mSaveAsSignal.connect(cb);
- }
-
- virtual void onOpen(const LLSD& key)
- {
- LLLineEditor* edit = getChild<LLLineEditor>("name ed");
- if (edit)
- {
- edit->setFocus(TRUE);
- edit->selectAll();
- }
- }
-
- void onSave()
- {
- mItemName = childGetValue("name ed").asString();
- LLStringUtil::trim(mItemName);
- if( !mItemName.empty() )
- {
- mSaveAsSignal(mItemName);
- closeFloater(); // destroys this object
- }
- }
- void onCancel()
- {
- closeFloater(); // destroys this object
- }
-};
-
LLPanelOutfitsInventory::LLPanelOutfitsInventory() :
mActivePanel(NULL),
mParent(NULL)
{
mSavedFolderState = new LLSaveFolderState();
mSavedFolderState->setApply(FALSE);
-
- static bool registered_dialog = false;
- if (!registered_dialog)
- {
- LLFloaterReg::add("outfit_save_as", "floater_outfit_save_as.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLOutfitSaveAsDialog>);
- registered_dialog = true;
- }
}
LLPanelOutfitsInventory::~LLPanelOutfitsInventory()
@@ -192,7 +131,7 @@ void LLPanelOutfitsInventory::updateVerbs()
if (mListCommands)
{
- mListCommands->childSetVisible("look_edit_btn",sShowDebugEditor);
+ mListCommands->childSetVisible("edit_current_outfit_btn",sShowDebugEditor);
updateListCommands();
}
}
@@ -242,7 +181,7 @@ void LLPanelOutfitsInventory::onWearButtonClick()
LLFolderViewEventListener* listenerp = getCorrectListenerForAction();
if (listenerp)
{
- listenerp->performAction(NULL, NULL,"replaceoutfit");
+ listenerp->performAction(NULL, "replaceoutfit");
}
}
@@ -251,7 +190,7 @@ void LLPanelOutfitsInventory::onAdd()
LLFolderViewEventListener* listenerp = getCorrectListenerForAction();
if (listenerp)
{
- listenerp->performAction(NULL, NULL,"addtooutfit");
+ listenerp->performAction(NULL, "addtooutfit");
}
}
@@ -260,7 +199,7 @@ void LLPanelOutfitsInventory::onRemove()
LLFolderViewEventListener* listenerp = getCorrectListenerForAction();
if (listenerp)
{
- listenerp->performAction(NULL, NULL,"removefromoutfit");
+ listenerp->performAction(NULL, "removefromoutfit");
}
}
@@ -268,6 +207,31 @@ void LLPanelOutfitsInventory::onEdit()
{
}
+bool LLPanelOutfitsInventory::onSaveCommit(const LLSD& notification, const LLSD& response)
+{
+ S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+ if (0 == option)
+ {
+ std::string outfit_name = response["message"].asString();
+ LLStringUtil::trim(outfit_name);
+ if( !outfit_name.empty() )
+ {
+ LLUUID outfit_folder = gAgentWearables.makeNewOutfitLinks(outfit_name);
+ LLSD key;
+ LLSideTray::getInstance()->showPanel("panel_outfits_inventory", key);
+
+ if (mAppearanceTabs)
+ {
+ mAppearanceTabs->selectTabByName(OUTFITS_TAB_NAME);
+ }
+ }
+ }
+
+ return false;
+}
+
+
+
void LLPanelOutfitsInventory::onSave()
{
std::string outfit_name;
@@ -277,23 +241,22 @@ void LLPanelOutfitsInventory::onSave()
outfit_name = LLViewerFolderType::lookupNewCategoryName(LLFolderType::FT_OUTFIT);
}
+ LLSD args;
+ args["DESC"] = outfit_name;
+
+ LLSD payload;
+ //payload["ids"].append(*it);
+
+ LLNotificationsUtil::add("SaveOutfitAs", args, payload, boost::bind(&LLPanelOutfitsInventory::onSaveCommit, this, _1, _2));
+
+ //)
+
+/*
LLOutfitSaveAsDialog* save_as_dialog = LLFloaterReg::showTypedInstance<LLOutfitSaveAsDialog>("outfit_save_as", LLSD(outfit_name), TRUE);
if (save_as_dialog)
{
save_as_dialog->setSaveAsCommit(boost::bind(&LLPanelOutfitsInventory::onSaveCommit, this, _1 ));
- }
-}
-
-void LLPanelOutfitsInventory::onSaveCommit(const std::string& outfit_name)
-{
- LLUUID outfit_folder = gAgentWearables.makeNewOutfitLinks(outfit_name);
- LLSD key;
- LLSideTray::getInstance()->showPanel("panel_outfits_inventory", key);
-
- if (mAppearanceTabs)
- {
- mAppearanceTabs->selectTabByName(OUTFITS_TAB_NAME);
- }
+ }*/
}
void LLPanelOutfitsInventory::onSelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action)
@@ -306,19 +269,12 @@ void LLPanelOutfitsInventory::onSelectionChange(const std::deque<LLFolderViewIte
}
}
-void LLPanelOutfitsInventory::onSelectorButtonClicked()
+void LLPanelOutfitsInventory::showEditOutfitPanel()
{
- LLFolderViewItem* cur_item = getRootFolder()->getCurSelectedItem();
-
- LLFolderViewEventListener* listenerp = cur_item->getListener();
- if (getIsCorrectType(listenerp))
- {
- LLSD key;
- key["type"] = "look";
- key["id"] = listenerp->getUUID();
-
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", key);
- }
+ LLSD key;
+ key["type"] = "edit_outfit";
+
+ LLSideTray::getInstance()->showPanel("sidepanel_appearance", key);
}
LLFolderViewEventListener *LLPanelOutfitsInventory::getCorrectListenerForAction()
@@ -365,7 +321,7 @@ void LLPanelOutfitsInventory::initListCommandsHandlers()
mListCommands->childSetAction("make_outfit_btn", boost::bind(&LLPanelOutfitsInventory::onAddButtonClick, this));
mListCommands->childSetAction("wear_btn", boost::bind(&LLPanelOutfitsInventory::onWearButtonClick, this));
- mListCommands->childSetAction("look_edit_btn", boost::bind(&LLPanelOutfitsInventory::onSelectorButtonClicked, this));
+ mListCommands->childSetAction("edit_current_outfit_btn", boost::bind(&LLPanelOutfitsInventory::showEditOutfitPanel, this));
LLDragAndDropButton* trash_btn = mListCommands->getChild<LLDragAndDropButton>("trash_btn");
trash_btn->setDragAndDropHandler(boost::bind(&LLPanelOutfitsInventory::handleDragAndDropToTrash, this
@@ -480,18 +436,18 @@ BOOL LLPanelOutfitsInventory::isActionEnabled(const LLSD& userdata)
if (command_name == "delete" || command_name == "remove")
{
BOOL can_delete = FALSE;
- LLFolderView *folder = getActivePanel()->getRootFolder();
- if (folder)
+ LLFolderView* root = getActivePanel()->getRootFolder();
+ if (root)
{
std::set<LLUUID> selection_set;
- folder->getSelectionList(selection_set);
+ root->getSelectionList(selection_set);
can_delete = (selection_set.size() > 0);
for (std::set<LLUUID>::iterator iter = selection_set.begin();
iter != selection_set.end();
++iter)
{
const LLUUID &item_id = (*iter);
- LLFolderViewItem *item = folder->getItemByID(item_id);
+ LLFolderViewItem *item = root->getItemByID(item_id);
can_delete &= item->getListener()->isItemRemovable();
}
return can_delete;
@@ -501,11 +457,11 @@ BOOL LLPanelOutfitsInventory::isActionEnabled(const LLSD& userdata)
if (command_name == "remove_link")
{
BOOL can_delete = FALSE;
- LLFolderView *folder = getActivePanel()->getRootFolder();
- if (folder)
+ LLFolderView* root = getActivePanel()->getRootFolder();
+ if (root)
{
std::set<LLUUID> selection_set;
- folder->getSelectionList(selection_set);
+ root->getSelectionList(selection_set);
can_delete = (selection_set.size() > 0);
for (std::set<LLUUID>::iterator iter = selection_set.begin();
iter != selection_set.end();
@@ -550,11 +506,11 @@ BOOL LLPanelOutfitsInventory::isActionEnabled(const LLSD& userdata)
bool LLPanelOutfitsInventory::hasItemsSelected()
{
bool has_items_selected = false;
- LLFolderView *folder = getActivePanel()->getRootFolder();
- if (folder)
+ LLFolderView* root = getActivePanel()->getRootFolder();
+ if (root)
{
std::set<LLUUID> selection_set;
- folder->getSelectionList(selection_set);
+ root->getSelectionList(selection_set);
has_items_selected = (selection_set.size() > 0);
}
return has_items_selected;
diff --git a/indra/newview/llpaneloutfitsinventory.h b/indra/newview/llpaneloutfitsinventory.h
index ab25ef0a49..41afc2f372 100644
--- a/indra/newview/llpaneloutfitsinventory.h
+++ b/indra/newview/llpaneloutfitsinventory.h
@@ -61,10 +61,10 @@ public:
void onEdit();
void onSave();
- void onSaveCommit(const std::string& item_name);
+ bool onSaveCommit(const LLSD& notification, const LLSD& response);
void onSelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action);
- void onSelectorButtonClicked();
+ void showEditOutfitPanel();
// If a compatible listener type is selected, then return a pointer to that.
// Otherwise, return NULL.
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index 288edeb031..5802d53cd1 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -652,8 +652,8 @@ void LLPanelPeople::updateFriendList()
av_tracker.copyBuddyList(all_buddies);
// save them to the online and all friends vectors
- LLAvatarList::uuid_vector_t& online_friendsp = mOnlineFriendList->getIDs();
- LLAvatarList::uuid_vector_t& all_friendsp = mAllFriendList->getIDs();
+ uuid_vec_t& online_friendsp = mOnlineFriendList->getIDs();
+ uuid_vec_t& all_friendsp = mAllFriendList->getIDs();
all_friendsp.clear();
online_friendsp.clear();
@@ -746,7 +746,7 @@ void LLPanelPeople::buttonSetAction(const std::string& btn_name, const commit_si
bool LLPanelPeople::isFriendOnline(const LLUUID& id)
{
- LLAvatarList::uuid_vector_t ids = mOnlineFriendList->getIDs();
+ uuid_vec_t ids = mOnlineFriendList->getIDs();
return std::find(ids.begin(), ids.end(), id) != ids.end();
}
diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp
index 54455afa4f..17784c31e3 100644
--- a/indra/newview/llpanelplaces.cpp
+++ b/indra/newview/llpanelplaces.cpp
@@ -252,6 +252,9 @@ BOOL LLPanelPlaces::postBuild()
mOverflowBtn = getChild<LLButton>("overflow_btn");
mOverflowBtn->setClickedCallback(boost::bind(&LLPanelPlaces::onOverflowButtonClicked, this));
+ mPlaceInfoBtn = getChild<LLButton>("profile_btn");
+ mPlaceInfoBtn->setClickedCallback(boost::bind(&LLPanelPlaces::onProfileButtonClicked, this));
+
LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
registrar.add("Places.OverflowMenu.Action", boost::bind(&LLPanelPlaces::onOverflowMenuItemClicked, this, _2));
LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable_registrar;
@@ -745,6 +748,14 @@ void LLPanelPlaces::onOverflowButtonClicked()
LLMenuGL::showPopup(this, menu, rect.mRight, rect.mTop);
}
+void LLPanelPlaces::onProfileButtonClicked()
+{
+ if (!mActivePanel)
+ return;
+
+ mActivePanel->onShowProfile();
+}
+
bool LLPanelPlaces::onOverflowMenuItemEnable(const LLSD& param)
{
std::string value = param.asString();
@@ -1060,8 +1071,11 @@ void LLPanelPlaces::updateVerbs()
mSaveBtn->setVisible(isLandmarkEditModeOn);
mCancelBtn->setVisible(isLandmarkEditModeOn);
mCloseBtn->setVisible(is_create_landmark_visible && !isLandmarkEditModeOn);
+ mPlaceInfoBtn->setVisible(mPlaceInfoType != LANDMARK_INFO_TYPE && mPlaceInfoType != TELEPORT_HISTORY_INFO_TYPE
+ && !is_create_landmark_visible && !isLandmarkEditModeOn);
mShowOnMapBtn->setEnabled(!is_create_landmark_visible && !isLandmarkEditModeOn && have_3d_pos);
+ mPlaceInfoBtn->setEnabled(!is_create_landmark_visible && !isLandmarkEditModeOn && have_3d_pos);
if (is_place_info_visible)
{
diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h
index 97cf43d222..7a77fc9300 100644
--- a/indra/newview/llpanelplaces.h
+++ b/indra/newview/llpanelplaces.h
@@ -98,6 +98,7 @@ private:
bool onOverflowMenuItemEnable(const LLSD& param);
void onCreateLandmarkButtonClicked(const LLUUID& folder_id);
void onBackButtonClicked();
+ void onProfileButtonClicked();
void toggleMediaPanel();
void togglePickPanel(BOOL visible);
@@ -128,6 +129,7 @@ private:
LLButton* mCancelBtn;
LLButton* mCloseBtn;
LLButton* mOverflowBtn;
+ LLButton* mPlaceInfoBtn;
LLPlacesInventoryObserver* mInventoryObserver;
LLPlacesParcelObserver* mParcelObserver;
diff --git a/indra/newview/llpanelplacestab.cpp b/indra/newview/llpanelplacestab.cpp
index 9806b8c64d..42cf3b03a3 100644
--- a/indra/newview/llpanelplacestab.cpp
+++ b/indra/newview/llpanelplacestab.cpp
@@ -56,6 +56,7 @@ void LLPanelPlacesTab::setPanelPlacesButtons(LLPanelPlaces* panel)
{
mTeleportBtn = panel->getChild<LLButton>("teleport_btn");
mShowOnMapBtn = panel->getChild<LLButton>("map_btn");
+ mShowProfile = panel->getChild<LLButton>("profile_btn");
}
void LLPanelPlacesTab::onRegionResponse(const LLVector3d& landmark_global_pos,
diff --git a/indra/newview/llpanelplacestab.h b/indra/newview/llpanelplacestab.h
index ce77a42259..f4e93a7658 100644
--- a/indra/newview/llpanelplacestab.h
+++ b/indra/newview/llpanelplacestab.h
@@ -45,6 +45,7 @@ public:
virtual void onSearchEdit(const std::string& string) = 0;
virtual void updateVerbs() = 0; // Updates buttons at the bottom of Places panel
virtual void onShowOnMap() = 0;
+ virtual void onShowProfile() = 0;
virtual void onTeleport() = 0;
bool isTabVisible(); // Check if parent TabContainer is visible.
@@ -62,6 +63,7 @@ public:
protected:
LLButton* mTeleportBtn;
LLButton* mShowOnMapBtn;
+ LLButton* mShowProfile;
// Search string for filtering landmarks and teleport history locations
static std::string sFilterSubString;
diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp
index 0a34531eee..c0b2244038 100644
--- a/indra/newview/llpanelteleporthistory.cpp
+++ b/indra/newview/llpanelteleporthistory.cpp
@@ -496,6 +496,20 @@ void LLTeleportHistoryPanel::onShowOnMap()
}
}
+//virtual
+void LLTeleportHistoryPanel::onShowProfile()
+{
+ if (!mLastSelectedFlatlList)
+ return;
+
+ LLTeleportHistoryFlatItem* itemp = dynamic_cast<LLTeleportHistoryFlatItem *> (mLastSelectedFlatlList->getSelectedItem());
+
+ if(!itemp)
+ return;
+
+ LLTeleportHistoryFlatItem::showPlaceInfoPanel(itemp->getIndex());
+}
+
// virtual
void LLTeleportHistoryPanel::onTeleport()
{
@@ -544,6 +558,7 @@ void LLTeleportHistoryPanel::updateVerbs()
{
mTeleportBtn->setEnabled(false);
mShowOnMapBtn->setEnabled(false);
+ mShowProfile->setEnabled(false);
return;
}
@@ -551,6 +566,7 @@ void LLTeleportHistoryPanel::updateVerbs()
mTeleportBtn->setEnabled(NULL != itemp);
mShowOnMapBtn->setEnabled(NULL != itemp);
+ mShowProfile->setEnabled(NULL != itemp);
}
void LLTeleportHistoryPanel::getNextTab(const LLDate& item_date, S32& tab_idx, LLDate& tab_date)
diff --git a/indra/newview/llpanelteleporthistory.h b/indra/newview/llpanelteleporthistory.h
index 5e2ccc0c93..a456ca506f 100644
--- a/indra/newview/llpanelteleporthistory.h
+++ b/indra/newview/llpanelteleporthistory.h
@@ -73,6 +73,7 @@ public:
/*virtual*/ void onSearchEdit(const std::string& string);
/*virtual*/ void onShowOnMap();
+ /*virtual*/ void onShowProfile();
/*virtual*/ void onTeleport();
///*virtual*/ void onCopySLURL();
/*virtual*/ void updateVerbs();
diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp
index 0a20ff6226..eb245453db 100644
--- a/indra/newview/llparticipantlist.cpp
+++ b/indra/newview/llparticipantlist.cpp
@@ -248,8 +248,8 @@ bool LLParticipantList::onAddItemEvent(LLPointer<LLOldEvents::LLEvent> event, co
bool LLParticipantList::onRemoveItemEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata)
{
- LLAvatarList::uuid_vector_t& group_members = mAvatarList->getIDs();
- LLAvatarList::uuid_vector_t::iterator pos = std::find(group_members.begin(), group_members.end(), event->getValue().asUUID());
+ uuid_vec_t& group_members = mAvatarList->getIDs();
+ uuid_vec_t::iterator pos = std::find(group_members.begin(), group_members.end(), event->getValue().asUUID());
if(pos != group_members.end())
{
group_members.erase(pos);
@@ -260,7 +260,7 @@ bool LLParticipantList::onRemoveItemEvent(LLPointer<LLOldEvents::LLEvent> event,
bool LLParticipantList::onClearListEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata)
{
- LLAvatarList::uuid_vector_t& group_members = mAvatarList->getIDs();
+ uuid_vec_t& group_members = mAvatarList->getIDs();
group_members.clear();
mAvatarList->setDirty();
return true;
diff --git a/indra/newview/llplacesinventorybridge.cpp b/indra/newview/llplacesinventorybridge.cpp
index 4fe69f295c..f59a55cb8b 100644
--- a/indra/newview/llplacesinventorybridge.cpp
+++ b/indra/newview/llplacesinventorybridge.cpp
@@ -122,7 +122,7 @@ void LLPlacesFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
}
//virtual
-void LLPlacesFolderBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+void LLPlacesFolderBridge::performAction(LLInventoryModel* model, std::string action)
{
if ("expand" == action)
{
@@ -136,7 +136,7 @@ void LLPlacesFolderBridge::performAction(LLFolderView* folder, LLInventoryModel*
}
else
{
- LLFolderBridge::performAction(folder, model, action);
+ LLFolderBridge::performAction(model, action);
}
}
@@ -158,6 +158,7 @@ LLInvFVBridge* LLPlacesInventoryBridgeBuilder::createBridge(
LLAssetType::EType actual_asset_type,
LLInventoryType::EType inv_type,
LLInventoryPanel* inventory,
+ LLFolderView* root,
const LLUUID& uuid,
U32 flags/* = 0x00*/) const
{
@@ -167,9 +168,9 @@ LLInvFVBridge* LLPlacesInventoryBridgeBuilder::createBridge(
case LLAssetType::AT_LANDMARK:
if(!(inv_type == LLInventoryType::IT_LANDMARK))
{
- llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+ llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
}
- new_listener = new LLPlacesLandmarkBridge(inv_type, inventory, uuid, flags);
+ new_listener = new LLPlacesLandmarkBridge(inv_type, inventory, root, uuid, flags);
break;
case LLAssetType::AT_CATEGORY:
if (actual_asset_type == LLAssetType::AT_LINK_FOLDER)
@@ -180,11 +181,12 @@ LLInvFVBridge* LLPlacesInventoryBridgeBuilder::createBridge(
actual_asset_type,
inv_type,
inventory,
+ root,
uuid,
flags);
break;
}
- new_listener = new LLPlacesFolderBridge(inv_type, inventory, uuid);
+ new_listener = new LLPlacesFolderBridge(inv_type, inventory, root, uuid);
break;
default:
new_listener = LLInventoryFVBridgeBuilder::createBridge(
@@ -192,6 +194,7 @@ LLInvFVBridge* LLPlacesInventoryBridgeBuilder::createBridge(
actual_asset_type,
inv_type,
inventory,
+ root,
uuid,
flags);
}
diff --git a/indra/newview/llplacesinventorybridge.h b/indra/newview/llplacesinventorybridge.h
index 66a8e8e54d..7e5170cc33 100644
--- a/indra/newview/llplacesinventorybridge.h
+++ b/indra/newview/llplacesinventorybridge.h
@@ -48,8 +48,15 @@ public:
/*virtual*/ void buildContextMenu(LLMenuGL& menu, U32 flags);
protected:
- LLPlacesLandmarkBridge(LLInventoryType::EType type, LLInventoryPanel* inventory, const LLUUID& uuid, U32 flags = 0x00)
- : LLLandmarkBridge(inventory, uuid, flags) {mInvType = type;}
+ LLPlacesLandmarkBridge(LLInventoryType::EType type,
+ LLInventoryPanel* inventory,
+ LLFolderView* root,
+ const LLUUID& uuid,
+ U32 flags = 0x00) :
+ LLLandmarkBridge(inventory, root, uuid, flags)
+ {
+ mInvType = type;
+ }
};
/**
@@ -61,12 +68,17 @@ class LLPlacesFolderBridge : public LLFolderBridge
public:
/*virtual*/ void buildContextMenu(LLMenuGL& menu, U32 flags);
- /*virtual*/ void performAction(LLFolderView* folder, LLInventoryModel* model, std::string action);
+ /*virtual*/ void performAction(LLInventoryModel* model, std::string action);
protected:
- LLPlacesFolderBridge(LLInventoryType::EType type, LLInventoryPanel* inventory, const LLUUID& uuid)
- : LLFolderBridge(inventory, uuid) {mInvType = type;}
-
+ LLPlacesFolderBridge(LLInventoryType::EType type,
+ LLInventoryPanel* inventory,
+ LLFolderView* root,
+ const LLUUID& uuid) :
+ LLFolderBridge(inventory, root, uuid)
+ {
+ mInvType = type;
+ }
LLFolderViewFolder* getFolder();
};
@@ -79,13 +91,13 @@ protected:
class LLPlacesInventoryBridgeBuilder : public LLInventoryFVBridgeBuilder
{
public:
- /*virtual*/ LLInvFVBridge* createBridge(
- LLAssetType::EType asset_type,
- LLAssetType::EType actual_asset_type,
- LLInventoryType::EType inv_type,
- LLInventoryPanel* inventory,
- const LLUUID& uuid,
- U32 flags = 0x00) const;
+ /*virtual*/ LLInvFVBridge* createBridge(LLAssetType::EType asset_type,
+ LLAssetType::EType actual_asset_type,
+ LLInventoryType::EType inv_type,
+ LLInventoryPanel* inventory,
+ LLFolderView* root,
+ const LLUUID& uuid,
+ U32 flags = 0x00) const;
};
#endif // LL_LLPLACESINVENTORYBRIDGE_H
diff --git a/indra/newview/llplacesinventorypanel.cpp b/indra/newview/llplacesinventorypanel.cpp
index ed0fb54051..0930a7be7f 100644
--- a/indra/newview/llplacesinventorypanel.cpp
+++ b/indra/newview/llplacesinventorypanel.cpp
@@ -68,9 +68,9 @@ BOOL LLPlacesInventoryPanel::postBuild()
// clear Contents();
{
- mFolders->destroyView();
- mFolders->getParent()->removeChild(mFolders);
- mFolders->die();
+ mFolderRoot->destroyView();
+ mFolderRoot->getParent()->removeChild(mFolderRoot);
+ mFolderRoot->die();
if( mScroller )
{
@@ -78,7 +78,7 @@ BOOL LLPlacesInventoryPanel::postBuild()
mScroller->die();
mScroller = NULL;
}
- mFolders = NULL;
+ mFolderRoot = NULL;
}
@@ -95,13 +95,13 @@ BOOL LLPlacesInventoryPanel::postBuild()
p.title = getLabel();
p.rect = folder_rect;
p.parent_panel = this;
- mFolders = (LLFolderView*)LLUICtrlFactory::create<LLPlacesFolderView>(p);
- mFolders->setAllowMultiSelect(mAllowMultiSelect);
+ mFolderRoot = (LLFolderView*)LLUICtrlFactory::create<LLPlacesFolderView>(p);
+ mFolderRoot->setAllowMultiSelect(mAllowMultiSelect);
}
mCommitCallbackRegistrar.popScope();
- mFolders->setCallbackRegistrar(&mCommitCallbackRegistrar);
+ mFolderRoot->setCallbackRegistrar(&mCommitCallbackRegistrar);
// scroller
{
@@ -116,14 +116,14 @@ BOOL LLPlacesInventoryPanel::postBuild()
mScroller = LLUICtrlFactory::create<LLScrollContainer>(p);
}
addChild(mScroller);
- mScroller->addChild(mFolders);
+ mScroller->addChild(mFolderRoot);
- mFolders->setScrollContainer(mScroller);
- mFolders->addChild(mFolders->mStatusTextBox);
+ mFolderRoot->setScrollContainer(mScroller);
+ mFolderRoot->addChild(mFolderRoot->mStatusTextBox);
// cut subitems
- mFolders->setUseEllipses(true);
+ mFolderRoot->setUseEllipses(true);
return TRUE;
}
@@ -132,17 +132,17 @@ BOOL LLPlacesInventoryPanel::postBuild()
void LLPlacesInventoryPanel::saveFolderState()
{
mSavedFolderState->setApply(FALSE);
- getRootFolder()->applyFunctorRecursively(*mSavedFolderState);
+ mFolderRoot->applyFunctorRecursively(*mSavedFolderState);
}
// re-open folders which state was saved
void LLPlacesInventoryPanel::restoreFolderState()
{
mSavedFolderState->setApply(TRUE);
- getRootFolder()->applyFunctorRecursively(*mSavedFolderState);
+ mFolderRoot->applyFunctorRecursively(*mSavedFolderState);
LLOpenFoldersWithSelection opener;
- getRootFolder()->applyFunctorRecursively(opener);
- getRootFolder()->scrollToShowSelection();
+ mFolderRoot->applyFunctorRecursively(opener);
+ mFolderRoot->scrollToShowSelection();
}
S32 LLPlacesInventoryPanel::notify(const LLSD& info)
@@ -152,11 +152,11 @@ S32 LLPlacesInventoryPanel::notify(const LLSD& info)
std::string str_action = info["action"];
if(str_action == "select_first")
{
- return getRootFolder()->notify(info);
+ return mFolderRoot->notify(info);
}
else if(str_action == "select_last")
{
- return getRootFolder()->notify(info);
+ return mFolderRoot->notify(info);
}
}
return 0;
diff --git a/indra/newview/llpopupview.cpp b/indra/newview/llpopupview.cpp
index b010f4d72f..4523bf2ba4 100644
--- a/indra/newview/llpopupview.cpp
+++ b/indra/newview/llpopupview.cpp
@@ -104,14 +104,18 @@ BOOL LLPopupView::handleMouseEvent(boost::function<BOOL(LLView*, S32, S32)> func
S32 x, S32 y,
bool close_popups)
{
- for (popup_list_t::iterator popup_it = mPopups.begin();
- popup_it != mPopups.end();)
+ BOOL handled = FALSE;
+
+ // make a copy of list of popups, in case list is modified during mouse event handling
+ popup_list_t popups(mPopups);
+ for (popup_list_t::iterator popup_it = popups.begin(), popup_end = popups.end();
+ popup_it != popup_end;
+ ++popup_it)
{
LLView* popup = popup_it->get();
if (!popup
|| !predicate(popup))
{
- ++popup_it;
continue;
}
@@ -121,23 +125,19 @@ BOOL LLPopupView::handleMouseEvent(boost::function<BOOL(LLView*, S32, S32)> func
{
if (func(popup, popup_x, popup_y))
{
- return TRUE;
+ handled = TRUE;
+ break;
}
}
if (close_popups)
{
- popup_list_t::iterator cur_popup_it = popup_it++;
- mPopups.erase(cur_popup_it);
+ mPopups.remove(*popup_it);
popup->onTopLost();
}
- else
- {
- ++popup_it;
- }
}
- return FALSE;
+ return handled;
}
diff --git a/indra/newview/llpreview.cpp b/indra/newview/llpreview.cpp
index d5ec3a36c3..d0db77dcbe 100644
--- a/indra/newview/llpreview.cpp
+++ b/indra/newview/llpreview.cpp
@@ -36,7 +36,7 @@
#include "llpreview.h"
#include "lllineeditor.h"
-#include "llinventory.h"
+#include "llinventorydefines.h"
#include "llinventorymodel.h"
#include "llresmgr.h"
#include "lltextbox.h"
diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp
index 11cde47744..fce90e4c44 100644
--- a/indra/newview/llpreviewgesture.cpp
+++ b/indra/newview/llpreviewgesture.cpp
@@ -42,7 +42,9 @@
#include "llstring.h"
#include "lldir.h"
#include "llfloaterreg.h"
+#include "llinventorydefines.h"
#include "llinventoryfunctions.h"
+#include "llinventorymodel.h"
#include "llinventorymodelbackgroundfetch.h"
#include "llmultigesture.h"
#include "llnotificationsutil.h"
@@ -58,7 +60,6 @@
#include "lldelayedgestureerror.h"
#include "llfloatergesture.h" // for some label constants
#include "llgesturemgr.h"
-#include "llinventorymodel.h"
#include "llkeyboard.h"
#include "lllineeditor.h"
#include "llradiogroup.h"
diff --git a/indra/newview/llpreviewnotecard.cpp b/indra/newview/llpreviewnotecard.cpp
index bfd9a840f2..75702dc8e5 100644
--- a/indra/newview/llpreviewnotecard.cpp
+++ b/indra/newview/llpreviewnotecard.cpp
@@ -42,6 +42,7 @@
#include "llviewerwindow.h"
#include "llbutton.h"
#include "llfloaterreg.h"
+#include "llinventorydefines.h"
#include "llinventorymodel.h"
#include "lllineeditor.h"
#include "llnotificationsutil.h"
diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp
index 4167408fc3..6b0e524f8c 100644
--- a/indra/newview/llpreviewscript.cpp
+++ b/indra/newview/llpreviewscript.cpp
@@ -41,6 +41,7 @@
#include "llcombobox.h"
#include "lldir.h"
#include "llfloaterreg.h"
+#include "llinventorydefines.h"
#include "llinventorymodel.h"
#include "llkeyboard.h"
#include "lllineeditor.h"
@@ -1578,7 +1579,7 @@ void LLLiveLSLEditor::loadAsset()
DEFAULT_SCRIPT_NAME,
DEFAULT_SCRIPT_DESC,
LLSaleInfo::DEFAULT,
- LLInventoryItem::II_FLAGS_NONE,
+ LLInventoryItemFlags::II_FLAGS_NONE,
time_corrected());
mAssetStatus = PREVIEW_ASSET_LOADED;
}
diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp
index dffb5e5e12..af440a3689 100644
--- a/indra/newview/llscreenchannel.cpp
+++ b/indra/newview/llscreenchannel.cpp
@@ -47,7 +47,6 @@
#include "llsyswellwindow.h"
#include "llimfloater.h"
#include "llscriptfloater.h"
-#include "llfontgl.h"
#include <algorithm>
@@ -480,7 +479,9 @@ void LLScreenChannel::showToastsBottom()
}
toast_rect = (*it).toast->getRect();
- toast_rect.setOriginAndSize(getRect().mLeft, bottom + toast_margin, toast_rect.getWidth() ,toast_rect.getHeight());
+ toast_rect.setOriginAndSize(getRect().mRight - toast_rect.getWidth(),
+ bottom + toast_margin, toast_rect.getWidth(),
+ toast_rect.getHeight());
(*it).toast->setRect(toast_rect);
if(floater && floater->overlapsScreenChannel())
@@ -580,7 +581,6 @@ void LLScreenChannel::showToastsTop()
void LLScreenChannel::createStartUpToast(S32 notif_num, F32 timer)
{
LLRect toast_rect;
- LLRect tbox_rect;
LLToast::Params p;
p.lifetime_secs = timer;
p.enable_hide_btn = false;
@@ -591,34 +591,26 @@ void LLScreenChannel::createStartUpToast(S32 notif_num, F32 timer)
mStartUpToastPanel->setOnFadeCallback(boost::bind(&LLScreenChannel::onStartUpToastHide, this));
+ LLPanel* wrapper_panel = mStartUpToastPanel->getChild<LLPanel>("wrapper_panel");
LLTextBox* text_box = mStartUpToastPanel->getChild<LLTextBox>("toast_text");
std::string text = LLTrans::getString("StartUpNotifications");
- tbox_rect = text_box->getRect();
- S32 tbox_width = tbox_rect.getWidth();
- S32 tbox_vpad = text_box->getVPad();
- S32 text_width = text_box->getDefaultFont()->getWidth(text);
- S32 text_height = text_box->getTextPixelHeight();
-
- // EXT - 3703 (Startup toast message doesn't fit toast width)
- // Calculating TextBox HEIGHT needed to include the whole string according to the given WIDTH of the TextBox.
- S32 new_tbox_height = (text_width/tbox_width + 1) * text_height;
- // Calculating TOP position of TextBox
- S32 new_tbox_top = new_tbox_height + tbox_vpad + gSavedSettings.getS32("ToastGap");
- // Calculating toast HEIGHT according to the new TextBox size
- S32 toast_height = new_tbox_height + tbox_vpad * 2;
-
- tbox_rect.setLeftTopAndSize(tbox_rect.mLeft, new_tbox_top, tbox_rect.getWidth(), new_tbox_height);
- text_box->setRect(tbox_rect);
-
toast_rect = mStartUpToastPanel->getRect();
mStartUpToastPanel->reshape(getRect().getWidth(), toast_rect.getHeight(), true);
- toast_rect.setLeftTopAndSize(0, toast_height + gSavedSettings.getS32("ToastGap"), getRect().getWidth(), toast_height);
- mStartUpToastPanel->setRect(toast_rect);
text_box->setValue(text);
text_box->setVisible(TRUE);
+
+ S32 old_height = text_box->getRect().getHeight();
+ text_box->reshapeToFitText();
+ text_box->setOrigin(text_box->getRect().mLeft, (wrapper_panel->getRect().getHeight() - text_box->getRect().getHeight())/2);
+ S32 new_height = text_box->getRect().getHeight();
+ S32 height_delta = new_height - old_height;
+
+ toast_rect.setLeftTopAndSize(0, toast_rect.getHeight() + height_delta +gSavedSettings.getS32("ToastGap"), getRect().getWidth(), toast_rect.getHeight());
+ mStartUpToastPanel->setRect(toast_rect);
+
addChild(mStartUpToastPanel);
mStartUpToastPanel->setVisible(TRUE);
diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
index b951434010..a084c93786 100644
--- a/indra/newview/llsidepanelappearance.cpp
+++ b/indra/newview/llsidepanelappearance.cpp
@@ -182,11 +182,9 @@ void LLSidepanelAppearance::onOpen(const LLSD& key)
mLookInfoType = key["type"].asString();
- if (mLookInfoType == "look")
+ if (mLookInfoType == "edit_outfit")
{
- LLInventoryCategory *pLook = gInventory.getCategory(key["id"].asUUID());
- if (pLook)
- mOutfitEdit->displayLookInfo(pLook);
+ mOutfitEdit->displayCurrentOutfit();
}
}
@@ -219,13 +217,13 @@ void LLSidepanelAppearance::onOpenOutfitButtonClicked()
LLInventoryPanel *inventory_panel = tab_outfits->findChild<LLInventoryPanel>("outfitslist_tab");
if (inventory_panel)
{
- LLFolderView *folder = inventory_panel->getRootFolder();
- LLFolderViewItem *outfit_folder = folder->getItemByID(outfit_link->getLinkedUUID());
+ LLFolderView* root = inventory_panel->getRootFolder();
+ LLFolderViewItem *outfit_folder = root->getItemByID(outfit_link->getLinkedUUID());
if (outfit_folder)
{
outfit_folder->setOpen(!outfit_folder->isOpen());
- folder->setSelectionFromRoot(outfit_folder,TRUE);
- folder->scrollToShowSelection();
+ root->setSelectionFromRoot(outfit_folder,TRUE);
+ root->scrollToShowSelection();
}
}
}
@@ -297,6 +295,8 @@ void LLSidepanelAppearance::toggleWearableEditPanel(BOOL visible, LLWearable *we
return;
}
+ mCurrOutfitPanel->setVisible(!visible);
+
mEditWearable->setVisible(visible);
mEditWearable->setWearable(wearable);
mFilterEditor->setVisible(!visible);
@@ -354,7 +354,7 @@ void LLSidepanelAppearance::fetchInventory()
{
mNewOutfitBtn->setEnabled(false);
- LLInventoryFetchObserver::item_ref_t ids;
+ uuid_vec_t ids;
LLUUID item_id;
for(S32 type = (S32)WT_SHAPE; type < (S32)WT_COUNT; ++type)
{
@@ -389,7 +389,7 @@ void LLSidepanelAppearance::fetchInventory()
}
LLCurrentlyWornFetchObserver *fetch_worn = new LLCurrentlyWornFetchObserver(this);
- fetch_worn->fetchItems(ids);
+ fetch_worn->fetch(ids);
// If no items to be fetched, done will never be triggered.
// TODO: Change LLInventoryFetchObserver::fetchItems to trigger done() on this condition.
if (fetch_worn->isEverythingComplete())
diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp
index 73880563d7..18e56a9c01 100644
--- a/indra/newview/llsidepanelinventory.cpp
+++ b/indra/newview/llsidepanelinventory.cpp
@@ -161,7 +161,7 @@ void LLSidepanelInventory::performActionOnSelection(const std::string &action)
{
return;
}
- current_item->getListener()->performAction(panel_main_inventory->getActivePanel()->getRootFolder(), panel_main_inventory->getActivePanel()->getModel(), action);
+ current_item->getListener()->performAction(panel_main_inventory->getActivePanel()->getModel(), action);
}
void LLSidepanelInventory::onWearButtonClicked()
diff --git a/indra/newview/llsidepaneliteminfo.cpp b/indra/newview/llsidepaneliteminfo.cpp
index 0275736f6d..9b073943b4 100644
--- a/indra/newview/llsidepaneliteminfo.cpp
+++ b/indra/newview/llsidepaneliteminfo.cpp
@@ -40,6 +40,7 @@
#include "llbutton.h"
#include "llfloaterreg.h"
#include "llgroupactions.h"
+#include "llinventorydefines.h"
#include "llinventorymodel.h"
#include "llinventoryobserver.h"
#include "lllineeditor.h"
@@ -439,9 +440,9 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item)
if (item->getType() == LLAssetType::AT_OBJECT)
{
U32 flags = item->getFlags();
- slam_perm = flags & LLInventoryItem::II_FLAGS_OBJECT_SLAM_PERM;
- overwrite_everyone = flags & LLInventoryItem::II_FLAGS_OBJECT_PERM_OVERWRITE_EVERYONE;
- overwrite_group = flags & LLInventoryItem::II_FLAGS_OBJECT_PERM_OVERWRITE_GROUP;
+ slam_perm = flags & LLInventoryItemFlags::II_FLAGS_OBJECT_SLAM_PERM;
+ overwrite_everyone = flags & LLInventoryItemFlags::II_FLAGS_OBJECT_PERM_OVERWRITE_EVERYONE;
+ overwrite_group = flags & LLInventoryItemFlags::II_FLAGS_OBJECT_PERM_OVERWRITE_GROUP;
}
std::string perm_string;
@@ -752,7 +753,7 @@ void LLSidepanelItemInfo::onCommitPermissions()
if((perm.getMaskNextOwner()!=item->getPermissions().getMaskNextOwner())
&& (item->getType() == LLAssetType::AT_OBJECT))
{
- flags |= LLInventoryItem::II_FLAGS_OBJECT_SLAM_PERM;
+ flags |= LLInventoryItemFlags::II_FLAGS_OBJECT_SLAM_PERM;
}
// If everyone permissions have changed (and this is an object)
// then set the overwrite everyone permissions flag so they
@@ -760,7 +761,7 @@ void LLSidepanelItemInfo::onCommitPermissions()
if ((perm.getMaskEveryone()!=item->getPermissions().getMaskEveryone())
&& (item->getType() == LLAssetType::AT_OBJECT))
{
- flags |= LLInventoryItem::II_FLAGS_OBJECT_PERM_OVERWRITE_EVERYONE;
+ flags |= LLInventoryItemFlags::II_FLAGS_OBJECT_PERM_OVERWRITE_EVERYONE;
}
// If group permissions have changed (and this is an object)
// then set the overwrite group permissions flag so they
@@ -768,7 +769,7 @@ void LLSidepanelItemInfo::onCommitPermissions()
if ((perm.getMaskGroup()!=item->getPermissions().getMaskGroup())
&& (item->getType() == LLAssetType::AT_OBJECT))
{
- flags |= LLInventoryItem::II_FLAGS_OBJECT_PERM_OVERWRITE_GROUP;
+ flags |= LLInventoryItemFlags::II_FLAGS_OBJECT_PERM_OVERWRITE_GROUP;
}
new_item->setFlags(flags);
if(mObjectID.isNull())
@@ -880,7 +881,7 @@ void LLSidepanelItemInfo::updateSaleInfo()
if (item->getType() == LLAssetType::AT_OBJECT)
{
U32 flags = new_item->getFlags();
- flags |= LLInventoryItem::II_FLAGS_OBJECT_SLAM_SALE;
+ flags |= LLInventoryItemFlags::II_FLAGS_OBJECT_SLAM_SALE;
new_item->setFlags(flags);
}
diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp
index 3742f70df5..77c38798d1 100644
--- a/indra/newview/llspatialpartition.cpp
+++ b/indra/newview/llspatialpartition.cpp
@@ -1924,11 +1924,8 @@ public:
return;
}
- if (mRes == 2)
- {
- //fully in, don't traverse further (won't effect extents
- }
- else if (mRes && group->isState(LLSpatialGroup::SKIP_FRUSTUM_CHECK))
+ if ((mRes && group->isState(LLSpatialGroup::SKIP_FRUSTUM_CHECK)) ||
+ mRes == 2)
{ //don't need to do frustum check
LLSpatialGroup::OctreeTraveler::traverse(n);
}
diff --git a/indra/newview/llspatialpartition.h b/indra/newview/llspatialpartition.h
index d74216de2d..b5e5967374 100644
--- a/indra/newview/llspatialpartition.h
+++ b/indra/newview/llspatialpartition.h
@@ -615,6 +615,13 @@ public:
class LLVolumeGeometryManager: public LLGeometryManager
{
public:
+ typedef enum
+ {
+ NONE = 0,
+ BATCH_SORT,
+ DISTANCE_SORT
+ } eSortType;
+
virtual ~LLVolumeGeometryManager() { }
virtual void rebuildGeom(LLSpatialGroup* group);
virtual void rebuildMesh(LLSpatialGroup* group);
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index b5a73a3143..c7eb9320e4 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -889,13 +889,12 @@ bool idle_startup()
}
//Default the path if one isn't set.
- if (gSavedPerAccountSettings.getString("InstantMessageLogFolder").empty())
+ // *NOTE: unable to check variable differ from "InstantMessageLogPath" because it was
+ // provided in pre 2.0 viewer. See EXT-6661
+ if (gSavedPerAccountSettings.getString("InstantMessageLogPath").empty())
{
gDirUtilp->setChatLogsDir(gDirUtilp->getOSUserAppDir());
- std::string chat_log_dir = gDirUtilp->getChatLogsDir();
- std::string chat_log_top_folder=gDirUtilp->getBaseFileName(chat_log_dir);
- gSavedPerAccountSettings.setString("InstantMessageLogPath",chat_log_dir);
- gSavedPerAccountSettings.setString("InstantMessageLogFolder",chat_log_top_folder);
+ gSavedPerAccountSettings.setString("InstantMessageLogPath", gDirUtilp->getChatLogsDir());
}
else
{
@@ -1771,7 +1770,7 @@ bool idle_startup()
}
}
// no need to add gesture to inventory observer, it's already made in constructor
- LLGestureMgr::instance().fetchItems(item_ids);
+ LLGestureMgr::instance().fetch(item_ids);
}
}
gDisplaySwapBuffers = TRUE;
diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp
index 3f4dab4fea..492fb2ad52 100644
--- a/indra/newview/lltexlayer.cpp
+++ b/indra/newview/lltexlayer.cpp
@@ -99,6 +99,12 @@ LLTexLayerSetBuffer::~LLTexLayerSetBuffer()
}
//virtual
+S8 LLTexLayerSetBuffer::getType() const
+{
+ return LLViewerDynamicTexture::LL_TEX_LAYER_SET_BUFFER ;
+}
+
+//virtual
void LLTexLayerSetBuffer::restoreGLTexture()
{
LLViewerDynamicTexture::restoreGLTexture() ;
diff --git a/indra/newview/lltexlayer.h b/indra/newview/lltexlayer.h
index 5be58f64a9..ae280dd063 100644
--- a/indra/newview/lltexlayer.h
+++ b/indra/newview/lltexlayer.h
@@ -325,6 +325,7 @@ public:
LLTexLayerSetBuffer(LLTexLayerSet* const owner, S32 width, S32 height);
virtual ~LLTexLayerSetBuffer();
+ /*virtual*/ S8 getType() const ;
virtual void preRender(BOOL clear_depth);
virtual void postRender(BOOL success);
virtual BOOL render();
diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp
index 08bc8220d9..df79725474 100644
--- a/indra/newview/lltexturecache.cpp
+++ b/indra/newview/lltexturecache.cpp
@@ -742,7 +742,7 @@ LLTextureCache::LLTextureCache(bool threaded)
mHeaderMutex(NULL),
mListMutex(NULL),
mHeaderAPRFile(NULL),
- mReadOnly(FALSE),
+ mReadOnly(TRUE), //do not allow to change the texture cache until setReadOnly() is called.
mTexturesSizeTotal(0),
mDoPurge(FALSE)
{
@@ -929,13 +929,16 @@ U32 LLTextureCache::sCacheMaxEntries = MAX_REASONABLE_FILE_SIZE / TEXTURE_CACHE_
S64 LLTextureCache::sCacheMaxTexturesSize = 0; // no limit
const char* entries_filename = "texture.entries";
const char* cache_filename = "texture.cache";
-const char* textures_dirname = "textures";
+const char* old_textures_dirname = "textures";
+//change the location of the texture cache to prevent from being deleted by old version viewers.
+const char* textures_dirname = "texturecache";
void LLTextureCache::setDirNames(ELLPath location)
{
std::string delem = gDirUtilp->getDirDelimiter();
- mHeaderEntriesFileName = gDirUtilp->getExpandedFilename(location, entries_filename);
- mHeaderDataFileName = gDirUtilp->getExpandedFilename(location, cache_filename);
+
+ mHeaderEntriesFileName = gDirUtilp->getExpandedFilename(location, textures_dirname, entries_filename);
+ mHeaderDataFileName = gDirUtilp->getExpandedFilename(location, textures_dirname, cache_filename);
mTexturesDirName = gDirUtilp->getExpandedFilename(location, textures_dirname);
}
@@ -947,16 +950,38 @@ void LLTextureCache::purgeCache(ELLPath location)
{
setDirNames(location);
llassert_always(mHeaderAPRFile == NULL);
- LLAPRFile::remove(mHeaderEntriesFileName, getLocalAPRFilePool());
- LLAPRFile::remove(mHeaderDataFileName, getLocalAPRFilePool());
+
+ //remove the legacy cache if exists
+ std::string texture_dir = mTexturesDirName ;
+ mTexturesDirName = gDirUtilp->getExpandedFilename(location, old_textures_dirname);
+ if(LLFile::isdir(mTexturesDirName))
+ {
+ std::string file_name = gDirUtilp->getExpandedFilename(location, entries_filename);
+ LLAPRFile::remove(file_name, getLocalAPRFilePool());
+
+ file_name = gDirUtilp->getExpandedFilename(location, cache_filename);
+ LLAPRFile::remove(file_name, getLocalAPRFilePool());
+
+ purgeAllTextures(true);
+ }
+ mTexturesDirName = texture_dir ;
}
+
+ //remove the current texture cache.
purgeAllTextures(true);
}
-S64 LLTextureCache::initCache(ELLPath location, S64 max_size, BOOL read_only)
+//is called in the main thread before initCache(...) is called.
+void LLTextureCache::setReadOnly(BOOL read_only)
{
- mReadOnly = read_only;
-
+ mReadOnly = read_only ;
+}
+
+//called in the main thread.
+S64 LLTextureCache::initCache(ELLPath location, S64 max_size, BOOL disable_texture_cache)
+{
+ llassert_always(getPending() == 0) ; //should not start accessing the texture cache before initialized.
+
S64 header_size = (max_size * 2) / 10;
S64 max_entries = header_size / TEXTURE_CACHE_ENTRY_SIZE;
sCacheMaxEntries = (S32)(llmin((S64)sCacheMaxEntries, max_entries));
@@ -968,6 +993,15 @@ S64 LLTextureCache::initCache(ELLPath location, S64 max_size, BOOL read_only)
sCacheMaxTexturesSize = max_size;
max_size -= sCacheMaxTexturesSize;
+ if(disable_texture_cache) //the texture cache is disabled
+ {
+ llinfos << "The texture cache is disabled!" << llendl ;
+ setReadOnly(TRUE) ;
+ purgeAllTextures(true);
+
+ return max_size ;
+ }
+
LL_INFOS("TextureCache") << "Headers: " << sCacheMaxEntries
<< " Textures size: " << sCacheMaxTexturesSize/(1024*1024) << " MB" << LL_ENDL;
@@ -976,6 +1010,7 @@ S64 LLTextureCache::initCache(ELLPath location, S64 max_size, BOOL read_only)
if (!mReadOnly)
{
LLFile::mkdir(mTexturesDirName);
+
const char* subdirs = "0123456789abcdef";
for (S32 i=0; i<16; i++)
{
@@ -986,6 +1021,8 @@ S64 LLTextureCache::initCache(ELLPath location, S64 max_size, BOOL read_only)
readHeaderCache();
purgeTextures(true); // calc mTexturesSize and make some room in the texture cache if we need it
+ llassert_always(getPending() == 0) ; //should not start accessing the texture cache before initialized.
+
return max_size; // unused cache space
}
@@ -1108,7 +1145,16 @@ S32 LLTextureCache::openAndReadEntry(const LLUUID& id, Entry& entry, bool create
{
readEntryFromHeaderImmediately(idx, entry) ;
}
- llassert_always(entry.mImageSize > entry.mBodySize);
+ if(entry.mImageSize <= entry.mBodySize)//it happens on 64-bit systems, do not know why
+ {
+ llwarns << "corrupted entry: " << id << " entry image size: " << entry.mImageSize << " entry body size: " << entry.mBodySize << llendl ;
+
+ //erase this entry and the cached texture from the cache.
+ std::string tex_filename = getTextureFileName(id);
+ removeEntry(idx, entry, tex_filename) ;
+ mUpdatedEntryMap.erase(idx) ;
+ idx = -1 ;
+ }
}
return idx;
}
@@ -1453,9 +1499,9 @@ void LLTextureCache::purgeAllTextures(bool purge_directories)
}
if (purge_directories)
{
- gDirUtilp->deleteFilesInDir(mTexturesDirName,mask);
+ gDirUtilp->deleteFilesInDir(mTexturesDirName, mask);
LLFile::rmdir(mTexturesDirName);
- }
+ }
}
mHeaderIDMap.clear();
mTexturesSizeMap.clear();
diff --git a/indra/newview/lltexturecache.h b/indra/newview/lltexturecache.h
index ca8815ee7e..5dc06ff401 100644
--- a/indra/newview/lltexturecache.h
+++ b/indra/newview/lltexturecache.h
@@ -110,7 +110,8 @@ public:
/*virtual*/ S32 update(U32 max_time_ms);
void purgeCache(ELLPath location);
- S64 initCache(ELLPath location, S64 maxsize, BOOL read_only);
+ void setReadOnly(BOOL read_only) ;
+ S64 initCache(ELLPath location, S64 maxsize, BOOL disable_texture_cache);
handle_t readFromCache(const std::string& local_filename, const LLUUID& id, U32 priority, S32 offset, S32 size,
ReadResponder* responder);
diff --git a/indra/newview/lltoast.cpp b/indra/newview/lltoast.cpp
index 60a89c02e4..60657d3fa7 100644
--- a/indra/newview/lltoast.cpp
+++ b/indra/newview/lltoast.cpp
@@ -41,6 +41,16 @@
using namespace LLNotificationsUI;
+/*virtual*/
+BOOL LLToastLifeTimer::tick()
+{
+ if (mEventTimer.hasExpired())
+ {
+ mToast->expire();
+ }
+ return FALSE;
+}
+
//--------------------------------------------------------------------------
LLToast::Params::Params()
: can_fade("can_fade", true),
@@ -57,7 +67,6 @@ LLToast::Params::Params()
LLToast::LLToast(const LLToast::Params& p)
: LLModalDialog(LLSD(), p.is_modal),
mPanel(p.panel),
- mToastLifetime(p.lifetime_secs),
mToastFadingTime(p.fading_time_secs),
mNotificationID(p.notif_id),
mSessionID(p.session_id),
@@ -71,6 +80,8 @@ LLToast::LLToast(const LLToast::Params& p)
mIsTip(p.is_tip),
mWrapperPanel(NULL)
{
+ mTimer.reset(new LLToastLifeTimer(this, p.lifetime_secs));
+
LLUICtrlFactory::getInstance()->buildFloater(this, "panel_toast.xml", NULL);
setCanDrag(FALSE);
@@ -105,7 +116,7 @@ BOOL LLToast::postBuild()
{
if(!mCanFade)
{
- mTimer.stop();
+ mTimer->stop();
}
if (mIsTip)
@@ -145,38 +156,10 @@ LLToast::~LLToast()
}
//--------------------------------------------------------------------------
-void LLToast::setAndStartTimer(F32 period)
-{
- if(mCanFade)
- {
- mToastLifetime = period;
- mTimer.start();
- }
-}
-
-//--------------------------------------------------------------------------
-bool LLToast::lifetimeHasExpired()
-{
- if (mTimer.getStarted())
- {
- F32 elapsed_time = mTimer.getElapsedTimeF32();
- if ((mToastLifetime - elapsed_time) <= mToastFadingTime)
- {
- setBackgroundOpaque(FALSE);
- }
- if (elapsed_time > mToastLifetime)
- {
- return true;
- }
- }
- return false;
-}
-
-//--------------------------------------------------------------------------
void LLToast::hide()
{
setVisible(FALSE);
- mTimer.stop();
+ mTimer->stop();
mIsHidden = true;
mOnFadeSignal(this);
}
@@ -222,12 +205,13 @@ void LLToast::setCanFade(bool can_fade)
{
mCanFade = can_fade;
if(!mCanFade)
- mTimer.stop();
+ mTimer->stop();
}
//--------------------------------------------------------------------------
-void LLToast::tick()
+void LLToast::expire()
{
+ // if toast has fade property - hide it
if(mCanFade)
{
hide();
@@ -263,11 +247,6 @@ void LLToast::insertPanel(LLPanel* panel)
//--------------------------------------------------------------------------
void LLToast::draw()
{
- if(lifetimeHasExpired())
- {
- tick();
- }
-
LLFloater::draw();
if(!isBackgroundVisible())
@@ -300,9 +279,9 @@ void LLToast::setVisible(BOOL show)
if(show)
{
setBackgroundOpaque(TRUE);
- if(!mTimer.getStarted() && mCanFade)
+ if(!mTimer->getStarted() && mCanFade)
{
- mTimer.start();
+ mTimer->start();
}
LLModalDialog::setFrontmost(FALSE);
}
diff --git a/indra/newview/lltoast.h b/indra/newview/lltoast.h
index 64855020a9..20198a9398 100644
--- a/indra/newview/lltoast.h
+++ b/indra/newview/lltoast.h
@@ -36,7 +36,7 @@
#include "llpanel.h"
#include "llmodaldialog.h"
-#include "lltimer.h"
+#include "lleventtimer.h"
#include "llnotificationptr.h"
#include "llviewercontrol.h"
@@ -48,12 +48,32 @@
namespace LLNotificationsUI
{
+class LLToast;
+/**
+ * Timer for toasts.
+ */
+class LLToastLifeTimer: public LLEventTimer
+{
+public:
+ LLToastLifeTimer(LLToast* toast, F32 period) : mToast(toast), LLEventTimer(period){}
+
+ /*virtual*/
+ BOOL tick();
+ void stop() { mEventTimer.stop(); }
+ void start() { mEventTimer.start(); }
+ void restart() {mEventTimer.reset(); }
+ BOOL getStarted() { return mEventTimer.getStarted(); }
+private :
+ LLToast* mToast;
+};
+
/**
* Represents toast pop-up.
* This is a parent view for all toast panels.
*/
class LLToast : public LLModalDialog
{
+ friend class LLToastLifeTimer;
public:
typedef boost::function<void (LLToast* toast)> toast_callback_t;
typedef boost::signals2::signal<void (LLToast* toast)> toast_signal_t;
@@ -107,12 +127,10 @@ public:
LLPanel* getPanel() { return mPanel; }
// enable/disable Toast's Hide button
void setHideButtonEnabled(bool enabled);
- // initialize and start Toast's timer
- void setAndStartTimer(F32 period);
//
- void resetTimer() { mTimer.start(); }
+ void resetTimer() { mTimer->start(); }
//
- void stopTimer() { mTimer.stop(); }
+ void stopTimer() { mTimer->stop(); }
//
virtual void draw();
//
@@ -176,10 +194,7 @@ private:
void handleTipToastClick(S32 x, S32 y, MASK mask);
- // check timer
- bool lifetimeHasExpired();
- // on timer finished function
- void tick();
+ void expire();
LLUUID mNotificationID;
LLUUID mSessionID;
@@ -188,8 +203,8 @@ private:
LLPanel* mWrapperPanel;
// timer counts a lifetime of a toast
- LLTimer mTimer;
- F32 mToastLifetime; // in seconds
+ std::auto_ptr<LLToastLifeTimer> mTimer;
+
F32 mToastFadingTime; // in seconds
LLPanel* mPanel;
diff --git a/indra/newview/lltoastalertpanel.cpp b/indra/newview/lltoastalertpanel.cpp
index c3ccb9380b..986ccdf19b 100644
--- a/indra/newview/lltoastalertpanel.cpp
+++ b/indra/newview/lltoastalertpanel.cpp
@@ -281,9 +281,6 @@ LLToastAlertPanel::LLToastAlertPanel( LLNotificationPtr notification, bool modal
mLineEditor->setText(edit_text_contents);
mLineEditor->setMaxTextLength(STD_STRING_STR_LEN - 1);
- // make sure all edit keys get handled properly (DEV-22396)
- mLineEditor->setHandleEditKeysDirectly(TRUE);
-
LLToastPanel::addChild(mLineEditor);
mLineEditor->setDrawAsterixes(is_password);
diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp
index 84b2caeddd..798de3ab8c 100644
--- a/indra/newview/lltooldraganddrop.cpp
+++ b/indra/newview/lltooldraganddrop.cpp
@@ -50,6 +50,7 @@
#include "llhudeffecttrail.h"
#include "llimview.h"
#include "llinventorybridge.h"
+#include "llinventorydefines.h"
#include "llinventoryfunctions.h"
#include "llmutelist.h"
#include "llpreviewnotecard.h"
@@ -267,8 +268,8 @@ void LLCategoryDropObserver::done()
{
// *FIX: coalesce these...
LLInventoryItem* item = NULL;
- item_ref_t::iterator it = mComplete.begin();
- item_ref_t::iterator end = mComplete.end();
+ uuid_vec_t::iterator it = mComplete.begin();
+ uuid_vec_t::iterator end = mComplete.end();
for(; it < end; ++it)
{
item = gInventory.getItem(*it);
@@ -305,8 +306,8 @@ void LLCategoryDropDescendentsObserver::done()
{
gInventory.removeObserver(this);
- uuid_vec_t::iterator it = mCompleteFolders.begin();
- uuid_vec_t::iterator end = mCompleteFolders.end();
+ uuid_vec_t::iterator it = mComplete.begin();
+ uuid_vec_t::iterator end = mComplete.end();
LLViewerInventoryCategory::cat_array_t cats;
LLViewerInventoryItem::item_array_t items;
for(; it != end; ++it)
@@ -326,12 +327,12 @@ void LLCategoryDropDescendentsObserver::done()
{
unique_ids.insert(items.get(i)->getUUID());
}
- LLInventoryFetchObserver::item_ref_t ids;
- std::back_insert_iterator<LLInventoryFetchObserver::item_ref_t> copier(ids);
+ uuid_vec_t ids;
+ std::back_insert_iterator<uuid_vec_t> copier(ids);
std::copy(unique_ids.begin(), unique_ids.end(), copier);
LLCategoryDropObserver* dropper;
dropper = new LLCategoryDropObserver(mObjectID, mSource);
- dropper->fetchItems(ids);
+ dropper->fetch(ids);
if (dropper->isEverythingComplete())
{
dropper->done();
@@ -413,9 +414,12 @@ void LLToolDragAndDrop::setDragStart(S32 x, S32 y)
BOOL LLToolDragAndDrop::isOverThreshold(S32 x,S32 y)
{
- const S32 MIN_MANHATTAN_DIST = 3;
- S32 manhattan_dist = llabs( x - mDragStartX ) + llabs( y - mDragStartY );
- return manhattan_dist >= MIN_MANHATTAN_DIST;
+ static LLCachedControl<S32> drag_and_drop_threshold(gSavedSettings,"DragAndDropDistanceThreshold");
+
+ S32 mouse_delta_x = x - mDragStartX;
+ S32 mouse_delta_y = y - mDragStartY;
+
+ return (mouse_delta_x * mouse_delta_x) + (mouse_delta_y * mouse_delta_y) > drag_and_drop_threshold * drag_and_drop_threshold;
}
void LLToolDragAndDrop::beginDrag(EDragAndDropType type,
@@ -2636,7 +2640,7 @@ EAcceptance LLToolDragAndDrop::dad3dUpdateInventoryCategory(
// If every item is accepted, send it on
if (drop && (ACCEPT_YES_COPY_SINGLE <= rv))
{
- LLInventoryFetchObserver::item_ref_t ids;
+ uuid_vec_t ids;
for (LLInventoryModel::item_array_t::const_iterator item_iter = items.begin();
item_iter != items.end();
++item_iter)
@@ -2645,7 +2649,7 @@ EAcceptance LLToolDragAndDrop::dad3dUpdateInventoryCategory(
ids.push_back(item->getUUID());
}
LLCategoryDropObserver* dropper = new LLCategoryDropObserver(obj->getID(), mSource);
- dropper->fetchItems(ids);
+ dropper->fetch(ids);
if(dropper->isEverythingComplete())
{
dropper->done();
diff --git a/indra/newview/lltoolmorph.cpp b/indra/newview/lltoolmorph.cpp
index 969049ee65..22176c037f 100644
--- a/indra/newview/lltoolmorph.cpp
+++ b/indra/newview/lltoolmorph.cpp
@@ -108,6 +108,12 @@ LLVisualParamHint::~LLVisualParamHint()
LLVisualParamHint::sInstances.erase( this );
}
+//virtual
+S8 LLVisualParamHint::getType() const
+{
+ return LLViewerDynamicTexture::LL_VISUAL_PARAM_HINT ;
+}
+
//-----------------------------------------------------------------------------
// static
// requestHintUpdates()
@@ -287,6 +293,12 @@ LLVisualParamReset::LLVisualParamReset() : LLViewerDynamicTexture(1, 1, 1, ORDER
{
}
+//virtual
+S8 LLVisualParamReset::getType() const
+{
+ return LLViewerDynamicTexture::LL_VISUAL_PARAM_RESET ;
+}
+
//-----------------------------------------------------------------------------
// render()
//-----------------------------------------------------------------------------
diff --git a/indra/newview/lltoolmorph.h b/indra/newview/lltoolmorph.h
index b7df718ba2..c332c296bd 100644
--- a/indra/newview/lltoolmorph.h
+++ b/indra/newview/lltoolmorph.h
@@ -64,6 +64,8 @@ public:
LLViewerVisualParam *param,
F32 param_weight);
+ /*virtual*/ S8 getType() const ;
+
BOOL needsRender();
void preRender(BOOL clear_depth);
BOOL render();
@@ -107,6 +109,7 @@ protected:
public:
LLVisualParamReset();
/*virtual */ BOOL render();
+ /*virtual*/ S8 getType() const ;
static BOOL sDirty;
};
diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index 84c463495b..a9bbee784d 100644
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -181,10 +181,10 @@ BOOL LLToolPie::pickLeftMouseDownCallback()
parent = object->getRootEdit();
}
-
- BOOL touchable = (object && object->flagHandleTouch())
- || (parent && parent->flagHandleTouch());
-
+ if (handleMediaClick(mPick))
+ {
+ return TRUE;
+ }
// If it's a left-click, and we have a special action, do it.
if (useClickAction(mask, object, parent))
@@ -286,14 +286,12 @@ BOOL LLToolPie::pickLeftMouseDownCallback()
}
}
- if (handleMediaClick(mPick))
- {
- return TRUE;
- }
-
// put focus back "in world"
gFocusMgr.setKeyboardFocus(NULL);
+ BOOL touchable = (object && object->flagHandleTouch())
+ || (parent && parent->flagHandleTouch());
+
// Switch to grab tool if physical or triggerable
if (object &&
!object->isAvatar() &&
@@ -513,21 +511,22 @@ BOOL LLToolPie::handleHover(S32 x, S32 y, MASK mask)
}
LLViewerObject* click_action_object = click_action_pick.getObject();
- if (click_action_object && useClickAction(mask, click_action_object, click_action_object->getRootEdit()))
+ if (handleMediaHover(mHoverPick))
{
+ // *NOTE: If you think the hover glow conflicts with the media outline, you
+ // could disable it here.
show_highlight = true;
- ECursorType cursor = cursor_from_object(click_action_object);
- gViewerWindow->setCursor(cursor);
+ // cursor set by media object
lldebugst(LLERR_USER_INPUT) << "hover handled by LLToolPie (inactive)" << llendl;
}
- else if (handleMediaHover(mHoverPick))
+ else if (click_action_object && useClickAction(mask, click_action_object, click_action_object->getRootEdit()))
{
- // *NOTE: If you think the hover glow conflicts with the media outline, you
- // could disable it here.
show_highlight = true;
- // cursor set by media object
+ ECursorType cursor = cursor_from_object(click_action_object);
+ gViewerWindow->setCursor(cursor);
lldebugst(LLERR_USER_INPUT) << "hover handled by LLToolPie (inactive)" << llendl;
}
+
else if ((object && !object->isAvatar() && object->usePhysics())
|| (parent && !parent->isAvatar() && parent->usePhysics()))
{
diff --git a/indra/newview/lltracker.cpp b/indra/newview/lltracker.cpp
index 9a69adae31..cc074287c4 100644
--- a/indra/newview/lltracker.cpp
+++ b/indra/newview/lltracker.cpp
@@ -39,6 +39,7 @@
#include "llgl.h"
#include "llrender.h"
#include "llinventory.h"
+#include "llinventorydefines.h"
#include "llpointer.h"
#include "llstring.h"
#include "lluuid.h"
@@ -742,10 +743,10 @@ void LLTracker::setLandmarkVisited()
LLInventoryItem* i = gInventory.getItem( mTrackedLandmarkItemID );
LLViewerInventoryItem* item = (LLViewerInventoryItem*)i;
if ( item
- && !(item->getFlags()&LLInventoryItem::II_FLAGS_LANDMARK_VISITED))
+ && !(item->getFlags()&LLInventoryItemFlags::II_FLAGS_LANDMARK_VISITED))
{
U32 flags = item->getFlags();
- flags |= LLInventoryItem::II_FLAGS_LANDMARK_VISITED;
+ flags |= LLInventoryItemFlags::II_FLAGS_LANDMARK_VISITED;
item->setFlags(flags);
LLMessageSystem* msg = gMessageSystem;
msg->newMessage("ChangeInventoryItemFlags");
@@ -798,7 +799,7 @@ void LLTracker::cacheLandmarkPosition()
mLandmarkHasBeenVisited = FALSE;
LLInventoryItem* item = gInventory.getItem(mTrackedLandmarkItemID);
if ( item
- && item->getFlags()&LLInventoryItem::II_FLAGS_LANDMARK_VISITED)
+ && item->getFlags()&LLInventoryItemFlags::II_FLAGS_LANDMARK_VISITED)
{
mLandmarkHasBeenVisited = TRUE;
}
diff --git a/indra/newview/llurllineeditorctrl.cpp b/indra/newview/llurllineeditorctrl.cpp
index 258c3ddd75..1d2687a8c2 100644
--- a/indra/newview/llurllineeditorctrl.cpp
+++ b/indra/newview/llurllineeditorctrl.cpp
@@ -72,7 +72,7 @@ void LLURLLineEditor::cut()
if( need_to_rollback )
{
rollback.doRollback( this );
- reportBadKeystroke();
+ LLUI::reportBadKeystroke();
}
else
if( mKeystrokeCallback )
@@ -96,8 +96,3 @@ void LLURLLineEditor::copyEscapedURLToClipboard()
gClipboard.copyFromString( text_to_copy );
}
-// Makes UISndBadKeystroke sound
-void LLURLLineEditor::reportBadKeystroke()
-{
- make_ui_sound("UISndBadKeystroke");
-}
diff --git a/indra/newview/llurllineeditorctrl.h b/indra/newview/llurllineeditorctrl.h
index 618f29dfbf..ebe417e855 100644
--- a/indra/newview/llurllineeditorctrl.h
+++ b/indra/newview/llurllineeditorctrl.h
@@ -55,8 +55,6 @@ protected:
private:
// util function to escape selected text and copy it to clipboard
void copyEscapedURLToClipboard();
- // send a beep signal if keystroke is bad. As it is private at LLLineEditor we need own function
- void reportBadKeystroke();
// Helper class to do rollback if needed
class LLURLLineEditorRollback
diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
index 87a29e5301..3fa6b0c8c2 100644
--- a/indra/newview/llviewercontrol.cpp
+++ b/indra/newview/llviewercontrol.cpp
@@ -74,6 +74,7 @@
#include "llnavigationbar.h"
#include "llfloatertools.h"
#include "llpaneloutfitsinventory.h"
+#include "llpanellogin.h"
#ifdef TOGGLE_HACKED_GODLIKE_VIEWER
BOOL gHackGodmode = FALSE;
@@ -403,10 +404,7 @@ bool handleHighResSnapshotChanged(const LLSD& newvalue)
bool handleVoiceClientPrefsChanged(const LLSD& newvalue)
{
- if(gVoiceClient)
- {
- gVoiceClient->updateSettings();
- }
+ LLVoiceClient::getInstance()->updateSettings();
return true;
}
@@ -434,6 +432,12 @@ bool handleVelocityInterpolate(const LLSD& newvalue)
return true;
}
+bool handleForceShowGrid(const LLSD& newvalue)
+{
+ LLPanelLogin::refreshLocation( false );
+ return true;
+}
+
bool toggle_agent_pause(const LLSD& newvalue)
{
if ( newvalue.asBoolean() )
@@ -641,6 +645,7 @@ void settings_setup_listeners()
gSavedSettings.getControl("ShowNavbarFavoritesPanel")->getSignal()->connect(boost::bind(&toggle_show_favorites_panel, _2));
gSavedSettings.getControl("ShowDebugAppearanceEditor")->getSignal()->connect(boost::bind(&toggle_show_appearance_editor, _2));
gSavedSettings.getControl("ShowObjectRenderingCost")->getSignal()->connect(boost::bind(&toggle_show_object_render_cost, _2));
+ gSavedSettings.getControl("ForceShowGrid")->getSignal()->connect(boost::bind(&handleForceShowGrid, _2));
}
#if TEST_CACHED_CONTROL
diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp
index b42d25c1d8..8a891b1462 100644
--- a/indra/newview/llviewerinventory.cpp
+++ b/indra/newview/llviewerinventory.cpp
@@ -44,6 +44,7 @@
#include "llfolderview.h"
#include "llviewercontrol.h"
#include "llconsole.h"
+#include "llinventorydefines.h"
#include "llinventoryfunctions.h"
#include "llinventorymodel.h"
#include "llinventorymodelbackgroundfetch.h"
@@ -515,7 +516,7 @@ void LLViewerInventoryCategory::removeFromServer( void )
gAgent.sendReliableMessage();
}
-bool LLViewerInventoryCategory::fetchDescendents()
+bool LLViewerInventoryCategory::fetch()
{
if((VERSION_UNKNOWN == mVersion)
&& mDescendentsRequested.hasExpired()) //Expired check prevents multiple downloads.
@@ -1074,7 +1075,7 @@ const std::string NEW_NOTECARD_NAME = "New Note"; // *TODO:Translate? (probably
const std::string NEW_GESTURE_NAME = "New Gesture"; // *TODO:Translate? (probably not)
// ! REFACTOR ! Really need to refactor this so that it's not a bunch of if-then statements...
-void menu_create_inventory_item(LLFolderView* folder, LLFolderBridge *bridge, const LLSD& userdata, const LLUUID& default_parent_uuid)
+void menu_create_inventory_item(LLFolderView* root, LLFolderBridge *bridge, const LLSD& userdata, const LLUUID& default_parent_uuid)
{
std::string type_name = userdata.asString();
@@ -1098,7 +1099,7 @@ void menu_create_inventory_item(LLFolderView* folder, LLFolderBridge *bridge, co
LLUUID category = gInventory.createNewCategory(parent_id, preferred_type, LLStringUtil::null);
gInventory.notifyObservers();
- folder->setSelectionByID(category, TRUE);
+ root->setSelectionByID(category, TRUE);
}
else if ("lsl" == type_name)
{
@@ -1143,7 +1144,7 @@ void menu_create_inventory_item(LLFolderView* folder, LLFolderBridge *bridge, co
llwarns << "Can't create unrecognized type " << type_name << llendl;
}
}
- folder->setNeedsAutoRename(TRUE);
+ root->setNeedsAutoRename(TRUE);
}
LLAssetType::EType LLViewerInventoryItem::getType() const
@@ -1478,7 +1479,7 @@ EWearableType LLViewerInventoryItem::getWearableType() const
llwarns << "item is not a wearable" << llendl;
return WT_INVALID;
}
- return EWearableType(getFlags() & LLInventoryItem::II_FLAGS_WEARABLES_MASK);
+ return EWearableType(getFlags() & LLInventoryItemFlags::II_FLAGS_WEARABLES_MASK);
}
diff --git a/indra/newview/llviewerinventory.h b/indra/newview/llviewerinventory.h
index 3d3f80b9b5..2db88c2ff8 100644
--- a/indra/newview/llviewerinventory.h
+++ b/indra/newview/llviewerinventory.h
@@ -212,7 +212,7 @@ public:
void setVersion(S32 version) { mVersion = version; }
// Returns true if a fetch was issued.
- bool fetchDescendents();
+ bool fetch();
// used to help make cacheing more robust - for example, if
// someone is getting 4 packets but logs out after 3. the viewer
@@ -356,7 +356,7 @@ void copy_inventory_from_notecard(const LLUUID& object_id,
U32 callback_id = 0);
-void menu_create_inventory_item(LLFolderView* folder,
+void menu_create_inventory_item(LLFolderView* root,
LLFolderBridge* bridge,
const LLSD& userdata,
const LLUUID& default_parent_uuid = LLUUID::null);
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index d3eed40f25..170eb7ae86 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -1473,11 +1473,6 @@ LLViewerMediaImpl::LLViewerMediaImpl( const LLUUID& texture_id,
//////////////////////////////////////////////////////////////////////////////////////////
LLViewerMediaImpl::~LLViewerMediaImpl()
{
- if( gEditMenuHandler == this )
- {
- gEditMenuHandler = NULL;
- }
-
destroyMediaSource();
LLViewerMediaTexture::removeMediaImplFromTexture(mTextureId) ;
@@ -2973,7 +2968,13 @@ void LLViewerMediaImpl::calculateInterest()
if(!mObjectList.empty())
{
// Just use the first object in the list. We could go through the list and find the closest object, but this should work well enough.
- LLVector3d global_delta = gAgent.getPositionGlobal() - (*mObjectList.begin())->getPositionGlobal();
+ std::list< LLVOVolume* >::iterator iter = mObjectList.begin() ;
+ LLVOVolume* objp = *iter ;
+ llassert_always(objp != NULL) ;
+
+ LLVector3d obj_global = objp->getPositionGlobal() ;
+ LLVector3d agent_global = gAgent.getPositionGlobal() ;
+ LLVector3d global_delta = agent_global - obj_global ;
mProximityDistance = global_delta.magVecSquared(); // use distance-squared because it's cheaper and sorts the same.
}
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 6a83f9cb35..add71c88cc 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -73,6 +73,7 @@
#include "llhudmanager.h"
#include "llimview.h"
#include "llinventorybridge.h"
+#include "llinventorydefines.h"
#include "llinventoryfunctions.h"
#include "llpanellogin.h"
#include "llpanelblockedlist.h"
@@ -136,6 +137,7 @@ extern BOOL gDebugWindowProc;
LLMenuBarGL *gMenuBarView = NULL;
LLViewerMenuHolderGL *gMenuHolder = NULL;
LLMenuGL *gPopupMenuView = NULL;
+LLMenuGL *gEditMenu = NULL;
LLMenuBarGL *gLoginMenuBarView = NULL;
// Pie menus
@@ -382,8 +384,10 @@ void init_menus()
///
/// Context menus
///
+
const widget_registry_t& registry =
LLViewerMenuHolderGL::child_registry_t::instance();
+ gEditMenu = LLUICtrlFactory::createFromFile<LLMenuGL>("menu_edit.xml", gMenuHolder, registry);
gMenuAvatarSelf = LLUICtrlFactory::createFromFile<LLContextMenu>(
"menu_avatar_self.xml", gMenuHolder, registry);
gMenuAvatarOther = LLUICtrlFactory::createFromFile<LLContextMenu>(
@@ -3859,15 +3863,15 @@ BOOL enable_deed_object_to_group(void*)
* No longer able to support viewer side manipulations in this way
*
void god_force_inv_owner_permissive(LLViewerObject* object,
- InventoryObjectList* inventory,
+ LLInventoryObject::object_list_t* inventory,
S32 serial_num,
void*)
{
typedef std::vector<LLPointer<LLViewerInventoryItem> > item_array_t;
item_array_t items;
- InventoryObjectList::const_iterator inv_it = inventory->begin();
- InventoryObjectList::const_iterator inv_end = inventory->end();
+ LLInventoryObject::object_list_t::const_iterator inv_it = inventory->begin();
+ LLInventoryObject::object_list_t::const_iterator inv_end = inventory->end();
for ( ; inv_it != inv_end; ++inv_it)
{
if(((*inv_it)->getType() != LLAssetType::AT_CATEGORY))
@@ -5182,10 +5186,6 @@ void toggle_debug_menus(void*)
{
BOOL visible = ! gSavedSettings.getBOOL("UseDebugMenus");
gSavedSettings.setBOOL("UseDebugMenus", visible);
- if(visible)
- {
- //LLFirstUse::useDebugMenus();
- }
show_debug_menus();
}
@@ -5330,6 +5330,16 @@ class LLWorldCreateLandmark : public view_listener_t
}
};
+class LLWorldPlaceProfile : public view_listener_t
+{
+ bool handleEvent(const LLSD& userdata)
+ {
+ LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "agent"));
+
+ return true;
+ }
+};
+
void handle_look_at_selection(const LLSD& param)
{
const F32 PADDING_FACTOR = 1.75f;
@@ -6153,11 +6163,11 @@ class LLAttachmentEnableDrop : public view_listener_t
// if a fetch is already out there (being sent from a slow sim)
// we refetch and there are 2 fetches
LLWornItemFetchedObserver* wornItemFetched = new LLWornItemFetchedObserver();
- LLInventoryFetchObserver::item_ref_t items; //add item to the inventory item to be fetched
+ uuid_vec_t items; //add item to the inventory item to be fetched
items.push_back((*attachment_iter)->getItemID());
- wornItemFetched->fetchItems(items);
+ wornItemFetched->fetch(items);
gInventory.addObserver(wornItemFetched);
}
}
@@ -6971,7 +6981,7 @@ void handle_grab_texture(void* data)
name,
LLStringUtil::null,
LLSaleInfo::DEFAULT,
- LLInventoryItem::II_FLAGS_NONE,
+ LLInventoryItemFlags::II_FLAGS_NONE,
creation_date_now);
item->updateServer(TRUE);
@@ -7739,6 +7749,7 @@ void initialize_menus()
commit.add("World.Chat", boost::bind(&handle_chat, (void*)NULL));
view_listener_t::addMenu(new LLWorldAlwaysRun(), "World.AlwaysRun");
view_listener_t::addMenu(new LLWorldCreateLandmark(), "World.CreateLandmark");
+ view_listener_t::addMenu(new LLWorldPlaceProfile(), "World.PlaceProfile");
view_listener_t::addMenu(new LLWorldSetHomeLocation(), "World.SetHomeLocation");
view_listener_t::addMenu(new LLWorldTeleportHome(), "World.TeleportHome");
view_listener_t::addMenu(new LLWorldSetAway(), "World.SetAway");
diff --git a/indra/newview/llviewermenu.h b/indra/newview/llviewermenu.h
index d3c34f0de4..d72ea00077 100644
--- a/indra/newview/llviewermenu.h
+++ b/indra/newview/llviewermenu.h
@@ -157,6 +157,7 @@ extern const std::string SAVE_INTO_INVENTORY;
extern LLMenuBarGL* gMenuBarView;
//extern LLView* gMenuBarHolder;
+extern LLMenuGL* gEditMenu;
extern LLMenuGL* gPopupMenuView;
extern LLViewerMenuHolderGL* gMenuHolder;
extern LLMenuBarGL* gLoginMenuBarView;
diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp
index e436341b41..fb51344269 100644
--- a/indra/newview/llviewermenufile.cpp
+++ b/indra/newview/llviewermenufile.cpp
@@ -531,7 +531,6 @@ class LLFileTakeSnapshotToDisk : public view_listener_t
{
gViewerWindow->playSnapshotAnimAndSound();
- LLImageBase::setSizeOverride(TRUE);
LLPointer<LLImageFormatted> formatted;
switch(LLFloaterSnapshot::ESnapshotFormat(gSavedSettings.getS32("SnapshotFormat")))
{
@@ -546,12 +545,12 @@ class LLFileTakeSnapshotToDisk : public view_listener_t
break;
default:
llwarns << "Unknown Local Snapshot format" << llendl;
- LLImageBase::setSizeOverride(FALSE);
return true;
}
+ formatted->enableOverSize() ;
formatted->encode(raw, 0);
- LLImageBase::setSizeOverride(FALSE);
+ formatted->disableOverSize() ;
gViewerWindow->saveImageNumbered(formatted);
}
return true;
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index cde78e1cc8..cb3f3c8edd 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -41,6 +41,7 @@
#include "lleventtimer.h"
#include "llfloaterreg.h"
#include "llfollowcamparams.h"
+#include "llinventorydefines.h"
#include "llregionhandle.h"
#include "llsdserialize.h"
#include "llteleportflags.h"
@@ -1203,10 +1204,10 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD&
// This is an offer from an agent. In this case, the back
// end has already copied the items into your inventory,
// so we can fetch it out of our inventory.
- LLInventoryFetchObserver::item_ref_t items;
+ uuid_vec_t items;
items.push_back(mObjectID);
LLOpenAgentOffer* open_agent_offer = new LLOpenAgentOffer(from_string);
- open_agent_offer->fetchItems(items);
+ open_agent_offer->fetch(items);
if(catp || (itemp && itemp->isComplete()))
{
open_agent_offer->done();
@@ -1601,10 +1602,10 @@ void inventory_offer_handler(LLOfferInfo* info)
p.name = "UserGiveItem";
// Prefetch the item into your local inventory.
- LLInventoryFetchObserver::item_ref_t items;
+ uuid_vec_t items;
items.push_back(info->mObjectID);
LLInventoryFetchObserver* fetch_item = new LLInventoryFetchObserver();
- fetch_item->fetchItems(items);
+ fetch_item->fetch(items);
if(fetch_item->isEverythingComplete())
{
fetch_item->done();
@@ -2120,10 +2121,10 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
if (is_muted)
{
// Prefetch the offered item so that it can be discarded by the appropriate observer. (EXT-4331)
- LLInventoryFetchObserver::item_ref_t items;
+ uuid_vec_t items;
items.push_back(info->mObjectID);
LLInventoryFetchObserver* fetch_item = new LLInventoryFetchObserver();
- fetch_item->fetchItems(items);
+ fetch_item->fetch(items);
delete fetch_item;
// Same as closing window
@@ -2857,8 +2858,8 @@ public:
LLInventoryModel::cat_array_t land_cats;
LLInventoryModel::item_array_t land_items;
- uuid_vec_t::iterator it = mCompleteFolders.begin();
- uuid_vec_t::iterator end = mCompleteFolders.end();
+ uuid_vec_t::iterator it = mComplete.begin();
+ uuid_vec_t::iterator end = mComplete.end();
for(; it != end; ++it)
{
gInventory.collectDescendentsIf(
@@ -2929,7 +2930,7 @@ BOOL LLPostTeleportNotifiers::tick()
if(!folders.empty())
{
LLFetchInWelcomeArea* fetcher = new LLFetchInWelcomeArea;
- fetcher->fetchDescendents(folders);
+ fetcher->fetch(folders);
if(fetcher->isEverythingComplete())
{
fetcher->done();
@@ -5230,7 +5231,7 @@ void process_derez_container(LLMessageSystem *msg, void**)
}
void container_inventory_arrived(LLViewerObject* object,
- InventoryObjectList* inventory,
+ LLInventoryObject::object_list_t* inventory,
S32 serial_num,
void* data)
{
@@ -5250,8 +5251,8 @@ void container_inventory_arrived(LLViewerObject* object,
LLFolderType::FT_NONE,
LLTrans::getString("AcquiredItems"));
- InventoryObjectList::const_iterator it = inventory->begin();
- InventoryObjectList::const_iterator end = inventory->end();
+ LLInventoryObject::object_list_t::const_iterator it = inventory->begin();
+ LLInventoryObject::object_list_t::const_iterator end = inventory->end();
for ( ; it != end; ++it)
{
if ((*it)->getType() != LLAssetType::AT_CATEGORY)
@@ -5287,7 +5288,7 @@ void container_inventory_arrived(LLViewerObject* object,
{
// we're going to get one fake root category as well as the
// one actual object
- InventoryObjectList::iterator it = inventory->begin();
+ LLInventoryObject::object_list_t::iterator it = inventory->begin();
if ((*it)->getType() == LLAssetType::AT_CATEGORY)
{
diff --git a/indra/newview/llviewermessage.h b/indra/newview/llviewermessage.h
index 0ba4ac0c8d..4015cca77b 100644
--- a/indra/newview/llviewermessage.h
+++ b/indra/newview/llviewermessage.h
@@ -129,7 +129,7 @@ void process_frozen_message(LLMessageSystem* msg, void**);
void process_derez_container(LLMessageSystem *msg, void**);
void container_inventory_arrived(LLViewerObject* object,
- std::list<LLPointer<LLInventoryObject> >* inventory, //InventoryObjectList
+ std::list<LLPointer<LLInventoryObject> >* inventory, //LLInventoryObject::object_list_t
S32 serial_num,
void* data);
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index 7532102378..6bd3ceb8a8 100644
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -46,6 +46,7 @@
#include "llfontgl.h"
#include "llframetimer.h"
#include "llinventory.h"
+#include "llinventorydefines.h"
#include "llmaterialtable.h"
#include "llmutelist.h"
#include "llnamevalue.h"
@@ -2179,8 +2180,8 @@ void LLViewerObject::deleteInventoryItem(const LLUUID& item_id)
{
if(mInventory)
{
- InventoryObjectList::iterator it = mInventory->begin();
- InventoryObjectList::iterator end = mInventory->end();
+ LLInventoryObject::object_list_t::iterator it = mInventory->begin();
+ LLInventoryObject::object_list_t::iterator end = mInventory->end();
for( ; it != end; ++it )
{
if((*it)->getUUID() == item_id)
@@ -2490,7 +2491,7 @@ void LLViewerObject::processTaskInv(LLMessageSystem* msg, void** user_data)
}
else
{
- object->mInventory = new InventoryObjectList();
+ object->mInventory = new LLInventoryObject::object_list_t();
}
LLPointer<LLInventoryObject> obj;
obj = new LLInventoryObject(object->mID, LLUUID::null,
@@ -2546,7 +2547,7 @@ void LLViewerObject::loadTaskInvFile(const std::string& filename)
}
else
{
- mInventory = new InventoryObjectList;
+ mInventory = new LLInventoryObject::object_list_t;
}
while(ifs.good())
{
@@ -2679,8 +2680,8 @@ LLInventoryObject* LLViewerObject::getInventoryObject(const LLUUID& item_id)
LLInventoryObject* rv = NULL;
if(mInventory)
{
- InventoryObjectList::iterator it = mInventory->begin();
- InventoryObjectList::iterator end = mInventory->end();
+ LLInventoryObject::object_list_t::iterator it = mInventory->begin();
+ LLInventoryObject::object_list_t::iterator end = mInventory->end();
for ( ; it != end; ++it)
{
if((*it)->getUUID() == item_id)
@@ -2693,12 +2694,12 @@ LLInventoryObject* LLViewerObject::getInventoryObject(const LLUUID& item_id)
return rv;
}
-void LLViewerObject::getInventoryContents(InventoryObjectList& objects)
+void LLViewerObject::getInventoryContents(LLInventoryObject::object_list_t& objects)
{
if(mInventory)
{
- InventoryObjectList::iterator it = mInventory->begin();
- InventoryObjectList::iterator end = mInventory->end();
+ LLInventoryObject::object_list_t::iterator it = mInventory->begin();
+ LLInventoryObject::object_list_t::iterator end = mInventory->end();
for( ; it != end; ++it)
{
if ((*it)->getType() != LLAssetType::AT_CATEGORY)
@@ -2728,8 +2729,8 @@ LLViewerInventoryItem* LLViewerObject::getInventoryItemByAsset(const LLUUID& ass
{
LLViewerInventoryItem* item = NULL;
- InventoryObjectList::iterator it = mInventory->begin();
- InventoryObjectList::iterator end = mInventory->end();
+ LLInventoryObject::object_list_t::iterator it = mInventory->begin();
+ LLInventoryObject::object_list_t::iterator end = mInventory->end();
for( ; it != end; ++it)
{
LLInventoryObject* obj = *it;
@@ -4091,8 +4092,8 @@ S32 LLViewerObject::countInventoryContents(LLAssetType::EType type)
S32 count = 0;
if( mInventory )
{
- InventoryObjectList::const_iterator it = mInventory->begin();
- InventoryObjectList::const_iterator end = mInventory->end();
+ LLInventoryObject::object_list_t::const_iterator it = mInventory->begin();
+ LLInventoryObject::object_list_t::const_iterator end = mInventory->end();
for( ; it != end ; ++it )
{
if( (*it)->getType() == type )
diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h
index 8b542af773..594d7a0827 100644
--- a/indra/newview/llviewerobject.h
+++ b/indra/newview/llviewerobject.h
@@ -88,7 +88,7 @@ typedef enum e_object_update_type
// callback typedef for inventory
typedef void (*inventory_callback)(LLViewerObject*,
- InventoryObjectList*,
+ LLInventoryObject::object_list_t*,
S32 serial_num,
void*);
@@ -410,7 +410,7 @@ public:
void updateInventory(LLViewerInventoryItem* item, U8 key, bool is_new);
void updateInventoryLocal(LLInventoryItem* item, U8 key); // Update without messaging.
LLInventoryObject* getInventoryObject(const LLUUID& item_id);
- void getInventoryContents(InventoryObjectList& objects);
+ void getInventoryContents(LLInventoryObject::object_list_t& objects);
LLInventoryObject* getInventoryRoot();
LLViewerInventoryItem* getInventoryItemByAsset(const LLUUID& asset_id);
S16 getInventorySerial() const { return mInventorySerialNum; }
@@ -636,7 +636,7 @@ protected:
F32 mPixelArea; // Apparent area in pixels
// This is the object's inventory from the viewer's perspective.
- InventoryObjectList* mInventory;
+ LLInventoryObject::object_list_t* mInventory;
class LLInventoryCallbackInfo
{
public:
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index a0d0b9d490..8a68dd6ea7 100644
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -77,6 +77,9 @@ LLGLSLShader gObjectFullbrightShinyProgram;
LLGLSLShader gObjectShinyProgram;
LLGLSLShader gObjectShinyWaterProgram;
+//object hardware skinning shaders
+LLGLSLShader gSkinnedObjectSimpleProgram;
+
//environment shaders
LLGLSLShader gTerrainProgram;
LLGLSLShader gTerrainWaterProgram;
@@ -148,6 +151,7 @@ LLViewerShaderMgr::LLViewerShaderMgr() :
mShaderList.push_back(&gObjectSimpleProgram);
mShaderList.push_back(&gObjectFullbrightProgram);
mShaderList.push_back(&gObjectFullbrightShinyProgram);
+ mShaderList.push_back(&gSkinnedObjectSimpleProgram);
mShaderList.push_back(&gTerrainProgram);
mShaderList.push_back(&gTerrainWaterProgram);
mShaderList.push_back(&gObjectSimpleWaterProgram);
@@ -195,6 +199,7 @@ void LLViewerShaderMgr::initAttribsAndUniforms(void)
mReservedAttribs.push_back("materialColor");
mReservedAttribs.push_back("specularColor");
mReservedAttribs.push_back("binormal");
+ mReservedAttribs.push_back("object_weight");
mAvatarAttribs.reserve(5);
mAvatarAttribs.push_back("weight");
@@ -548,6 +553,9 @@ void LLViewerShaderMgr::unloadShaders()
gObjectShinyProgram.unload();
gObjectFullbrightShinyProgram.unload();
gObjectShinyWaterProgram.unload();
+
+ gSkinnedObjectSimpleProgram.unload();
+
gWaterProgram.unload();
gUnderWaterProgram.unload();
gTerrainProgram.unload();
@@ -625,6 +633,7 @@ BOOL LLViewerShaderMgr::loadBasicShaders()
shaders.push_back( make_pair( "lighting/lightSpecularV.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) );
shaders.push_back( make_pair( "windlight/atmosphericsV.glsl", mVertexShaderLevel[SHADER_WINDLIGHT] ) );
shaders.push_back( make_pair( "avatar/avatarSkinV.glsl", 1 ) );
+ shaders.push_back( make_pair( "avatar/objectSkinV.glsl", 1 ) );
// We no longer have to bind the shaders to global glhandles, they are automatically added to a map now.
for (U32 i = 0; i < shaders.size(); i++)
@@ -1214,6 +1223,7 @@ BOOL LLViewerShaderMgr::loadShadersObject()
gObjectSimpleWaterProgram.unload();
gObjectFullbrightProgram.unload();
gObjectFullbrightWaterProgram.unload();
+ gSkinnedObjectSimpleProgram.unload();
return FALSE;
}
@@ -1323,6 +1333,21 @@ BOOL LLViewerShaderMgr::loadShadersObject()
success = gObjectFullbrightShinyProgram.createShader(NULL, &mShinyUniforms);
}
+ if (success)
+ {
+ gSkinnedObjectSimpleProgram.mName = "Skinned Simple Shader";
+ gSkinnedObjectSimpleProgram.mFeatures.calculatesLighting = true;
+ gSkinnedObjectSimpleProgram.mFeatures.calculatesAtmospherics = true;
+ gSkinnedObjectSimpleProgram.mFeatures.hasGamma = true;
+ gSkinnedObjectSimpleProgram.mFeatures.hasAtmospherics = true;
+ gSkinnedObjectSimpleProgram.mFeatures.hasLighting = true;
+ gSkinnedObjectSimpleProgram.mFeatures.hasObjectSkinning = true;
+ gSkinnedObjectSimpleProgram.mShaderFiles.clear();
+ gSkinnedObjectSimpleProgram.mShaderFiles.push_back(make_pair("objects/simpleSkinnedV.glsl", GL_VERTEX_SHADER_ARB));
+ gSkinnedObjectSimpleProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER_ARB));
+ gSkinnedObjectSimpleProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+ success = gSkinnedObjectSimpleProgram.createShader(NULL, NULL);
+ }
if( !success )
{
diff --git a/indra/newview/llviewershadermgr.h b/indra/newview/llviewershadermgr.h
index ac2b4624e0..83a650cdbc 100644
--- a/indra/newview/llviewershadermgr.h
+++ b/indra/newview/llviewershadermgr.h
@@ -82,6 +82,7 @@ public:
MATERIAL_COLOR = 0,
SPECULAR_COLOR,
BINORMAL,
+ OBJECT_WEIGHT,
END_RESERVED_ATTRIBS
} eGLSLReservedAttribs;
@@ -313,6 +314,8 @@ extern LLGLSLShader gObjectFullbrightShinyProgram;
extern LLGLSLShader gObjectShinyProgram;
extern LLGLSLShader gObjectShinyWaterProgram;
+extern LLGLSLShader gSkinnedObjectSimpleProgram;
+
//environment shaders
extern LLGLSLShader gTerrainProgram;
extern LLGLSLShader gTerrainWaterProgram;
diff --git a/indra/newview/llviewertexteditor.cpp b/indra/newview/llviewertexteditor.cpp
index e3bc664473..d35be8e1bf 100644
--- a/indra/newview/llviewertexteditor.cpp
+++ b/indra/newview/llviewertexteditor.cpp
@@ -40,8 +40,8 @@
#include "llfloaterreg.h"
#include "llfloaterworldmap.h"
#include "llfocusmgr.h"
-#include "llinventory.h"
#include "llinventorybridge.h"
+#include "llinventorydefines.h"
#include "llinventorymodel.h"
#include "lllandmark.h"
#include "lllandmarkactions.h"
@@ -525,7 +525,7 @@ LLUIImagePtr LLEmbeddedItems::getItemImage(llwchar ext_char) const
case LLAssetType::AT_SOUND: img_name = "Inv_Sound"; break;
case LLAssetType::AT_CLOTHING: img_name = "Inv_Clothing"; break;
case LLAssetType::AT_OBJECT:
- img_name = LLInventoryItem::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS & item->getFlags() ?
+ img_name = LLInventoryItemFlags::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS & item->getFlags() ?
"Inv_Object_Multi" : "Inv_Object";
break;
case LLAssetType::AT_CALLINGCARD: img_name = "Inv_CallingCard"; break;
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index 7d75d7a183..886db08928 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -1433,15 +1433,15 @@ BOOL LLViewerFetchedTexture::createTexture(S32 usename/*= 0*/)
//virtual
void LLViewerFetchedTexture::setKnownDrawSize(S32 width, S32 height)
{
- if(mKnownDrawWidth != width || mKnownDrawHeight != height)
+ if(mKnownDrawWidth < width || mKnownDrawHeight < height)
{
- mKnownDrawWidth = width;
- mKnownDrawHeight = height;
+ mKnownDrawWidth = llmax(mKnownDrawWidth, width) ;
+ mKnownDrawHeight = llmax(mKnownDrawHeight, height) ;
mKnownDrawSizeChanged = TRUE ;
mFullyLoaded = FALSE ;
}
- addTextureStats((F32)(width * height));
+ addTextureStats((F32)(mKnownDrawWidth * mKnownDrawHeight));
}
//virtual
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 3508f92a2f..2422995288 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -882,7 +882,7 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi
LLPanelLogin::refreshLocation( true );
LLPanelLogin::updateLocationUI();
}
- return LLWindowCallbacks::DND_MOVE;
+ return LLWindowCallbacks::DND_COPY;
};
}
@@ -901,7 +901,11 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi
if (obj && !obj->getRegion()->getCapability("ObjectMedia").empty())
{
LLTextureEntry *te = obj->getTE(object_face);
- if (te)
+
+ // can modify URL if we can modify the object or we have navigate permissions
+ bool allow_modify_url = obj->permModify() || obj->hasMediaPermission( te->getMediaData(), LLVOVolume::MEDIA_PERM_INTERACT );
+
+ if (te && allow_modify_url )
{
if (drop)
{
@@ -932,29 +936,24 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi
// URL passes the whitelist
if (te->getMediaData()->checkCandidateUrl( url ) )
{
- // we are allowed to modify the object or we have navigate permissions
- // NOTE: Design states you you can change the URL if you have media
- // navigate permissions even if you do not have prim modify rights
- if ( obj->permModify() || obj->hasMediaPermission( te->getMediaData(), LLVOVolume::MEDIA_PERM_INTERACT ) )
+ // just navigate to the URL
+ if (obj->getMediaImpl(object_face))
+ {
+ obj->getMediaImpl(object_face)->navigateTo(url);
+ }
+ else
{
- // just navigate to the URL
- if (obj->getMediaImpl(object_face))
- {
- obj->getMediaImpl(object_face)->navigateTo(url);
- }
- else
- {
- // This is very strange. Navigation should
- // happen via the Impl, but we don't have one.
- // This sends it to the server, which /should/
- // trigger us getting it. Hopefully.
- LLSD media_data;
- media_data[LLMediaEntry::CURRENT_URL_KEY] = url;
- obj->syncMediaData(object_face, media_data, true, true);
- obj->sendMediaDataUpdate();
- }
- result = LLWindowCallbacks::DND_LINK;
+ // This is very strange. Navigation should
+ // happen via the Impl, but we don't have one.
+ // This sends it to the server, which /should/
+ // trigger us getting it. Hopefully.
+ LLSD media_data;
+ media_data[LLMediaEntry::CURRENT_URL_KEY] = url;
+ obj->syncMediaData(object_face, media_data, true, true);
+ obj->sendMediaDataUpdate();
}
+ result = LLWindowCallbacks::DND_LINK;
+
}
}
LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject);
@@ -974,6 +973,7 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi
LLSelectMgr::getInstance()->highlightObjectOnly(mDragHoveredObject);
}
result = (! te->hasMedia()) ? LLWindowCallbacks::DND_COPY : LLWindowCallbacks::DND_LINK;
+
}
}
}
@@ -2189,12 +2189,14 @@ void LLViewerWindow::draw()
// Takes a single keydown event, usually when UI is visible
BOOL LLViewerWindow::handleKey(KEY key, MASK mask)
{
+ // hide tooltips on keypress
+ LLToolTipMgr::instance().blockToolTips();
+
if (gFocusMgr.getKeyboardFocus()
&& !(mask & (MASK_CONTROL | MASK_ALT))
&& !gFocusMgr.getKeystrokesOnly())
{
// We have keyboard focus, and it's not an accelerator
-
if (key < 0x80)
{
// Not a special key, so likely (we hope) to generate a character. Let it fall through to character handler first.
@@ -2202,68 +2204,49 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask)
}
}
- // hide tooltips on keypress
- LLToolTipMgr::instance().blockToolTips();
-
- // Explicit hack for debug menu.
- if ((MASK_ALT & mask) &&
- (MASK_CONTROL & mask) &&
- ('D' == key || 'd' == key))
+ // let menus handle navigation keys for navigation
+ if ((gMenuBarView && gMenuBarView->handleKey(key, mask, TRUE))
+ ||(gLoginMenuBarView && gLoginMenuBarView->handleKey(key, mask, TRUE))
+ ||(gMenuHolder && gMenuHolder->handleKey(key, mask, TRUE)))
{
- toggle_debug_menus(NULL);
+ return TRUE;
}
- // Explicit hack for debug menu.
- if ((mask == (MASK_SHIFT | MASK_CONTROL)) &&
- ('G' == key || 'g' == key))
+ // give menus a chance to handle modified (Ctrl, Alt) shortcut keys before current focus
+ // as long as focus isn't locked
+ if (mask & (MASK_CONTROL | MASK_ALT) && !gFocusMgr.focusLocked())
{
- if (LLStartUp::getStartupState() < STATE_LOGIN_CLEANUP) //on splash page
+ if ((gMenuBarView && gMenuBarView->handleAcceleratorKey(key, mask))
+ ||(gLoginMenuBarView && gLoginMenuBarView->handleAcceleratorKey(key, mask)))
{
- BOOL visible = ! gSavedSettings.getBOOL("ForceShowGrid");
- gSavedSettings.setBOOL("ForceShowGrid", visible);
-
- // Initialize visibility (and don't force visibility - use prefs)
- LLPanelLogin::refreshLocation( false );
+ return TRUE;
}
}
- // Debugging view for unified notifications: CTRL-SHIFT-5
- // *FIXME: Having this special-cased right here (just so this can be invoked from the login screen) sucks.
- if ((MASK_SHIFT & mask)
- && (!(MASK_ALT & mask))
- && (MASK_CONTROL & mask)
- && ('5' == key))
+ // give floaters first chance to handle TAB key
+ // so frontmost floater gets focus
+ // if nothing has focus, go to first or last UI element as appropriate
+ if (key == KEY_TAB && (mask & MASK_CONTROL || gFocusMgr.getKeyboardFocus() == NULL))
{
- //LLFloaterNotificationConsole::showInstance();
- LLFloaterReg::showInstance("notifications_console");
- return TRUE;
- }
+ if (gMenuHolder) gMenuHolder->hideMenus();
- // handle escape key
- //if (key == KEY_ESCAPE && mask == MASK_NONE)
- //{
+ // if CTRL-tabbing (and not just TAB with no focus), go into window cycle mode
+ gFloaterView->setCycleMode((mask & MASK_CONTROL) != 0);
- // *TODO: get this to play well with mouselook and hidden
- // cursor modes, etc, and re-enable.
- //if (gFocusMgr.getMouseCapture())
- //{
- // gFocusMgr.setMouseCapture(NULL);
- // return TRUE;
- //}
- //}
-
- // let menus handle navigation keys
- if (gMenuBarView && gMenuBarView->handleKey(key, mask, TRUE))
- {
- return TRUE;
- }
- // let menus handle navigation keys
- if (gLoginMenuBarView && gLoginMenuBarView->handleKey(key, mask, TRUE))
- {
+ // do CTRL-TAB and CTRL-SHIFT-TAB logic
+ if (mask & MASK_SHIFT)
+ {
+ mRootView->focusPrevRoot();
+ }
+ else
+ {
+ mRootView->focusNextRoot();
+ }
return TRUE;
}
- //some of context menus use this container, let context menu handle navigation keys
- if(gMenuHolder && gMenuHolder->handleKey(key, mask, TRUE))
+
+ // hidden edit menu for cut/copy/paste
+ if (gEditMenu && gEditMenu->handleAcceleratorKey(key, mask))
{
return TRUE;
}
@@ -2328,50 +2311,10 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask)
return TRUE;
}
- // Topmost view gets a chance before the hierarchy
- // *FIX: get rid of this?
- //LLUICtrl* top_ctrl = gFocusMgr.getTopCtrl();
- //if (top_ctrl)
- //{
- // if( top_ctrl->handleKey( key, mask, TRUE ) )
- // {
- // return TRUE;
- // }
- //}
-
- // give floaters first chance to handle TAB key
- // so frontmost floater gets focus
- if (key == KEY_TAB)
- {
- // if nothing has focus, go to first or last UI element as appropriate
- if (mask & MASK_CONTROL || gFocusMgr.getKeyboardFocus() == NULL)
- {
- if (gMenuHolder) gMenuHolder->hideMenus();
-
- // if CTRL-tabbing (and not just TAB with no focus), go into window cycle mode
- gFloaterView->setCycleMode((mask & MASK_CONTROL) != 0);
- // do CTRL-TAB and CTRL-SHIFT-TAB logic
- if (mask & MASK_SHIFT)
- {
- mRootView->focusPrevRoot();
- }
- else
- {
- mRootView->focusNextRoot();
- }
- return TRUE;
- }
- }
-
- // give menus a chance to handle keys
- if (gMenuBarView && gMenuBarView->handleAcceleratorKey(key, mask))
- {
- return TRUE;
- }
-
- // give menus a chance to handle keys
- if (gLoginMenuBarView && gLoginMenuBarView->handleAcceleratorKey(key, mask))
+ // give menus a chance to handle unmodified accelerator keys
+ if ((gMenuBarView && gMenuBarView->handleAcceleratorKey(key, mask))
+ ||(gLoginMenuBarView && gLoginMenuBarView->handleAcceleratorKey(key, mask)))
{
return TRUE;
}
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index c400e8510e..201c4ce1d5 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -64,6 +64,7 @@
#include "llkeyframefallmotion.h"
#include "llkeyframestandmotion.h"
#include "llkeyframewalkmotion.h"
+#include "llmeshrepository.h"
#include "llmutelist.h"
#include "llmoveview.h"
#include "llquantize.h"
@@ -79,6 +80,7 @@
#include "llviewermenu.h"
#include "llviewerobjectlist.h"
#include "llviewerparcelmgr.h"
+#include "llviewershadermgr.h"
#include "llviewerstats.h"
#include "llvoavatarself.h"
#include "llvovolume.h"
@@ -2929,14 +2931,7 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last)
}
else
{
- if (gSavedSettings.getBOOL("SmallAvatarNames"))
- {
- mNameText->setFont(LLFontGL::getFontSansSerif());
- }
- else
- {
- mNameText->setFont(LLFontGL::getFontSansSerifBig());
- }
+ mNameText->setFont(LLFontGL::getFontSansSerif());
mNameText->setTextAlignment(LLHUDText::ALIGN_TEXT_CENTER);
mNameText->setFadeDistance(CHAT_NORMAL_RADIUS, 5.f);
mNameText->setVisibleOffScreen(FALSE);
@@ -3644,6 +3639,125 @@ bool LLVOAvatar::shouldAlphaMask()
}
+U32 LLVOAvatar::renderSkinnedAttachments()
+{
+ U32 num_indices = 0;
+
+ const U32 data_mask = LLVertexBuffer::MAP_VERTEX |
+ LLVertexBuffer::MAP_NORMAL |
+ LLVertexBuffer::MAP_TEXCOORD0 |
+ LLVertexBuffer::MAP_COLOR |
+ LLVertexBuffer::MAP_WEIGHT4;
+
+ for (attachment_map_t::const_iterator iter = mAttachmentPoints.begin();
+ iter != mAttachmentPoints.end();
+ ++iter)
+ {
+ LLViewerJointAttachment* attachment = iter->second;
+ for (LLViewerJointAttachment::attachedobjs_vec_t::iterator attachment_iter = attachment->mAttachedObjects.begin();
+ attachment_iter != attachment->mAttachedObjects.end();
+ ++attachment_iter)
+ {
+ const LLViewerObject* attached_object = (*attachment_iter);
+ if (attached_object && !attached_object->isHUDAttachment())
+ {
+ const LLDrawable* drawable = attached_object->mDrawable;
+ if (drawable)
+ {
+ for (S32 i = 0; i < drawable->getNumFaces(); ++i)
+ {
+ LLFace* face = drawable->getFace(i);
+ if (face->isState(LLFace::RIGGED))
+ {
+ LLVolume* volume = attached_object->getVolume();
+ if (!volume || volume->getNumVolumeFaces() <= i)
+ {
+ continue;
+ }
+
+ const LLVolumeFace& vol_face = volume->getVolumeFace(i);
+
+ const LLMeshSkinInfo* skin = NULL;
+ LLVertexBuffer* buff = face->mVertexBuffer;
+ LLUUID mesh_id = volume->getParams().getSculptID();;
+
+ if (!buff ||
+ !buff->hasDataType(LLVertexBuffer::TYPE_WEIGHT4) ||
+ buff->getRequestedVerts() != vol_face.mVertices.size())
+ {
+ face->mVertexBuffer = NULL;
+ face->mLastVertexBuffer = NULL;
+ buff = NULL;
+
+ if (mesh_id.notNull())
+ {
+ skin = gMeshRepo.getSkinInfo(mesh_id);
+ if (skin)
+ {
+ face->mVertexBuffer = new LLVertexBuffer(data_mask, 0);
+ face->mVertexBuffer->allocateBuffer(vol_face.mVertices.size(), vol_face.mIndices.size(), true);
+
+ face->setGeomIndex(0);
+ face->setIndicesIndex(0);
+ face->setSize(vol_face.mVertices.size(), vol_face.mIndices.size());
+
+ U16 offset = 0;
+
+ LLMatrix4 mat_vert = skin->mBindShapeMatrix;
+ LLMatrix3 mat_normal;
+
+ face->getGeometryVolume(*volume, i, mat_vert, mat_normal, offset, true);
+ buff = face->mVertexBuffer;
+ }
+ }
+ }
+
+ if (buff && mesh_id.notNull())
+ {
+ if (!skin)
+ {
+ skin = gMeshRepo.getSkinInfo(mesh_id);
+ }
+
+ if (skin)
+ {
+ LLMatrix4 mat[64];
+
+ for (U32 i = 0; i < skin->mJointNames.size(); ++i)
+ {
+ LLJoint* joint = getJoint(skin->mJointNames[i]);
+ if (joint)
+ {
+ mat[i] = skin->mInvBindMatrix[i];
+ mat[i] *= joint->getWorldMatrix();
+ }
+ }
+
+ gSkinnedObjectSimpleProgram.uniformMatrix4fv("matrixPalette",
+ skin->mJointNames.size(),
+ FALSE,
+ (GLfloat*) mat[0].mMatrix);
+
+ buff->setBuffer(data_mask);
+
+ U16 start = face->getGeomStart();
+ U16 end = start + face->getGeomCount()-1;
+ S32 offset = face->getIndicesStart();
+ U32 count = face->getIndicesCount();
+
+ buff->drawRange(LLRender::TRIANGLES, start, end, count, offset);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return num_indices;
+}
+
//-----------------------------------------------------------------------------
// renderSkinned()
//-----------------------------------------------------------------------------
@@ -5614,6 +5728,8 @@ void LLVOAvatar::sitDown(BOOL bSitting)
//-----------------------------------------------------------------------------
void LLVOAvatar::sitOnObject(LLViewerObject *sit_object)
{
+ sitDown(TRUE);
+
if (isSelf())
{
// Might be first sit
@@ -5646,7 +5762,6 @@ void LLVOAvatar::sitOnObject(LLViewerObject *sit_object)
mDrawable->mXform.setRotation(mDrawable->getWorldRotation() * inv_obj_rot);
gPipeline.markMoved(mDrawable, TRUE);
- sitDown(TRUE);
mRoot.getXform()->setParent(&sit_object->mDrawable->mXform); // LLVOAvatar::sitOnObject
mRoot.setPosition(getPosition());
mRoot.updateWorldMatrixChildren();
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index d5485413f4..b0535a4a26 100644
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -339,6 +339,7 @@ public:
U32 renderImpostor(LLColor4U color = LLColor4U(255,255,255,255), S32 diffuse_channel = 0);
U32 renderRigid();
U32 renderSkinned(EAvatarRenderPass pass);
+ U32 renderSkinnedAttachments();
U32 renderTransparent(BOOL first_pass);
void renderCollisionVolumes();
static void deleteCachedImages(bool clearAll=true);
diff --git a/indra/newview/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp
index fac7fa6a18..7bb1006e93 100644
--- a/indra/newview/llvoicechannel.cpp
+++ b/indra/newview/llvoicechannel.cpp
@@ -139,13 +139,10 @@ LLVoiceChannel::LLVoiceChannel(const LLUUID& session_id, const std::string& sess
LLVoiceChannel::~LLVoiceChannel()
{
- // Don't use LLVoiceClient::getInstance() here -- this can get called during atexit() time and that singleton MAY have already been destroyed.
- // Using call of instanceExists() instead of gVoiceClient in check to avoid crash in LLVoiceClient::removeObserver()
- // when quitting viewer by closing console window before login (though in case of such quit crash will occur
- // later in other destructors anyway). EXT-5524
+ // Must check instance exists here, the singleton MAY have already been destroyed.
if(LLVoiceClient::instanceExists())
{
- gVoiceClient->removeObserver(this);
+ LLVoiceClient::instance().removeObserver(this);
}
sVoiceChannelMap.erase(mSessionID);
diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp
index 2e5d4f1776..2238acd643 100644
--- a/indra/newview/llvoiceclient.cpp
+++ b/indra/newview/llvoiceclient.cpp
@@ -1176,7 +1176,7 @@ void LLSpeakerVolumeStorage::storeSpeakerVolume(const LLUUID& speaker_id, F32 vo
{
mSpeakersData[speaker_id] = volume;
- // Enable this when debugging voice slider issues. It's way too spammy even for debug-level logging.
+ // Enable this when debugging voice slider issues. It's way to spammy even for debug-level logging.
// LL_DEBUGS("Voice") << "Stored volume = " << volume << " for " << id << LL_ENDL;
}
else
diff --git a/indra/newview/llvoinventorylistener.h b/indra/newview/llvoinventorylistener.h
index 335e867fca..1531e6e339 100644
--- a/indra/newview/llvoinventorylistener.h
+++ b/indra/newview/llvoinventorylistener.h
@@ -42,7 +42,7 @@ class LLVOInventoryListener
{
public:
virtual void inventoryChanged(LLViewerObject* object,
- InventoryObjectList* inventory,
+ LLInventoryObject::object_list_t* inventory,
S32 serial_num,
void* user_data) = 0;
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index bc83e11fd2..56fb42bb89 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -3496,6 +3496,10 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
drawablep->clearState(LLDrawable::HAS_ALPHA);
+ bool rigged = vobj->isAttachment() &&
+ vobj->isMesh() &&
+ gMeshRepo.getSkinInfo(vobj->getVolume()->getParams().getSculptID());
+
//for each face
for (S32 i = 0; i < drawablep->getNumFaces(); i++)
{
@@ -3503,6 +3507,22 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
drawablep->updateFaceSize(i);
LLFace* facep = drawablep->getFace(i);
+ if (rigged)
+ {
+ if (!facep->isState(LLFace::RIGGED))
+ {
+ facep->mVertexBuffer = NULL;
+ facep->mLastVertexBuffer = NULL;
+ facep->setState(LLFace::RIGGED);
+ }
+
+ continue;
+ }
+ else
+ {
+ facep->clearState(LLFace::RIGGED);
+ }
+
if (cur_total > max_total || facep->getIndicesCount() <= 0 || facep->getGeomCount() <= 0)
{
facep->mVertexBuffer = NULL;
diff --git a/indra/newview/llworldmapview.cpp b/indra/newview/llworldmapview.cpp
index 7afe81b436..0c37bb6eb1 100644
--- a/indra/newview/llworldmapview.cpp
+++ b/indra/newview/llworldmapview.cpp
@@ -886,28 +886,36 @@ void LLWorldMapView::drawFrustum()
F32 half_width_meters = far_clip_meters * tan( horiz_fov / 2 );
F32 half_width_pixels = half_width_meters * meters_to_pixels;
- F32 ctr_x = getRect().getWidth() * 0.5f + sPanX;
- F32 ctr_y = getRect().getHeight() * 0.5f + sPanY;
+ F32 ctr_x = getLocalRect().getWidth() * 0.5f + sPanX;
+ F32 ctr_y = getLocalRect().getHeight() * 0.5f + sPanY;
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
// Since we don't rotate the map, we have to rotate the frustum.
gGL.pushMatrix();
+ {
gGL.translatef( ctr_x, ctr_y, 0 );
- glRotatef( atan2( LLViewerCamera::getInstance()->getAtAxis().mV[VX], LLViewerCamera::getInstance()->getAtAxis().mV[VY] ) * RAD_TO_DEG, 0.f, 0.f, -1.f);
// Draw triangle with more alpha in far pixels to make it
// fade out in distance.
gGL.begin( LLRender::TRIANGLES );
+ {
+ LLVector2 cam_lookat(LLViewerCamera::instance().getAtAxis().mV[VX], LLViewerCamera::instance().getAtAxis().mV[VY]);
+ LLVector2 cam_left(LLViewerCamera::instance().getLeftAxis().mV[VX], LLViewerCamera::instance().getLeftAxis().mV[VY]);
+
gGL.color4f(1.f, 1.f, 1.f, 0.25f);
gGL.vertex2f( 0, 0 );
gGL.color4f(1.f, 1.f, 1.f, 0.02f);
- gGL.vertex2f( -half_width_pixels, far_clip_pixels );
+
+ LLVector2 vert = cam_lookat * far_clip_pixels + cam_left * half_width_pixels;
+ gGL.vertex2f(vert.mV[VX], vert.mV[VY]);
- gGL.color4f(1.f, 1.f, 1.f, 0.02f);
- gGL.vertex2f( half_width_pixels, far_clip_pixels );
+ vert = cam_lookat * far_clip_pixels - cam_left * half_width_pixels;
+ gGL.vertex2f(vert.mV[VX], vert.mV[VY]);
+ }
gGL.end();
+ }
gGL.popMatrix();
}
diff --git a/indra/newview/llxmlrpctransaction.cpp b/indra/newview/llxmlrpctransaction.cpp
index c19be37e75..5884cdd1c3 100644
--- a/indra/newview/llxmlrpctransaction.cpp
+++ b/indra/newview/llxmlrpctransaction.cpp
@@ -252,8 +252,10 @@ void LLXMLRPCTransaction::Impl::init(XMLRPC_REQUEST request, bool useGzip)
// mCurlRequest->setopt(CURLOPT_VERBOSE, 1); // usefull for debugging
mCurlRequest->setopt(CURLOPT_NOSIGNAL, 1);
mCurlRequest->setWriteCallback(&curlDownloadCallback, (void*)this);
- mCurlRequest->setopt(CURLOPT_SSL_VERIFYPEER, LLCurl::getSSLVerify());
+ BOOL verifySSLCert = !gSavedSettings.getBOOL("NoVerifySSLCert");
mCurlRequest->setopt(CURLOPT_SSL_VERIFYHOST, LLCurl::getSSLVerify() ? 2 : 0);
+ mCurlRequest->setopt(CURLOPT_SSL_VERIFYPEER, verifySSLCert);
+ mCurlRequest->setopt(CURLOPT_SSL_VERIFYHOST, verifySSLCert ? 2 : 0);
// Be a little impatient about establishing connections.
mCurlRequest->setopt(CURLOPT_CONNECTTIMEOUT, 40L);
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 3778cae201..bd210b3376 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -193,6 +193,7 @@ std::string gPoolNames[] =
};
void drawBox(const LLVector3& c, const LLVector3& r);
+void drawBoxOutline(const LLVector3& pos, const LLVector3& size);
U32 nhpo2(U32 v)
{
@@ -1531,8 +1532,10 @@ BOOL LLPipeline::visibleObjectsInFrustum(LLCamera& camera)
BOOL LLPipeline::getVisibleExtents(LLCamera& camera, LLVector3& min, LLVector3& max)
{
- min = LLVector3(F32_MAX, F32_MAX, F32_MAX);
- max = LLVector3(-F32_MAX, -F32_MAX, -F32_MAX);
+ const F32 X = 65536.f;
+
+ min = LLVector3(X,X,X);
+ max = LLVector3(-X,-X,-X);
U32 saved_camera_id = LLViewerCamera::sCurCameraID;
LLViewerCamera::sCurCameraID = LLViewerCamera::CAMERA_WORLD;
@@ -2980,8 +2983,12 @@ void LLPipeline::renderHighlights()
}
}
+//debug use
+U32 LLPipeline::sCurRenderPoolType = 0 ;
+
void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
{
+ llpushcallstacks ;
LLMemType mt(LLMemType::MTYPE_PIPELINE_RENDER_GEOM);
LLFastTimer t(FTM_RENDER_GEOMETRY);
@@ -3089,6 +3096,9 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
cur_type = poolp->getType();
+ //debug use
+ sCurRenderPoolType = cur_type ;
+
if (occlude && cur_type >= LLDrawPool::POOL_GRASS)
{
occlude = FALSE;
@@ -3667,12 +3677,17 @@ void LLPipeline::renderDebug()
for (U32 i = 0; i < 8; i++)
{
+ LLVector3* frust = mShadowCamera[i].mAgentFrustum;
+
if (i > 3)
- {
+ { //render shadow frusta as volumes
+ if (mShadowFrustPoints[i-4].empty())
+ {
+ continue;
+ }
+
gGL.color4fv(col+(i-4)*4);
- LLVector3* frust = mShadowCamera[i].mAgentFrustum;
-
gGL.begin(LLRender::TRIANGLE_STRIP);
gGL.vertex3fv(frust[0].mV); gGL.vertex3fv(frust[4].mV);
gGL.vertex3fv(frust[1].mV); gGL.vertex3fv(frust[5].mV);
@@ -3700,31 +3715,49 @@ void LLPipeline::renderDebug()
if (i < 4)
{
- gGL.begin(LLRender::LINES);
-
- F32* c = col+i*4;
- for (U32 j = 0; j < mShadowFrustPoints[i].size(); ++j)
+
+ if (i == 0 || !mShadowFrustPoints[i].empty())
{
-
- gGL.color3fv(c);
+ //render visible point cloud
+ gGL.flush();
+ glPointSize(8.f);
+ gGL.begin(LLRender::POINTS);
- for (U32 k = 0; k < mShadowFrustPoints[i].size(); ++k)
- {
- if (j != k)
- {
- gGL.vertex3fv(mShadowFrustPoints[i][j].mV);
- gGL.vertex3fv(mShadowFrustPoints[i][k].mV);
- }
- }
+ F32* c = col+i*4;
+ gGL.color3fv(c);
- if (!mShadowFrustOrigin[i].isExactlyZero())
- {
+ for (U32 j = 0; j < mShadowFrustPoints[i].size(); ++j)
+ {
gGL.vertex3fv(mShadowFrustPoints[i][j].mV);
- gGL.color4f(1,1,1,1);
- gGL.vertex3fv(mShadowFrustOrigin[i].mV);
+
}
+ gGL.end();
+
+ gGL.flush();
+ glPointSize(1.f);
+
+ LLVector3* ext = mShadowExtents[i];
+ LLVector3 pos = (ext[0]+ext[1])*0.5f;
+ LLVector3 size = (ext[1]-ext[0])*0.5f;
+ drawBoxOutline(pos, size);
+
+ //render camera frustum splits as outlines
+ gGL.begin(LLRender::LINES);
+ gGL.vertex3fv(frust[0].mV); gGL.vertex3fv(frust[1].mV);
+ gGL.vertex3fv(frust[1].mV); gGL.vertex3fv(frust[2].mV);
+ gGL.vertex3fv(frust[2].mV); gGL.vertex3fv(frust[3].mV);
+ gGL.vertex3fv(frust[3].mV); gGL.vertex3fv(frust[0].mV);
+ gGL.vertex3fv(frust[4].mV); gGL.vertex3fv(frust[5].mV);
+ gGL.vertex3fv(frust[5].mV); gGL.vertex3fv(frust[6].mV);
+ gGL.vertex3fv(frust[6].mV); gGL.vertex3fv(frust[7].mV);
+ gGL.vertex3fv(frust[7].mV); gGL.vertex3fv(frust[4].mV);
+ gGL.vertex3fv(frust[0].mV); gGL.vertex3fv(frust[4].mV);
+ gGL.vertex3fv(frust[1].mV); gGL.vertex3fv(frust[5].mV);
+ gGL.vertex3fv(frust[2].mV); gGL.vertex3fv(frust[6].mV);
+ gGL.vertex3fv(frust[3].mV); gGL.vertex3fv(frust[7].mV);
+ gGL.end();
}
- gGL.end();
+
}
/*for (LLWorld::region_list_t::const_iterator iter = LLWorld::getInstance()->getRegionList().begin();
@@ -5922,8 +5955,12 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
}
+static LLFastTimer::DeclareTimer FTM_BIND_DEFERRED("Bind Deferred");
+
void LLPipeline::bindDeferredShader(LLGLSLShader& shader, U32 light_index, LLRenderTarget* gi_source, LLRenderTarget* last_gi_post, U32 noise_map)
{
+ LLFastTimer t(FTM_BIND_DEFERRED);
+
if (noise_map == 0xFFFFFFFF)
{
noise_map = mNoiseMap;
@@ -6261,10 +6298,16 @@ void LLPipeline::bindDeferredShader(LLGLSLShader& shader, U32 light_index, LLRen
matrix_nondiag, matrix_nondiag, matrix_diag};
shader.uniformMatrix3fv("ssao_effect_mat", 1, GL_FALSE, ssao_effect_mat);
+ F32 shadow_offset_error = 1.f + gSavedSettings.getF32("RenderShadowOffsetError") * fabsf(LLViewerCamera::getInstance()->getOrigin().mV[2]);
+ F32 shadow_bias_error = 1.f + gSavedSettings.getF32("RenderShadowBiasError") * fabsf(LLViewerCamera::getInstance()->getOrigin().mV[2]);
+
shader.uniform2f("screen_res", mDeferredScreen.getWidth(), mDeferredScreen.getHeight());
shader.uniform1f("near_clip", LLViewerCamera::getInstance()->getNear()*2.f);
- shader.uniform1f ("shadow_offset", gSavedSettings.getF32("RenderShadowOffset"));
- shader.uniform1f("shadow_bias", gSavedSettings.getF32("RenderShadowBias"));
+ shader.uniform1f ("shadow_offset", gSavedSettings.getF32("RenderShadowOffset")*shadow_offset_error);
+ shader.uniform1f("shadow_bias", gSavedSettings.getF32("RenderShadowBias")*shadow_bias_error);
+ shader.uniform1f ("spot_shadow_offset", gSavedSettings.getF32("RenderSpotShadowOffset"));
+ shader.uniform1f("spot_shadow_bias", gSavedSettings.getF32("RenderSpotShadowBias"));
+
shader.uniform1f("lum_scale", gSavedSettings.getF32("RenderLuminanceScale"));
shader.uniform1f("sun_lum_scale", gSavedSettings.getF32("RenderSunLuminanceScale"));
shader.uniform1f("sun_lum_offset", gSavedSettings.getF32("RenderSunLuminanceOffset"));
@@ -7210,6 +7253,7 @@ inline float sgn(float a)
void LLPipeline::generateWaterReflection(LLCamera& camera_in)
{
+ llpushcallstacks ;
if (LLPipeline::sWaterReflections && assertInitialized() && LLDrawPoolWater::sNeedsReflectionUpdate)
{
BOOL skip_avatar_update = FALSE;
@@ -7711,14 +7755,14 @@ BOOL LLPipeline::getVisiblePointCloud(LLCamera& camera, LLVector3& min, LLVector
//get point of intersection of 3 planes "p"
LLVector3 p = (-d1*(n2%n3)-d2*(n3%n1)-d3*(n1%n2))/(n1*(n2%n3));
- if (llround(p*n1+d1, 0.0001f) == 0.f &&
- llround(p*n2+d2, 0.0001f) == 0.f &&
- llround(p*n3+d3, 0.0001f) == 0.f)
+ if (llround(p*n1+d1, 0.1f) == 0.f &&
+ llround(p*n2+d2, 0.1f) == 0.f &&
+ llround(p*n3+d3, 0.1f) == 0.f)
{ //point is on all three planes
BOOL found = TRUE;
for (U32 l = 0; l < ps.size() && found; ++l)
{
- if (llround(ps[l].dist(p), 0.0001f) > 0.0f)
+ if (llround(ps[l].dist(p), 0.1f) > 0.0f)
{ //point is above some plane, not contained
found = FALSE;
}
@@ -7944,7 +7988,7 @@ void LLPipeline::renderHighlight(const LLViewerObject* obj, F32 fade)
void LLPipeline::generateHighlight(LLCamera& camera)
{
//render highlighted object as white into offscreen render target
-
+ llpushcallstacks ;
if (mHighlightObject.notNull())
{
mHighlightSet.insert(HighlightItem(mHighlightObject));
@@ -8079,16 +8123,31 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
at.normVec();
+ LLCamera main_camera = camera;
+
F32 near_clip = 0.f;
{
//get visible point cloud
std::vector<LLVector3> fp;
+ main_camera.calcAgentFrustumPlanes(main_camera.mAgentFrustum);
+
LLVector3 min,max;
- getVisiblePointCloud(camera,min,max,fp);
+ getVisiblePointCloud(main_camera,min,max,fp);
if (fp.empty())
{
+ if (!hasRenderDebugMask(RENDER_DEBUG_SHADOW_FRUSTA))
+ {
+ mShadowCamera[0] = main_camera;
+ mShadowExtents[0][0] = min;
+ mShadowExtents[0][1] = max;
+
+ mShadowFrustPoints[0].clear();
+ mShadowFrustPoints[1].clear();
+ mShadowFrustPoints[2].clear();
+ mShadowFrustPoints[3].clear();
+ }
mRenderTypeMask = type_mask;
return;
}
@@ -8163,7 +8222,7 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
shadow_cam = camera;
shadow_cam.setFar(16.f);
- LLViewerCamera::updateFrustumPlanes(shadow_cam);
+ LLViewerCamera::updateFrustumPlanes(shadow_cam, FALSE, FALSE, TRUE);
LLVector3* frust = shadow_cam.mAgentFrustum;
diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h
index 814c54326a..8bdc635d05 100644
--- a/indra/newview/pipeline.h
+++ b/indra/newview/pipeline.h
@@ -699,6 +699,9 @@ protected:
public:
static BOOL sRenderBeacons;
static BOOL sRenderHighlight;
+
+ //debug use
+ static U32 sCurRenderPoolType ;
};
void render_bbox(const LLVector3 &min, const LLVector3 &max);
diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml
index 777d671e81..99603530d8 100644
--- a/indra/newview/skins/default/colors.xml
+++ b/indra/newview/skins/default/colors.xml
@@ -61,7 +61,7 @@
value="0.26 0.345 0.263 1" />
<color
name="Red"
- value="0.729 0 0.121 1" />
+ value="1 0 0 1" />
<color
name="Blue"
value="0 0 1 1" />
@@ -197,7 +197,7 @@
value="0.5 0.5 0.5 1" />
<color
name="ColorPaletteEntry03"
- value="0.3344 0.5456 0.5159 1" />
+ value="0.5 0 0 1" />
<color
name="ColorPaletteEntry04"
value="0.5 0.5 0 1" />
@@ -239,7 +239,7 @@
reference="LtYellow" />
<color
name="ColorPaletteEntry17"
- reference="LtGreen" />
+ reference="White" />
<color
name="ColorPaletteEntry18"
reference="LtGray" />
@@ -248,7 +248,7 @@
reference="Red" />
<color
name="ColorPaletteEntry20"
- reference=".5 .5 1 0" />
+ reference="Yellow" />
<color
name="ColorPaletteEntry21"
reference="Green" />
@@ -421,6 +421,9 @@
name="InventoryItemSuffixColor"
reference="White_25" />
<color
+ name="InventoryItemLibraryColor"
+ reference="EmphasisColor" />
+ <color
name="InventorySearchStatusColor"
reference="EmphasisColor" />
<color
@@ -731,7 +734,10 @@
<color
name="ChatToastAgentNameColor"
reference="EmphasisColor" />
- <color
+ <color
name="ColorSwatchBorderColor"
value="0.45098 0.517647 0.607843 1"/>
+ <color
+ name="ChatTimestampColor"
+ reference="White" />
</colors>
diff --git a/indra/newview/skins/default/textures/arrow_down.tga b/indra/newview/skins/default/textures/arrow_down.tga
new file mode 100644
index 0000000000..81dc9d3b6c
--- /dev/null
+++ b/indra/newview/skins/default/textures/arrow_down.tga
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Generic_Group_Large.png b/indra/newview/skins/default/textures/icons/Generic_Group_Large.png
deleted file mode 100644
index 4d4f1e1bee..0000000000
--- a/indra/newview/skins/default/textures/icons/Generic_Group_Large.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Progress_1.png b/indra/newview/skins/default/textures/icons/Progress_1.png
deleted file mode 100644
index 58b56003c4..0000000000
--- a/indra/newview/skins/default/textures/icons/Progress_1.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Progress_10.png b/indra/newview/skins/default/textures/icons/Progress_10.png
deleted file mode 100644
index 07fe0be8a3..0000000000
--- a/indra/newview/skins/default/textures/icons/Progress_10.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Progress_11.png b/indra/newview/skins/default/textures/icons/Progress_11.png
deleted file mode 100644
index 215d68cc46..0000000000
--- a/indra/newview/skins/default/textures/icons/Progress_11.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Progress_12.png b/indra/newview/skins/default/textures/icons/Progress_12.png
deleted file mode 100644
index d755588621..0000000000
--- a/indra/newview/skins/default/textures/icons/Progress_12.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Progress_2.png b/indra/newview/skins/default/textures/icons/Progress_2.png
deleted file mode 100644
index 6640ee227b..0000000000
--- a/indra/newview/skins/default/textures/icons/Progress_2.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Progress_3.png b/indra/newview/skins/default/textures/icons/Progress_3.png
deleted file mode 100644
index 5decbe977e..0000000000
--- a/indra/newview/skins/default/textures/icons/Progress_3.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Progress_4.png b/indra/newview/skins/default/textures/icons/Progress_4.png
deleted file mode 100644
index 56e81c17aa..0000000000
--- a/indra/newview/skins/default/textures/icons/Progress_4.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Progress_5.png b/indra/newview/skins/default/textures/icons/Progress_5.png
deleted file mode 100644
index a89bf2ac62..0000000000
--- a/indra/newview/skins/default/textures/icons/Progress_5.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Progress_6.png b/indra/newview/skins/default/textures/icons/Progress_6.png
deleted file mode 100644
index 233c479540..0000000000
--- a/indra/newview/skins/default/textures/icons/Progress_6.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Progress_7.png b/indra/newview/skins/default/textures/icons/Progress_7.png
deleted file mode 100644
index 631d7a6819..0000000000
--- a/indra/newview/skins/default/textures/icons/Progress_7.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Progress_8.png b/indra/newview/skins/default/textures/icons/Progress_8.png
deleted file mode 100644
index ac0e3f13f7..0000000000
--- a/indra/newview/skins/default/textures/icons/Progress_8.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Progress_9.png b/indra/newview/skins/default/textures/icons/Progress_9.png
deleted file mode 100644
index 17fb4a0335..0000000000
--- a/indra/newview/skins/default/textures/icons/Progress_9.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index 2bbb7b2b85..d76932f76d 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -1,4 +1,4 @@
-<!--
+<!--
This file contains metadata about how to load, display, and scale textures for rendering in the UI.
Images do *NOT* have to appear in this file in order to use them as textures in the UI...simply refer
to them by filename (relative to textures directory).
@@ -46,13 +46,9 @@ with the same filename but different name
<texture name="AddItem_Press" file_name="icons/AddItem_Press.png" preload="false" />
<texture name="Arrow_Left_Off" file_name="navbar/Arrow_Left_Off.png" preload="true" />
- <texture name="Arrow_Left_Press" file_name="navbar/Arrow_Left_Press.png" preload="true" />
<texture name="Arrow_Right_Off" file_name="navbar/Arrow_Right_Off.png" preload="true" />
- <texture name="Arrow_Right_Press" file_name="navbar/Arrow_Right_Press.png" preload="true" />
<!--
- <texture name="Arrow_Left" file_name="widgets/Arrow_Left.png" preload="true" />
- <texture name="Arrow_Right" file_name="widgets/Arrow_Right.png" preload="true" />
-->
<texture name="Arrow_Small_Up" file_name="widgets/Arrow_Small_Up.png" preload="true" />
@@ -64,49 +60,28 @@ with the same filename but different name
<texture name="AudioMute_Off" file_name="icons/AudioMute_Off.png" preload="false" />
<texture name="AudioMute_Over" file_name="icons/AudioMute_Over.png" preload="false" />
- <texture name="AudioMute_Press" file_name="icons/AudioMute_Press.png" preload="false" />
<texture name="Audio_Off" file_name="icons/Audio_Off.png" preload="false" />
- <texture name="Audio_Over" file_name="icons/Audio_Over.png" preload="false" />
<texture name="Audio_Press" file_name="icons/Audio_Press.png" preload="false" />
<texture name="Avaline_Icon" file_name="icons/avaline_default_icon.jpg" preload="true" />
- <texture name="BackArrow_Disabled" file_name="icons/BackArrow_Disabled.png" preload="false" />
<texture name="BackArrow_Off" file_name="icons/BackArrow_Off.png" preload="false" />
- <texture name="BackArrow_Press" file_name="icons/BackArrow_Press.png" preload="false" />
<texture name="Blank" file_name="Blank.png" preload="false" />
- <texture name="BottomTray_BG" file_name="bottomtray/BottomTray_BG.png" preload="false" />
- <texture name="BottomTray_Scroll_Right" file_name="navbar/Arrow_Right_Off.png" preload="false" />
- <texture name="BottomTray_Scroll_Left" file_name="navbar/Arrow_Left_Off.png" preload="false" />
- <texture name="BuyArrow_Off" file_name="navbar/BuyArrow_Off.png" preload="true" scale.left="1" scale.top="1" scale.right="0" scale.bottom="0" />
<texture name="BuyArrow_Over" file_name="navbar/BuyArrow_Over.png" preload="true" scale.left="0" scale.top="1" scale.right="0" scale.bottom="0" />
<texture name="BuyArrow_Press" file_name="navbar/BuyArrow_Press.png" preload="true" scale.left="1" scale.top="1" scale.right="0" scale.bottom="0" />
- <texture name="Cam_Avatar_Disabled" file_name="bottomtray/Cam_Avatar_Disabled.png" preload="false" />
- <texture name="Cam_Avatar_Over" file_name="bottomtray/Cam_Avatar_Over.png" preload="false" />
<texture name="Cam_Avatar_Off" file_name="bottomtray/Cam_Avatar_Off.png" preload="false" />
- <texture name="Cam_Avatar_Press" file_name="bottomtray/Cam_Avatar_Press.png" preload="false" />
- <texture name="Cam_FreeCam_Disabled" file_name="bottomtray/Cam_FreeCam_Disabled.png" preload="false" />
<texture name="Cam_FreeCam_Off" file_name="bottomtray/Cam_FreeCam_Off.png" preload="false" />
- <texture name="Cam_FreeCam_Over" file_name="bottomtray/Cam_FreeCam_Over.png" preload="false" />
- <texture name="Cam_FreeCam_Press" file_name="bottomtray/Cam_FreeCam_Press.png" preload="false" />
- <texture name="Cam_Orbit_Disabled" file_name="bottomtray/Cam_Orbit_Disabled.png" preload="false" />
<texture name="Cam_Orbit_Off" file_name="bottomtray/Cam_Orbit_Off.png" preload="false" />
- <texture name="Cam_Orbit_Over" file_name="bottomtray/Cam_Orbit_Over.png" preload="false" />
- <texture name="Cam_Orbit_Press" file_name="bottomtray/Cam_Orbit_Press.png" preload="false" />
- <texture name="Cam_Pan_Disabled" file_name="bottomtray/Cam_Pan_Disabled.png" preload="false" />
<texture name="Cam_Pan_Off" file_name="bottomtray/Cam_Pan_Off.png" preload="false" />
- <texture name="Cam_Pan_Over" file_name="bottomtray/CCam_Pan_Over.png" preload="false" />
- <texture name="Cam_Pan_Press" file_name="bottomtray/Cam_Pan_Press.png" preload="false" />
<texture name="Cam_Preset_Back_Off" file_name="bottomtray/Cam_Preset_Back_Off.png" preload="false" />
<texture name="Cam_Preset_Back_On" file_name="bottomtray/Cam_Preset_Back_On.png" preload="false" />
<texture name="Cam_Preset_Eye_Off" file_name="bottomtray/Cam_Preset_Eye_Off.png" preload="false" />
- <texture name="Cam_Preset_Eye_On" file_name="bottomtray/Cam_Preset_Eye_On.png" preload="false" />
<texture name="Cam_Preset_Front_Off" file_name="bottomtray/Cam_Preset_Front_Off.png" preload="false" />
<texture name="Cam_Preset_Front_On" file_name="bottomtray/Cam_Preset_Front_On.png" preload="false" />
<texture name="Cam_Preset_Side_Off" file_name="bottomtray/Cam_Preset_Side_Off.png" preload="false" />
@@ -116,8 +91,6 @@ with the same filename but different name
<texture name="Cam_Rotate_Out" file_name="bottomtray/Cam_Rotate_Out.png" preload="false" />
<texture name="Cam_Tracking_In" file_name="bottomtray/Cam_Tracking_In.png" preload="false" />
<texture name="Cam_Tracking_Out" file_name="bottomtray/Cam_Tracking_Out.png" preload="false" />
- <texture name="CameraView_Off" file_name="bottomtray/CameraView_Off.png" preload="false" />
- <texture name="CameraView_Over" file_name="bottomtray/CameraView_Over.png" preload="false" />
<texture name="Checkbox_Off_Disabled" file_name="widgets/Checkbox_Disabled.png" preload="true" />
<texture name="Checkbox_On_Disabled" file_name="widgets/Checkbox_On_Disabled.png" preload="true" />
@@ -127,8 +100,6 @@ with the same filename but different name
<texture name="Checkbox_Press" file_name="widgets/Checkbox_Press.png" preload="true" />
<texture name="ComboButton_Disabled" file_name="widgets/ComboButton_Disabled.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
- <texture name="ComboButton_Over" file_name="widgets/ComboButton_Over.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
- <texture name="ComboButton_Press" file_name="widgets/ComboButton_Press.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
<texture name="ComboButton_Selected" file_name="widgets/ComboButton_Selected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
<texture name="ComboButton_UpSelected" file_name="widgets/ComboButton_UpSelected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
<texture name="ComboButton_Up_On_Selected" file_name="widgets/ComboButton_Up_On_Selected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
@@ -136,25 +107,18 @@ with the same filename but different name
<texture name="ComboButton_UpOff" file_name="widgets/ComboButton_UpOff.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
<texture name="Container" file_name="containers/Container.png" preload="false" />
- <texture name="DisclosureArrow_Closed_Off" file_name="widgets/DisclosureArrow_Closed_Off.png" preload="true" />
- <texture name="DisclosureArrow_Closed_Press" file_name="widgets/DisclosureArrow_Closed_Press.png" preload="true" />
<texture name="DisclosureArrow_Opened_Off" file_name="widgets/DisclosureArrow_Opened_Off.png" preload="true" />
- <texture name="DisclosureArrow_Opened_Press" file_name="widgets/DisclosureArrow_Opened_Press.png" preload="true" />
<texture name="DownArrow" file_name="bottomtray/DownArrow.png" preload="false" />
<texture name="DropDown_Disabled" file_name="widgets/DropDown_Disabled.png" preload="true" scale.left="4" scale.top="19" scale.right="99" scale.bottom="4" />
- <texture name="DropDown_Over" file_name="widgets/DropDown_Over.png" preload="true" scale.left="4" scale.top="19" scale.right="99" scale.bottom="4" />
<texture name="DropDown_Press" file_name="widgets/DropDown_Press.png" preload="true" scale.left="4" scale.top="19" scale.right="99" scale.bottom="4" />
- <texture name="DropDown_Selected" file_name="widgets/DropDown_Selected.png" preload="true" scale.left="4" scale.top="19" scale.right="99" scale.bottom="4" />
<texture name="DropDown_On" file_name="widgets/DropDown_On.png" preload="true" scale.left="4" scale.top="19" scale.right="99" scale.bottom="4" />
<texture name="DropDown_Off" file_name="widgets/DropDown_Off.png" preload="true" scale.left="4" scale.top="19" scale.right="99" scale.bottom="4" />
<texture name="DropTarget" file_name="widgets/DropTarget.png" preload="false" />
<texture name="ExternalBrowser_Off" file_name="icons/ExternalBrowser_Off.png" preload="false" />
- <texture name="ExternalBrowser_Over" file_name="icons/ExternalBrowser_Over.png" preload="false" />
- <texture name="ExternalBrowser_Press" file_name="icons/ExternalBrowser_Press.png" preload="false" />
<texture name="Favorite_Star_Active" file_name="navbar/Favorite_Star_Active.png" preload="false" />
<texture name="Favorite_Star_Off" file_name="navbar/Favorite_Star_Off.png" preload="false" />
@@ -162,8 +126,6 @@ with the same filename but different name
<texture name="Favorite_Star_Over" file_name="navbar/Favorite_Star_Over.png" preload="false" />
<texture name="Favorite_Link_Over" file_name="navbar/Favorite_Link_Over.png" preload="false" />
- <texture name="FileMenu_BarSelect" file_name="navbar/FileMenu_BarSelect.png" preload="false" scale.left="2" scale.top="0" scale.right="2" scale.bottom="0" />
- <texture name="FileMenu_BG" file_name="navbar/FileMenu_BG.png" preload="false" />
<texture name="Flag" file_name="navbar/Flag.png" preload="false" />
@@ -174,22 +136,16 @@ with the same filename but different name
<texture name="Generic_Group" file_name="icons/Generic_Group.png" preload="false" />
<texture name="icon_group.tga" file_name="icons/Generic_Group.png" preload="false" />
- <texture name="Generic_Group_Large" file_name="icons/Generic_Group_Large.png" preload="false" />
- <texture name="Generic_Object_Medium" file_name="icons/Generic_Object_Medium.png" preload="false" />
<texture name="Generic_Object_Small" file_name="icons/Generic_Object_Small.png" preload="false" />
- <texture name="Generic_Object_Large" file_name="icons/Generic_Object_Large.png" preload="false" />
<texture name="Generic_Person" file_name="icons/Generic_Person.png" preload="false" />
<texture name="Generic_Person_Large" file_name="icons/Generic_Person_Large.png" preload="false" />
<texture name="Health" file_name="icons/Health.png" preload="false" />
- <texture name="Help_Off" file_name="navbar/Help_Off.png" preload="false" />
<texture name="Help_Press" file_name="navbar/Help_Press.png" preload="false" />
- <texture name="History_Arrow" file_name="navbar/History_Arrow.png" preload="true" />
<texture name="Home_Off" file_name="navbar/Home_Off.png" preload="false" />
- <texture name="Home_Press" file_name="navbar/Home_Press.png" preload="false" />
<texture name="Icon_Close_Foreground" file_name="windows/Icon_Close_Foreground.png" preload="true" />
<texture name="Icon_Close_Press" file_name="windows/Icon_Close_Press.png" preload="true" />
@@ -206,7 +162,6 @@ with the same filename but different name
<texture name="Icon_Help_Foreground" file_name="windows/Icon_Help_Foreground.png" preload="true" />
<texture name="Icon_Help_Press" file_name="windows/Icon_Help_Press.png" preload="true" />
- <texture name="Icon_Info" file_name="windows/Icon_Info.png" preload="false" />
<texture name="Icon_Minimize_Foreground" file_name="windows/Icon_Minimize_Foreground.png" preload="true" />
<texture name="Icon_Minimize_Press" file_name="windows/Icon_Minimize_Press.png" preload="true" />
@@ -225,13 +180,11 @@ with the same filename but different name
<texture name="Inspector_Hover" file_name="windows/Inspector_Hover.png" preload="false" />
<texture name="Inspector_I" file_name="windows/Inspector_I.png" preload="false" />
- <texture name="Inv_Acessories" file_name="icons/Inv_Accessories.png" preload="false" />
<texture name="Inv_Alpha" file_name="icons/Inv_Alpha.png" preload="false" />
<texture name="Inv_Animation" file_name="icons/Inv_Animation.png" preload="false" />
<texture name="Inv_BodyShape" file_name="icons/Inv_BodyShape.png" preload="false" />
<texture name="Inv_CallingCard" file_name="icons/Inv_CallingCard.png" preload="false" />
<texture name="Inv_Clothing" file_name="icons/Inv_Clothing.png" preload="false" />
- <texture name="Inv_DangerousScript" file_name="icons/Inv_DangerousScript.png" preload="false" />
<texture name="Inv_Eye" file_name="icons/Inv_Eye.png" preload="false" />
<texture name="Inv_FolderClosed" file_name="icons/Inv_FolderClosed.png" preload="false" />
<texture name="Inv_FolderOpen" file_name="icons/Inv_FolderOpen.png" preload="false" />
@@ -239,7 +192,6 @@ with the same filename but different name
<texture name="Inv_Gloves" file_name="icons/Inv_Gloves.png" preload="false" />
<texture name="Inv_Hair" file_name="icons/Inv_Hair.png" preload="false" />
<texture name="Inv_LinkItem" file_name="icons/Inv_LinkItem.png" preload="false" />
- <texture name="Inv_LinkItem_Broken" file_name="icons/Inv_LinkItem_Broken.png" preload="false" />
<texture name="Inv_LinkFolder" file_name="icons/Inv_LinkFolder.png" preload="false" />
<texture name="Inv_Jacket" file_name="icons/Inv_Jacket.png" preload="false" />
<texture name="Inv_LookFolderOpen" file_name="icons/Inv_LookFolderOpen.png" preload="false" />
@@ -260,7 +212,6 @@ with the same filename but different name
<texture name="Inv_Sound" file_name="icons/Inv_Sound.png" preload="false" />
<texture name="Inv_Tattoo" file_name="icons/Inv_Tattoo.png" preload="false" />
<texture name="Inv_Texture" file_name="icons/Inv_Texture.png" preload="false" />
- <texture name="Inv_Trash" file_name="icons/Inv_Trash.png" preload="false" />
<texture name="Inv_Underpants" file_name="icons/Inv_Underpants.png" preload="false" />
<texture name="Inv_Undershirt" file_name="icons/Inv_Undershirt.png" preload="false" />
@@ -273,9 +224,7 @@ with the same filename but different name
<texture name="Lock" file_name="icons/Lock.png" preload="false" />
<texture name="Lock2" file_name="navbar/Lock.png" preload="false" />
- <texture name="Login_Pod" file_name="windows/Login_Pod.png" preload="true" />
- <texture name="Microphone_Mute" file_name="icons/Microphone_Mute.png" preload="false" />
<texture name="Microphone_On" file_name="icons/Microphone_On.png" preload="false" />
<texture name="MinusItem_Disabled" file_name="icons/MinusItem_Disabled.png" preload="false" />
@@ -284,18 +233,9 @@ with the same filename but different name
<texture name="menu_separator" file_name="navbar/FileMenu_Divider.png" scale.left="4" scale.top="166" scale.right="0" scale.bottom="0" />
- <texture name="Move_Fly_Disabled" file_name="bottomtray/Move_Fly_Disabled.png" preload="false" />
<texture name="Move_Fly_Off" file_name="bottomtray/Move_Fly_Off.png" preload="false" />
- <texture name="Move_Fly_Over" file_name="bottomtray/Move_Fly_Over.png" preload="false" />
- <texture name="Move_Fly_Press" file_name="bottomtray/Move_Fly_Press.png" preload="false" />
- <texture name="Move_Run_Disabled" file_name="bottomtray/Move_Run_Disabled.png" preload="false" />
<texture name="Move_Run_Off" file_name="bottomtray/Move_Run_Off.png" preload="false" />
- <texture name="Move_Run_Over" file_name="bottomtray/Move_Run_Over.png" preload="false" />
- <texture name="Move_Run_Press" file_name="bottomtray/Move_Run_Press.png" preload="false" />
- <texture name="Move_Walk_Disabled" file_name="bottomtray/Move_Walk_Disabled.png" preload="false" />
<texture name="Move_Walk_Off" file_name="bottomtray/Move_Walk_Off.png" preload="false" />
- <texture name="Move_Walk_Over" file_name="bottomtray/Move_Walk_Over.png" preload="false" />
- <texture name="Move_Walk_Press" file_name="bottomtray/Move_Walk_Press.png" preload="false" />
<texture name="Movement_Backward_Off" file_name="bottomtray/Movement_Backward_Off.png" preload="false" />
<texture name="Movement_Backward_On" file_name="bottomtray/Movement_Backward_On.png" preload="false" />
<texture name="Movement_Down_Off" file_name="bottomtray/Movement_Down_Off.png" preload="false" />
@@ -312,10 +252,6 @@ with the same filename but different name
<texture name="NavBar_BG_NoFav" file_name="navbar/NavBar_BG_NoFav.png" preload="true" scale.left="1" scale.top="1" scale.right="0" scale.bottom="0" />
<texture name="NavBar_BG" file_name="navbar/NavBar_BG.png" preload="true" scale.left="1" scale.top="1" scale.right="0" scale.bottom="0" />
- <texture name="NearbyVoice_Lvl1" file_name="bottomtray/NearbyVoice_Lvl1.png" preload="false" />
- <texture name="NearbyVoice_Lvl2" file_name="bottomtray/NearbyVoice_Lvl2.png" preload="false" />
- <texture name="NearbyVoice_Lvl3" file_name="bottomtray/NearbyVoice_Lvl3.png" preload="false" />
- <texture name="NearbyVoice_On" file_name="bottomtray/NearbyVoice_On.png" preload="false" />
<texture name="Notices_Unread" file_name="bottomtray/Notices_Unread.png" preload="true" />
@@ -357,27 +293,15 @@ with the same filename but different name
<texture name="OptionsMenu_Off" file_name="icons/OptionsMenu_Off.png" preload="false" />
<texture name="OptionsMenu_Press" file_name="icons/OptionsMenu_Press.png" preload="false" />
- <texture name="Overhead_Arrow_L" file_name="world/Overhead_Arrow_L.png" preload="false" />
- <texture name="Overhead_Arrow_M" file_name="world/Overhead_Arrow_M.png" preload="false" />
- <texture name="Overhead_Arrow_S" file_name="world/Overhead_Arrow_S.png" preload="false" />
- <texture name="Overhead_L" file_name="world/Overhead_L.png" preload="false" />
- <texture name="Overhead_M" file_name="world/Overhead_M.png" preload="false" />
- <texture name="Overhead_S" file_name="world/Overhead_S.png" preload="false" />
- <texture name="Parcel_Evry_Color" file_name="icons/Parcel_Evry_Color.png" preload="false" />
<texture name="Parcel_Exp_Color" file_name="icons/Parcel_Exp_Color.png" preload="false" />
- <texture name="Parcel_M_Color" file_name="icons/Parcel_M_Color.png" preload="false" />
<texture name="Parcel_Build_Dark" file_name="icons/Parcel_Build_Dark.png" preload="false" />
<texture name="Parcel_BuildNo_Dark" file_name="icons/Parcel_BuildNo_Dark.png" preload="false" />
<texture name="Parcel_Damage_Dark" file_name="icons/Parcel_Damage_Dark.png" preload="false" />
<texture name="Parcel_DamageNo_Dark" file_name="icons/Parcel_DamageNo_Dark.png" preload="false" />
- <texture name="Parcel_Evry_Dark" file_name="icons/Parcel_Evry_Dark.png" preload="false" />
- <texture name="Parcel_Exp_Dark" file_name="icons/Parcel_Exp_Dark.png" preload="false" />
<texture name="Parcel_Fly_Dark" file_name="icons/Parcel_Fly_Dark.png" preload="false" />
<texture name="Parcel_FlyNo_Dark" file_name="icons/Parcel_FlyNo_Dark.png" preload="false" />
- <texture name="Parcel_ForSale_Dark" file_name="icons/Parcel_ForSale_Dark.png" preload="false" />
- <texture name="Parcel_ForSaleNo_Dark" file_name="icons/Parcel_ForSaleNo_Dark.png" preload="false" />
<texture name="Parcel_Health_Dark" file_name="icons/Parcel_Health_Dark.png" preload="false" />
<texture name="Parcel_M_Dark" file_name="icons/Parcel_M_Dark.png" preload="false" />
<texture name="Parcel_PG_Dark" file_name="icons/Parcel_PG_Dark.png" preload="false" />
@@ -389,22 +313,13 @@ with the same filename but different name
<texture name="Parcel_Voice_Dark" file_name="icons/Parcel_Voice_Dark.png" preload="false" />
<texture name="Parcel_VoiceNo_Dark" file_name="icons/Parcel_VoiceNo_Dark.png" preload="false" />
- <texture name="Parcel_Build_Light" file_name="icons/Parcel_Build_Light.png" preload="false" />
<texture name="Parcel_BuildNo_Light" file_name="icons/Parcel_BuildNo_Light.png" preload="false" />
- <texture name="Parcel_Damage_Light" file_name="icons/Parcel_Damage_Light.png" preload="false" />
- <texture name="Parcel_DamageNo_Light" file_name="icons/Parcel_DamageNo_Light.png" preload="false" />
- <texture name="Parcel_Evry_Light" file_name="icons/Parcel_Evry_Light.png" preload="false" />
- <texture name="Parcel_Exp_Light" file_name="icons/Parcel_Exp_Light.png" preload="false" />
- <texture name="Parcel_Fly_Light" file_name="icons/Parcel_Fly_Light.png" preload="false" />
<texture name="Parcel_FlyNo_Light" file_name="icons/Parcel_FlyNo_Light.png" preload="false" />
<texture name="Parcel_ForSale_Light" file_name="icons/Parcel_ForSale_Light.png" preload="false" />
- <texture name="Parcel_ForSaleNo_Light" file_name="icons/Parcel_ForSaleNo_Light.png" preload="false" />
<texture name="Parcel_M_Light" file_name="icons/Parcel_M_Light.png" preload="false" />
<texture name="Parcel_PG_Light" file_name="icons/Parcel_PG_Light.png" preload="false" />
- <texture name="Parcel_Push_Light" file_name="icons/Parcel_Push_Light.png" preload="false" />
<texture name="Parcel_PushNo_Light" file_name="icons/Parcel_PushNo_Light.png" preload="false" />
<texture name="Parcel_R_Light" file_name="icons/Parcel_R_Light.png" preload="false" />
- <texture name="Parcel_Scripts_Light" file_name="icons/Parcel_Scripts_Light.png" preload="false" />
<texture name="Parcel_ScriptsNo_Light" file_name="icons/Parcel_ScriptsNo_Dark.png" preload="false" />
<texture name="Parcel_Voice_Light" file_name="icons/Parcel_Voice_Light.png" preload="false" />
<texture name="Parcel_VoiceNo_Light" file_name="icons/Parcel_VoiceNo_Light.png" preload="false" />
@@ -416,18 +331,6 @@ with the same filename but different name
<texture name="Play_Over" file_name="icons/Play_Over.png" preload="false" />
<texture name="Play_Press" file_name="icons/Play_Press.png" preload="false" />
- <texture name="Progress_1" file_name="icons/Progress_1.png" preload="false" />
- <texture name="Progress_2" file_name="icons/Progress_2.png" preload="false" />
- <texture name="Progress_3" file_name="icons/Progress_3.png" preload="false" />
- <texture name="Progress_4" file_name="icons/Progress_4.png" preload="false" />
- <texture name="Progress_5" file_name="icons/Progress_5.png" preload="false" />
- <texture name="Progress_6" file_name="icons/Progress_6.png" preload="false" />
- <texture name="Progress_7" file_name="icons/Progress_7.png" preload="false" />
- <texture name="Progress_8" file_name="icons/Progress_8.png" preload="false" />
- <texture name="Progress_9" file_name="icons/Progress_9.png" preload="false" />
- <texture name="Progress_10" file_name="icons/Progress_10.png" preload="false" />
- <texture name="Progress_11" file_name="icons/Progress_11.png" preload="false" />
- <texture name="Progress_12" file_name="icons/Progress_12.png" preload="false" />
<texture name="ProgressBar" file_name="widgets/ProgressBar.png" preload="true" scale.left="4" scale.top="10" scale.right="48" scale.bottom="2" />
<texture name="ProgressTrack" file_name="widgets/ProgressTrack.png" preload="true" scale.left="4" scale.top="13" scale.right="148" scale.bottom="2" />
@@ -436,7 +339,6 @@ with the same filename but different name
<texture name="PushButton_Off" file_name="widgets/PushButton_Off.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
<texture name="PushButton_On" file_name="widgets/PushButton_On.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
<texture name="PushButton_On_Selected" file_name="widgets/PushButton_On_Selected.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
- <texture name="PushButton_On_Disabled" file_name="widgets/PushButton_On_Disabled.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
<texture name="PushButton_Press" file_name="widgets/PushButton_Press.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
<texture name="PushButton_Selected" file_name="widgets/PushButton_Selected.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
<texture name="PushButton_Selected_Press" file_name="widgets/PushButton_Selected_Press.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
@@ -449,12 +351,8 @@ with the same filename but different name
<texture name="RadioButton_Disabled" file_name="widgets/RadioButton_Disabled.png" preload="true" />
<texture name="RadioButton_On_Disabled" file_name="widgets/RadioButton_On_Disabled.png" preload="true" />
- <texture name="Rec_Off" file_name="icons/Rec_Off.png" preload="false" />
- <texture name="Rec_On" file_name="icons/Rec_On.png" preload="false" />
- <texture name="Refresh_Disabled" file_name="icons/Refresh_Disabled.png" preload="false" />
<texture name="Refresh_Off" file_name="icons/Refresh_Off.png" preload="false" />
- <texture name="Refresh_Press" file_name="icons/Refresh_Press.png" preload="false" />
<texture name="Resize_Corner" file_name="windows/Resize_Corner.png" preload="true" />
@@ -471,11 +369,6 @@ with the same filename but different name
<texture name="ScrollTrack_Vert" file_name="widgets/ScrollTrack_Vert.png" preload="true" scale.left="2" scale.top="40" scale.bottom="13" scale.right="0" />
<texture name="ScrollTrack_Horiz" file_name="widgets/ScrollTrack_Horiz.png" preload="true" scale.left="4" scale.top="0" scale.bottom="0" scale.right="2" />
- <texture name="ScrubberThumb_Disabled" file_name="widgets/ScrubberThumb_Disabled.png" preload="false" />
- <texture name="ScrubberThumb_Focus" file_name="widgets/ScrubberThumb_Focus.png" preload="false" />
- <texture name="ScrubberThumb_Off" file_name="widgets/ScrubberThumb_Off.png" preload="false" />
- <texture name="ScrubberThumb_Over" file_name="widgets/ScrubberThumb_Over.png" preload="false" />
- <texture name="ScrubberThumb_Press" file_name="widgets/ScrubberThumb_Press.png" preload="false" />
<texture name="Search" file_name="navbar/Search.png" preload="false" />
@@ -488,8 +381,6 @@ with the same filename but different name
<texture name="SegmentedBtn_Left_Selected_Press" file_name="widgets/SegmentedBtn_Left_Selected_Press.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
<texture name="SegmentedBtn_Left_Selected_Disabled" file_name="widgets/SegmentedBtn_Left_Selected_Disabled.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
- <texture name="SegmentedBtn_Middle_Off" file_name="widgets/SegmentedBtn_Middle_Off.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
- <texture name="SegmentedBtn_Middle_Press" file_name="widgets/SegmentedBtn_Middle_Press.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
<texture name="SegmentedBtn_Middle_Disabled" file_name="widgets/SegmentedBtn_Middle_Disabled.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
<texture name="SegmentedBtn_Middle_Selected" file_name="widgets/SegmentedBtn_Middle_Selected.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
<texture name="SegmentedBtn_Middle_Selected_Press" file_name="widgets/SegmentedBtn_Middle_Selected_Press.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
@@ -504,11 +395,7 @@ with the same filename but different name
<texture name="SegmentedBtn_Right_Selected_Disabled" file_name="widgets/SegmentedBtn_Right_Selected_Disabled.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
<texture name="SkipBackward_Off" file_name="icons/SkipBackward_Off.png" preload="false" />
- <texture name="SkipBackward_Over" file_name="icons/SkipBackward_Over.png" preload="false" />
- <texture name="SkipBackward_Press" file_name="icons/SkipBackward_Press.png" preload="false" />
<texture name="SkipForward_Off" file_name="icons/SkipForward_Off.png" preload="false" />
- <texture name="SkipForward_Over" file_name="icons/SkipForward_Over.png" preload="false" />
- <texture name="SkipForward_Press" file_name="icons/SkipForward_Press.png" preload="false" />
<texture name="SliderTrack_Horiz" file_name="widgets/SliderTrack_Horiz.png" scale.left="4" scale.top="4" scale.right="100" scale.bottom="2" />
<texture name="SliderTrack_Vert" file_name="widgets/SliderTrack_Vert.png" scale.left="2" scale.top="100" scale.right="4" scale.bottom="4" />
@@ -521,63 +408,35 @@ with the same filename but different name
<texture name="Unknown_Icon" file_name="icons/unknown_icon.png" preload="true" />
<texture name="Snapshot_Off" file_name="bottomtray/Snapshot_Off.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
- <texture name="Snapshot_Over" file_name="bottomtray/Snapshot_Over.png" preload="false" />
- <texture name="Snapshot_Press" file_name="bottomtray/Snapshot_Press.png" preload="false" />
<texture name="startup_logo" file_name="windows/startup_logo.png" preload="true" />
- <texture name="Stepper_Down_Disabled" file_name="widgets/Stepper_Down_Disabled.png" preload="false" />
<texture name="Stepper_Down_Off" file_name="widgets/Stepper_Down_Off.png" preload="false" />
<texture name="Stepper_Down_Press" file_name="widgets/Stepper_Down_Press.png" preload="false" />
- <texture name="Stepper_Up_Disabled" file_name="widgets/Stepper_Up_Disabled.png" preload="false" />
<texture name="Stepper_Up_Off" file_name="widgets/Stepper_Up_Off.png" preload="false" />
<texture name="Stepper_Up_Press" file_name="widgets/Stepper_Up_Press.png" preload="false" />
<texture name="Stop_Off" file_name="icons/Stop_Off.png" preload="false" />
- <texture name="Stop_Over" file_name="icons/Stop_Over.png" preload="false" />
- <texture name="Stop_Press" file_name="icons/Stop_Press.png" preload="false" />
<texture name="StopReload_Off" file_name="icons/StopReload_Off.png" preload="false" />
<texture name="StopReload_Over" file_name="icons/StopReload_Over.png" preload="false" />
- <texture name="StopReload_Press" file_name="icons/StopReload_Press.png" preload="false" />
- <texture name="TabIcon_Appearance_Large" file_name="taskpanel/TabIcon_Appearance_Large.png" preload="false" />
<texture name="TabIcon_Appearance_Off" file_name="taskpanel/TabIcon_Appearance_Off.png" preload="false" />
- <texture name="TabIcon_Appearance_Over" file_name="taskpanel/TabIcon_Appearance_Over.png" preload="false" />
<texture name="TabIcon_Appearance_Selected" file_name="taskpanel/TabIcon_Appearance_Selected.png" preload="false" />
<texture name="TabIcon_Close_Off" file_name="taskpanel/TabIcon_Close_Off.png" preload="false" />
- <texture name="TabIcon_Close_Over" file_name="taskpanel/TabIcon_Close_Over.png" preload="false" />
- <texture name="TabIcon_Inventory_Large" file_name="taskpanel/TabIcon_Inventory_Large.png" preload="false" />
- <texture name="TabIcon_Inventory_Off" file_name="taskpanel/TabIcon_Inventory_Off.png" preload="false" />
- <texture name="TabIcon_Inventory_Over" file_name="taskpanel/TabIcon_Inventory_Over.png" preload="false" />
- <texture name="TabIcon_Inventory_Selected" file_name="taskpanel/TabIcon_Inventory_Selected.png" preload="false" />
- <texture name="TabIcon_Home_Large" file_name="taskpanel/TabIcon_Home_Large.png" preload="false" />
<texture name="TabIcon_Home_Off" file_name="taskpanel/TabIcon_Home_Off.png" preload="false" />
- <texture name="TabIcon_Home_Over" file_name="taskpanel/TabIcon_Home_Over.png" preload="false" />
<texture name="TabIcon_Home_Selected" file_name="taskpanel/TabIcon_Home_Selected.png" preload="false" />
- <texture name="TabIcon_Me_Large" file_name="taskpanel/TabIcon_Me_Large.png" preload="false" />
<texture name="TabIcon_Me_Off" file_name="taskpanel/TabIcon_Me_Off.png" preload="false" />
- <texture name="TabIcon_Me_Over" file_name="taskpanel/TabIcon_Me_Over.png" preload="false" />
<texture name="TabIcon_Me_Selected" file_name="taskpanel/TabIcon_Me_Selected.png" preload="false" />
<texture name="TabIcon_Open_Off" file_name="taskpanel/TabIcon_Open_Off.png" preload="false" />
- <texture name="TabIcon_Open_Over" file_name="taskpanel/TabIcon_Open_Over.png" preload="false" />
- <texture name="TabIcon_People_Large" file_name="taskpanel/TabIcon_People_Large.png" preload="false" />
<texture name="TabIcon_People_Off" file_name="taskpanel/TabIcon_People_Off.png" preload="false" />
- <texture name="TabIcon_People_Over" file_name="taskpanel/TabIcon_People_Over.png" preload="false" />
<texture name="TabIcon_People_Selected" file_name="taskpanel/TabIcon_People_Selected.png" preload="false" />
<texture name="TabIcon_Places_Large" file_name="taskpanel/TabIcon_Places_Large.png" preload="false" />
<texture name="TabIcon_Places_Off" file_name="taskpanel/TabIcon_Places_Off.png" preload="false" />
- <texture name="TabIcon_Places_Over" file_name="taskpanel/TabIcon_Places_Over.png" preload="false" />
<texture name="TabIcon_Places_Selected" file_name="taskpanel/TabIcon_Places_Selected.png" preload="false" />
- <texture name="TabIcon_Things_Large" file_name="taskpanel/TabIcon_Things_Large.png" preload="false" />
<texture name="TabIcon_Things_Off" file_name="taskpanel/TabIcon_Things_Off.png" preload="false" />
- <texture name="TabIcon_Things_Over" file_name="taskpanel/TabIcon_Things_Over.png" preload="false" />
<texture name="TabIcon_Things_Selected" file_name="taskpanel/TabIcon_Things_Selected.png" preload="false" />
- <texture name="TabTop_Divider" file_name="containers/TabTop_Divider.png" preload="false" />
- <texture name="TabTop_Left_Press" file_name="containers/TabTop_Left_Press.png" preload="false" />
- <texture name="TabTop_Middle_Press" file_name="containers/TabTop_Middle_Press.png" preload="false" />
<texture name="TabTop_Right_Off" file_name="containers/TabTop_Right_Off.png" preload="false" scale.left="8" scale.top="8" scale.right="62" scale.bottom="9" />
- <texture name="TabTop_Right_Press" file_name="containers/TabTop_Right_Press.png" preload="false" />
<texture name="TabTop_Right_Selected" file_name="containers/TabTop_Right_Selected.png" preload="false" scale.left="8" scale.top="8" scale.right="62" scale.bottom="9" />
<texture name="TabTop_Middle_Off" file_name="containers/TabTop_Middle_Off.png" preload="false" scale.left="8" scale.top="8" scale.right="120" scale.bottom="9" />
<texture name="TabTop_Middle_Selected" file_name="containers/TabTop_Middle_Selected.png" preload="false" scale.left="8" scale.top="8" scale.right="96" scale.bottom="9" />
@@ -586,8 +445,6 @@ with the same filename but different name
<texture name="TaskPanel_Tab_Off" file_name="taskpanel/TaskPanel_Tab_Off.png" preload="false" scale.left="4" scale.top="29" scale.right="36" scale.bottom="4" />
<texture name="TaskPanel_Tab_Selected" file_name="taskpanel/TaskPanel_Tab_Selected.png" preload="false" scale.left="5" scale.top="30" scale.right="36" scale.bottom="5" />
- <texture name="TaskPanel_BG" file_name="taskpanel/TaskPanel_BG.png" preload="false" scale.left="4" scale.top="146" scale.right="146" scale.bottom="4" />
- <texture name="TaskPanel_Tab_Unselected" file_name="taskpanel/TaskPanel_Tab_Over.png" preload="false" scale.left="5" scale.top="30" scale.right="36" scale.bottom="5" />
<texture name="TextField_Search_Disabled" file_name="widgets/TextField_Search_Disabled.png" preload="true" scale.left="9" scale.top="12" scale.right="248" scale.bottom="12" />
<texture name="TextField_Off" file_name="widgets/TextField_Off.png" preload="true" scale.left="9" scale.top="12" scale.right="248" scale.bottom="12" />
@@ -596,7 +453,6 @@ with the same filename but different name
<texture name="TextField_Disabled" file_name="widgets/TextField_Disabled.png" preload="true" scale.left="9" scale.top="12" scale.right="248" scale.bottom="12" />
<texture name="TextField_Active" file_name="widgets/TextField_Active.png" preload="true" scale.left="9" scale.top="12" scale.right="248" scale.bottom="12" />
- <texture name="TimeBasedMediaBackground" file_name="windows/TimeBasedMediaBackground.png" preload="false" />
<texture name="Toast_CloseBtn" file_name="windows/Toast_CloseBtn.png" preload="true" />
<texture name="Toast_Background" file_name="windows/Toast_Background.png" preload="true"
@@ -605,28 +461,19 @@ with the same filename but different name
scale.left="4" scale.top="28" scale.right="60" scale.bottom="4" />
<texture name="Tool_Create" file_name="build/Tool_Create.png" preload="false" />
- <texture name="Tool_Create_Selected" file_name="build/Tool_Create_Selected.png" preload="false" />
<texture name="Tool_Dozer" file_name="build/Tool_Dozer.png" preload="false" />
- <texture name="Tool_Dozer_Selected" file_name="build/Tool_Dozer_Selected.png" preload="false" />
<texture name="Tool_Face" file_name="build/Tool_Face.png" preload="false" />
- <texture name="Tool_Face_Selected" file_name="build/Tool_Face_Selected.png" preload="false" />
<texture name="Tool_Grab" file_name="build/Tool_Grab.png" preload="false" />
- <texture name="Tool_Grab_Selected" file_name="build/Tool_Grab_Selected.png" preload="false" />
<texture name="Tool_Zoom" file_name="build/Tool_Zoom.png" preload="false" />
- <texture name="Tool_Zoom_Selected" file_name="build/Tool_Zoom_Selected.png" preload="false" />
- <texture name="Toolbar_Divider" file_name="containers/Toolbar_Divider.png" preload="false" />
<texture name="Toolbar_Left_Off" file_name="containers/Toolbar_Left_Off.png" preload="false" scale.left="5" scale.bottom="4" scale.top="24" scale.right="30" />
<texture name="Toolbar_Left_Over" file_name="containers/Toolbar_Left_Over.png" preload="false" scale.left="5" scale.bottom="4" scale.top="24" scale.right="30" />
- <texture name="Toolbar_Left_Press" file_name="containers/Toolbar_Left_Press.png" preload="false" scale.left="5" scale.bottom="4" scale.top="24" scale.right="30" />
<texture name="Toolbar_Left_Selected" file_name="containers/Toolbar_Left_Selected.png" preload="false" scale.left="5" scale.bottom="4" scale.top="24" scale.right="30" />
<texture name="Toolbar_Middle_Off" file_name="containers/Toolbar_Middle_Off.png" preload="false" scale.left="1" scale.bottom="2" scale.top="24" scale.right="30" />
<texture name="Toolbar_Middle_Over" file_name="containers/Toolbar_Middle_Over.png" preload="false" scale.left="1" scale.bottom="2" scale.top="24" scale.right="30" />
- <texture name="Toolbar_Middle_Press" file_name="containers/Toolbar_Middle_Press.png" preload="false" scale.left="1" scale.bottom="2" scale.top="24" scale.right="30" />
<texture name="Toolbar_Middle_Selected" file_name="containers/Toolbar_Middle_Selected.png" preload="false" scale.left="1" scale.bottom="2" scale.top="24" scale.right="30" />
<texture name="Toolbar_Right_Off" file_name="containers/Toolbar_Right_Off.png" preload="false" scale.left="1" scale.bottom="4" scale.top="24" scale.right="26" />
<texture name="Toolbar_Right_Over" file_name="containers/Toolbar_Right_Over.png" preload="false" scale.left="1" scale.bottom="4" scale.top="24" scale.right="26" />
- <texture name="Toolbar_Right_Press" file_name="containers/Toolbar_Right_Press.png" preload="false" scale.left="1" scale.bottom="4" scale.top="24" scale.right="26" />
<texture name="Toolbar_Right_Selected" file_name="containers/Toolbar_Right_Selected.png" preload="false" scale.left="1" scale.bottom="4" scale.top="24" scale.right="26" />
<texture name="Tooltip" file_name="widgets/Tooltip.png" preload="true" scale.left="2" scale.top="16" scale.right="100" scale.bottom="3" />
@@ -636,7 +483,6 @@ with the same filename but different name
<texture name="TrashItem_Press" file_name="icons/TrashItem_Press.png" preload="false" />
<texture name="Unread_Chiclet" file_name="bottomtray/Unread_Chiclet.png" preload="false" />
- <texture name="Unread_Msg" file_name="bottomtray/Unread_Msg.png" preload="false" />
<texture name="Unread_IM" file_name="bottomtray/Unread_IM.png" preload="false" />
<texture name="Volume_Background" file_name="windows/Volume_Background.png" preload="false"
@@ -651,10 +497,7 @@ with the same filename but different name
<texture name="WellButton_Lit" file_name="bottomtray/WellButton_Lit.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
<texture name="WellButton_Lit_Selected" file_name="bottomtray/WellButton_Lit_Selected.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
- <texture name="WebBasedMediaBackground" file_name="windows/WebBasedMediaBackground.png" preload="false" />
- <texture name="Widget_DownArrow" file_name="icons/Widget_DownArrow.png" preload="true" />
- <texture name="Widget_UpArrow" file_name="icons/Widget_UpArrow.png" preload="true" />
<texture name="Window_Background" file_name="windows/Window_Background.png" preload="true"
scale.left="4" scale.top="24" scale.right="26" scale.bottom="4" />
@@ -668,17 +511,7 @@ with the same filename but different name
<texture name="YouAreHere_Badge" file_name="icons/YouAreHere_Badge.png" preload="false" />
<texture name="Zoom_Off" file_name="icons/Zoom_Off.png" preload="false" />
- <texture name="Zoom_Over" file_name="icons/Zoom_Over.png" preload="false" />
- <texture name="Zoom_Press" file_name="icons/Zoom_Press.png" preload="false" />
<texture name="UnZoom_Off" file_name="icons/UnZoom_Off.png" preload="false" />
- <texture name="UnZoom_Over" file_name="icons/UnZoom_Over.png" preload="false" />
- <texture name="UnZoom_Press" file_name="icons/UnZoom_Press.png" preload="false" />
- <texture name="PowerOn_Off" file_name="icons/PowerOn_Off.png" preload="false" />
- <texture name="PowerOn_Over" file_name="icons/PowerOn_Over.png" preload="false" />
- <texture name="PowerOn_Press" file_name="icons/PowerOn_Press.png" preload="false" />
- <texture name="PowerOff_Off" file_name="icons/PowerOff_Off.png" preload="false" />
- <texture name="PowerOff_Over" file_name="icons/PowerOff_Over.png" preload="false" />
- <texture name="PowerOff_Press" file_name="icons/PowerOff_Press.png" preload="false" />
<texture name="pixiesmall.j2c" use_mips="true" />
<texture name="script_error.j2c" use_mips="true" />
@@ -688,7 +521,6 @@ with the same filename but different name
<texture name="transparent.j2c" use_mips="true" />
<!--WARNING OLD ART BELOW *do not use*-->
- <texture name="icn_chatbar.tga" />
<texture name="icn_media_web.tga" preload="true" />
<texture name="icn_media_movie.tga" preload="true" />
<texture name="icn_speaker-muted_dark.tga" />
@@ -718,8 +550,6 @@ with the same filename but different name
<texture name="icn_label_media.tga" />
<texture name="icn_rounded-text-field.tga" scale.left="14" scale.bottom="16" scale.top="16" scale.right="114" />
- <texture name="toggle_button_off" file_name="toggle_button_off.png" preload="true" />
- <texture name="toggle_button_selected" file_name="toggle_button_selected.png" preload="true" />
<texture name="color_swatch_alpha.tga" preload="true" />
<texture name="button_anim_pause.tga" />
@@ -729,15 +559,11 @@ with the same filename but different name
<texture name="crosshairs.tga" />
<texture name="direction_arrow.tga" file_name="world/BeaconArrow.png" />
- <texture name="icon_auction.tga" />
<texture name="icon_avatar_offline.tga" />
<texture name="icon_avatar_online.tga" />
<texture name="icon_day_cycle.tga" />
<texture name="icon_diurnal.tga" />
- <texture name="icon_event.tga" />
- <texture name="icon_event_mature.tga" />
<texture name="icon_for_sale.tga" />
- <texture name="icon_place_for_sale.tga" />
<texture name="icon_top_pick.tga" />
<texture name="inv_folder_mesh.tga"/>
@@ -750,7 +576,6 @@ with the same filename but different name
<texture name="map_avatar_16.tga" />
<texture name="map_avatar_8.tga" />
- <texture name="map_avatar_you_8.tga" />
<texture name="map_event.tga" />
<texture name="map_event_mature.tga" />
<texture name="map_home.tga" />
@@ -759,15 +584,10 @@ with the same filename but different name
<texture name="map_track_16.tga" />
<texture name="notify_caution_icon.tga" />
- <texture name="notify_next.png" preload="true" />
- <texture name="notify_box_icon.tga" />
<texture name="icn_active-speakers-dot-lvl0.tga" />
<texture name="icn_active-speakers-dot-lvl1.tga" />
<texture name="icn_active-speakers-dot-lvl2.tga" />
- <texture name="icn_active-speakers-typing1.tga" />
- <texture name="icn_active-speakers-typing2.tga" />
- <texture name="icn_active-speakers-typing3.tga" />
<texture name="icn_voice_ptt-off.tga" />
<texture name="icn_voice_ptt-on.tga" />
@@ -783,5 +603,4 @@ with the same filename but different name
<texture name="default_profile_picture.j2c" />
<texture name="locked_image.j2c" />
- <texture name="media_floater_border_16.png" scale_top="12" scale_left="4" scale_bottom="4" scale_right="12" />
</textures>
diff --git a/indra/newview/skins/default/xui/en/alert_line_editor.xml b/indra/newview/skins/default/xui/en/alert_line_editor.xml
index 97991153d8..82bf5fc8da 100644
--- a/indra/newview/skins/default/xui/en/alert_line_editor.xml
+++ b/indra/newview/skins/default/xui/en/alert_line_editor.xml
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<line_editor
select_on_focus="false"
- handle_edit_keys_directly="false"
revert_on_esc="true"
commit_on_focus_lost="true"
ignore_tab="true"
diff --git a/indra/newview/skins/default/xui/en/floater_about.xml b/indra/newview/skins/default/xui/en/floater_about.xml
index 46208d311d..76970919e7 100644
--- a/indra/newview/skins/default/xui/en/floater_about.xml
+++ b/indra/newview/skins/default/xui/en/floater_about.xml
@@ -110,19 +110,14 @@ Packets Lost: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number
top="5"
width="435"
word_wrap="true">
-Second Life is brought to you by Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les and many others.
+Second Life is brought to you by Philip, Tessa, Andrew, Cory, Ian, James, Phoenix, Ryan, Haney, Dan, Char, Ben, John, Tanya, Eddie, Richard, Mitch, Doug, Eric, Frank, Bruce, Aaron, Peter, Alice, Charlie, Debra, Eileen, Helen, Janet, Steffan, Steve, Tom, Mark, Hunter, Xenon, Burgess, Bill, Jim, Lee, Hamlet, Daniel, Jeff, Todd, Sarah, Tim, Stephanie, Colin, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Jack, Vektor, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Jesse, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Yuko, Makiko, Thomas, Harry, Seth, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Brad, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, Beez, Milo, Hermia, Red, Thrax, Gulliver, Joe, Sally, Paul, Jose, Rejean, Dore, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, Dustin, George, Del, Matthew, Cat, Jacqui, Adrian, Viola, Alfred, Noel, Irfan, Yool, Rika, Jane, Frontier, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Jeremy, JP, Jake, Anthony, Maurice, Madhavi, Leopard, Kyle, Joon, Bert, Belinda, Jon, Kristi, Bridie, Pramod, Socrates, Maria, Aric, Adreanne, Jay, Kari, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Colossus, Zen, BigPapi, Pastrami, Kurz, Mani, Neuro, Mel, Sardonyx, MJ, Rowan, Sgt, Elvis, Samuel, Leo, Bryan, Niko, Austin, Soft, Poppy, Rachel, Aki, Banzai, Alexa, Sue, Bender, CG, Angelo, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Rothman, Niall, Marin, Allison, Katie, Dawn, Dusty, Katt, Judy, Andrea, Ambroff, Infinity, Rico, Gail, Kalpana, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Maestro, Simone, Yang, T, Shannon, Nelson, Khanh, Scott, Courtney, Charlene, Quixote, Susan, Zed, Amanda, Katelin, Enkidu, Roxie, Esbee, JoRoan, Scarlet, Tay, Kevin, Wolfgang, Johnny, Ray, Andren, Merov, Bob, Rand, Howard, Callen, Heff, Galen, Newell, Dessie, Les, Michon, Jenelle, Geo, Siz, Shapiro, Pete, Calyle, Selene, Allen, Phoebe, Goldin, Kimmora, Dakota, Slaton, Lindquist, Zoey, Hari, Othello, Rohit, Sheldon, Petra, Viale, Gordon, Kaye, Pink, Ferny, Emerson, Davy, Bri, Chan, Juan, Robert, Terrence, Nathan, Carl, Ashley, JessieAnn, Huseby, Karina, Paris, Kurt, Rick, Lis, Kotler, Theeba, Lynx, Murphy, Doten, Taka, Norm, Jillian, Marcus, Mae, Novack, Esther, Perry, Dana, Ducot, Javier, Porter, Madison, Gecko, Dough, JR, Gisele, Crimp, Norie, Arch, Kimi, Fisher, Barbara, Jason, Peggy, Bernard, Jules, Leroy, Eva, Khederian, Campbell, Vogt, Masido, Karel, Torres, Lo, Breezer, Delby, Rountree, Anna, Servus, Rue, Itiaes, Chuck, Luna, Novella, Zaza, Wen, Gino, Lex, Cassandra, Limey, Nancy, Anukul, Silver, Brodesky, Jinsai, Squid, Gez, Rakesh, Ladan, Edelman, Marcet, Squire, Tatem, Tony, Jerm, Tia, Falcon, BK, Tiggs, Driscoll, Bacon, Timothee, Cru, Carmilla, Coyot, Webb, Kazu, Rudas, LJ, Sea, Ali Wallace, Bewest, Pup, Drub, Dragon, Inoshiro, Byron, Rhett, Xandix, Aimee, Fredrik, Thor, Teddy, Baron, Nelly, Ghengis, Epic, Eli, Stone, Grapes, Irie, Prep, Scobu, Valerie, Alain, and many others.
-Thank you to the following Residents for helping to ensure that this is the best version yet: (in progress)
+Thank you to the following Residents for helping to ensure that this is the best version yet: Drew Dwi, Zai Lynch, Latif Khalifa, Ellla McMahon, Harleen Gretzky, Squirrel Wood, Malarthi Behemoth, Dante Tucker, Buckaroo Mu, Eddi Decosta, Dirk, Talamasca, Torben Trautman, Irene Muni, Lilly Zenovka, Vick Forcella, Sasy Scarborough, Gentle Welinder, Elric Anatine, Techwolf Lupindo, Dusan Writer, WolfPup Lowenhar, Marianne McCann, Fiachra Lach, Sitearm Madonna, Sudane Erato, Sahkolihaa Contepomi, Sachi Vixen, Questar Utu, Dimitrio Lewis, Matto Destiny, Scrim Pinion, Radio Signals, Psi Merlin, Pixel Gausman, Mel Vanbeeck, Laurent Bechir, Lamorna Proctor, Lares Carter, Gwyneth Llewelyn, Hydra Shaftoe, Holger Gilruth, Gentle Heron, Carla Broek, Boroondas Gupte, Fury Rosewood, Flower Ducatillon, Colpo Wexler, gwampa Lomu, Borg Capalini, Beansy Twine, Ardy Lay, , 45ms Zhong, Adeon Writer, Aeonix Aeon, Ai Austin, Aiko Ying, Alexandrea Fride, Alliez Mysterio, Annie Milestone, Annika Genezzia, Ansariel Hiller, ArminasX Saiman, Arya Braveheart, Asaeda Meltingdots, Asturkon Jua, Avallyn Oakleaf, Avatar Quinzet, BabyA Littlething, Bacchus Ireto, Bazaar, Riva, Benjamin Bigdipper, Beth Walcher, Bezilon Kasei, Biancaluce Robbiani, Bill Walach, blakopal Galicia, Blitzckreed Levenque, Bryn Oh, Callipygian Christensen, Cap Carver, Carr Arbenlow, Chantal Harvey, Charles Courtois, Charlie Sazaland, Cherry Cheevers, ChickyBabes Zuzu, Christopher Organiser, Ciaran Laval, Clara Young, Celierra Darling, Corinne Helendale, Corro Moseley, Coughdrop Littlething, Darien Caldwell, Dartagan Shepherd, Debs Regent, Decro Schmooz, Denim Kamachi, DiJodi Dubratt, Dil Spitz, Edgware Marker, Egehan Dryke, Emma Portilo, Emmie Fairymeadow, Evangelista Emerald, Faelon Swordthain, Frenchimmo Sabra, Gaberoonie Zanzibar, Ganymedes Costagravas, Gene Frostbite, GeneJ Composer, Giggles Littlebird, Grady Echegaray, Guni Greenstein, Gypsy Tripsa, Hackshaven Harford, Ham Rambler, Han Shuffle, Hanglow Short, Hatzfeld Runo, herina Bode, Horatio Freund, Hypatia Callisto, Hypatia Pickens, Identity Euler, Imnotgoing Sideways, Innula Zenovka, Iyoba Tarantal, Jack Abraham, Jagga Meredith, Jennifer Boyle, Jeremy Marquez, Jessica Qin, Jinx Nordberg, Jo Bernandes, Jocial Sonnenkern, Joel Savard, Jondan Lundquist, Josef Munster, Josette Windlow, Juilan Tripsa, Juro Kothari, Justin RiversRunRed, Kagehi Kohn, Kaimen Takahe, Keklily Longfall, Ken Lavender, Kestral Karas, Khisme Nitely, Kimar Coba, Kithrak Kirkorian, Kitty Barnett, Kolor Fall, Komiko Okamoto, Korvel Noh, Larry Pixel, Leal Choche, len Starship, Lenae Munz, Lexi Frua, Lillie Cordeaux, Lizzy Macarthur, LSL Scientist, Luban Yiyuan, Luc Starsider, Maccus McCullough, Madison Blanc, Maggie Darwin, Mallory Destiny, Manx Wharton, Marc Claridge, Marc2 Sands, Matthew Anthony, Maxim RiversRunRed, Medhue Simoni, Melinda Latynina, Mencius Watts, Michi Lumin, Midian Farspire, Miles Glaz, Mindy Mathy, Mitch Wagner, Mo Hax, Mourna Biziou, Nao Noe, naofan Teardrop, Naomah Beaumont, Nathiel Siamendes, Nber Medici, Neko Link, Netpat Igaly, Neutron Chesnokov, Newfie Pendragon, Nicholai Laviscu, Nick Rhodes, Nicoladie Gymnast, Ollie Kubrick, Orenj Marat, Orion Delphis, Oryx Tempel, Parvati Silverweb, PeterPunk Mooney, Pixel Scientist, Pounce Teazle, Professor Noarlunga, Quantum Destiny, Quicksilver Hermes, Ralf Setsuko, RAT Quan, RedMokum Bravin, Revolution Perenti, Rezit Sideways, Rich Grainger, Rosco Teardrop, Rose Evans, Rudee Voom, RufusTT Horsefly, Saii Hallard, SaintLEOlions Zimer, Samm Larkham, Satanello Miami, SexySteven Morrisey, Sheet Spotter, Shnurui Troughton, sicarius Thorne, Sicarius Toxx, Sini Nubalo, SLB Wirefly, snowy Sidran, Soupa Segura, ST Mensing, Starshine Halasy, Stickman Ingmann, Synystyr Texan, Takeda Terrawyng, Tali Rosca, Templar Merlin, Tezcatlipoca Bisiani, Tiel Stonecutter, Tony Kembia, TouchaHoney Perhaps, Trey Reanimator, TriloByte Zanzibar, Trinity Dechou, Trinity Dejavu, Unlikely Quintessa, UsikuFarasi Kanarik, Veritas Raymaker, Vex Streeter, Viaticus Speculaas, Villain Baroque, Vixie Durant, Void Singer, Watty Berkson, Westley Schridde, Westley Streeter, Whimsy Winx, Winter Ventura, Wundur Primbee, xstorm Radek, YongYong Francois, Zak Westminster, Zana Kohime, Zaren Alexander, Zeja Pyle, ZenMondo Wormser, Zoex Flanagan, and many others.
-
-
-
-
-It is a rare mind indeed that can render the hitherto non-existent blindingly obvious. The cry 'I could have thought of that' is a very popular and misleading one, for the fact is that they didn't, and a very significant and revealing fact it is too.
- -- Douglas Adams
+"The work goes on, the cause endures, the hope still lives, and the dreams shall never die" - Edward Kennedy
</text_editor>
</panel>
<panel
diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml
index 51bd7a0a16..59f1889808 100644
--- a/indra/newview/skins/default/xui/en/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_about_land.xml
@@ -636,7 +636,6 @@ Leyla Linden </text>
length="1"
enabled="false"
follows="all"
- handle_edit_keys_directly="true"
height="200"
layout="topleft"
left="10"
diff --git a/indra/newview/skins/default/xui/en/floater_animation_preview.xml b/indra/newview/skins/default/xui/en/floater_animation_preview.xml
index 9dff4abe2c..cb6b2f6ebc 100644
--- a/indra/newview/skins/default/xui/en/floater_animation_preview.xml
+++ b/indra/newview/skins/default/xui/en/floater_animation_preview.xml
@@ -333,66 +333,86 @@ Maximum animation length is [MAX_LENGTH] seconds.
left_pad="20"
name="emote_combo"
tool_tip="Controls what face does during animation">
- <combo_box.item
- label="(None)"
- name="[None]" />
- <combo_box.item
- label="Aaaaah"
- name="Aaaaah" />
- <combo_box.item
- label="Afraid"
- name="Afraid" />
- <combo_box.item
- label="Angry"
- name="Angry" />
- <combo_box.item
- label="Big Smile"
- name="BigSmile" />
- <combo_box.item
- label="Bored"
- name="Bored" />
- <combo_box.item
- label="Cry"
- name="Cry" />
- <combo_box.item
- label="Disdain"
- name="Disdain" />
- <combo_box.item
- label="Embarrassed"
- name="Embarrassed" />
- <combo_box.item
- label="Frown"
- name="Frown" />
- <combo_box.item
- label="Kiss"
- name="Kiss" />
- <combo_box.item
- label="Laugh"
- name="Laugh" />
- <combo_box.item
- label="Plllppt"
- name="Plllppt" />
- <combo_box.item
- label="Repulsed"
- name="Repulsed" />
- <combo_box.item
- label="Sad"
- name="Sad" />
- <combo_box.item
- label="Shrug"
- name="Shrug" />
- <combo_box.item
- label="Smile"
- name="Smile" />
- <combo_box.item
- label="Surprise"
- name="Surprise" />
- <combo_box.item
- label="Wink"
- name="Wink" />
- <combo_box.item
- label="Worry"
- name="Worry" />
+ <item
+ label="(None)"
+ value=""
+ name="[None]" />
+ <item
+ label="Aaaaah"
+ value="Aaaaah"
+ name="Aaaaah" />
+ <item
+ label="Afraid"
+ value="Afraid"
+ name="Afraid" />
+ <item
+ label="Angry"
+ value="Angry"
+ name="Angry" />
+ <item
+ label="Big Smile"
+ value="Big Smile"
+ name="BigSmile" />
+ <item
+ label="Bored"
+ value="Bored"
+ name="Bored" />
+ <item
+ label="Cry"
+ value="Cry"
+ name="Cry" />
+ <item
+ label="Disdain"
+ value="Disdain"
+ name="Disdain" />
+ <item
+ label="Embarrassed"
+ value="Embarrassed"
+ name="Embarrassed" />
+ <item
+ label="Frown"
+ value="Frown"
+ name="Frown" />
+ <item
+ label="Kiss"
+ value="Kiss"
+ name="Kiss" />
+ <item
+ label="Laugh"
+ value="Laugh"
+ name="Laugh" />
+ <item
+ label="Plllppt"
+ value="Plllppt"
+ name="Plllppt" />
+ <item
+ label="Repulsed"
+ value="Repulsed"
+ name="Repulsed" />
+ <item
+ label="Sad"
+ value="Sad"
+ name="Sad" />
+ <item
+ label="Shrug"
+ value="Shrug"
+ name="Shrug" />
+ <item
+ label="Smile"
+ value="Smile"
+ name="Smile" />
+ <item
+ label="Surprise"
+ value="Surprise"
+ name="Surprise" />
+ <item
+ label="Wink"
+ value="Wink"
+ name="Wink" />
+ <item
+ label="Worry"
+ value="Worry"
+ name="Worry" />
</combo_box>
<text
type="string"
@@ -414,17 +434,21 @@ Maximum animation length is [MAX_LENGTH] seconds.
left_pad="20"
name="preview_base_anim"
tool_tip="Use this to test your animation behavior while your avatar performs common actions.">
- <combo_box.item
+ <item
label="Standing"
+ value="Standing"
name="Standing" />
- <combo_box.item
+ <item
label="Walking"
+ value="Walking"
name="Walking" />
- <combo_box.item
+ <item
label="Sitting"
+ value="Sitting"
name="Sitting" />
- <combo_box.item
+ <item
label="Flying"
+ value="Flying"
name="Flying" />
</combo_box>
<spinner
diff --git a/indra/newview/skins/default/xui/en/floater_buy_land.xml b/indra/newview/skins/default/xui/en/floater_buy_land.xml
index 125b080519..df44b61632 100644
--- a/indra/newview/skins/default/xui/en/floater_buy_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_buy_land.xml
@@ -356,7 +356,6 @@ supports [AMOUNT2] objects
length="1"
enabled="false"
follows="top|right"
- handle_edit_keys_directly="false"
height="237"
layout="topleft"
left="444"
diff --git a/indra/newview/skins/default/xui/en/floater_god_tools.xml b/indra/newview/skins/default/xui/en/floater_god_tools.xml
index 240871ec25..dfe3cf4485 100644
--- a/indra/newview/skins/default/xui/en/floater_god_tools.xml
+++ b/indra/newview/skins/default/xui/en/floater_god_tools.xml
@@ -61,10 +61,10 @@
height="10"
layout="topleft"
left="10"
- name="Sim Name:"
+ name="Region Name:"
top="12"
width="80">
- Sim Name:
+ Region Name:
</text>
<line_editor
border_style="line"
@@ -481,10 +481,10 @@
height="10"
layout="topleft"
left="10"
- name="Sim Name:"
+ name="Region Name:"
top="10"
width="80">
- Sim Name:
+ Region Name:
</text>
<text
type="string"
diff --git a/indra/newview/skins/default/xui/en/floater_hardware_settings.xml b/indra/newview/skins/default/xui/en/floater_hardware_settings.xml
index 1e2440580e..27f8b4bb39 100644
--- a/indra/newview/skins/default/xui/en/floater_hardware_settings.xml
+++ b/indra/newview/skins/default/xui/en/floater_hardware_settings.xml
@@ -6,7 +6,7 @@
name="Hardware Settings Floater"
help_topic="hardware_settings_floater"
title="HARDWARE SETTINGS"
- width="500">
+ width="615">
<text
type="string"
length="1"
@@ -16,7 +16,7 @@
left="10"
name="Filtering:"
top="20"
- width="128">
+ width="188">
Filtering:
</text>
<check_box
@@ -37,7 +37,7 @@
left="10"
name="Antialiasing:"
top_pad="7"
- width="128">
+ width="188">
Antialiasing:
</text>
<combo_box
@@ -79,13 +79,13 @@
increment="0.01"
initial_value="1"
label="Gamma:"
- label_width="138"
+ label_width="198"
layout="topleft"
left="10"
max_val="2"
name="gamma"
top_pad="7"
- width="202" />
+ width="262" />
<text
type="string"
length="1"
@@ -95,7 +95,7 @@
left_pad="10"
name="(brightness, lower is brighter)"
top_delta="2"
- width="315">
+ width="385">
(0 = default brightness, lower = brighter)
</text>
<text
@@ -107,7 +107,7 @@
left="10"
name="Enable VBO:"
top_pad="10"
- width="128">
+ width="188">
Enable VBO:
</text>
<check_box
@@ -128,14 +128,14 @@
increment="16"
initial_value="32"
label="Texture Memory (MB):"
- label_width="135"
+ label_width="195"
layout="topleft"
left="10"
max_val="4096"
name="GraphicsCardTextureMemory"
tool_tip="Amount of memory to allocate for textures. Defaults to video card memory. Reducing this may improve performance but may also make textures blurry."
top_pad="10"
- width="300" />
+ width="360" />
<spinner
control_name="RenderFogRatio"
decimal_digits="1"
@@ -143,14 +143,14 @@
height="22"
initial_value="4"
label="Fog Distance Ratio:"
- label_width="138"
+ label_width="198"
layout="topleft"
left_delta="0"
max_val="10"
min_val="0.5"
name="fog"
top_pad="7"
- width="202" />
+ width="262" />
<button
follows="right|bottom"
height="22"
diff --git a/indra/newview/skins/default/xui/en/floater_image_preview.xml b/indra/newview/skins/default/xui/en/floater_image_preview.xml
index 6f8f272128..86232de1a4 100644
--- a/indra/newview/skins/default/xui/en/floater_image_preview.xml
+++ b/indra/newview/skins/default/xui/en/floater_image_preview.xml
@@ -64,35 +64,45 @@
name="clothing_type_combo"
top_delta="3"
width="160">
- <combo_box.item
+ <item
label="Image"
+ value="Image"
name="Image" />
- <combo_box.item
+ <item
label="Hair"
+ value="Hair"
name="Hair" />
- <combo_box.item
+ <item
label="Female Head"
+ value="Female Head"
name="FemaleHead" />
- <combo_box.item
+ <item
label="Female Upper Body"
+ value="Female Upper Body"
name="FemaleUpperBody" />
- <combo_box.item
+ <item
label="Female Lower Body"
+ value="Female Lower Body"
name="FemaleLowerBody" />
- <combo_box.item
+ <item
label="Male Head"
+ value="Male Head"
name="MaleHead" />
- <combo_box.item
+ <item
label="Male Upper Body"
+ value="Male Upper Body"
name="MaleUpperBody" />
- <combo_box.item
+ <item
label="Male Lower Body"
+ value="Male Lower Body"
name="MaleLowerBody" />
- <combo_box.item
+ <item
label="Skirt"
+ value="Skirt"
name="Skirt" />
- <combo_box.item
+ <item
label="Sculpted Prim"
+ value="Sculpted Prim"
name="SculptedPrim" />
</combo_box>
<text
diff --git a/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml
index a2938e8574..1d73d516d0 100644
--- a/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml
+++ b/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml
@@ -45,7 +45,6 @@ as a new Outfit:
border_style="line"
border_thickness="1"
follows="left|top"
- handle_edit_keys_directly="true"
height="23"
layout="topleft"
left_delta="0"
diff --git a/indra/newview/skins/default/xui/en/floater_preview_notecard.xml b/indra/newview/skins/default/xui/en/floater_preview_notecard.xml
index e9099211a3..14c0081c0d 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_notecard.xml
@@ -72,7 +72,6 @@
max_length="65536"
name="Notecard Editor"
allow_html="false"
- handle_edit_keys_directly="true"
tab_group="1"
top="46"
width="392"
diff --git a/indra/newview/skins/default/xui/en/floater_report_abuse.xml b/indra/newview/skins/default/xui/en/floater_report_abuse.xml
index ac0fca9cce..21c0bfef48 100644
--- a/indra/newview/skins/default/xui/en/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/en/floater_report_abuse.xml
@@ -456,7 +456,7 @@
layout="topleft"
left_delta="0"
name="dscr_title"
- top_pad="5"
+ top_pad="6"
width="50">
Details:
</text>
@@ -464,11 +464,12 @@
type="string"
length="1"
follows="left|top"
- height="16"
+ height="22"
layout="topleft"
name="bug_aviso"
left_pad="10"
- width="200">
+ word_wrap="true"
+ width="270">
Please be as specific as possible
</text>
<text_editor
diff --git a/indra/newview/skins/default/xui/en/floater_test_text_editor.xml b/indra/newview/skins/default/xui/en/floater_test_text_editor.xml
index b730f0e511..548e24efba 100644
--- a/indra/newview/skins/default/xui/en/floater_test_text_editor.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_text_editor.xml
@@ -14,6 +14,7 @@
name="test_text_editor"
tool_tip="text editor"
top="25"
+ word_wrap="true"
width="200">
Text Editor
</text_editor>
diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml
index 37dbd8a670..ce6fc48a3b 100644
--- a/indra/newview/skins/default/xui/en/floater_tools.xml
+++ b/indra/newview/skins/default/xui/en/floater_tools.xml
@@ -2576,18 +2576,18 @@ even though the user gets a free copy.
height="19"
initial_value="0"
label="Horizontal (U)"
- label_width="90"
+ label_width="125"
layout="topleft"
left="20"
max_val="100"
name="TexScaleU"
top_pad="6"
- width="160" />
+ width="185" />
<check_box
height="19"
label="Flip"
layout="topleft"
- left_pad="10"
+ left_pad="5"
name="checkbox flip s"
top_delta="0"
width="70" />
@@ -2596,17 +2596,17 @@ even though the user gets a free copy.
height="19"
initial_value="0"
label="Vertical (V)"
- label_width="90"
+ label_width="125"
layout="topleft"
left="20"
max_val="100"
name="TexScaleV"
- width="160" />
+ width="185" />
<check_box
height="19"
label="Flip"
layout="topleft"
- left_pad="10"
+ left_pad="5"
name="checkbox flip t"
top_delta="0"
width="70" />
@@ -2618,12 +2618,12 @@ even though the user gets a free copy.
initial_value="0"
label="Rotation˚"
layout="topleft"
- label_width="100"
+ label_width="135"
left="10"
max_val="9999"
min_val="-9999"
name="TexRot"
- width="170" />
+ width="195" />
<spinner
decimal_digits="1"
@@ -2632,19 +2632,19 @@ even though the user gets a free copy.
initial_value="1"
label="Repeats / Meter"
layout="topleft"
- label_width="100"
+ label_width="135"
left="10"
max_val="10"
min_val="0.1"
name="rptctrl"
- width="170" />
+ width="195" />
<button
follows="left|top"
height="23"
label="Apply"
label_selected="Apply"
layout="topleft"
- left_pad="10"
+ left_pad="5"
name="button apply"
width="75" />
<text
@@ -2663,24 +2663,24 @@ even though the user gets a free copy.
height="19"
initial_value="0"
label="Horizontal (U)"
- label_width="90"
+ label_width="125"
layout="topleft"
left="20"
min_val="-1"
name="TexOffsetU"
- width="160" />
+ width="185" />
<spinner
follows="left|top"
height="19"
initial_value="0"
label="Vertical (V)"
- label_width="90"
+ label_width="125"
layout="topleft"
left_delta="0"
min_val="-1"
name="TexOffsetV"
top_pad="1"
- width="160" />
+ width="185" />
<panel
border="false"
follows="left|top"
diff --git a/indra/newview/skins/default/xui/en/floater_tos.xml b/indra/newview/skins/default/xui/en/floater_tos.xml
index f3665e87ed..cbfaac958b 100644
--- a/indra/newview/skins/default/xui/en/floater_tos.xml
+++ b/indra/newview/skins/default/xui/en/floater_tos.xml
@@ -11,6 +11,10 @@
name="real_url">
http://secondlife.com/app/tos/
</floater.string>
+ <floater.string
+ name="loading_url">
+ data:text/html,%3Chtml%3E%3Chead%3E%3C/head%3E%3Cbody text=%22000000%22%3E%3Ch2%3E Loading %3Ca%20target%3D%22_external%22%20href%3D%22http%3A//secondlife.com/app/tos/%22%3ETerms%20of%20Service%3C/a%3E...%3C/h2%3E %3C/body%3E %3C/html%3E
+ </floater.string>
<button
enabled="false"
height="20"
@@ -59,7 +63,6 @@
layout="topleft"
left_delta="0"
name="tos_html"
- start_url="data:text/html,%3Chtml%3E%3Chead%3E%3C/head%3E%3Cbody text=%22000000%22%3E%3Ch2%3E Loading %3Ca%20target%3D%22_external%22%20href%3D%22http%3A//secondlife.com/app/tos/%22%3ETerms%20of%20Service%3C/a%3E...%3C/h2%3E %3C/body%3E %3C/html%3E"
top_delta="40"
width="568" />
</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_ui_preview.xml b/indra/newview/skins/default/xui/en/floater_ui_preview.xml
index 3a981adfdf..3b10a57c50 100644
--- a/indra/newview/skins/default/xui/en/floater_ui_preview.xml
+++ b/indra/newview/skins/default/xui/en/floater_ui_preview.xml
@@ -238,7 +238,6 @@
border_thickness="1"
follows="left|bottom"
font="SansSerif"
- handle_edit_keys_directly="true"
height="20"
layout="topleft"
left_delta="100"
@@ -278,7 +277,6 @@
border_thickness="1"
follows="left|bottom"
font="SansSerif"
- handle_edit_keys_directly="true"
height="20"
layout="topleft"
left_delta="100"
@@ -320,7 +318,6 @@
border_thickness="1"
follows="left|bottom"
font="SansSerif"
- handle_edit_keys_directly="true"
height="20"
layout="topleft"
left_delta="65"
diff --git a/indra/newview/skins/default/xui/en/floater_wearable_save_as.xml b/indra/newview/skins/default/xui/en/floater_wearable_save_as.xml
index b4b57f2dbc..71812bd1a6 100644
--- a/indra/newview/skins/default/xui/en/floater_wearable_save_as.xml
+++ b/indra/newview/skins/default/xui/en/floater_wearable_save_as.xml
@@ -44,7 +44,6 @@
border_style="line"
border_thickness="1"
follows="left|top"
- handle_edit_keys_directly="true"
height="23"
layout="topleft"
left_delta="0"
diff --git a/indra/newview/skins/default/xui/en/inspector_info_ctrl.xml b/indra/newview/skins/default/xui/en/inspector_info_ctrl.xml
index 39fb54d513..a7ecc39ed8 100644
--- a/indra/newview/skins/default/xui/en/inspector_info_ctrl.xml
+++ b/indra/newview/skins/default/xui/en/inspector_info_ctrl.xml
@@ -1,8 +1,8 @@
<button
chrome="true"
- image_selected="Info_Small"
- image_unselected="Info_Small"
- image_pressed="Info_Small"
+ image_selected="Info_Over"
+ image_unselected="Info_Over"
+ image_pressed="Info_Over"
height="12"
name="inspector_info_ctrl"
width="12" />
diff --git a/indra/newview/skins/default/xui/en/menu_edit.xml b/indra/newview/skins/default/xui/en/menu_edit.xml
new file mode 100644
index 0000000000..68f3cb532c
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/menu_edit.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<menu create_jump_keys="true"
+ label="Edit"
+ name="Edit"
+ visible="false">
+ <menu_item_call
+ label="Undo"
+ name="Undo"
+ shortcut="control|Z">
+ <menu_item_call.on_click
+ function="Edit.Undo" />
+ <menu_item_call.on_enable
+ function="Edit.EnableUndo" />
+ </menu_item_call>
+ <menu_item_call
+ label="Redo"
+ name="Redo"
+ shortcut="control|Y">
+ <menu_item_call.on_click
+ function="Edit.Redo" />
+ <menu_item_call.on_enable
+ function="Edit.EnableRedo" />
+ </menu_item_call>
+ <menu_item_separator/>
+ <menu_item_call
+ label="Cut"
+ name="Cut"
+ shortcut="control|X">
+ <menu_item_call.on_click
+ function="Edit.Cut" />
+ <menu_item_call.on_enable
+ function="Edit.EnableCut" />
+ </menu_item_call>
+ <menu_item_call
+ label="Copy"
+ name="Copy"
+ shortcut="control|C">
+ <menu_item_call.on_click
+ function="Edit.Copy" />
+ <menu_item_call.on_enable
+ function="Edit.EnableCopy" />
+ </menu_item_call>
+ <menu_item_call
+ label="Paste"
+ name="Paste"
+ shortcut="control|V">
+ <menu_item_call.on_click
+ function="Edit.Paste" />
+ <menu_item_call.on_enable
+ function="Edit.EnablePaste" />
+ </menu_item_call>
+ <menu_item_call
+ label="Delete"
+ name="Delete"
+ shortcut="Del">
+ <menu_item_call.on_click
+ function="Edit.Delete" />
+ <menu_item_call.on_enable
+ function="Edit.EnableDelete" />
+ </menu_item_call>
+ <menu_item_call
+ label="Duplicate"
+ name="Duplicate"
+ shortcut="control|D">
+ <menu_item_call.on_click
+ function="Edit.Duplicate" />
+ <menu_item_call.on_enable
+ function="Edit.EnableDuplicate" />
+ </menu_item_call>
+ <menu_item_separator/>
+ <menu_item_call
+ label="Select All"
+ name="Select All"
+ shortcut="control|A">
+ <menu_item_call.on_click
+ function="Edit.SelectAll" />
+ <menu_item_call.on_enable
+ function="Edit.EnableSelectAll" />
+ </menu_item_call>
+ <menu_item_call
+ label="Deselect"
+ name="Deselect"
+ shortcut="control|E">
+ <menu_item_call.on_click
+ function="Edit.Deselect" />
+ <menu_item_call.on_enable
+ function="Edit.EnableDeselect" />
+ </menu_item_call>
+</menu> \ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml
index ba74104594..e95300a4b3 100644
--- a/indra/newview/skins/default/xui/en/menu_login.xml
+++ b/indra/newview/skins/default/xui/en/menu_login.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<menu_bar
- follows="left|top|right"
+ follows="left|top"
height="18"
layout="topleft"
left_delta="0"
@@ -29,14 +29,6 @@
function="File.Quit" />
</menu_item_call>
</menu>
-<!-- Edit menu merged into the Me menu above
- <menu
- create_jump_keys="true"
- label="Edit"
- name="Edit"
- width="153">
- </menu>
--->
<menu
create_jump_keys="true"
label="Help"
@@ -59,105 +51,24 @@
parameter="sl_about" />
</menu_item_call>
</menu>
+ <menu_item_check
+ label="Show Debug Menu"
+ name="Show Debug Menu"
+ visible="false"
+ shortcut="control|alt|D">
+ <on_check
+ function="CheckControl"
+ parameter="UseDebugMenus" />
+ <on_click
+ function="ToggleControl"
+ parameter="UseDebugMenus" />
+ </menu_item_check>
<menu
visible="false"
create_jump_keys="true"
label="Debug"
name="Debug"
tear_off="true">
- <!-- Need a copy of the edit menu here so keyboard shortcuts like
- control-C work to copy text at login screen and About dialog (for QA)
- -->
- <menu
- create_jump_keys="true"
- label="Edit"
- name="Edit"
- tear_off="true">
- <menu_item_call
- label="Undo"
- name="Undo"
- shortcut="control|Z">
- <menu_item_call.on_click
- function="Edit.Undo" />
- <menu_item_call.on_enable
- function="Edit.EnableUndo" />
- </menu_item_call>
- <menu_item_call
- label="Redo"
- name="Redo"
- shortcut="control|Y">
- <menu_item_call.on_click
- function="Edit.Redo" />
- <menu_item_call.on_enable
- function="Edit.EnableRedo" />
- </menu_item_call>
- <menu_item_separator />
- <menu_item_call
- label="Cut"
- name="Cut"
- shortcut="control|X">
- <menu_item_call.on_click
- function="Edit.Cut" />
- <menu_item_call.on_enable
- function="Edit.EnableCut" />
- </menu_item_call>
- <menu_item_call
- label="Copy"
- name="Copy"
- shortcut="control|C">
- <menu_item_call.on_click
- function="Edit.Copy" />
- <menu_item_call.on_enable
- function="Edit.EnableCopy" />
- </menu_item_call>
- <menu_item_call
- label="Paste"
- name="Paste"
- shortcut="control|V">
- <menu_item_call.on_click
- function="Edit.Paste" />
- <menu_item_call.on_enable
- function="Edit.EnablePaste" />
- </menu_item_call>
- <menu_item_call
- label="Delete"
- name="Delete"
- shortcut="Del">
- <menu_item_call.on_click
- function="Edit.Delete" />
- <menu_item_call.on_enable
- function="Edit.EnableDelete" />
- </menu_item_call>
- <menu_item_call
- label="Duplicate"
- name="Duplicate"
- shortcut="control|D">
- <menu_item_call.on_click
- function="Edit.Duplicate" />
- <menu_item_call.on_enable
- function="Edit.EnableDuplicate" />
- </menu_item_call>
- <menu_item_separator />
- <menu_item_call
- label="Select All"
- name="Select All"
- shortcut="control|A">
- <menu_item_call.on_click
- function="Edit.SelectAll" />
- <menu_item_call.on_enable
- function="Edit.EnableSelectAll" />
- </menu_item_call>
- <menu_item_call
- label="Deselect"
- name="Deselect"
- shortcut="control|E">
- <menu_item_call.on_click
- function="Edit.Deselect" />
- <menu_item_call.on_enable
- function="Edit.EnableDeselect" />
- </menu_item_call>
- </menu>
- <menu_item_separator />
<menu_item_call
label="Show Debug Settings"
name="Debug Settings">
@@ -270,5 +181,27 @@
function="Advanced.WebBrowserTest"
parameter="http://join.secondlife.com/"/>
</menu_item_call>
+ <menu_item_separator/>
+ <menu_item_check
+ label="Show Grid Picker"
+ name="Show Grid Picker"
+ visible="false"
+ shortcut="control|shift|G">
+ <on_check
+ function="CheckControl"
+ parameter="ForceShowGrid" />
+ <on_click
+ function="ToggleControl"
+ parameter="ForceShowGrid" />
+ </menu_item_check>
+ <menu_item_call
+ label="Show Notifications Console"
+ name="Show Notifications Console"
+ visible="false"
+ shortcut="control|shift|5">
+ <on_click
+ function="Floater.Toggle"
+ parameter="notifications_console" />
+ </menu_item_call>
</menu>
</menu_bar>
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 77029e6f6a..bb57464741 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -2,16 +2,13 @@
<menu_bar
bg_visible="false"
follows="left|top|right"
- layout="topleft"
name="Main Menu">
<menu
label="Me"
- layout="topleft"
name="Me"
tear_off="true">
<menu_item_call
label="Preferences"
- layout="topleft"
name="Preferences"
shortcut="control|P">
<menu_item_call.on_click
@@ -20,7 +17,6 @@
</menu_item_call>
<menu_item_call
label="My Dashboard"
- layout="topleft"
name="Manage My Account">
<menu_item_call.on_click
function="PromptShowURL"
@@ -29,16 +25,13 @@
</menu_item_call>
<menu_item_call
label="Buy L$"
- layout="topleft"
name="Buy and Sell L$">
<menu_item_call.on_click
function="BuyCurrency" />
</menu_item_call>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu_item_call
label="My Profile"
- layout="topleft"
name="Profile">
<menu_item_call.on_click
function="ShowAgentProfile"
@@ -46,7 +39,6 @@
</menu_item_call>
<menu_item_call
label="My Appearance"
- layout="topleft"
name="Appearance">
<menu_item_call.on_click
function="CustomizeAvatar" />
@@ -56,7 +48,6 @@
<menu_item_check
label="My Inventory"
name="Inventory"
- layout="topleft"
shortcut="control|shift|I"
visible="false">
<menu_item_check.on_check
@@ -69,7 +60,6 @@
<menu_item_check
label="My Inventory"
name="ShowSidetrayInventory"
- layout="topleft"
shortcut="control|I"
visible="true">
<menu_item_check.on_check
@@ -81,7 +71,6 @@
</menu_item_check>
<menu_item_check
label="My Gestures"
- layout="topleft"
name="Gestures"
shortcut="control|G">
<menu_item_check.on_check
@@ -93,21 +82,17 @@
</menu_item_check>
<menu
label="My Status"
- layout="topleft"
name="Status"
tear_off="true">
<menu_item_call
label="Away"
- layout="topleft"
name="Set Away">
<menu_item_call.on_click
function="World.SetAway" />
</menu_item_call>
- <menu_item_separator
- layout="topleft"/>
+ <menu_item_separator/>
<menu_item_call
label="Busy"
- layout="topleft"
name="Set Busy">
<menu_item_call.on_click
function="World.SetBusy"/>
@@ -115,7 +100,6 @@
</menu>
<menu_item_call
label="Request Admin Status"
- layout="topleft"
name="Request Admin Options"
shortcut="control|alt|G"
visible="false">
@@ -124,18 +108,15 @@
</menu_item_call>
<menu_item_call
label="Leave Admin Status"
- layout="topleft"
name="Leave Admin Options"
shortcut="control|alt|shift|G"
visible="false">
<menu_item_call.on_click
function="Advanced.LeaveAdminStatus" />
</menu_item_call>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu_item_call
label="Quit [APP_NAME]"
- layout="topleft"
name="Quit"
shortcut="control|Q">
<menu_item_call.on_click
@@ -144,12 +125,10 @@
</menu>
<menu
label="Communicate"
- layout="topleft"
name="Communicate"
tear_off="true">
<menu_item_call
label="My Friends"
- layout="topleft"
name="My Friends"
shortcut="control|shift|F">
<menu_item_call.on_click
@@ -158,25 +137,21 @@
</menu_item_call>
<menu_item_call
label="My Groups"
- layout="topleft"
name="My Groups"
shortcut="control|shift|G">
<menu_item_call.on_click
function="SideTray.PanelPeopleTab"
parameter="groups_panel" />
</menu_item_call>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<!--menu_item_call
label="Chat"
- layout="topleft"
name="Chat">
<menu_item_call.on_click
function="World.Chat" />
</menu_item_call-->
<menu_item_check
label="Nearby Chat"
- layout="topleft"
name="Nearby Chat"
shortcut="control|H"
use_mac_ctrl="true">
@@ -189,7 +164,6 @@
</menu_item_check>
<menu_item_call
label="Nearby People"
- layout="topleft"
name="Active Speakers"
shortcut="control|shift|A">
<menu_item_call.on_click
@@ -199,12 +173,10 @@
</menu>
<menu
label="World"
- layout="topleft"
name="World"
tear_off="true">
<menu_item_check
label="Mini-Map"
- layout="topleft"
name="Mini-Map"
shortcut="control|shift|M">
<menu_item_check.on_check
@@ -216,7 +188,6 @@
</menu_item_check>
<menu_item_check
label="World Map"
- layout="topleft"
name="World Map"
shortcut="control|M"
use_mac_ctrl="true">
@@ -229,7 +200,6 @@
</menu_item_check>
<menu_item_call
label="Snapshot"
- layout="topleft"
name="Take Snapshot"
shortcut="control|shift|S">
<menu_item_call.on_click
@@ -238,7 +208,6 @@
</menu_item_call>
<menu_item_call
label="Landmark This Place"
- layout="topleft"
name="Create Landmark Here">
<menu_item_call.on_click
function="World.CreateLandmark" />
@@ -248,12 +217,17 @@
<menu
create_jump_keys="true"
label="Place Profile"
- layout="topleft"
name="Land"
tear_off="true">
<menu_item_call
- label="About Land"
+ label="Place Profile"
layout="topleft"
+ name="Place Profile">
+ <menu_item_call.on_click
+ function="World.PlaceProfile" />
+ </menu_item_call>
+ <menu_item_call
+ label="About Land"
name="About Land">
<menu_item_call.on_click
function="Floater.Show"
@@ -261,18 +235,15 @@
</menu_item_call>
<menu_item_call
label="Region/Estate"
- layout="topleft"
name="Region/Estate">
<menu_item_call.on_click
function="Floater.Show"
parameter="region_info" />
</menu_item_call>
</menu>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu_item_call
label="Buy This Land"
- layout="topleft"
name="Buy Land">
<menu_item_call.on_click
function="Land.Buy" />
@@ -281,7 +252,6 @@
</menu_item_call>
<menu_item_call
label="My Land"
- layout="topleft"
name="My Land">
<menu_item_call.on_click
function="Floater.Show"
@@ -290,12 +260,10 @@
<menu
create_jump_keys="true"
label="Show"
- layout="topleft"
name="LandShow"
tear_off="true">
<menu_item_check
label="Move Controls"
- layout="topleft"
name="Movement Controls">
<menu_item_check.on_check
function="Floater.Visible"
@@ -305,7 +273,6 @@
</menu_item_check>
<menu_item_check
label="View Controls"
- layout="topleft"
name="Camera Controls">
<menu_item_check.on_check
function="Floater.Visible"
@@ -315,7 +282,6 @@
</menu_item_check>
<menu_item_check
label="Ban Lines"
- layout="topleft"
name="Ban Lines">
<menu_item_check.on_check
control="ShowBanLines" />
@@ -325,7 +291,6 @@
</menu_item_check>
<menu_item_check
label="Beacons"
- layout="topleft"
name="beacons"
shortcut="control|alt|shift|N">
<menu_item_check.on_check
@@ -337,7 +302,6 @@
</menu_item_check>
<menu_item_check
label="Property Lines"
- layout="topleft"
name="Property Lines"
shortcut="control|alt|shift|P">
<menu_item_check.on_check
@@ -348,7 +312,6 @@
</menu_item_check>
<menu_item_check
label="Land Owners"
- layout="topleft"
name="Land Owners">
<menu_item_check.on_check
control="ShowParcelOwners" />
@@ -375,11 +338,9 @@
control="NavBarShowParcelProperties" />
</menu_item_check>
</menu>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu_item_call
label="Teleport Home"
- layout="topleft"
name="Teleport Home"
shortcut="control|shift|H">
<menu_item_call.on_click
@@ -389,7 +350,6 @@
</menu_item_call>
<menu_item_call
label="Set Home to Here"
- layout="topleft"
name="Set Home to Here">
<menu_item_call.on_click
function="World.SetHomeLocation" />
@@ -398,7 +358,6 @@
</menu_item_call>
<!-- <menu_item_check
label="Show Navigation Bar"
- layout="topleft"
name="ShowNavbarNavigationPanel">
<menu_item_check.on_click
function="ToggleControl"
@@ -409,7 +368,6 @@
</menu_item_check>
<menu_item_check
label="Show Favorites Bar"
- layout="topleft"
name="ShowNavbarFavoritesPanel">
<menu_item_check.on_click
function="ToggleControl"
@@ -418,19 +376,15 @@
function="CheckControl"
parameter="ShowNavbarFavoritesPanel" />
</menu_item_check>
- <menu_item_separator
- layout="topleft" />-->
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>-->
+ <menu_item_separator/>
<menu
create_jump_keys="true"
label="Sun"
- layout="topleft"
name="Environment Settings"
tear_off="true">
<menu_item_call
label="Sunrise"
- layout="topleft"
name="Sunrise">
<menu_item_call.on_click
function="World.EnvSettings"
@@ -438,7 +392,6 @@
</menu_item_call>
<menu_item_call
label="Midday"
- layout="topleft"
name="Noon"
shortcut="control|shift|Y">
<menu_item_call.on_click
@@ -447,7 +400,6 @@
</menu_item_call>
<menu_item_call
label="Sunset"
- layout="topleft"
name="Sunset"
shortcut="control|shift|N">
<menu_item_call.on_click
@@ -456,7 +408,6 @@
</menu_item_call>
<menu_item_call
label="Midnight"
- layout="topleft"
name="Midnight">
<menu_item_call.on_click
function="World.EnvSettings"
@@ -464,17 +415,14 @@
</menu_item_call>
<menu_item_call
label="Estate Time"
- layout="topleft"
name="Revert to Region Default">
<menu_item_call.on_click
function="World.EnvSettings"
parameter="default" />
</menu_item_call>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu_item_call
label="Environment Editor"
- layout="topleft"
name="Environment Editor">
<menu_item_call.on_click
function="World.EnvSettings"
@@ -485,13 +433,11 @@
<menu
create_jump_keys="true"
label="Build"
- layout="topleft"
name="BuildTools"
tear_off="true"
visible="true">
<menu_item_check
label="Build"
- layout="topleft"
name="Show Build Tools"
shortcut="control|B">
<menu_item_check.on_check
@@ -504,12 +450,10 @@
<menu
create_jump_keys="true"
label="Select Build Tool"
- layout="topleft"
name="Select Tool"
tear_off="true">
<menu_item_call
label="Focus Tool"
- layout="topleft"
name="Focus"
shortcut="control|1">
<menu_item_call.on_click
@@ -518,7 +462,6 @@
</menu_item_call>
<menu_item_call
label="Move Tool"
- layout="topleft"
name="Move"
shortcut="control|2">
<menu_item_call.on_click
@@ -527,7 +470,6 @@
</menu_item_call>
<menu_item_call
label="Edit Tool"
- layout="topleft"
name="Edit"
shortcut="control|3">
<menu_item_call.on_click
@@ -536,7 +478,6 @@
</menu_item_call>
<menu_item_call
label="Create Tool"
- layout="topleft"
name="Create"
shortcut="control|4">
<menu_item_call.on_click
@@ -545,7 +486,6 @@
</menu_item_call>
<menu_item_call
label="Land Tool"
- layout="topleft"
name="Land"
shortcut="control|5">
<menu_item_call.on_click
@@ -553,112 +493,8 @@
parameter="land" />
</menu_item_call>
</menu>
- <menu
- create_jump_keys="true"
- label="Edit"
- layout="topleft"
- name="Edit"
- tear_off="true">
- <menu_item_call
- label="Undo"
- layout="topleft"
- name="Undo"
- shortcut="control|Z">
- <menu_item_call.on_click
- function="Edit.Undo" />
- <menu_item_call.on_enable
- function="Edit.EnableUndo" />
- </menu_item_call>
- <menu_item_call
- label="Redo"
- layout="topleft"
- name="Redo"
- shortcut="control|Y">
- <menu_item_call.on_click
- function="Edit.Redo" />
- <menu_item_call.on_enable
- function="Edit.EnableRedo" />
- </menu_item_call>
- <menu_item_separator
- layout="topleft" />
- <menu_item_call
- label="Cut"
- layout="topleft"
- name="Cut"
- shortcut="control|X">
- <menu_item_call.on_click
- function="Edit.Cut" />
- <menu_item_call.on_enable
- function="Edit.EnableCut" />
- </menu_item_call>
- <menu_item_call
- label="Copy"
- layout="topleft"
- name="Copy"
- shortcut="control|C">
- <menu_item_call.on_click
- function="Edit.Copy" />
- <menu_item_call.on_enable
- function="Edit.EnableCopy" />
- </menu_item_call>
- <menu_item_call
- label="Paste"
- layout="topleft"
- name="Paste"
- shortcut="control|V">
- <menu_item_call.on_click
- function="Edit.Paste" />
- <menu_item_call.on_enable
- function="Edit.EnablePaste" />
- </menu_item_call>
- <menu_item_call
- label="Delete"
- layout="topleft"
- name="Delete"
- shortcut="Del">
- <menu_item_call.on_click
- function="Edit.Delete" />
- <menu_item_call.on_enable
- function="Edit.EnableDelete" />
- </menu_item_call>
- <menu_item_call
- label="Duplicate"
- layout="topleft"
- name="Duplicate"
- shortcut="control|D">
- <menu_item_call.on_click
- function="Edit.Duplicate" />
- <menu_item_call.on_enable
- function="Edit.EnableDuplicate" />
- </menu_item_call>
- <menu_item_separator
- layout="topleft" />
- <menu_item_call
- label="Select All"
- layout="topleft"
- name="Select All"
- shortcut="control|A">
- <menu_item_call.on_click
- function="Edit.SelectAll" />
- <menu_item_call.on_enable
- function="Edit.EnableSelectAll" />
- </menu_item_call>
- <menu_item_call
- label="Deselect"
- layout="topleft"
- name="Deselect"
- shortcut="control|E">
- <menu_item_call.on_click
- function="Edit.Deselect" />
- <menu_item_call.on_enable
- function="Edit.EnableDeselect" />
- </menu_item_call>
- </menu>
- <menu_item_separator
- layout="topleft" />
<menu_item_call
label="Link"
- layout="topleft"
name="Link"
shortcut="control|L">
<menu_item_call.on_click
@@ -668,7 +504,6 @@
</menu_item_call>
<menu_item_call
label="Unlink"
- layout="topleft"
name="Unlink"
shortcut="control|shift|L">
<menu_item_call.on_click
@@ -678,7 +513,6 @@
</menu_item_call>
<menu_item_check
label="Edit Linked Parts"
- layout="topleft"
name="Edit Linked Parts">
<menu_item_check.on_check
control="EditLinkedParts" />
@@ -688,11 +522,9 @@
<menu_item_check.on_enable
function="Tools.EnableToolNotPie" />
</menu_item_check>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu_item_call
label="Focus on Selection"
- layout="topleft"
name="Focus on Selection"
shortcut="H">
<menu_item_call.on_click
@@ -703,7 +535,6 @@
</menu_item_call>
<menu_item_call
label="Zoom to Selection"
- layout="topleft"
name="Zoom to Selection"
shortcut="shift|H">
<menu_item_call.on_click
@@ -712,17 +543,14 @@
<menu_item_call.on_enable
function="Tools.SomethingSelectedNoHUD" />
</menu_item_call>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu
create_jump_keys="true"
label="Object"
- layout="topleft"
name="Object"
tear_off="true">
<menu_item_call
label="Buy"
- layout="topleft"
name="Menu Object Buy">
<menu_item_call.on_click
function="Tools.BuyOrTake"/>
@@ -733,7 +561,6 @@
</menu_item_call>
<menu_item_call
label="Take"
- layout="topleft"
name="Menu Object Take">
<menu_item_call.on_click
function="Tools.BuyOrTake"/>
@@ -744,7 +571,6 @@
</menu_item_call>
<menu_item_call
label="Take Copy"
- layout="topleft"
name="Take Copy">
<menu_item_call.on_click
function="Tools.TakeCopy" />
@@ -753,7 +579,6 @@
</menu_item_call>
<menu_item_call
label="Save Back to My Inventory"
- layout="topleft"
name="Save Object Back to My Inventory">
<menu_item_call.on_click
function="Tools.SaveToInventory" />
@@ -762,7 +587,6 @@
</menu_item_call>
<menu_item_call
label="Save Back to Object Contents"
- layout="topleft"
name="Save Object Back to Object Contents">
<menu_item_call.on_click
function="Tools.SaveToObjectInventory" />
@@ -773,12 +597,10 @@
<menu
create_jump_keys="true"
label="Scripts"
- layout="topleft"
name="Scripts"
tear_off="true">
<menu_item_call
label="Recompile Scripts (Mono)"
- layout="topleft"
name="Mono">
<menu_item_call.on_click
function="Tools.SelectedScriptAction"
@@ -788,7 +610,6 @@
</menu_item_call>
<menu_item_call
label="Recompile Scripts (LSL)"
- layout="topleft"
name="LSL">
<menu_item_call.on_click
function="Tools.SelectedScriptAction"
@@ -798,7 +619,6 @@
</menu_item_call>
<menu_item_call
label="Reset Scripts"
- layout="topleft"
name="Reset Scripts">
<menu_item_call.on_click
function="Tools.SelectedScriptAction"
@@ -808,7 +628,6 @@
</menu_item_call>
<menu_item_call
label="Set Scripts to Running"
- layout="topleft"
name="Set Scripts to Running">
<menu_item_call.on_click
function="Tools.SelectedScriptAction"
@@ -818,7 +637,6 @@
</menu_item_call>
<menu_item_call
label="Set Scripts to Not Running"
- layout="topleft"
name="Set Scripts to Not Running">
<menu_item_call.on_click
function="Tools.SelectedScriptAction"
@@ -827,17 +645,14 @@
function="EditableSelected" />
</menu_item_call>
</menu>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu
create_jump_keys="true"
label="Options"
- layout="topleft"
name="Options"
tear_off="true">
<menu_item_call
label="Set Default Upload Permissions"
- layout="topleft"
name="perm prefs">
<menu_item_call.on_click
function="Floater.Toggle"
@@ -845,7 +660,6 @@
</menu_item_call>
<menu_item_check
label="Show Advanced Permissions"
- layout="topleft"
name="DebugPermissions">
<menu_item_check.on_check
function="CheckControl"
@@ -854,11 +668,9 @@
function="ToggleControl"
parameter="DebugPermissions" />
</menu_item_check>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu_item_check
label="Select Only My Objects"
- layout="topleft"
name="Select Only My Objects">
<menu_item_check.on_check
control="SelectOwnedOnly" />
@@ -868,7 +680,6 @@
</menu_item_check>
<menu_item_check
label="Select Only Movable Objects"
- layout="topleft"
name="Select Only Movable Objects">
<menu_item_check.on_check
control="SelectMovableOnly" />
@@ -878,18 +689,15 @@
</menu_item_check>
<menu_item_check
label="Select By Surrounding"
- layout="topleft"
name="Select By Surrounding">
<menu_item_check.on_check
control="RectangleSelectInclusive" />
<menu_item_check.on_click
function="Tools.SelectBySurrounding" />
</menu_item_check>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu_item_check
label="Show Hidden Selection"
- layout="topleft"
name="Show Hidden Selection">
<menu_item_check.on_check
control="RenderHiddenSelections" />
@@ -898,7 +706,6 @@
</menu_item_check>
<menu_item_check
label="Show Light Radius for Selection"
- layout="topleft"
name="Show Light Radius for Selection">
<menu_item_check.on_check
control="RenderLightRadius" />
@@ -907,7 +714,6 @@
</menu_item_check>
<menu_item_check
label="Show Selection Beam"
- layout="topleft"
name="Show Selection Beam">
<menu_item_check.on_check
control="ShowSelectionBeam" />
@@ -915,11 +721,9 @@
function="ToggleControl"
parameter="ShowSelectionBeam" />
</menu_item_check>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu_item_check
label="Snap to Grid"
- layout="topleft"
name="Snap to Grid"
shortcut="G">
<menu_item_check.on_check
@@ -932,7 +736,6 @@
</menu_item_check>
<menu_item_call
label="Snap Object XY to Grid"
- layout="topleft"
name="Snap Object XY to Grid"
shortcut="shift|X">
<menu_item_call.on_click
@@ -942,7 +745,6 @@
</menu_item_call>
<menu_item_call
label="Use Selection for Grid"
- layout="topleft"
name="Use Selection for Grid"
shortcut="shift|G">
<menu_item_call.on_click
@@ -952,7 +754,6 @@
</menu_item_call>
<menu_item_call
label="Grid Options"
- layout="topleft"
name="Grid Options"
shortcut="control|shift|B">
<menu_item_call.on_click
@@ -965,12 +766,10 @@
<menu
create_jump_keys="true"
label="Select Linked Parts"
- layout="topleft"
name="Select Linked Parts"
tear_off="true">
<menu_item_call
label="Select Next Part"
- layout="topleft"
name="Select Next Part"
shortcut="control|.">
<menu_item_call.on_click
@@ -981,7 +780,6 @@
</menu_item_call>
<menu_item_call
label="Select Previous Part"
- layout="topleft"
name="Select Previous Part"
shortcut="control|,">
<menu_item_call.on_click
@@ -992,7 +790,6 @@
</menu_item_call>
<menu_item_call
label="Include Next Part"
- layout="topleft"
name="Include Next Part"
shortcut="control|shift|.">
<menu_item_call.on_click
@@ -1003,7 +800,6 @@
</menu_item_call>
<menu_item_call
label="Include Previous Part"
- layout="topleft"
name="Include Previous Part"
shortcut="control|shift|,">
<menu_item_call.on_click
@@ -1016,48 +812,40 @@
</menu>
<menu
label="Help"
- layout="topleft"
name="Help"
tear_off="true">
<menu_item_call
label="[SECOND_LIFE] Help"
- layout="topleft"
name="Second Life Help"
shortcut="F1">
<menu_item_call.on_click
function="ShowHelp"
parameter="f1_help" />
</menu_item_call>
- <!-- <menu_item_call
+<!-- <menu_item_call
label="Tutorial"
- layout="topleft"
name="Tutorial">
<menu_item_call.on_click
function="Floater.Show"
parameter="hud" />
</menu_item_call>-->
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu_item_call
label="Report Abuse"
- layout="topleft"
name="Report Abuse">
<menu_item_call.on_click
function="ReportAbuse" />
</menu_item_call>
<menu_item_call
label="Report Bug"
- layout="topleft"
name="Report Bug">
<menu_item_call.on_click
function="ShowHelp"
parameter="report_bug" />
</menu_item_call>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu_item_call
label="About [APP_NAME]"
- layout="topleft"
name="About Second Life">
<menu_item_call.on_click
function="Floater.Show"
@@ -1066,20 +854,28 @@
</menu>
<menu
label="Advanced"
- layout="topleft"
name="Advanced"
tear_off="true"
visible="false">
+ <menu_item_check
+ label="Show Advanced Menu"
+ name="Show Advanced Menu"
+ shortcut="control|alt|D">
+ <on_check
+ function="CheckControl"
+ parameter="UseDebugMenus" />
+ <on_click
+ function="ToggleControl"
+ parameter="UseDebugMenus" />
+ </menu_item_check>
<menu_item_call
label="Stop Animating Me"
- layout="topleft"
name="Stop Animating My Avatar">
<menu_item_call.on_click
function="Tools.StopAllAnimations" />
</menu_item_call>
<menu_item_call
label="Rebake Textures"
- layout="topleft"
name="Rebake Texture"
shortcut="control|alt|R">
<menu_item_call.on_click
@@ -1087,7 +883,6 @@
</menu_item_call>
<menu_item_call
label="Set UI Size to Default"
- layout="topleft"
name="Set UI Size to Default">
<menu_item_call.on_click
function="View.DefaultUISize" />
@@ -1102,7 +897,6 @@
<menu_item_separator/>
<menu_item_check
label="Limit Select Distance"
- layout="topleft"
name="Limit Select Distance">
<menu_item_check.on_check
function="CheckControl"
@@ -1113,7 +907,6 @@
</menu_item_check>
<menu_item_check
label="Disable Camera Constraints"
- layout="topleft"
name="Disable Camera Distance">
<menu_item_check.on_check
function="CheckControl"
@@ -1122,11 +915,9 @@
function="ToggleControl"
parameter="DisableCameraConstraints" />
</menu_item_check>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu_item_check
label="High-res Snapshot"
- layout="topleft"
name="HighResSnapshot">
<menu_item_check.on_check
function="CheckControl"
@@ -1137,7 +928,6 @@
</menu_item_check>
<menu_item_check
label="Quiet Snapshots to Disk"
- layout="topleft"
name="QuietSnapshotsToDisk">
<menu_item_check.on_check
function="CheckControl"
@@ -1148,7 +938,6 @@
</menu_item_check>
<menu_item_check
label="Compress Snapshots to Disk"
- layout="topleft"
name="CompressSnapshotsToDisk">
<menu_item_check.on_check
function="CheckControl"
@@ -1157,17 +946,14 @@
function="ToggleControl"
parameter="CompressSnapshotsToDisk" />
</menu_item_check>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu
create_jump_keys="true"
label="Performance Tools"
- layout="topleft"
name="Performance Tools"
tear_off="true">
<menu_item_call
label="Lag Meter"
- layout="topleft"
name="Lag Meter">
<menu_item_call.on_click
function="Floater.Show"
@@ -1175,7 +961,6 @@
</menu_item_call>
<menu_item_check
label="Statistics Bar"
- layout="topleft"
name="Statistics Bar"
shortcut="control|shift|1">
<menu_item_check.on_check
@@ -1187,7 +972,6 @@
</menu_item_check>
<menu_item_check
label="Show Avatar Rendering Cost"
- layout="topleft"
name="Avatar Rendering Cost">
<menu_item_check.on_check
function="Advanced.CheckInfoDisplay"
@@ -1200,12 +984,10 @@
<menu
create_jump_keys="true"
label="Highlighting and Visibility"
- layout="topleft"
name="Highlighting and Visibility"
tear_off="true">
<menu_item_check
label="Cheesy Beacon"
- layout="topleft"
name="Cheesy Beacon">
<menu_item_check.on_check
function="CheckControl"
@@ -1216,7 +998,6 @@
</menu_item_check>
<menu_item_check
label="Hide Particles"
- layout="topleft"
name="Hide Particles"
shortcut="control|alt|shift|=">
<menu_item_check.on_check
@@ -1228,7 +1009,6 @@
</menu_item_check>
<menu_item_check
label="Hide Selected"
- layout="topleft"
name="Hide Selected">
<menu_item_check.on_check
function="CheckControl"
@@ -1239,7 +1019,6 @@
</menu_item_check>
<menu_item_check
label="Highlight Transparent"
- layout="topleft"
name="Highlight Transparent"
shortcut="control|alt|T">
<menu_item_check.on_check
@@ -1249,7 +1028,6 @@
</menu_item_check>
<menu_item_check
label="Show HUD Attachments"
- layout="topleft"
name="Show HUD Attachments"
shortcut="alt|shift|H">
<menu_item_check.on_check
@@ -1259,7 +1037,6 @@
</menu_item_check>
<menu_item_check
label="Show Mouselook Crosshairs"
- layout="topleft"
name="ShowCrosshairs">
<menu_item_check.on_check
function="CheckControl"
@@ -1271,12 +1048,10 @@
<!-- <menu
create_jump_keys="true"
label="Hover Tips"
- layout="topleft"
name="Hover Tips"
tear_off="true">
<menu_item_check
label="Show Tips"
- layout="topleft"
name="Show Tips"
shortcut="control|shift|T">
<menu_item_check.on_check
@@ -1284,11 +1059,9 @@
<menu_item_check.on_click
function="View.ShowHoverTips" />
</menu_item_check>
- <menu_item_separator
- layout="topleft" />-->
+ <menu_item_separator/>
<menu_item_check
label="Show Land Tooltips"
- layout="topleft"
name="Land Tips">
<menu_item_check.on_check
control="ShowLandHoverTip" />
@@ -1298,9 +1071,8 @@
<menu_item_check.on_enable
function="View.CheckShowHoverTips" />
</menu_item_check>
- <!-- <menu_item_check
+ <menu_item_check
label="Show Tips On All Objects"
- layout="topleft"
name="Tips On All Objects">
<menu_item_check.on_check
control="ShowAllObjectHoverTip" />
@@ -1317,12 +1089,10 @@
<menu
create_jump_keys="true"
label="Rendering Types"
- layout="topleft"
name="Rendering Types"
tear_off="true">
<menu_item_check
label="Simple"
- layout="topleft"
name="Simple"
shortcut="control|alt|shift|1">
<menu_item_check.on_check
@@ -1334,7 +1104,6 @@
</menu_item_check>
<menu_item_check
label="Alpha"
- layout="topleft"
name="Alpha"
shortcut="control|alt|shift|2">
<menu_item_check.on_check
@@ -1346,7 +1115,6 @@
</menu_item_check>
<menu_item_check
label="Tree"
- layout="topleft"
name="Tree"
shortcut="control|alt|shift|3">
<menu_item_check.on_check
@@ -1358,7 +1126,6 @@
</menu_item_check>
<menu_item_check
label="Avatars"
- layout="topleft"
name="Character"
shortcut="control|alt|shift|4">
<menu_item_check.on_check
@@ -1370,7 +1137,6 @@
</menu_item_check>
<menu_item_check
label="SurfacePath"
- layout="topleft"
name="SurfacePath"
shortcut="control|alt|shift|5">
<menu_item_check.on_check
@@ -1382,7 +1148,6 @@
</menu_item_check>
<menu_item_check
label="Sky"
- layout="topleft"
name="Sky"
shortcut="control|alt|shift|6">
<menu_item_check.on_check
@@ -1394,7 +1159,6 @@
</menu_item_check>
<menu_item_check
label="Water"
- layout="topleft"
name="Water"
shortcut="control|alt|shift|7">
<menu_item_check.on_check
@@ -1406,7 +1170,6 @@
</menu_item_check>
<menu_item_check
label="Ground"
- layout="topleft"
name="Ground"
shortcut="control|alt|shift|8">
<menu_item_check.on_check
@@ -1418,7 +1181,6 @@
</menu_item_check>
<menu_item_check
label="Volume"
- layout="topleft"
name="Volume"
shortcut="control|alt|shift|9">
<menu_item_check.on_check
@@ -1430,7 +1192,6 @@
</menu_item_check>
<menu_item_check
label="Grass"
- layout="topleft"
name="Grass"
shortcut="control|alt|shift|0">
<menu_item_check.on_check
@@ -1442,7 +1203,6 @@
</menu_item_check>
<menu_item_check
label="Clouds"
- layout="topleft"
name="Clouds"
shortcut="control|alt|shift|-">
<menu_item_check.on_check
@@ -1454,7 +1214,6 @@
</menu_item_check>
<menu_item_check
label="Particles"
- layout="topleft"
name="Particles"
shortcut="control|alt|shift|=">
<menu_item_check.on_check
@@ -1466,7 +1225,6 @@
</menu_item_check>
<menu_item_check
label="Bump"
- layout="topleft"
name="Bump"
shortcut="control|alt|shift|\">
<menu_item_check.on_check
@@ -1480,12 +1238,10 @@
<menu
create_jump_keys="true"
label="Rendering Features"
- layout="topleft"
name="Rendering Features"
tear_off="true">
<menu_item_check
label="UI"
- layout="topleft"
name="UI"
shortcut="control|alt|F1">
<menu_item_check.on_check
@@ -1497,7 +1253,6 @@
</menu_item_check>
<menu_item_check
label="Selected"
- layout="topleft"
name="Selected"
shortcut="control|alt|F2">
<menu_item_check.on_check
@@ -1509,7 +1264,6 @@
</menu_item_check>
<menu_item_check
label="Highlighted"
- layout="topleft"
name="Highlighted"
shortcut="control|alt|F3">
<menu_item_check.on_check
@@ -1521,7 +1275,6 @@
</menu_item_check>
<menu_item_check
label="Dynamic Textures"
- layout="topleft"
name="Dynamic Textures"
shortcut="control|alt|F4">
<menu_item_check.on_check
@@ -1533,7 +1286,6 @@
</menu_item_check>
<menu_item_check
label="Foot Shadows"
- layout="topleft"
name="Foot Shadows"
shortcut="control|alt|F5">
<menu_item_check.on_check
@@ -1545,7 +1297,6 @@
</menu_item_check>
<menu_item_check
label="Fog"
- layout="topleft"
name="Fog"
shortcut="control|alt|F6">
<menu_item_check.on_check
@@ -1557,7 +1308,6 @@
</menu_item_check>
<menu_item_check
label="Test FRInfo"
- layout="topleft"
name="Test FRInfo"
shortcut="control|alt|F8">
<menu_item_check.on_check
@@ -1569,7 +1319,6 @@
</menu_item_check>
<menu_item_check
label="Flexible Objects"
- layout="topleft"
name="Flexible Objects"
shortcut="control|alt|F9">
<menu_item_check.on_check
@@ -1582,7 +1331,6 @@
</menu>
<menu_item_check
label="Run Multiple Threads"
- layout="topleft"
name="Run Multiple Threads">
<menu_item_check.on_check
function="CheckControl"
@@ -1593,7 +1341,6 @@
</menu_item_check>
<menu_item_call
label="Clear Group Cache"
- layout="topleft"
name="ClearGroupCache">
<menu_item_call.on_click
function="Advanced.ClearGroupCache"
@@ -1601,7 +1348,6 @@
</menu_item_call>
<menu_item_check
label="Mouse Smoothing"
- layout="topleft"
name="Mouse Smoothing">
<menu_item_check.on_check
function="CheckControl"
@@ -1610,17 +1356,14 @@
function="ToggleControl"
parameter="MouseSmooth" />
</menu_item_check>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu
label="Shortcuts"
- layout="topleft"
name="Shortcuts"
tear_off="true"
visible="false">
<menu_item_call
label="Image (L$[COST])..."
- layout="topleft"
name="Upload Image"
shortcut="control|U">
<menu_item_call.on_click
@@ -1631,7 +1374,6 @@
</menu_item_call>
<menu_item_check
label="Search"
- layout="topleft"
name="Search"
shortcut="control|F">
<menu_item_check.on_check
@@ -1644,7 +1386,6 @@
<menu_item_call
enabled="false"
label="Release Keys"
- layout="topleft"
name="Release Keys">
<menu_item_call.on_click
function="Tools.ReleaseKeys"
@@ -1655,16 +1396,13 @@
</menu_item_call>
<menu_item_call
label="Set UI Size to Default"
- layout="topleft"
name="Set UI Size to Default">
<menu_item_call.on_click
function="View.DefaultUISize" />
</menu_item_call>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu_item_check
label="Always Run"
- layout="topleft"
name="Always Run"
shortcut="control|R">
<menu_item_check.on_check
@@ -1674,7 +1412,6 @@
</menu_item_check>
<menu_item_check
label="Fly"
- layout="topleft"
name="Fly"
shortcut="Home">
<menu_item_check.on_check
@@ -1684,11 +1421,9 @@
<menu_item_check.on_enable
function="Agent.enableFlying" />
</menu_item_check>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu_item_call
label="Close Window"
- layout="topleft"
name="Close Window"
shortcut="control|W">
<menu_item_call.on_click
@@ -1698,7 +1433,6 @@
</menu_item_call>
<menu_item_call
label="Close All Windows"
- layout="topleft"
name="Close All Windows"
shortcut="control|shift|W">
<menu_item_call.on_click
@@ -1706,22 +1440,18 @@
<menu_item_call.on_enable
function="File.EnableCloseAllWindows" />
</menu_item_call>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu_item_call
label="Snapshot to Disk"
- layout="topleft"
name="Snapshot to Disk"
shortcut="control|`"
use_mac_ctrl="true">
<menu_item_call.on_click
function="File.TakeSnapshotToDisk" />
</menu_item_call>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu_item_call
label="Mouselook"
- layout="topleft"
name="Mouselook"
shortcut="M">
<menu_item_call.on_click
@@ -1731,7 +1461,6 @@
</menu_item_call>
<menu_item_check
label="Joystick Flycam"
- layout="topleft"
name="Joystick Flycam"
shortcut="alt|shift|F">
<menu_item_check.on_check
@@ -1743,7 +1472,6 @@
</menu_item_check>
<menu_item_call
label="Reset View"
- layout="topleft"
name="Reset View"
shortcut="Esc">
<menu_item_call.on_click
@@ -1751,7 +1479,6 @@
</menu_item_call>
<menu_item_call
label="Look at Last Chatter"
- layout="topleft"
name="Look at Last Chatter"
shortcut="control|\">
<menu_item_call.on_click
@@ -1759,17 +1486,14 @@
<menu_item_call.on_enable
function="View.EnableLastChatter" />
</menu_item_call>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu
create_jump_keys="true"
label="Select Build Tool"
- layout="topleft"
name="Select Tool"
tear_off="true">
<menu_item_call
label="Focus Tool"
- layout="topleft"
name="Focus"
shortcut="control|1">
<menu_item_call.on_click
@@ -1778,7 +1502,6 @@
</menu_item_call>
<menu_item_call
label="Move Tool"
- layout="topleft"
name="Move"
shortcut="control|2">
<menu_item_call.on_click
@@ -1787,7 +1510,6 @@
</menu_item_call>
<menu_item_call
label="Edit Tool"
- layout="topleft"
name="Edit"
shortcut="control|3">
<menu_item_call.on_click
@@ -1796,7 +1518,6 @@
</menu_item_call>
<menu_item_call
label="Create Tool"
- layout="topleft"
name="Create"
shortcut="control|4">
<menu_item_call.on_click
@@ -1805,7 +1526,6 @@
</menu_item_call>
<menu_item_call
label="Land Tool"
- layout="topleft"
name="Land"
shortcut="control|5">
<menu_item_call.on_click
@@ -1813,11 +1533,9 @@
parameter="land" />
</menu_item_call>
</menu>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu_item_call
label="Zoom In"
- layout="topleft"
name="Zoom In"
shortcut="control|0">
<menu_item_call.on_click
@@ -1825,7 +1543,6 @@
</menu_item_call>
<menu_item_call
label="Zoom Default"
- layout="topleft"
name="Zoom Default"
shortcut="control|9">
<menu_item_call.on_click
@@ -1833,17 +1550,14 @@
</menu_item_call>
<menu_item_call
label="Zoom Out"
- layout="topleft"
name="Zoom Out"
shortcut="control|8">
<menu_item_call.on_click
function="View.ZoomOut" />
</menu_item_call>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu_item_call
label="Toggle Fullscreen"
- layout="topleft"
name="Toggle Fullscreen"
>
<!-- Note: shortcut="alt|Enter" was deleted from the preceding node-->
@@ -1851,11 +1565,9 @@
function="View.Fullscreen" />
</menu_item_call>
</menu>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu_item_call
label="Show Debug Settings"
- layout="topleft"
name="Debug Settings">
<menu_item_call.on_click
function="Advanced.ShowDebugSettings"
@@ -1863,7 +1575,6 @@
</menu_item_call>
<menu_item_check
label="Show Develop Menu"
- layout="topleft"
name="Debug Mode"
shortcut="control|alt|Q">
<menu_item_check.on_check
@@ -1873,23 +1584,21 @@
function="ToggleControl"
parameter="QAMode" />
</menu_item_check>
+
</menu>
<menu
create_jump_keys="true"
label="Develop"
- layout="topleft"
name="Develop"
tear_off="true"
visible="false">
<menu
create_jump_keys="true"
label="Consoles"
- layout="topleft"
name="Consoles"
tear_off="true">
<menu_item_check
label="Texture Console"
- layout="topleft"
name="Texture Console"
shortcut="control|shift|3"
use_mac_ctrl="true">
@@ -1902,7 +1611,6 @@
</menu_item_check>
<menu_item_check
label="Debug Console"
- layout="topleft"
name="Debug Console"
shortcut="control|shift|4"
use_mac_ctrl="true">
@@ -1915,7 +1623,6 @@
</menu_item_check>
<menu_item_call
label="Notifications Console"
- layout="topleft"
name="Notifications"
shortcut="control|shift|5">
<menu_item_call.on_click
@@ -1924,7 +1631,6 @@
</menu_item_call>
<menu_item_check
label="Texture Size Console"
- layout="topleft"
name="Texture Size"
shortcut="control|shift|6">
<menu_item_check.on_check
@@ -1936,7 +1642,6 @@
</menu_item_check>
<menu_item_check
label="Texture Category Console"
- layout="topleft"
name="Texture Category"
shortcut="control|shift|7">
<menu_item_check.on_check
@@ -1948,7 +1653,6 @@
</menu_item_check>
<menu_item_check
label="Fast Timers"
- layout="topleft"
name="Fast Timers"
shortcut="control|shift|9"
use_mac_ctrl="true">
@@ -1961,7 +1665,6 @@
</menu_item_check>
<menu_item_check
label="Memory"
- layout="topleft"
name="Memory"
shortcut="control|shift|0"
use_mac_ctrl="true">
@@ -1972,11 +1675,9 @@
function="Advanced.ToggleConsole"
parameter="memory view" />
</menu_item_check>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu_item_call
label="Region Info to Debug Console"
- layout="topleft"
name="Region Info to Debug Console">
<menu_item_call.on_click
function="Advanced.DumpInfoToConsole"
@@ -1984,7 +1685,6 @@
</menu_item_call>
<menu_item_call
label="Group Info to Debug Console"
- layout="topleft"
name="Group Info to Debug Console">
<menu_item_call.on_click
function="Advanced.DumpInfoToConsole"
@@ -1992,17 +1692,14 @@
</menu_item_call>
<menu_item_call
label="Capabilities Info to Debug Console"
- layout="topleft"
name="Capabilities Info to Debug Console">
<menu_item_call.on_click
function="Advanced.DumpInfoToConsole"
parameter="capabilities" />
</menu_item_call>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu_item_check
label="Camera"
- layout="topleft"
name="Camera">
<menu_item_check.on_check
function="Advanced.CheckHUDInfo"
@@ -2013,7 +1710,6 @@
</menu_item_check>
<menu_item_check
label="Wind"
- layout="topleft"
name="Wind">
<menu_item_check.on_check
function="Advanced.CheckHUDInfo"
@@ -2024,7 +1720,6 @@
</menu_item_check>
<menu_item_check
label="FOV"
- layout="topleft"
name="FOV">
<menu_item_check.on_check
function="Advanced.CheckHUDInfo"
@@ -2035,7 +1730,6 @@
</menu_item_check>
<menu_item_check
label="Badge"
- layout="topleft"
name="Badge"
shortcut="alt|control|shift|h">
<menu_item_check.on_check
@@ -2049,12 +1743,10 @@
<menu
create_jump_keys="true"
label="Show Info"
- layout="topleft"
name="Display Info"
tear_off="true">
<menu_item_check
label="Show Time"
- layout="topleft"
name="Show Time">
<menu_item_check.on_check
function="CheckControl"
@@ -2076,7 +1768,6 @@
</menu_item_check>
<menu_item_check
label="Show Render Info"
- layout="topleft"
name="Show Render Info">
<menu_item_check.on_check
function="CheckControl"
@@ -2087,7 +1778,6 @@
</menu_item_check>
<menu_item_check
label="Show Matrices"
- layout="topleft"
name="Show Matrices">
<menu_item_check.on_check
function="CheckControl"
@@ -2098,7 +1788,6 @@
</menu_item_check>
<menu_item_check
label="Show Color Under Cursor"
- layout="topleft"
name="Show Color Under Cursor">
<menu_item_check.on_check
function="CheckControl"
@@ -2107,11 +1796,9 @@
function="ToggleControl"
parameter="DebugShowColor" />
</menu_item_check>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu_item_check
label="Show Updates to Objects"
- layout="topleft"
name="Show Updates"
shortcut="control|alt|shift|U">
<menu_item_check.on_check
@@ -2121,17 +1808,14 @@
function="Advanced.ToggleShowObjectUpdates" />
</menu_item_check>
</menu>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu
create_jump_keys="true"
label="Force an Error"
- layout="topleft"
name="Force Errors"
tear_off="true">
<menu_item_call
label="Force Breakpoint"
- layout="topleft"
name="Force Breakpoint"
shortcut="control|alt|shift|B">
<menu_item_call.on_click
@@ -2139,49 +1823,42 @@
</menu_item_call>
<menu_item_call
label="Force LLError And Crash"
- layout="topleft"
name="Force LLError And Crash">
<menu_item_call.on_click
function="Advanced.ForceErrorLlerror" />
</menu_item_call>
<menu_item_call
label="Force Bad Memory Access"
- layout="topleft"
name="Force Bad Memory Access">
<menu_item_call.on_click
function="Advanced.ForceErrorBadMemoryAccess" />
</menu_item_call>
<menu_item_call
label="Force Infinite Loop"
- layout="topleft"
name="Force Infinite Loop">
<menu_item_call.on_click
function="Advanced.ForceErrorInfiniteLoop" />
</menu_item_call>
<menu_item_call
label="Force Driver Crash"
- layout="topleft"
name="Force Driver Carsh">
<menu_item_call.on_click
function="Advanced.ForceErrorDriverCrash" />
</menu_item_call>
<menu_item_call
label="Force Software Exception"
- layout="topleft"
name="Force Software Exception">
<menu_item_call.on_click
function="Advanced.ForceErrorSoftwareException" />
</menu_item_call>
<menu_item_call
label="Force Disconnect Viewer"
- layout="topleft"
name="Force Disconnect Viewer">
<menu_item_call.on_click
function="Advanced.ForceErrorDisconnectViewer" />
</menu_item_call>
<menu_item_call
label="Simulate a Memory Leak"
- layout="topleft"
name="Memory Leaking Simulation">
<menu_item_call.on_click
function="Floater.Show"
@@ -2191,12 +1868,10 @@
<menu
create_jump_keys="true"
label="Render Tests"
- layout="topleft"
name="Render Tests"
tear_off="true">
<menu_item_check
label="Camera Offset"
- layout="topleft"
name="Camera Offset">
<menu_item_check.on_check
function="CheckControl"
@@ -2207,7 +1882,6 @@
</menu_item_check>
<menu_item_check
label="Randomize Framerate"
- layout="topleft"
name="Randomize Framerate">
<menu_item_check.on_check
function="Advanced.CheckRandomizeFramerate"
@@ -2217,7 +1891,6 @@
</menu_item_check>
<menu_item_check
label="Periodic Slow Frame"
- layout="topleft"
name="Periodic Slow Frame">
<menu_item_check.on_check
function="Advanced.CheckPeriodicSlowFrame"
@@ -2228,7 +1901,6 @@
</menu_item_check>
<menu_item_check
label="Frame Test"
- layout="topleft"
name="Frame Test">
<menu_item_check.on_check
function="Advanced.CheckFrameTest"
@@ -2240,12 +1912,10 @@
<menu
create_jump_keys="true"
label="Render Metadata"
- layout="topleft"
name="Render Metadata"
tear_off="true">
<menu_item_check
label="Bounding Boxes"
- layout="topleft"
name="Bounding Boxes">
<menu_item_check.on_check
function="Advanced.CheckInfoDisplay"
@@ -2256,7 +1926,6 @@
</menu_item_check>
<menu_item_check
label="Octree"
- layout="topleft"
name="Octree">
<menu_item_check.on_check
function="Advanced.CheckInfoDisplay"
@@ -2267,7 +1936,6 @@
</menu_item_check>
<menu_item_check
label="Shadow Frusta"
- layout="topleft"
name="Shadow Frusta">
<menu_item_check.on_check
function="Advanced.CheckInfoDisplay"
@@ -2278,7 +1946,6 @@
</menu_item_check>
<menu_item_check
label="Occlusion"
- layout="topleft"
name="Occlusion">
<menu_item_check.on_check
function="Advanced.CheckInfoDisplay"
@@ -2289,7 +1956,6 @@
</menu_item_check>
<menu_item_check
label="Render Batches"
- layout="topleft"
name="Render Batches">
<menu_item_check.on_check
function="Advanced.CheckInfoDisplay"
@@ -2300,7 +1966,6 @@
</menu_item_check>
<menu_item_check
label="Texture Anim"
- layout="topleft"
name="Texture Anim">
<menu_item_check.on_check
function="Advanced.CheckInfoDisplay"
@@ -2311,7 +1976,6 @@
</menu_item_check>
<menu_item_check
label="Texture Priority"
- layout="topleft"
name="Texture Priority">
<menu_item_check.on_check
function="Advanced.CheckInfoDisplay"
@@ -2322,7 +1986,6 @@
</menu_item_check>
<menu_item_check
label="Texture Area"
- layout="topleft"
name="Texture Area">
<menu_item_check.on_check
function="Advanced.CheckInfoDisplay"
@@ -2333,7 +1996,6 @@
</menu_item_check>
<menu_item_check
label="Face Area"
- layout="topleft"
name="Face Area">
<menu_item_check.on_check
function="Advanced.CheckInfoDisplay"
@@ -2344,7 +2006,6 @@
</menu_item_check>
<menu_item_check
label="Lights"
- layout="topleft"
name="Lights">
<menu_item_check.on_check
function="Advanced.CheckInfoDisplay"
@@ -2355,7 +2016,6 @@
</menu_item_check>
<menu_item_check
label="Collision Skeleton"
- layout="topleft"
name="Collision Skeleton">
<menu_item_check.on_check
function="Advanced.CheckInfoDisplay"
@@ -2366,7 +2026,6 @@
</menu_item_check>
<menu_item_check
label="Raycast"
- layout="topleft"
name="Raycast">
<menu_item_check.on_check
function="Advanced.CheckInfoDisplay"
@@ -2379,7 +2038,6 @@
<menu
create_jump_keys="true"
label="Rendering"
- layout="topleft"
name="Rendering"
tear_off="true">
<menu_item_check
@@ -2521,7 +2179,6 @@
</menu_item_check>
<menu_item_check
label="Full Res Textures"
- layout="topleft"
name="Rull Res Textures">
<menu_item_check.on_check
function="CheckControl"
@@ -2532,7 +2189,6 @@
</menu_item_check>
<menu_item_check
label="Audit Textures"
- layout="topleft"
name="Audit Textures">
<menu_item_check.on_check
function="CheckControl"
@@ -2586,12 +2242,10 @@
<menu
create_jump_keys="true"
label="Network"
- layout="topleft"
name="Network"
tear_off="true">
<menu_item_check
label="Pause Agent"
- layout="topleft"
name="AgentPause">
<menu_item_check.on_check
function="CheckControl"
@@ -2600,27 +2254,22 @@
function="ToggleControl"
parameter="AgentPause" />
</menu_item_check>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu_item_call
label="Enable Message Log"
- layout="topleft"
name="Enable Message Log">
<menu_item_call.on_click
function="Advanced.EnableMessageLog" />
</menu_item_call>
<menu_item_call
label="Disable Message Log"
- layout="topleft"
name="Disable Message Log">
<menu_item_call.on_click
function="Advanced.DisableMessageLog" />
</menu_item_call>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu_item_check
label="Velocity Interpolate Objects"
- layout="topleft"
name="Velocity Interpolate Objects">
<menu_item_check.on_check
function="CheckControl"
@@ -2631,7 +2280,6 @@
</menu_item_check>
<menu_item_check
label="Ping Interpolate Object Positions"
- layout="topleft"
name="Ping Interpolate Object Positions">
<menu_item_check.on_check
function="CheckControl"
@@ -2640,11 +2288,9 @@
function="ToggleControl"
parameter="PingInterpolate" />
</menu_item_check>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu_item_call
label="Drop a Packet"
- layout="topleft"
name="Drop a Packet"
shortcut="control|alt|L">
<menu_item_call.on_click
@@ -2653,14 +2299,12 @@
</menu>
<menu_item_call
label="Dump Scripted Camera"
- layout="topleft"
name="Dump Scripted Camera">
<menu_item_call.on_click
function="Advanced.DumpScriptedCamera" />
</menu_item_call>
<menu_item_call
label="Bumps, Pushes &amp; Hits"
- layout="topleft"
name="Bumps, Pushes &amp;amp; Hits">
<menu_item_call.on_click
function="Floater.Show"
@@ -2670,12 +2314,10 @@
<menu
create_jump_keys="true"
label="Recorder"
- layout="topleft"
name="Recorder"
tear_off="true">
<menu_item_call
label="Start Playback"
- layout="topleft"
name="Start Playback">
<menu_item_call.on_click
function="Advanced.AgentPilot"
@@ -2683,7 +2325,6 @@
</menu_item_call>
<menu_item_call
label="Stop Playback"
- layout="topleft"
name="Stop Playback">
<menu_item_call.on_click
function="Advanced.AgentPilot"
@@ -2691,7 +2332,6 @@
</menu_item_call>
<menu_item_check
label="Loop Playback"
- layout="topleft"
name="Loop Playback">
<menu_item_check.on_check
function="Advanced.CheckAgentPilotLoop"
@@ -2701,7 +2341,6 @@
</menu_item_check>
<menu_item_call
label="Start Record"
- layout="topleft"
name="Start Record">
<menu_item_call.on_click
function="Advanced.AgentPilot"
@@ -2709,7 +2348,6 @@
</menu_item_call>
<menu_item_call
label="Stop Record"
- layout="topleft"
name="Stop Record">
<menu_item_call.on_click
function="Advanced.AgentPilot"
@@ -2720,12 +2358,10 @@
<menu
create_jump_keys="true"
label="World"
- layout="topleft"
name="World"
tear_off="true">
<menu_item_check
label="Sim Sun Override"
- layout="topleft"
name="Sim Sun Override">
<menu_item_check.on_check
function="CheckControl"
@@ -2736,7 +2372,6 @@
</menu_item_check>
<menu_item_check
label="Cheesy Beacon"
- layout="topleft"
name="Cheesy Beacon">
<menu_item_check.on_check
function="CheckControl"
@@ -2747,7 +2382,6 @@
</menu_item_check>
<menu_item_check
label="Fixed Weather"
- layout="topleft"
name="Fixed Weather">
<menu_item_check.on_check
function="CheckControl"
@@ -2758,7 +2392,6 @@
</menu_item_check>
<menu_item_call
label="Dump Region Object Cache"
- layout="topleft"
name="Dump Region Object Cache">
<menu_item_call.on_click
function="Advanced.DumpRegionObjectCache" />
@@ -2767,12 +2400,10 @@
<menu
create_jump_keys="true"
label="UI"
- layout="topleft"
name="UI"
tear_off="true">
<!-- <menu_item_check
label="New Bottom Bar"
- layout="topleft"
name="New Bottom Bar">
<menu_item_check.on_check
function="CheckControl"
@@ -2783,7 +2414,6 @@
</menu_item_check>-->
<menu_item_call
label="Web Browser Test"
- layout="topleft"
name="Web Browser Test">
<menu_item_call.on_click
function="Advanced.WebBrowserTest"
@@ -2791,14 +2421,12 @@
</menu_item_call>
<menu_item_call
label="Dump SelectMgr"
- layout="topleft"
name="Dump SelectMgr">
<menu_item_call.on_click
function="Advanced.DumpSelectMgr" />
</menu_item_call>
<menu_item_call
label="Dump Inventory"
- layout="topleft"
name="Dump Inventory">
<menu_item_call.on_click
function="Advanced.DumpInventory" />
@@ -2811,14 +2439,12 @@
</menu_item_call>
<menu_item_call
label="Dump Focus Holder"
- layout="topleft"
name="Dump Focus Holder">
<menu_item_call.on_click
function="Advanced.DumpFocusHolder" />
</menu_item_call>
<menu_item_call
label="Print Selected Object Info"
- layout="topleft"
name="Print Selected Object Info"
shortcut="control|shift|P">
<menu_item_call.on_click
@@ -2826,7 +2452,6 @@
</menu_item_call>
<menu_item_call
label="Print Agent Info"
- layout="topleft"
name="Print Agent Info"
shortcut="shift|P">
<menu_item_call.on_click
@@ -2834,7 +2459,6 @@
</menu_item_call>
<menu_item_call
label="Memory Stats"
- layout="topleft"
name="Memory Stats"
shortcut="control|alt|shift|M">
<menu_item_call.on_click
@@ -2842,7 +2466,6 @@
</menu_item_call>
<menu_item_check
label="Double-ClickAuto-Pilot"
- layout="topleft"
name="Double-ClickAuto-Pilot">
<menu_item_check.on_check
function="CheckControl"
@@ -2855,7 +2478,6 @@
<menu_item_separator />
<menu_item_check
label="Debug SelectMgr"
- layout="topleft"
name="Debug SelectMgr">
<menu_item_check.on_check
function="CheckControl"
@@ -2866,7 +2488,6 @@
</menu_item_check>
<menu_item_check
label="Debug Clicks"
- layout="topleft"
name="Debug Clicks">
<menu_item_check.on_check
function="Advanced.CheckDebugClicks"
@@ -2877,7 +2498,6 @@
</menu_item_check>
<menu_item_check
label="Debug Views"
- layout="topleft"
name="Debug Views">
<menu_item_check.on_check
function="Advanced.CheckDebugViews" />
@@ -2886,7 +2506,6 @@
</menu_item_check>
<menu_item_check
label="Debug Name Tooltips"
- layout="topleft"
name="Debug Name Tooltips">
<menu_item_check.on_check
function="Advanced.CheckXUINameTooltips"
@@ -2896,7 +2515,6 @@
</menu_item_check>
<menu_item_check
label="Debug Mouse Events"
- layout="topleft"
name="Debug Mouse Events">
<menu_item_check.on_check
function="Advanced.CheckDebugMouseEvents"
@@ -2906,7 +2524,6 @@
</menu_item_check>
<menu_item_check
label="Debug Keys"
- layout="topleft"
name="Debug Keys">
<menu_item_check.on_check
function="Advanced.CheckDebugKeys"
@@ -2916,7 +2533,6 @@
</menu_item_check>
<menu_item_check
label="Debug WindowProc"
- layout="topleft"
name="Debug WindowProc">
<menu_item_check.on_check
function="Advanced.CheckDebugWindowProc"
@@ -2933,14 +2549,12 @@
tear_off="true">
<menu_item_call
label="Reload Color Settings"
- layout="topleft"
name="Reload Color Settings">
<menu_item_call.on_click
function="Advanced.ReloadColorSettings" />
</menu_item_call>
<menu_item_call
label="Show Font Test"
- layout="topleft"
name="Show Font Test">
<menu_item_call.on_click
function="Floater.Show"
@@ -2948,21 +2562,18 @@
</menu_item_call>
<menu_item_call
label="Load from XML"
- layout="topleft"
name="Load from XML">
<menu_item_call.on_click
function="Advanced.LoadUIFromXML" />
</menu_item_call>
<menu_item_call
label="Save to XML"
- layout="topleft"
name="Save to XML">
<menu_item_call.on_click
function="Advanced.SaveUIToXML" />
</menu_item_call>
<menu_item_check
label="Show XUI Names"
- layout="topleft"
name="Show XUI Names">
<menu_item_check.on_check
function="Advanced.CheckXUINames"
@@ -2972,7 +2583,6 @@
</menu_item_check>
<menu_item_call
label="Send Test IMs"
- layout="topleft"
name="Send Test IMs">
<menu_item_call.on_click
function="Advanced.SendTestIMs" />
@@ -2981,18 +2591,15 @@
<menu
create_jump_keys="true"
label="Avatar"
- layout="topleft"
name="Character"
tear_off="true">
<menu
create_jump_keys="true"
label="Grab Baked Texture"
- layout="topleft"
name="Grab Baked Texture"
tear_off="true">
<menu_item_call
label="Iris"
- layout="topleft"
name="Iris">
<menu_item_call.on_click
function="Advanced.GrabBakedTexture"
@@ -3003,7 +2610,6 @@
</menu_item_call>
<menu_item_call
label="Head"
- layout="topleft"
name="Head">
<menu_item_call.on_click
function="Advanced.GrabBakedTexture"
@@ -3014,7 +2620,6 @@
</menu_item_call>
<menu_item_call
label="Upper Body"
- layout="topleft"
name="Upper Body">
<menu_item_call.on_click
function="Advanced.GrabBakedTexture"
@@ -3025,7 +2630,6 @@
</menu_item_call>
<menu_item_call
label="Lower Body"
- layout="topleft"
name="Lower Body">
<menu_item_call.on_click
function="Advanced.GrabBakedTexture"
@@ -3036,7 +2640,6 @@
</menu_item_call>
<menu_item_call
label="Skirt"
- layout="topleft"
name="Skirt">
<menu_item_call.on_click
function="Advanced.GrabBakedTexture"
@@ -3049,19 +2652,16 @@
<menu
create_jump_keys="true"
label="Character Tests"
- layout="topleft"
name="Character Tests"
tear_off="true">
<menu_item_call
label="Appearance To XML"
- layout="topleft"
name="Appearance To XML">
<menu_item_call.on_click
function="Advanced.AppearanceToXML" />
</menu_item_call>
<menu_item_call
label="Toggle Character Geometry"
- layout="topleft"
name="Toggle Character Geometry">
<menu_item_call.on_click
function="Advanced.ToggleCharacterGeometry" />
@@ -3070,28 +2670,24 @@
</menu_item_call>
<menu_item_call
label="Test Male"
- layout="topleft"
name="Test Male">
<menu_item_call.on_click
function="Advanced.TestMale" />
</menu_item_call>
<menu_item_call
label="Test Female"
- layout="topleft"
name="Test Female">
<menu_item_call.on_click
function="Advanced.TestFemale" />
</menu_item_call>
<menu_item_call
label="Toggle PG"
- layout="topleft"
name="Toggle PG">
<menu_item_call.on_click
function="Advanced.TogglePG" />
</menu_item_call>
<menu_item_check
label="Allow Select Avatar"
- layout="topleft"
name="Allow Select Avatar">
<menu_item_check.on_check
function="CheckControl"
@@ -3103,14 +2699,12 @@
</menu>
<menu_item_call
label="Force Params to Default"
- layout="topleft"
name="Force Params to Default">
<menu_item_call.on_click
function="Advanced.ForceParamsToDefault" />
</menu_item_call>
<menu_item_check
label="Animation Info"
- layout="topleft"
name="Animation Info">
<menu_item_check.on_check
function="Advanced.CheckAnimationInfo"
@@ -3121,7 +2715,6 @@
</menu_item_check>
<menu_item_check
label="Slow Motion Animations"
- layout="topleft"
name="Slow Motion Animations">
<menu_item_check.on_check
function="CheckControl"
@@ -3132,7 +2725,6 @@
</menu_item_check>
<menu_item_check
label="Show Look At"
- layout="topleft"
name="Show Look At">
<menu_item_check.on_check
function="Advanced.CheckShowLookAt"
@@ -3142,7 +2734,6 @@
</menu_item_check>
<menu_item_check
label="Show Point At"
- layout="topleft"
name="Show Point At">
<menu_item_check.on_check
function="Advanced.CheckShowPointAt"
@@ -3152,7 +2743,6 @@
</menu_item_check>
<menu_item_check
label="Debug Joint Updates"
- layout="topleft"
name="Debug Joint Updates">
<menu_item_check.on_check
function="Advanced.CheckDebugJointUpdates"
@@ -3162,7 +2752,6 @@
</menu_item_check>
<menu_item_check
label="Disable LOD"
- layout="topleft"
name="Disable LOD">
<menu_item_check.on_check
function="Advanced.CheckDisableLOD"
@@ -3172,7 +2761,6 @@
</menu_item_check>
<menu_item_check
label="Debug Character Vis"
- layout="topleft"
name="Debug Character Vis">
<menu_item_check.on_check
function="Advanced.CheckDebugCharacterVis"
@@ -3182,7 +2770,6 @@
</menu_item_check>
<menu_item_check
label="Show Collision Skeleton"
- layout="topleft"
name="Show Collision Skeleton">
<menu_item_check.on_check
function="Advanced.CheckInfoDisplay"
@@ -3193,7 +2780,6 @@
</menu_item_check>
<menu_item_check
label="Display Agent Target"
- layout="topleft"
name="Display Agent Target">
<menu_item_check.on_check
function="Advanced.CheckInfoDisplay"
@@ -3205,7 +2791,6 @@
<!-- Appears not to exist anymore
<menu_item_check
label="Debug Rotation"
- layout="topleft"
name="Debug Rotation">
<menu_item_check.on_check
function="CheckControl"
@@ -3217,14 +2802,12 @@
-->
<menu_item_call
label="Dump Attachments"
- layout="topleft"
name="Dump Attachments">
<menu_item_call.on_click
function="Advanced.DumpAttachments" />
</menu_item_call>
<menu_item_call
label="Debug Avatar Textures"
- layout="topleft"
name="Debug Avatar Textures"
shortcut="control|alt|shift|A">
<menu_item_call.on_click
@@ -3232,18 +2815,15 @@
</menu_item_call>
<menu_item_call
label="Dump Local Textures"
- layout="topleft"
name="Dump Local Textures"
shortcut="alt|shift|M">
<menu_item_call.on_click
function="Advanced.DumpAvatarLocalTextures" />
</menu_item_call>
</menu>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu_item_check
label="HTTP Textures"
- layout="topleft"
name="HTTP Textures">
<menu_item_check.on_check
function="CheckControl"
@@ -3254,14 +2834,12 @@
</menu_item_check>
<menu_item_call
label="Compress Images"
- layout="topleft"
name="Compress Images">
<menu_item_call.on_click
function="Advanced.CompressImage" />
</menu_item_call>
<menu_item_check
label="Output Debug Minidump"
- layout="topleft"
name="Output Debug Minidump">
<menu_item_check.on_check
function="CheckControl"
@@ -3272,7 +2850,6 @@
</menu_item_check>
<menu_item_check
label="Console Window on next Run"
- layout="topleft"
name="Console Window">
<menu_item_check.on_check
function="CheckControl"
@@ -3281,11 +2858,9 @@
function="ToggleControl"
parameter="ShowConsoleWindow" />
</menu_item_check>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu_item_check
label="Show Admin Menu"
- layout="topleft"
name="View Admin Options">
<menu_item_check.on_check
function="Advanced.CheckViewAdminOptions"
@@ -3295,7 +2870,6 @@
</menu_item_check>
<menu_item_call
label="Request Admin Status"
- layout="topleft"
name="Request Admin Options"
shortcut="control|alt|G">
<menu_item_call.on_click
@@ -3303,28 +2877,34 @@
</menu_item_call>
<menu_item_call
label="Leave Admin Status"
- layout="topleft"
name="Leave Admin Options"
shortcut="control|alt|shift|G">
<menu_item_call.on_click
function="Advanced.LeaveAdminStatus" />
</menu_item_call>
+ <menu_item_call
+ label="HACK Upload Model..."
+ layout="topleft"
+ name="Upload Model">
+ <menu_item_call.on_click
+ function="File.UploadModel"
+ parameter="" />
+ <menu_item_call.on_enable
+ function="File.EnableUploadModel" />
+ </menu_item_call>
</menu>
<menu
create_jump_keys="true"
label="Admin"
- layout="topleft"
name="Admin"
tear_off="true"
visible="false">
<menu
create_jump_keys="true"
label="Object"
- layout="topleft"
tear_off="true">
<menu_item_call
label="Take Copy"
- layout="topleft"
name="Take Copy"
shortcut="control|alt|shift|O">
<menu_item_call.on_click
@@ -3334,7 +2914,6 @@
</menu_item_call>
<menu_item_call
label="Force Owner To Me"
- layout="topleft"
name="Force Owner To Me">
<menu_item_call.on_click
function="Admin.HandleObjectOwnerSelf" />
@@ -3343,7 +2922,6 @@
</menu_item_call>
<menu_item_call
label="Force Owner Permissive"
- layout="topleft"
name="Force Owner Permissive">
<menu_item_call.on_click
function="Admin.HandleObjectOwnerPermissive" />
@@ -3352,7 +2930,6 @@
</menu_item_call>
<menu_item_call
label="Delete"
- layout="topleft"
name="Delete"
shortcut="control|alt|shift|Del">
<menu_item_call.on_click
@@ -3362,7 +2939,6 @@
</menu_item_call>
<menu_item_call
label="Lock"
- layout="topleft"
name="Lock"
shortcut="control|alt|shift|L">
<menu_item_call.on_click
@@ -3372,7 +2948,6 @@
</menu_item_call>
<menu_item_call
label="Get Assets IDs"
- layout="topleft"
name="Get Assets IDs"
shortcut="control|alt|shift|I">
<menu_item_call.on_click
@@ -3384,12 +2959,10 @@
<menu
create_jump_keys="true"
label="Parcel"
- layout="topleft"
name="Parcel"
tear_off="true">
<menu_item_call
label="Force Owner To Me"
- layout="topleft"
name="Owner To Me">
<menu_item_call.on_click
function="Admin.HandleForceParcelOwnerToMe" />
@@ -3398,7 +2971,6 @@
</menu_item_call>
<menu_item_call
label="Set to Linden Content"
- layout="topleft"
name="Set to Linden Content"
shortcut="control|alt|shift|C">
<menu_item_call.on_click
@@ -3408,7 +2980,6 @@
</menu_item_call>
<menu_item_call
label="Claim Public Land"
- layout="topleft"
name="Claim Public Land">
<menu_item_call.on_click
function="Admin.HandleClaimPublicLand" />
@@ -3419,12 +2990,10 @@
<menu
create_jump_keys="true"
label="Region"
- layout="topleft"
name="Region"
tear_off="true">
<menu_item_call
label="Dump Temp Asset Data"
- layout="topleft"
name="Dump Temp Asset Data">
<menu_item_call.on_click
function="Admin.HandleRegionDumpTempAssetData" />
@@ -3433,7 +3002,6 @@
</menu_item_call>
<menu_item_call
label="Save Region State"
- layout="topleft"
name="Save Region State">
<menu_item_call.on_click
function="Admin.OnSaveState" />
@@ -3443,7 +3011,6 @@
</menu>
<menu_item_call
label="God Tools"
- layout="topleft"
name="God Tools">
<menu_item_call.on_click
function="Floater.Show"
@@ -3455,34 +3022,29 @@
<menu
create_jump_keys="true"
label="Admin"
- layout="topleft"
name="Deprecated"
tear_off="true"
visible="false">
<menu
create_jump_keys="true"
label="Attach Object"
- layout="topleft"
mouse_opaque="false"
name="Attach Object"
tear_off="true" />
<menu
create_jump_keys="true"
label="Detach Object"
- layout="topleft"
mouse_opaque="false"
name="Detach Object"
tear_off="true" />
<menu
create_jump_keys="true"
label="Take Off Clothing"
- layout="topleft"
mouse_opaque="false"
name="Take Off Clothing"
tear_off="true">
<menu_item_call
label="Shirt"
- layout="topleft"
name="Shirt">
<menu_item_call.on_click
function="Edit.TakeOff"
@@ -3493,7 +3055,6 @@
</menu_item_call>
<menu_item_call
label="Pants"
- layout="topleft"
name="Pants">
<menu_item_call.on_click
function="Edit.TakeOff"
@@ -3504,7 +3065,6 @@
</menu_item_call>
<menu_item_call
label="Shoes"
- layout="topleft"
name="Shoes">
<menu_item_call.on_click
function="Edit.TakeOff"
@@ -3515,7 +3075,6 @@
</menu_item_call>
<menu_item_call
label="Socks"
- layout="topleft"
name="Socks">
<menu_item_call.on_click
function="Edit.TakeOff"
@@ -3526,7 +3085,6 @@
</menu_item_call>
<menu_item_call
label="Jacket"
- layout="topleft"
name="Jacket">
<menu_item_call.on_click
function="Edit.TakeOff"
@@ -3537,7 +3095,6 @@
</menu_item_call>
<menu_item_call
label="Gloves"
- layout="topleft"
name="Gloves">
<menu_item_call.on_click
function="Edit.TakeOff"
@@ -3548,7 +3105,6 @@
</menu_item_call>
<menu_item_call
label="Undershirt"
- layout="topleft"
name="Menu Undershirt">
<menu_item_call.on_click
function="Edit.TakeOff"
@@ -3559,7 +3115,6 @@
</menu_item_call>
<menu_item_call
label="Underpants"
- layout="topleft"
name="Menu Underpants">
<menu_item_call.on_click
function="Edit.TakeOff"
@@ -3570,7 +3125,6 @@
</menu_item_call>
<menu_item_call
label="Skirt"
- layout="topleft"
name="Skirt">
<menu_item_call.on_click
function="Edit.TakeOff"
@@ -3581,7 +3135,6 @@
</menu_item_call>
<menu_item_call
label="Alpha"
- layout="topleft"
name="Alpha">
<menu_item_call.on_click
function="Edit.TakeOff"
@@ -3592,7 +3145,6 @@
</menu_item_call>
<menu_item_call
label="Tattoo"
- layout="topleft"
name="Tattoo">
<menu_item_call.on_click
function="Edit.TakeOff"
@@ -3603,7 +3155,6 @@
</menu_item_call>
<menu_item_call
label="All Clothes"
- layout="topleft"
name="All Clothes">
<menu_item_call.on_click
function="Edit.TakeOff"
@@ -3613,12 +3164,10 @@
<menu
create_jump_keys="true"
label="Help"
- layout="topleft"
name="Help"
tear_off="true">
<menu_item_call
label="Official Linden Blog"
- layout="topleft"
name="Official Linden Blog">
<menu_item_call.on_click
function="PromptShowURL"
@@ -3627,7 +3176,6 @@
</menu_item_call>
<menu_item_call
label="Scripting Portal"
- layout="topleft"
name="Scripting Portal">
<menu_item_call.on_click
function="PromptShowURL"
@@ -3637,12 +3185,10 @@
<menu
create_jump_keys="true"
label="Bug Reporting"
- layout="topleft"
name="Bug Reporting"
tear_off="true">
<menu_item_call
label="Public Issue Tracker"
- layout="topleft"
name="Public Issue Tracker">
<menu_item_call.on_click
function="PromptShowURL"
@@ -3651,18 +3197,15 @@
</menu_item_call>
<menu_item_call
label="Public Issue Tracker Help"
- layout="topleft"
name="Publc Issue Tracker Help">
<menu_item_call.on_click
function="PromptShowURL"
name="PublicIssueTrackerHelp_url"
parameter="WebLaunchPublicIssueHelp,http://wiki.secondlife.com/wiki/Issue_tracker" />
</menu_item_call>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator/>
<menu_item_call
label="Bug Reporting 101"
- layout="topleft"
name="Bug Reporing 101">
<menu_item_call.on_click
function="PromptShowURL"
@@ -3671,7 +3214,6 @@
</menu_item_call>
<menu_item_call
label="Security Issues"
- layout="topleft"
name="Security Issues">
<menu_item_call.on_click
function="PromptShowURL"
@@ -3680,7 +3222,6 @@
</menu_item_call>
<menu_item_call
label="QA Wiki"
- layout="topleft"
name="QA Wiki">
<menu_item_call.on_click
function="PromptShowURL"
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 0e1a77a2f1..a35e1a6eb4 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -2024,6 +2024,28 @@ Would you be my friend?
</notification>
<notification
+ icon="alertmodal.tga"
+ label="Save Outfit"
+ name="SaveOutfitAs"
+ type="alertmodal">
+ Save what I'm wearing as a new Outfit:
+ <form name="form">
+ <input name="message" type="text">
+ [DESC] (new)
+ </input>
+ <button
+ default="true"
+ index="0"
+ name="Offer"
+ text="OK"/>
+ <button
+ index="1"
+ name="Cancel"
+ text="Cancel"/>
+ </form>
+ </notification>
+
+ <notification
icon="alertmodal.tga"
name="RemoveFromFriends"
type="alertmodal">
diff --git a/indra/newview/skins/default/xui/en/panel_edit_alpha.xml b/indra/newview/skins/default/xui/en/panel_edit_alpha.xml
index 40647e1b81..1d0c0a02b0 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_alpha.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_alpha.xml
@@ -1,33 +1,38 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
+ background_visible="true"
follows="all"
height="400"
layout="topleft"
- left="10"
+ left="0"
name="edit_alpha_panel"
top_pad="10"
- width="313" >
+ width="333" >
<panel
- border="true"
- follows="left|top|right"
- height="180"
+ border="false"
+ bg_alpha_color="DkGray2"
+ bg_opaque_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ follows="top|left|right"
+ height="400"
left="10"
layout="topleft"
name="avatar_alpha_color_panel"
top="0"
- width="293" >
+ width="313" >
<texture_picker
can_apply_immediately="true"
default_image_name="Default"
follows="left|top"
- height="80"
+ height="100"
label="Lower Alpha"
layout="topleft"
- left="10"
+ left="30"
name="Lower Alpha"
tool_tip="Click to choose a picture"
top="10"
- width="64" />
+ width="94" />
<check_box
control_name="LowerAlphaTextureInvisible"
follows="left"
@@ -41,14 +46,14 @@
can_apply_immediately="true"
default_image_name="Default"
follows="left|top"
- height="80"
+ height="100"
label="Upper Alpha"
layout="topleft"
- left_pad="10"
+ left_pad="20"
name="Upper Alpha"
tool_tip="Click to choose a picture"
top="10"
- width="64" />
+ width="94" />
<check_box
control_name="UpperAlphaTextureInvisible"
follows="left"
@@ -62,14 +67,14 @@
can_apply_immediately="true"
default_image_name="Default"
follows="left|top"
- height="80"
+ height="100"
label="Head Alpha"
layout="topleft"
- left_pad="10"
+ left="30"
name="Head Alpha"
tool_tip="Click to choose a picture"
- top="10"
- width="64" />
+ top="120"
+ width="94" />
<check_box
control_name="HeadAlphaTextureInvisible"
follows="left"
@@ -83,14 +88,14 @@
can_apply_immediately="true"
default_image_name="Default"
follows="left|top"
- height="80"
+ height="100"
label="Eye Alpha"
layout="topleft"
- left="10"
+ left_pad="20"
name="Eye Alpha"
tool_tip="Click to choose a picture"
- top="100"
- width="64" />
+ top="120"
+ width="94" />
<check_box
control_name="Eye AlphaTextureInvisible"
follows="left"
@@ -104,14 +109,14 @@
can_apply_immediately="true"
default_image_name="Default"
follows="left|top"
- height="80"
+ height="100"
label="Hair Alpha"
layout="topleft"
- left_pad="10"
+ left="30"
name="Hair Alpha"
tool_tip="Click to choose a picture"
- top_delta="-4"
- width="64" />
+ top="230"
+ width="94" />
<check_box
control_name="HairAlphaTextureInvisible"
follows="left"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_eyes.xml b/indra/newview/skins/default/xui/en/panel_edit_eyes.xml
index c514054c41..f11ef43c76 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_eyes.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_eyes.xml
@@ -1,21 +1,26 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
+ background_visible="true"
follows="all"
height="400"
layout="topleft"
- left="10"
+ left="0"
name="edit_eyes_panel"
top_pad="10"
- width="313" >
+ width="333" >
<panel
- border="true"
- follows="left|top|right"
- height="100"
+ border="false"
+ bg_alpha_color="DkGray2"
+ bg_opaque_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ follows="top|left|right"
+ height="90"
left="10"
layout="topleft"
name="avatar_eye_color_panel"
top="0"
- width="293" >
+ width="313" >
<texture_picker
can_apply_immediately="true"
default_image_name="Default"
@@ -23,31 +28,49 @@
height="80"
label="Iris"
layout="topleft"
- left="8"
+ left="10"
name="Iris"
tool_tip="Click to choose a picture"
- top_pad="10"
+ top="10"
width="64" />
</panel>
- <accordion
- follows="left|top|right|bottom"
- height ="340"
- left="10"
- name="wearable_accordion"
- top_pad="10"
- width="303">
- <accordion_tab
+ <panel
+ border="false"
+ bg_alpha_color="DkGray2"
+ bg_opaque_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ follows="all"
+ height="300"
+ layout="topleft"
+ left="10"
+ name="accordion_panel"
+ top_pad="10"
+ width="313">
+ <accordion
+ follows="all"
+ height ="300"
+ layout="topleft"
+ left="0"
+ name="wearable_accordion"
+ single_expansion="true"
+ top="0"
+ width="313">
+ <accordion_tab
layout="topleft"
+ fit_panel="false"
min_height="150"
name="eyes_main_tab"
title="Eyes">
<scrolling_panel_list
follows="all"
+ layout="topleft"
left="0"
name="eyes_main_param_list"
top="0"
width="303" />
</accordion_tab>
</accordion>
+ </panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_edit_gloves.xml b/indra/newview/skins/default/xui/en/panel_edit_gloves.xml
index 7aca40e8d9..7d8eed5085 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_gloves.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_gloves.xml
@@ -1,21 +1,26 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
+ background_visible="true"
follows="all"
height="400"
layout="topleft"
- left="10"
+ left="0"
name="edit_gloves_panel"
top_pad="10"
- width="313" >
+ width="333" >
<panel
- border="true"
- follows="left|top|right"
- height="100"
+ border="false"
+ bg_alpha_color="DkGray2"
+ bg_opaque_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ follows="top|left|right"
+ height="90"
left="10"
layout="topleft"
name="avatar_gloves_color_panel"
top="0"
- width="293" >
+ width="313" >
<texture_picker
can_apply_immediately="true"
default_image_name="Default"
@@ -34,31 +39,49 @@
height="80"
label="Color/Tint"
layout="topleft"
- left_pad="10"
+ left_pad="20"
name="Color/Tint"
tool_tip="Click to open color picker"
top="10"
width="64" />
</panel>
- <accordion
- follows="left|top|right|bottom"
- height ="340"
- left="10"
- name="wearable_accordion"
- top_pad="10"
- width="303">
+ <panel
+ border="false"
+ bg_alpha_color="DkGray2"
+ bg_opaque_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ follows="all"
+ height="300"
+ layout="topleft"
+ left="10"
+ name="accordion_panel"
+ top_pad="10"
+ width="313">
+ <accordion
+ follows="all"
+ height ="300"
+ layout="topleft"
+ left="0"
+ name="wearable_accordion"
+ single_expansion="true"
+ top="0"
+ width="313">
<accordion_tab
layout="topleft"
+ fit_panel="false"
min_height="150"
name="gloves_main_tab"
title="Gloves">
<scrolling_panel_list
follows="all"
+ layout="topleft"
left="0"
name="gloves_main_param_list"
top="0"
width="303" />
</accordion_tab>
</accordion>
+ </panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_edit_hair.xml b/indra/newview/skins/default/xui/en/panel_edit_hair.xml
index e7d1c05301..cd81aa2c4f 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_hair.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_hair.xml
@@ -1,21 +1,26 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
+ background_visible="true"
follows="all"
height="400"
layout="topleft"
- left="10"
+ left="0"
name="edit_hair_panel"
top_pad="10"
- width="313" >
+ width="333" >
<panel
- border="true"
- follows="left|top|right"
- height="100"
+ border="false"
+ bg_alpha_color="DkGray2"
+ bg_opaque_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ follows="top|left|right"
+ height="90"
left="10"
layout="topleft"
name="avatar_hair_color_panel"
top="0"
- width="293" >
+ width="313" >
<texture_picker
can_apply_immediately="true"
default_image_name="Default"
@@ -23,26 +28,43 @@
height="80"
label="Texture"
layout="topleft"
- left="8"
+ left="10"
name="Texture"
tool_tip="Click to choose a picture"
top="10"
width="64" />
</panel>
+ <panel
+ border="false"
+ bg_alpha_color="DkGray2"
+ bg_opaque_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ follows="all"
+ height="300"
+ layout="topleft"
+ left="10"
+ name="accordion_panel"
+ top_pad="10"
+ width="313">
<accordion
- follows="left|top|right|bottom"
- height ="340"
- left="10"
- name="wearable_accordion"
- top_pad="10"
- width="303">
+ follows="all"
+ height ="300"
+ layout="topleft"
+ left="0"
+ name="wearable_accordion"
+ single_expansion="true"
+ top="0"
+ width="313">
<accordion_tab
layout="topleft"
+ fit_panel="false"
min_height="150"
name="hair_color_tab"
title="Color">
<scrolling_panel_list
follows="all"
+ layout="topleft"
left="0"
name="hair_color_param_list"
top="0"
@@ -50,11 +72,13 @@
</accordion_tab>
<accordion_tab
layout="topleft"
+ fit_panel="false"
min_height="150"
name="hair_style_tab"
title="Style">
<scrolling_panel_list
follows="all"
+ layout="topleft"
left="0"
name="hair_style_param_list"
top="0"
@@ -62,11 +86,13 @@
</accordion_tab>
<accordion_tab
layout="topleft"
+ fit_panel="false"
min_height="150"
name="hair_eyebrows_tab"
title="Eyebrows">
<scrolling_panel_list
follows="all"
+ layout="topleft"
left="0"
name="hair_eyebrows_param_list"
top="0"
@@ -74,16 +100,19 @@
</accordion_tab>
<accordion_tab
layout="topleft"
+ fit_panel="false"
min_height="150"
name="hair_facial_tab"
title="Facial">
<scrolling_panel_list
follows="all"
+ layout="topleft"
left="0"
name="hair_facial_param_list"
top="0"
width="303" />
</accordion_tab>
</accordion>
+ </panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_edit_jacket.xml b/indra/newview/skins/default/xui/en/panel_edit_jacket.xml
index ed92b1e0f8..ba03865937 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_jacket.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_jacket.xml
@@ -1,21 +1,26 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
+ background_visible="true"
follows="all"
height="400"
layout="topleft"
- left="10"
+ left="0"
name="edit_jacket_panel"
top_pad="10"
- width="313" >
+ width="333" >
<panel
- border="true"
- follows="left|top|right"
- height="100"
+ border="false"
+ bg_alpha_color="DkGray2"
+ bg_opaque_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ follows="top|left|right"
+ height="90"
left="10"
layout="topleft"
name="avatar_jacket_color_panel"
top="0"
- width="293" >
+ width="313" >
<texture_picker
can_apply_immediately="true"
default_image_name="Default"
@@ -23,11 +28,11 @@
height="80"
label="Upper Fabric"
layout="topleft"
- left="10"
+ left="25"
name="Upper Fabric"
tool_tip="Click to choose a picture"
top="10"
- width="64" />
+ width="74" />
<texture_picker
can_apply_immediately="true"
default_image_name="Default"
@@ -35,42 +40,60 @@
height="80"
label="Lower Fabric"
layout="topleft"
- left_pad="10"
+ left_pad="20"
name="Lower Fabric"
tool_tip="Click to choose a picture"
top="10"
- width="64" />
+ width="74" />
<color_swatch
can_apply_immediately="true"
follows="left|top"
height="80"
label="Color/Tint"
layout="topleft"
- left_pad="10"
+ left_pad="20"
name="Color/Tint"
tool_tip="Click to open color picker"
top="10"
- width="64" />
+ width="74" />
</panel>
- <accordion
- follows="left|top|right|bottom"
- height ="340"
- left="10"
- name="wearable_accordion"
- top_pad="10"
- width="303">
+ <panel
+ border="false"
+ bg_alpha_color="DkGray2"
+ bg_opaque_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ follows="all"
+ height="300"
+ layout="topleft"
+ left="10"
+ name="accordion_panel"
+ top_pad="10"
+ width="313">
+ <accordion
+ follows="all"
+ height ="300"
+ layout="topleft"
+ left="0"
+ name="wearable_accordion"
+ single_expansion="true"
+ top="0"
+ width="313">
<accordion_tab
layout="topleft"
+ fit_panel="false"
min_height="150"
name="jacket_main_tab"
title="Jacket">
<scrolling_panel_list
follows="all"
+ layout="topleft"
left="0"
name="jacket_main_param_list"
top="0"
width="303" />
</accordion_tab>
</accordion>
+ </panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_edit_pants.xml b/indra/newview/skins/default/xui/en/panel_edit_pants.xml
index b764188e04..5b02d1f968 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_pants.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_pants.xml
@@ -1,21 +1,26 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
+ background_visible="true"
follows="all"
height="400"
layout="topleft"
- left="10"
+ left="0"
name="edit_pants_panel"
top_pad="10"
- width="313" >
+ width="333" >
<panel
- border="true"
- follows="left|top|right"
- height="100"
+ border="false"
+ bg_alpha_color="DkGray2"
+ bg_opaque_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ follows="top|left|right"
+ height="90"
left="10"
layout="topleft"
name="avatar_pants_color_panel"
top="0"
- width="293" >
+ width="313" >
<texture_picker
can_apply_immediately="true"
default_image_name="Default"
@@ -34,31 +39,49 @@
height="80"
label="Color/Tint"
layout="topleft"
- left_pad="10"
+ left_pad="20"
name="Color/Tint"
tool_tip="Click to open color picker"
top="10"
width="64" />
</panel>
- <accordion
- follows="left|top|right|bottom"
- height ="340"
- left="10"
- name="wearable_accordion"
- top_pad="10"
- width="303">
+ <panel
+ border="false"
+ bg_alpha_color="DkGray2"
+ bg_opaque_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ follows="all"
+ height="300"
+ layout="topleft"
+ left="10"
+ name="accordion_panel"
+ top_pad="10"
+ width="313">
+ <accordion
+ follows="all"
+ height ="300"
+ layout="topleft"
+ left="0"
+ name="wearable_accordion"
+ single_expansion="true"
+ top="0"
+ width="313">
<accordion_tab
layout="topleft"
+ fit_panel="false"
min_height="150"
name="pants_main_tab"
title="Pants">
<scrolling_panel_list
follows="all"
+ layout="topleft"
left="0"
name="pants_main_param_list"
top="0"
width="303" />
</accordion_tab>
</accordion>
+ </panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_edit_shape.xml b/indra/newview/skins/default/xui/en/panel_edit_shape.xml
index 45c4b92338..e1c574001a 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_shape.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_shape.xml
@@ -1,38 +1,43 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
+ background_visible="true"
follows="all"
height="400"
layout="topleft"
- left="10"
+ left="0"
name="edit_shape_panel"
top_pad="10"
- width="313" >
+ width="333" >
<panel
- border="true"
- follows="top|left"
+ border="false"
+ bg_alpha_color="DkGray2"
+ bg_opaque_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ follows="top|left|right"
height="50"
left="10"
layout="topleft"
name="avatar_sex_panel"
- top="10"
- width="293" >
+ top="0"
+ width="313" >
<text
follows="top|left"
height="16"
layout="topleft"
left="10"
name="gender_text"
- width="303">
+ width="313">
Gender:
</text>
<radio_group
- follows="all"
+ follows="left|top|right"
left="10"
- height="34"
+ height="28"
layout="topleft"
name="sex_radio"
top_pad="3"
- width="200" >
+ width="303" >
<radio_item
follows="all"
height="16"
@@ -51,21 +56,41 @@
width="82" />
</radio_group>
</panel>
+ <panel
+ border="false"
+ bg_alpha_color="DkGray2"
+ bg_opaque_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ follows="all"
+ height="345"
+ label="Shirt"
+ layout="topleft"
+ left="10"
+ name="accordion_panel"
+ top_pad="10"
+ width="313">
<accordion
- follows="left|top|right|bottom"
- height ="330"
- left="10"
+ layout="topleft"
+ follows="all"
+ height ="345"
+ left="0"
name="wearable_accordion"
- top_pad="10"
- width="303">
+ top="0"
+ single_expansion="true"
+ fit_parent="false"
+ width="313">
<accordion_tab
layout="topleft"
min_height="150"
name="shape_body_tab"
+ fit_panel="false"
title="Body">
<scrolling_panel_list
+ layout="topleft"
follows="all"
left="0"
+ height="300"
name="shape_body_param_list"
top="0"
width="303" />
@@ -73,11 +98,13 @@
<accordion_tab
layout="topleft"
min_height="150"
+ fit_panel="false"
name="shape_head_tab"
title="Head">
- <scrolling_panel_list
+ <scrolling_panel_list
+ layout="topleft"
follows="all"
- left="0"
+ left="10"
name="shape_head_param_list"
top="0"
width="303" />
@@ -85,9 +112,11 @@
<accordion_tab
layout="topleft"
min_height="150"
+ fit_panel="false"
name="shape_eyes_tab"
title="Eyes">
- <scrolling_panel_list
+ <scrolling_panel_list
+ layout="topleft"
follows="all"
left="0"
name="shape_eyes_param_list"
@@ -97,9 +126,11 @@
<accordion_tab
layout="topleft"
min_height="150"
+ fit_panel="false"
name="shape_ears_tab"
title="Ears">
- <scrolling_panel_list
+ <scrolling_panel_list
+ layout="topleft"
follows="all"
left="0"
name="shape_ears_param_list"
@@ -110,8 +141,10 @@
layout="topleft"
min_height="150"
name="shape_nose_tab"
+ fit_panel="false"
title="Nose">
- <scrolling_panel_list
+ <scrolling_panel_list
+ layout="topleft"
follows="all"
left="0"
name="shape_nose_param_list"
@@ -122,8 +155,10 @@
layout="topleft"
min_height="150"
name="shape_mouth_tab"
+ fit_panel="false"
title="Mouth">
- <scrolling_panel_list
+ <scrolling_panel_list
+ layout="topleft"
follows="all"
left="0"
name="shape_mouth_param_list"
@@ -134,8 +169,10 @@
layout="topleft"
min_height="150"
name="shape_chin_tab"
+ fit_panel="false"
title="Chin">
- <scrolling_panel_list
+ <scrolling_panel_list
+ layout="topleft"
follows="all"
left="0"
name="shape_chin_param_list"
@@ -146,8 +183,10 @@
layout="topleft"
min_height="150"
name="shape_torso_tab"
+ fit_panel="false"
title="Torso">
- <scrolling_panel_list
+ <scrolling_panel_list
+ layout="topleft"
follows="all"
left="0"
name="shape_torso_param_list"
@@ -158,8 +197,10 @@
layout="topleft"
min_height="150"
name="shape_legs_tab"
+ fit_panel="false"
title="Legs">
- <scrolling_panel_list
+ <scrolling_panel_list
+ layout="topleft"
follows="all"
left="0"
name="shape_legs_param_list"
@@ -167,5 +208,6 @@
width="303" />
</accordion_tab>
</accordion>
+ </panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_edit_shirt.xml b/indra/newview/skins/default/xui/en/panel_edit_shirt.xml
index 4b7235545f..7da8de4c0b 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_shirt.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_shirt.xml
@@ -1,21 +1,26 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
+ background_visible="true"
follows="all"
height="400"
layout="topleft"
- left="10"
+ left="0"
name="edit_shirt_panel"
top_pad="10"
- width="313" >
+ width="333" >
<panel
- border="true"
- follows="left|top|right"
- height="100"
+ border="false"
+ bg_alpha_color="DkGray2"
+ bg_opaque_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ follows="top|left|right"
+ height="90"
left="10"
layout="topleft"
name="avatar_shirt_color_panel"
top="0"
- width="293" >
+ width="313" >
<texture_picker
can_apply_immediately="true"
default_image_name="Default"
@@ -34,31 +39,49 @@
height="80"
label="Color/Tint"
layout="topleft"
- left_pad="10"
+ left_pad="20"
name="Color/Tint"
tool_tip="Click to open color picker"
top="10"
width="64" />
</panel>
+ <panel
+ border="false"
+ bg_alpha_color="DkGray2"
+ bg_opaque_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ follows="all"
+ height="300"
+ layout="topleft"
+ left="10"
+ name="accordion_panel"
+ top_pad="10"
+ width="313">
<accordion
- follows="left|top|right|bottom"
- height ="340"
- left="10"
+ follows="all"
+ height ="300"
+ layout="topleft"
+ left="0"
name="wearable_accordion"
- top_pad="10"
- width="303">
+ single_expansion="true"
+ top="0"
+ width="313">
<accordion_tab
layout="topleft"
+ fit_panel="false"
min_height="150"
name="shirt_main_tab"
title="Shirt">
<scrolling_panel_list
follows="all"
+ layout="topleft"
left="0"
name="shirt_main_param_list"
top="0"
width="303" />
</accordion_tab>
</accordion>
+ </panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_edit_shoes.xml b/indra/newview/skins/default/xui/en/panel_edit_shoes.xml
index e886afa010..84fe26f7f6 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_shoes.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_shoes.xml
@@ -1,21 +1,26 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
+ background_visible="true"
follows="all"
height="400"
layout="topleft"
- left="10"
+ left="0"
name="edit_shoes_panel"
top_pad="10"
- width="313" >
+ width="333" >
<panel
- border="true"
- follows="left|top|right"
- height="100"
+ border="false"
+ bg_alpha_color="DkGray2"
+ bg_opaque_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ follows="top|left|right"
+ height="90"
left="10"
layout="topleft"
name="avatar_shoes_color_panel"
top="0"
- width="293" >
+ width="313" >
<texture_picker
can_apply_immediately="true"
default_image_name="Default"
@@ -34,31 +39,49 @@
height="80"
label="Color/Tint"
layout="topleft"
- left_pad="10"
+ left_pad="20"
name="Color/Tint"
tool_tip="Click to open color picker"
top="10"
width="64" />
</panel>
- <accordion
- follows="left|top|right|bottom"
- height ="340"
- left="10"
- name="wearable_accordion"
- top_pad="10"
- width="303">
+ <panel
+ border="false"
+ bg_alpha_color="DkGray2"
+ bg_opaque_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ follows="all"
+ height="300"
+ layout="topleft"
+ left="10"
+ name="accordion_panel"
+ top_pad="10"
+ width="313">
+ <accordion
+ follows="all"
+ height ="300"
+ layout="topleft"
+ left="0"
+ name="wearable_accordion"
+ single_expansion="true"
+ top="0"
+ width="313">
<accordion_tab
layout="topleft"
+ fit_panel="false"
min_height="150"
name="shoes_main_tab"
title="Shoes">
<scrolling_panel_list
follows="all"
+ layout="topleft"
left="0"
name="shoes_main_param_list"
top="0"
width="303" />
</accordion_tab>
</accordion>
+ </panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_edit_skin.xml b/indra/newview/skins/default/xui/en/panel_edit_skin.xml
index 918606b54c..b5c8c95473 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_skin.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_skin.xml
@@ -1,21 +1,26 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
+ background_visible="true"
follows="all"
height="400"
layout="topleft"
- left="10"
+ left="0"
name="edit_skin_panel"
top_pad="10"
- width="313" >
+ width="333" >
<panel
- border="true"
- follows="left|top|right"
- height="100"
+ border="false"
+ bg_alpha_color="DkGray2"
+ bg_opaque_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ follows="top|left|right"
+ height="90"
left="10"
layout="topleft"
name="avatar_skin_color_panel"
top="0"
- width="293" >
+ width="313" >
<texture_picker
allow_no_texture="true"
can_apply_immediately="true"
@@ -24,7 +29,7 @@
height="80"
label="Head Tattoos"
layout="topleft"
- left="10"
+ left="25"
name="Head Tattoos"
tool_tip="Click to choose a picture"
top="10"
@@ -37,7 +42,7 @@
height="80"
label="Upper Tattoos"
layout="topleft"
- left_pad="10"
+ left_pad="20"
name="Upper Tattoos"
tool_tip="Click to choose a picture"
top="10"
@@ -50,26 +55,43 @@
height="80"
label="Lower Tattoos"
layout="topleft"
- left_pad="10"
+ left_pad="20"
name="Lower Tattoos"
tool_tip="Click to choose a picture"
top="10"
width="74" />
</panel>
+ <panel
+ border="false"
+ bg_alpha_color="DkGray2"
+ bg_opaque_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ follows="all"
+ height="300"
+ layout="topleft"
+ left="10"
+ name="accordion_panel"
+ top_pad="10"
+ width="313">
<accordion
- follows="left|top|right|bottom"
- height ="340"
- left="10"
+ layout="topleft"
+ follows="all"
+ height ="300"
+ left="0"
name="wearable_accordion"
- top_pad="10"
- width="303">
+ top="0"
+ single_expansion="true"
+ width="313">
<accordion_tab
layout="topleft"
+ fit_panel="false"
min_height="150"
name="skin_color_tab"
title="Skin Color">
<scrolling_panel_list
follows="all"
+ layout="topleft"
left="0"
name="skin_color_param_list"
top="0"
@@ -77,11 +99,13 @@
</accordion_tab>
<accordion_tab
layout="topleft"
+ fit_panel="false"
min_height="150"
name="skin_face_tab"
title="Face Detail">
<scrolling_panel_list
follows="all"
+ layout="topleft"
left="0"
name="skin_face_param_list"
top="0"
@@ -89,11 +113,13 @@
</accordion_tab>
<accordion_tab
layout="topleft"
+ fit_panel="false"
min_height="150"
name="skin_makeup_tab"
title="Makeup">
<scrolling_panel_list
follows="all"
+ layout="topleft"
left="0"
name="skin_makeup_param_list"
top="0"
@@ -101,16 +127,19 @@
</accordion_tab>
<accordion_tab
layout="topleft"
+ fit_panel="false"
min_height="150"
name="skin_body_tab"
title="Body Detail">
<scrolling_panel_list
follows="all"
+ layout="topleft"
left="0"
name="skin_body_param_list"
top="0"
width="303" />
</accordion_tab>
</accordion>
+ </panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_edit_skirt.xml b/indra/newview/skins/default/xui/en/panel_edit_skirt.xml
index 6cccab1843..16f6950bd5 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_skirt.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_skirt.xml
@@ -1,21 +1,26 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
+ background_visible="true"
follows="all"
height="400"
layout="topleft"
- left="10"
+ left="0"
name="edit_skirt_panel"
top_pad="10"
- width="313" >
+ width="333" >
<panel
- border="true"
- follows="left|top|right"
- height="100"
+ border="false"
+ bg_alpha_color="DkGray2"
+ bg_opaque_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ follows="top|left|right"
+ height="90"
left="10"
layout="topleft"
name="avatar_skirt_color_panel"
top="0"
- width="293" >
+ width="313" >
<texture_picker
can_apply_immediately="true"
default_image_name="Default"
@@ -34,31 +39,49 @@
height="80"
label="Color/Tint"
layout="topleft"
- left_pad="10"
+ left_pad="20"
name="Color/Tint"
tool_tip="Click to open color picker"
top="10"
width="64" />
</panel>
- <accordion
- follows="left|top|right|bottom"
- height ="340"
- left="10"
- name="wearable_accordion"
- top_pad="10"
- width="303">
+ <panel
+ border="false"
+ bg_alpha_color="DkGray2"
+ bg_opaque_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ follows="all"
+ height="300"
+ layout="topleft"
+ left="10"
+ name="accordion_panel"
+ top_pad="10"
+ width="313">
+ <accordion
+ follows="all"
+ height ="300"
+ layout="topleft"
+ left="0"
+ name="wearable_accordion"
+ single_expansion="true"
+ top="0"
+ width="313">
<accordion_tab
layout="topleft"
+ fit_panel="false"
min_height="150"
name="skirt_main_tab"
title="Skirt">
<scrolling_panel_list
follows="all"
+ layout="topleft"
left="0"
name="skirt_main_param_list"
top="0"
width="303" />
</accordion_tab>
</accordion>
+ </panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_edit_socks.xml b/indra/newview/skins/default/xui/en/panel_edit_socks.xml
index fc7de00714..e4f916703b 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_socks.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_socks.xml
@@ -1,21 +1,26 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
+ background_visible="true"
follows="all"
height="400"
layout="topleft"
- left="10"
+ left="0"
name="edit_socks_panel"
top_pad="10"
- width="313" >
+ width="333" >
<panel
- border="true"
- follows="left|top|right"
- height="100"
+ border="false"
+ bg_alpha_color="DkGray2"
+ bg_opaque_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ follows="top|left|right"
+ height="90"
left="10"
layout="topleft"
name="avatar_socks_color_panel"
top="0"
- width="293" >
+ width="313" >
<texture_picker
can_apply_immediately="true"
default_image_name="Default"
@@ -34,31 +39,49 @@
height="80"
label="Color/Tint"
layout="topleft"
- left_pad="10"
+ left_pad="20"
name="Color/Tint"
tool_tip="Click to open color picker"
top="10"
width="64" />
</panel>
- <accordion
- follows="left|top|right|bottom"
- height ="340"
- left="10"
- name="wearable_accordion"
- top_pad="10"
- width="303">
+ <panel
+ border="false"
+ bg_alpha_color="DkGray2"
+ bg_opaque_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ follows="all"
+ height="300"
+ layout="topleft"
+ left="10"
+ name="accordion_panel"
+ top_pad="10"
+ width="313">
+ <accordion
+ follows="all"
+ height ="300"
+ layout="topleft"
+ left="0"
+ name="wearable_accordion"
+ single_expansion="true"
+ top="0"
+ width="313">
<accordion_tab
layout="topleft"
+ fit_panel="false"
min_height="150"
name="socks_main_tab"
title="Socks">
<scrolling_panel_list
follows="all"
+ layout="topleft"
left="0"
name="socks_main_param_list"
top="0"
width="303" />
</accordion_tab>
</accordion>
+ </panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml
index b214cd3de0..ed990eb095 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml
@@ -1,57 +1,62 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
+ background_visible="true"
follows="all"
height="400"
layout="topleft"
- left="10"
+ left="0"
name="edit_tattoo_panel"
top_pad="10"
- width="313" >
+ width="333" >
<panel
- border="true"
- follows="left|top|right"
- height="100"
+ border="false"
+ bg_alpha_color="DkGray2"
+ bg_opaque_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ follows="top|left|right"
+ height="400"
left="10"
layout="topleft"
name="avatar_tattoo_color_panel"
top="0"
- width="293" >
+ width="313" >
<texture_picker
can_apply_immediately="true"
default_image_name="Default"
follows="left|top"
- height="80"
+ height="100"
label="Head Tattoo"
layout="topleft"
- left="10"
+ left="30"
name="Head Tattoo"
tool_tip="Click to choose a picture"
top="10"
- width="64" />
+ width="94" />
<texture_picker
can_apply_immediately="true"
default_image_name="Default"
follows="left|top"
- height="80"
+ height="100"
label="Upper Tattoo"
layout="topleft"
- left_pad="10"
+ left_pad="30"
name="Upper Tattoo"
tool_tip="Click to choose a picture"
top="10"
- width="64" />
+ width="94" />
<texture_picker
can_apply_immediately="true"
default_image_name="Default"
follows="left|top"
- height="80"
+ height="100"
label="Lower Tattoo"
layout="topleft"
- left_pad="10"
+ left="30"
name="Lower Tattoo"
tool_tip="Click to choose a picture"
- top="10"
- width="64" />
+ top_pad="10"
+ width="94" />
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_edit_underpants.xml b/indra/newview/skins/default/xui/en/panel_edit_underpants.xml
index 03e0bb70ef..d43497c943 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_underpants.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_underpants.xml
@@ -1,21 +1,26 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
+ background_visible="true"
follows="all"
height="400"
layout="topleft"
- left="10"
+ left="0"
name="edit_underpants_panel"
top_pad="10"
- width="313" >
+ width="333" >
<panel
- border="true"
- follows="left|top|right"
- height="100"
+ border="false"
+ bg_alpha_color="DkGray2"
+ bg_opaque_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ follows="top|left|right"
+ height="90"
left="10"
layout="topleft"
name="avatar_underpants_color_panel"
top="0"
- width="293" >
+ width="313" >
<texture_picker
can_apply_immediately="true"
default_image_name="Default"
@@ -34,31 +39,49 @@
height="80"
label="Color/Tint"
layout="topleft"
- left_pad="10"
+ left_pad="20"
name="Color/Tint"
tool_tip="Click to open color picker"
top="10"
width="64" />
</panel>
- <accordion
- follows="left|top|right|bottom"
- height ="340"
- left="10"
- name="wearable_accordion"
- top_pad="10"
- width="303">
+ <panel
+ border="false"
+ bg_alpha_color="DkGray2"
+ bg_opaque_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ follows="all"
+ height="300"
+ layout="topleft"
+ left="10"
+ name="accordion_panel"
+ top_pad="10"
+ width="313">
+ <accordion
+ follows="all"
+ height ="300"
+ layout="topleft"
+ left="0"
+ name="wearable_accordion"
+ single_expansion="true"
+ top="0"
+ width="313">
<accordion_tab
layout="topleft"
+ fit_panel="false"
min_height="150"
name="underpants_main_tab"
title="Underpants">
<scrolling_panel_list
follows="all"
+ layout="topleft"
left="0"
name="underpants_main_param_list"
top="0"
width="303" />
</accordion_tab>
</accordion>
+ </panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/en/panel_edit_undershirt.xml
index 20c56142fb..45c6ef4526 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_undershirt.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_undershirt.xml
@@ -1,21 +1,26 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
+ background_visible="true"
follows="all"
height="400"
layout="topleft"
- left="10"
+ left="0"
name="edit_undershirt_panel"
top_pad="10"
- width="313" >
+ width="333" >
<panel
- border="true"
- follows="left|top|right"
- height="100"
+ border="false"
+ bg_alpha_color="DkGray2"
+ bg_opaque_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ follows="top|left|right"
+ height="90"
left="10"
layout="topleft"
name="avatar_undershirt_color_panel"
top="0"
- width="293" >
+ width="313" >
<texture_picker
can_apply_immediately="true"
default_image_name="Default"
@@ -34,31 +39,49 @@
height="80"
label="Color/Tint"
layout="topleft"
- left_pad="10"
+ left_pad="20"
name="Color/Tint"
tool_tip="Click to open Color Picker"
top="10"
width="64" />
</panel>
- <accordion
- follows="left|top|right|bottom"
- height ="340"
- left="10"
- name="wearable_accordion"
- top_pad="10"
- width="303">
+ <panel
+ border="false"
+ bg_alpha_color="DkGray2"
+ bg_opaque_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ follows="all"
+ height="300"
+ layout="topleft"
+ left="10"
+ name="accordion_panel"
+ top_pad="10"
+ width="313">
+ <accordion
+ follows="all"
+ height ="300"
+ layout="topleft"
+ left="0"
+ name="wearable_accordion"
+ single_expansion="true"
+ top="0"
+ width="313">
<accordion_tab
layout="topleft"
+ fit_panel="false"
min_height="150"
name="undershirt_main_tab"
title="Undershirt">
<scrolling_panel_list
follows="all"
+ layout="topleft"
left="0"
name="undershirt_main_param_list"
top="0"
width="303" />
</accordion_tab>
</accordion>
+ </panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_edit_wearable.xml b/indra/newview/skins/default/xui/en/panel_edit_wearable.xml
index f76a56bda4..dc2f085356 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_wearable.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_wearable.xml
@@ -150,8 +150,12 @@ left="0"
value="Editing Shape"
width="270" />
<panel
- border="true"
- follows="top|left"
+ border="false"
+ bg_alpha_color="DkGray2"
+ bg_opaque_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ follows="top|left|right"
height="60"
label="Shirt"
layout="topleft"
@@ -160,7 +164,7 @@ left="0"
top_pad="10"
width="313">
<text
- follows="top|left"
+ follows="top|left|right"
height="16"
layout="topleft"
left="10"
@@ -335,30 +339,76 @@ left="0"
visible="false"
width="333" />
</panel>
+ <panel
+ follows="left|right|bottom"
+ height="38"
+ label="gear_buttom_panel"
+ layout="bottom|left|right"
+ left="0"
+ bottom="25"
+ name="gear_buttom_panel"
+ width="333">
+ <button
+ follows="bottom|left"
+ tool_tip="Options"
+ height="18"
+ image_disabled="OptionsMenu_Disabled"
+ image_selected="OptionsMenu_Press"
+ image_unselected="OptionsMenu_Off"
+ layout="topleft"
+ left="10"
+ name="friends_viewsort_btn"
+ top="10"
+ width="18" />
+ <button
+ follows="bottom|left"
+ height="18"
+ image_selected="AddItem_Press"
+ image_unselected="AddItem_Off"
+ image_disabled="AddItem_Disabled"
+ layout="topleft"
+ left_pad="10"
+ name="add_btn"
+ tool_tip="TODO"
+ width="18" />
+ <button
+ follows="bottom|left"
+ height="18"
+ image_selected="TrashItem_Press"
+ image_unselected="TrashItem_Off"
+ image_disabled="TrashItem_Disabled"
+ layout="topleft"
+ left_pad="10"
+ right="-10"
+ name="del_btn"
+ tool_tip="TODO"
+ top_delta="0"
+ width="18" />
+ </panel>
<panel
- follows="all"
+ follows="bottom|left|right"
height="25"
layout="bottom|left|right"
left="0"
name="button_panel"
- top_pad="10"
+ bottom="5"
width="333" >
<button
follows="bottomleft"
layout="topleft"
height="23"
label="Save As"
- left="10"
+ left="8"
name="save_as_button"
top="0"
- width="100" />
+ width="153" />
<button
follows="bottomleft"
layout="topleft"
height="23"
label="Revert"
- left_pad="10"
+ left_pad="7"
name="revert_button"
- width="100" />
+ width="153" />
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
index 701a14e1c5..789d69bc68 100644
--- a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
@@ -98,6 +98,7 @@ background_visible="true"
left="0"
top="0"
single_expansion="true"
+ fit_parent="true"
follows="all"
layout="topleft"
name="groups_accordion">
diff --git a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
index 7d7e21d4b0..29c6a17c31 100644
--- a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
+++ b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
@@ -150,7 +150,7 @@
<button
follows="left|top|right"
height="23"
- label="Leave Call"
+ label="End Call"
name="end_call_btn"
width="100" />
</layout_panel>
diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml
index cc68ec2bdc..01adc00e1a 100644
--- a/indra/newview/skins/default/xui/en/panel_login.xml
+++ b/indra/newview/skins/default/xui/en/panel_login.xml
@@ -64,7 +64,6 @@ First name:
</text>
<line_editor
follows="left|bottom"
-handle_edit_keys_directly="true"
height="22"
label="First"
left_delta="0"
@@ -85,7 +84,6 @@ top_pad="0"
Last name: </text>
<line_editor
follows="left|bottom"
-handle_edit_keys_directly="true"
height="22"
label="Last"
max_length="31"
@@ -106,7 +104,6 @@ top="20"
</text>
<line_editor
follows="left|bottom"
-handle_edit_keys_directly="true"
height="22"
max_length="16"
name="password_edit"
diff --git a/indra/newview/skins/default/xui/en/panel_main_inventory.xml b/indra/newview/skins/default/xui/en/panel_main_inventory.xml
index 869bbd2341..27d66945d9 100644
--- a/indra/newview/skins/default/xui/en/panel_main_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_main_inventory.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
background_visible="true"
+ default_tab_group="1"
follows="all"
height="408"
label="Things"
@@ -9,22 +10,22 @@
min_width="240"
name="main inventory panel"
width="330">
- <panel.string
- name="Itemcount">
- </panel.string>
- <panel.string
- name="ItemcountFetching">
- Fetching [ITEM_COUNT] Items... [FILTER]
- </panel.string>
- <panel.string
- name="ItemcountCompleted">
- [ITEM_COUNT] Items [FILTER]
- </panel.string>
- <panel.string
- name="ItemcountUnknown">
+ <panel.string
+ name="Itemcount">
+ </panel.string>
+ <panel.string
+ name="ItemcountFetching">
+ Fetching [ITEM_COUNT] Items... [FILTER]
+ </panel.string>
+ <panel.string
+ name="ItemcountCompleted">
+ [ITEM_COUNT] Items [FILTER]
+ </panel.string>
+ <panel.string
+ name="ItemcountUnknown">
- </panel.string>
- <text
+ </panel.string>
+ <text
type="string"
length="1"
follows="left|top"
@@ -36,497 +37,125 @@
text_color="EmphasisColor"
top_pad="0"
width="300">
- Items:
- </text>
- <menu_bar
- bg_visible="false"
- follows="left|top|right"
- height="20"
+ Items:
+ </text>
+ <filter_editor
+ text_pad_left="10"
+ follows="left|top|right"
+ height="23"
+ label="Filter Inventory"
+ layout="topleft"
+ left="10"
+ max_length="300"
+ name="inventory search editor"
+ top="3"
+ width="303" />
+ <tab_container
+ bg_alpha_color="DkGray"
+ bg_opaque_color="DkGray"
+ background_visible="true"
+ background_opaque="true"
+ follows="all"
+ halign="center"
+ height="339"
layout="topleft"
- left="10"
- mouse_opaque="false"
- name="Inventory Menu"
- top="+10"
- visible="true"
- width="290">
- <menu
- height="101"
- label="File"
- layout="topleft"
- left="0"
- mouse_opaque="false"
- name="File"
- tear_off="true"
- top="-117"
- width="128">
- <menu_item_call
- label="Open"
- layout="topleft"
- name="Open">
- <menu_item_call.on_click
- function="Inventory.DoToSelected"
- parameter="open" />
- </menu_item_call>
- <menu
- create_jump_keys="true"
- label="Upload"
- layout="topleft"
- name="upload"
- tear_off="true">
- <menu_item_call
- label="Image (L$[COST])..."
- layout="topleft"
- name="Upload Image"
- shortcut="control|U">
- <menu_item_call.on_click
- function="File.UploadImage"
- parameter="" />
- <menu_item_call.on_enable
- function="File.EnableUpload" />
- </menu_item_call>
- <menu_item_call
- label="Sound (L$[COST])..."
- layout="topleft"
- name="Upload Sound">
- <menu_item_call.on_click
- function="File.UploadSound"
- parameter="" />
- <menu_item_call.on_enable
- function="File.EnableUpload" />
- </menu_item_call>
- <menu_item_call
- label="Animation (L$[COST])..."
- layout="topleft"
- name="Upload Animation">
- <menu_item_call.on_click
- function="File.UploadAnim"
- parameter="" />
- <menu_item_call.on_enable
- function="File.EnableUpload" />
- </menu_item_call>
- <menu_item_call
- label="Model..."
- layout="topleft"
- name="Upload Model">
- <menu_item_call.on_click
- function="File.UploadModel"
- parameter="" />
- <menu_item_call.on_enable
- function="File.EnableUploadModel" />
- </menu_item_call>
- <menu_item_call
- label="Bulk (L$[COST] per file)..."
- layout="topleft"
- name="Bulk Upload">
- <menu_item_call.on_click
- function="File.UploadBulk"
- parameter="" />
- </menu_item_call>
- <menu_item_separator
- layout="topleft" />
- </menu>
- <menu_item_separator
- layout="topleft" />
- <menu_item_call
- label="New Window"
- layout="topleft"
- name="New Window">
- <menu_item_call.on_click
- function="Inventory.NewWindow" />
- </menu_item_call>
- <menu_item_separator
- layout="topleft"
- name="separator2" />
- <menu_item_call
- label="Show Filters"
- layout="topleft"
- name="Show Filters">
- <menu_item_call.on_click
- function="Inventory.ShowFilters" />
- </menu_item_call>
- <menu_item_call
- label="Reset Filters"
- layout="topleft"
- name="Reset Current">
- <menu_item_call.on_click
- function="Inventory.ResetFilters" />
- </menu_item_call>
- <menu_item_call
- label="Close All Folders"
- layout="topleft"
- name="Close All Folders">
- <menu_item_call.on_click
- function="Inventory.CloseAllFolders" />
- </menu_item_call>
- <menu_item_separator
- layout="topleft"
- name="separator3" />
- <menu_item_call
- label="Empty Trash"
- layout="topleft"
- name="Empty Trash">
- <menu_item_call.on_click
- function="Inventory.EmptyTrash" />
- </menu_item_call>
- <menu_item_call
- label="Empty Lost And Found"
- layout="topleft"
- name="Empty Lost And Found">
- <menu_item_call.on_click
- function="Inventory.EmptyLostAndFound" />
- </menu_item_call>
- </menu>
- <menu
- height="121"
- label="Create"
- layout="topleft"
- left="0"
- mouse_opaque="false"
- name="Create"
- tear_off="true"
- top="-201"
- width="121">
- <menu_item_call
- label="New Folder"
- layout="topleft"
- name="New Folder">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="category" />
- </menu_item_call>
- <menu_item_call
- label="New Script"
- layout="topleft"
- name="New Script">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="lsl" />
- </menu_item_call>
- <menu_item_call
- label="New Notecard"
- layout="topleft"
- name="New Note">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="notecard" />
- </menu_item_call>
- <menu_item_call
- label="New Gesture"
- layout="topleft"
- name="New Gesture">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="gesture" />
- </menu_item_call>
- <menu
- height="175"
- label="New Clothes"
- layout="topleft"
- left_delta="0"
- mouse_opaque="false"
- name="New Clothes"
- top_pad="514"
- width="125">
- <menu_item_call
- label="New Shirt"
- layout="topleft"
- name="New Shirt">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="shirt" />
- </menu_item_call>
- <menu_item_call
- label="New Pants"
- layout="topleft"
- name="New Pants">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="pants" />
- </menu_item_call>
- <menu_item_call
- label="New Shoes"
- layout="topleft"
- name="New Shoes">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="shoes" />
- </menu_item_call>
- <menu_item_call
- label="New Socks"
- layout="topleft"
- name="New Socks">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="socks" />
- </menu_item_call>
- <menu_item_call
- label="New Jacket"
- layout="topleft"
- name="New Jacket">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="jacket" />
- </menu_item_call>
- <menu_item_call
- label="New Skirt"
- layout="topleft"
- name="New Skirt">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="skirt" />
- </menu_item_call>
- <menu_item_call
- label="New Gloves"
- layout="topleft"
- name="New Gloves">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="gloves" />
- </menu_item_call>
- <menu_item_call
- label="New Undershirt"
- layout="topleft"
- name="New Undershirt">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="undershirt" />
- </menu_item_call>
- <menu_item_call
- label="New Underpants"
- layout="topleft"
- name="New Underpants">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="underpants" />
- </menu_item_call>
- <menu_item_call
- label="New Alpha"
- layout="topleft"
- name="New Alpha">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="alpha" />
- </menu_item_call>
- <menu_item_call
- label="New Tattoo"
- layout="topleft"
- name="New Tattoo">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="tattoo" />
- </menu_item_call>
- </menu>
- <menu
- height="85"
- label="New Body Parts"
- layout="topleft"
- left_delta="0"
- mouse_opaque="false"
- name="New Body Parts"
- top_pad="514"
- width="118">
- <menu_item_call
- label="New Shape"
- layout="topleft"
- name="New Shape">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="shape" />
- </menu_item_call>
- <menu_item_call
- label="New Skin"
- layout="topleft"
- name="New Skin">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="skin" />
- </menu_item_call>
- <menu_item_call
- label="New Hair"
- layout="topleft"
- name="New Hair">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="hair" />
- </menu_item_call>
- <menu_item_call
- label="New Eyes"
- layout="topleft"
- name="New Eyes">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="eyes" />
- </menu_item_call>
- </menu>
- </menu>
- <menu
- height="49"
- label="Sort"
- layout="topleft"
- left="0"
- mouse_opaque="false"
- name="Sort"
- tear_off="true"
- top="-113"
- width="118">
- <menu_item_check
- control_name="Inventory.SortByName"
- label="By Name"
- layout="topleft"
- name="By Name">
- <menu_item_check.on_click
- function="Inventory.SetSortBy"
- parameter="name" />
- </menu_item_check>
- <menu_item_check
- control_name="Inventory.SortByDate"
- label="By Date"
- layout="topleft"
- name="By Date">
- <menu_item_check.on_click
- function="Inventory.SetSortBy"
- parameter="date" />
- </menu_item_check>
- <menu_item_separator
- layout="topleft" />
- <menu_item_check
- control_name="Inventory.FoldersAlwaysByName"
- label="Folders Always By Name"
- layout="topleft"
- name="Folders Always By Name">
- <menu_item_check.on_click
- function="Inventory.SetSortBy"
- parameter="foldersalwaysbyname" />
- </menu_item_check>
- <menu_item_check
- control_name="Inventory.SystemFoldersToTop"
- label="System Folders To Top"
- layout="topleft"
- name="System Folders To Top">
- <menu_item_check.on_click
- function="Inventory.SetSortBy"
- parameter="systemfolderstotop" />
- </menu_item_check>
- </menu>
- </menu_bar>
- <filter_editor
- text_pad_left="10"
- follows="left|top|right"
- height="23"
- label="Filter Inventory"
+ left="7"
+ name="inventory filter tabs"
+ tab_height="30"
+ tab_group="1"
+ tab_position="top"
+ tab_min_width="100"
+ top_pad="10"
+ width="312">
+ <inventory_panel
+ bg_opaque_color="DkGray2"
+ bg_alpha_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ border="false"
+ bevel_style="none"
+ follows="all"
+ height="338"
+ label="MY INVENTORY"
+ help_topic="my_inventory_tab"
layout="topleft"
- left="10"
- max_length="300"
- name="inventory search editor"
- top="+31"
- width="303" />
- <tab_container
- bg_alpha_color="DkGray"
- bg_opaque_color="DkGray"
- background_visible="true"
- background_opaque="true"
- follows="all"
- halign="center"
- height="311"
- layout="topleft"
- left="7"
- name="inventory filter tabs"
- tab_height="30"
- tab_position="top"
- tab_min_width="100"
- top_pad="10"
- width="312">
- <inventory_panel
- bg_opaque_color="DkGray2"
- bg_alpha_color="DkGray2"
- background_visible="true"
- background_opaque="true"
- border="false"
- bevel_style="none"
- follows="all"
- height="310"
- label="MY INVENTORY"
- help_topic="my_inventory_tab"
- layout="topleft"
- left="0"
- name="All Items"
- sort_order_setting="InventorySortOrder"
- top="16"
- width="288" />
- <inventory_panel
- bg_opaque_color="DkGray2"
- bg_alpha_color="DkGray2"
- background_visible="true"
- background_opaque="true"
- border="false"
- bevel_style="none"
- follows="all"
- height="310"
- label="RECENT"
- help_topic="recent_inventory_tab"
- layout="topleft"
- left_delta="0"
- name="Recent Items"
- width="290" />
- </tab_container>
-
- <panel
- background_visible="true"
+ left="0"
+ name="All Items"
+ sort_order_setting="InventorySortOrder"
+ top="16"
+ width="288" />
+ <inventory_panel
+ bg_opaque_color="DkGray2"
+ bg_alpha_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ border="false"
bevel_style="none"
- follows="left|right|bottom"
- height="27"
+ follows="all"
+ height="338"
+ label="RECENT"
+ help_topic="recent_inventory_tab"
layout="topleft"
- top_pad="-1"
- left="10"
- name="bottom_panel"
- width="310">
- <button
- follows="bottom|left"
- tool_tip="Show additional options"
- height="25"
- image_hover_unselected="Toolbar_Left_Over"
- image_overlay="OptionsMenu_Off"
- image_selected="Toolbar_Left_Selected"
- image_unselected="Toolbar_Left_Off"
- layout="topleft"
- left="0"
- name="options_gear_btn"
- top="1"
- width="31" />
- <button
- follows="bottom|left"
- height="25"
- image_hover_unselected="Toolbar_Middle_Over"
- image_overlay="AddItem_Off"
- image_selected="Toolbar_Middle_Selected"
- image_unselected="Toolbar_Middle_Off"
- layout="topleft"
- left_pad="1"
- name="add_btn"
- tool_tip="Add new item"
- width="31" />
- <icon
- follows="bottom|left"
- height="25"
- image_name="Toolbar_Middle_Off"
- layout="topleft"
- left_pad="1"
- name="dummy_icon"
- width="209"
- />
- <dnd_button
- follows="bottom|left"
- height="25"
- image_hover_unselected="Toolbar_Right_Over"
- image_overlay="TrashItem_Off"
- image_selected="Toolbar_Right_Selected"
- image_unselected="Toolbar_Right_Off"
- left_pad="1"
- layout="topleft"
- name="trash_btn"
- tool_tip="Remove selected item"
- width="31"/>
- </panel>
+ left_delta="0"
+ name="Recent Items"
+ width="290" />
+ </tab_container>
-
+ <panel
+ background_visible="true"
+ bevel_style="none"
+ follows="left|right|bottom"
+ height="27"
+ layout="topleft"
+ top_pad="-1"
+ left="10"
+ name="bottom_panel"
+ width="310">
+ <button
+ follows="bottom|left"
+ tool_tip="Show additional options"
+ height="25"
+ image_hover_unselected="Toolbar_Left_Over"
+ image_overlay="OptionsMenu_Off"
+ image_selected="Toolbar_Left_Selected"
+ image_unselected="Toolbar_Left_Off"
+ layout="topleft"
+ left="0"
+ name="options_gear_btn"
+ top="1"
+ width="31" />
+ <button
+ follows="bottom|left"
+ height="25"
+ image_hover_unselected="Toolbar_Middle_Over"
+ image_overlay="AddItem_Off"
+ image_selected="Toolbar_Middle_Selected"
+ image_unselected="Toolbar_Middle_Off"
+ layout="topleft"
+ left_pad="1"
+ name="add_btn"
+ tool_tip="Add new item"
+ width="31" />
+ <icon
+ follows="bottom|left"
+ height="25"
+ image_name="Toolbar_Middle_Off"
+ layout="topleft"
+ left_pad="1"
+ name="dummy_icon"
+ width="209"
+ />
+ <dnd_button
+ follows="bottom|left"
+ height="25"
+ image_hover_unselected="Toolbar_Right_Over"
+ image_overlay="TrashItem_Off"
+ image_selected="Toolbar_Right_Selected"
+ image_unselected="Toolbar_Right_Off"
+ left_pad="1"
+ layout="topleft"
+ name="trash_btn"
+ tool_tip="Remove selected item"
+ width="31"/>
+ </panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_nearby_media.xml b/indra/newview/skins/default/xui/en/panel_nearby_media.xml
index 53dda1927a..ff2aae645b 100644
--- a/indra/newview/skins/default/xui/en/panel_nearby_media.xml
+++ b/indra/newview/skins/default/xui/en/panel_nearby_media.xml
@@ -64,19 +64,31 @@
function="MediaListCtrl.GoMediaPrefs" />
</button>
<button
- name="more_less_btn"
+ name="more_btn"
follows="right"
tool_tip="Advanced Controls"
top_delta="0"
right="-8"
width="66"
height="22"
- toggle="true"
label="More &gt;&gt;"
label_selected="Less &lt;&lt;">
<button.commit_callback
function="MediaListCtrl.MoreLess" />
</button>
+ <button
+ name="less_btn"
+ follows="right"
+ tool_tip="Advanced Controls"
+ top_delta="0"
+ right="-8"
+ width="66"
+ height="22"
+ label="More &gt;&gt;"
+ label_selected="Less &lt;&lt;">
+ <button.commit_callback
+ function="MediaListCtrl.MoreLess" />
+ </button>
</panel>
<panel
name="nearby_media_panel"
diff --git a/indra/newview/skins/default/xui/en/panel_online_status_toast.xml b/indra/newview/skins/default/xui/en/panel_online_status_toast.xml
index 14cb5fffee..b1a7697e83 100644
--- a/indra/newview/skins/default/xui/en/panel_online_status_toast.xml
+++ b/indra/newview/skins/default/xui/en/panel_online_status_toast.xml
@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
background_visible="false"
- height="152"
+ height="40"
label="friend_online_status"
layout="topleft"
left="0"
name="friend_online_status"
top="0"
- width="305">
+ width="220">
<avatar_icon
follows="top|left"
height="18"
@@ -21,7 +21,7 @@
<text
font="SansSerifSmall"
follows="all"
- height="137"
+ height="13"
layout="topleft"
left_pad="5"
name="message"
@@ -29,7 +29,7 @@
top="15"
use_ellipses="true"
value=""
- width="285"
+ width="189"
word_wrap="true"
max_length="350" />
</panel> \ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml
index 4d3ee07195..c1800384a3 100644
--- a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml
@@ -12,6 +12,9 @@
name="outfit_edit"
top="0"
width="320">
+ <string
+ name="No Outfit"
+ value="No Outfit"/>
<panel.string
name="not_available">
@@ -94,7 +97,7 @@
font="SansSerifHugeBold"
height="26"
layout="topleft"
- name="curr_look_name"
+ name="curr_outfit_name"
text_color="LtGray"
top_pad="0"
value="[Current Outfit]"
diff --git a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
index f9ad525642..66ed43efec 100644
--- a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
@@ -122,7 +122,7 @@
label="Edit Outfit"
layout="topleft"
right="-140"
- name="look_edit_btn"
+ name="edit_current_outfit_btn"
top="26"
visible="false"
width="50" />
diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml
index 6152dd1587..8131b75b70 100644
--- a/indra/newview/skins/default/xui/en/panel_people.xml
+++ b/indra/newview/skins/default/xui/en/panel_people.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<!-- Side tray panel -->
<panel
+ default_tab_group="1"
follows="all"
height="449"
label="People"
@@ -56,6 +57,7 @@
layout="topleft"
left="5"
name="tabs"
+ tab_group="1"
tab_min_width="70"
tab_height="30"
tab_position="top"
diff --git a/indra/newview/skins/default/xui/en/panel_place_profile.xml b/indra/newview/skins/default/xui/en/panel_place_profile.xml
index c1c1e54b47..a43b244fa0 100644
--- a/indra/newview/skins/default/xui/en/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml
@@ -743,7 +743,6 @@
bg_focus_color="DkGray2"
bg_readonly_color="DkGray2"
follows="left|top|right"
- handle_edit_keys_directly="true"
height="90"
layout="topleft"
left="10"
diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml
index c61007a9e1..a7a0efcdb3 100644
--- a/indra/newview/skins/default/xui/en/panel_places.xml
+++ b/indra/newview/skins/default/xui/en/panel_places.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
background_visible="true"
+ default_tab_group="1"
follows="all"
height="570"
label="Places"
@@ -37,6 +38,7 @@ background_visible="true"
name="Places Tabs"
tab_min_width="80"
tab_height="30"
+ tab_group="1"
tab_position="top"
top_pad="10"
width="315" />
@@ -132,5 +134,14 @@ background_visible="true"
right="-10"
top="1"
width="60" />
+ <button
+ follows="bottom|left"
+ height="23"
+ label="Profile"
+ layout="topleft"
+ name="profile_btn"
+ right="-1"
+ top="1"
+ width="111" />
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml
index e604e401f6..69e8e6fdcc 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml
@@ -186,6 +186,32 @@ Automatic position for:
function="Pref.applyUIColor"
parameter="BackgroundChatColor" />
</color_swatch>
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="12"
+ layout="topleft"
+ left="30"
+ name="UI Size:"
+ top_pad="5"
+ width="300">
+ UI size
+ </text>
+ <slider
+ control_name="UIScaleFactor"
+ decimal_digits="2"
+ follows="left|top"
+ height="17"
+ increment="0.025"
+ initial_value="1"
+ layout="topleft"
+ left_delta="52"
+ max_val="1.4"
+ min_val="0.75"
+ name="ui_scale_slider"
+ top_pad="-14"
+ width="180" />
<check_box
control_name="ShowScriptErrors"
follows="left|top"
@@ -193,6 +219,7 @@ Automatic position for:
label="Show script errors in:"
layout="topleft"
left="30"
+ top_pad="10"
name="show_script_errors"
width="256" />
<radio_group
@@ -247,6 +274,7 @@ Automatic position for:
top_pad="5"
width="200" />
<button
+ layout="topleft"
follows="top|left"
enabled_control="EnableVoiceChat"
height="23"
@@ -257,8 +285,8 @@ Automatic position for:
<button.commit_callback
function="Pref.VoiceSetKey" />
</button>
- <button
- enabled_control="EnableVoiceChat"
+ <button
+ enabled_control="EnableVoiceChat"
follows="top|left"
halign="center"
height="23"
@@ -271,4 +299,15 @@ Automatic position for:
<button.commit_callback
function="Pref.VoiceSetMiddleMouse" />
</button>
+ <button
+ height="23"
+ label="Other Devices"
+ left="30"
+ name="joystick_setup_button"
+ top_pad="12"
+ width="155">
+ <button.commit_callback
+ function="Floater.Show"
+ parameter="pref_joystick" />
+ </button>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_general.xml b/indra/newview/skins/default/xui/en/panel_preferences_general.xml
index e667fa9a2b..9eaabbe77b 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_general.xml
@@ -177,7 +177,7 @@
layout="topleft"
left="30"
name="start_location_textbox"
- top_pad="10"
+ top_pad="15"
width="394">
Start location:
</text>
@@ -256,26 +256,15 @@
left="50"
name="show_my_name_checkbox1"
width="300" />
- <check_box
- enabled_control="AvatarNameTagMode"
- control_name="SmallAvatarNames"
- height="16"
- initial_value="true"
- label="Small name tags"
- layout="topleft"
- left_delta="175"
- name="small_avatar_names_checkbox"
- width="200" />
<check_box
enabled_control="AvatarNameTagMode"
control_name="RenderShowGroupTitleAll"
height="16"
label="Show group titles"
layout="topleft"
- left_delta="-175"
+ left_delta="175"
name="show_all_title_checkbox1"
- top_pad="5"
- width="300" />
+ width="200" />
<text
type="string"
length="1"
@@ -354,7 +343,7 @@
left="30"
mouse_opaque="false"
name="text_box3"
- top_pad="10"
+ top_pad="15"
width="240">
Busy mode response:
</text>
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
index 66eae5f516..9e48f11de5 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
@@ -16,35 +16,8 @@
height="12"
layout="topleft"
left="30"
- name="UI Size:"
- top="10"
- width="300">
- UI size:
- </text>
- <slider
- can_edit_text="true"
- control_name="UIScaleFactor"
- decimal_digits="2"
- follows="left|top"
- height="15"
- increment="0.025"
- initial_value="1"
- layout="topleft"
- left_delta="52"
- max_val="1.4"
- min_val="0.75"
- name="ui_scale_slider"
- top_pad="2"
- width="180" />
- <text
- type="string"
- length="1"
- follows="left|top"
- height="12"
- layout="topleft"
- left="30"
name="QualitySpeed"
- top_pad="4"
+ top="10"
width="400">
Quality and speed:
</text>
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
index 3d7f392404..fca9b4bca1 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
@@ -84,7 +84,7 @@
</text>
<check_box
enabled="false"
- control_name="LogChat"
+ control_name="LogNearbyChat"
height="16"
label="Save nearby chat logs on my computer"
layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
index 2123e62daa..500e65b916 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
@@ -9,18 +9,6 @@
name="Input panel"
top="1"
width="517">
- <button
- height="23"
- label="Other Devices"
- layout="topleft"
- left="30"
- name="joystick_setup_button"
- top="10"
- width="155">
- <button.commit_callback
- function="Floater.Show"
- parameter="pref_joystick" />
- </button>
<text
type="string"
length="1"
@@ -29,7 +17,7 @@
layout="topleft"
left="30"
name="Mouselook:"
- top_pad="10"
+ top="10"
width="300">
Mouselook:
</text>
@@ -210,7 +198,6 @@
enabled="false"
follows="left|top"
font="SansSerif"
- handle_edit_keys_directly="true"
height="23"
layout="topleft"
left="80"
diff --git a/indra/newview/skins/default/xui/en/panel_region_covenant.xml b/indra/newview/skins/default/xui/en/panel_region_covenant.xml
index dc8f71c868..2b2ea78fac 100644
--- a/indra/newview/skins/default/xui/en/panel_region_covenant.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_covenant.xml
@@ -113,7 +113,6 @@
max_length="65535"
name="covenant_editor"
top_delta="30"
- handle_edit_keys_directly="true"
width="340"
word_wrap="true">
There is no Covenant provided for this Estate.
diff --git a/indra/newview/skins/default/xui/en/panel_script_ed.xml b/indra/newview/skins/default/xui/en/panel_script_ed.xml
index d444420550..c5c66c04d5 100644
--- a/indra/newview/skins/default/xui/en/panel_script_ed.xml
+++ b/indra/newview/skins/default/xui/en/panel_script_ed.xml
@@ -143,7 +143,6 @@
name="Script Editor"
width="487"
show_line_numbers="true"
- handle_edit_keys_directly="true"
word_wrap="true">
Loading...
</text_editor>
diff --git a/indra/newview/skins/default/xui/en/panel_scrolling_param.xml b/indra/newview/skins/default/xui/en/panel_scrolling_param.xml
index 44afadf65a..f9c86fc75b 100644
--- a/indra/newview/skins/default/xui/en/panel_scrolling_param.xml
+++ b/indra/newview/skins/default/xui/en/panel_scrolling_param.xml
@@ -5,7 +5,7 @@
left="0"
name="LLScrollingPanelParam"
top="152"
- width="270">
+ width="290">
<text
follows="left|top"
height="16"
@@ -46,6 +46,36 @@
width="128">
Loading...
</text>
+ <view_border
+ layout="topleft"
+ follows="left|top"
+ left="2"
+ top="0"
+ width="132"
+ height="132"
+ thickness="2"
+ shadow_light_color="LtGray_50"
+ highlight_light_color="LtGray_50"
+ highlight_dark_color="LtGray_50"
+ shadow_dark_color="LtGray_50"
+ bevel_style="in"
+ name="left_border"
+ />
+ <view_border
+ layout="topleft"
+ follows="left|top"
+ left_pad="2"
+ top_delta="0"
+ width="132"
+ height="132"
+ thickness="2"
+ shadow_light_color="LtGray_50"
+ highlight_light_color="LtGray_50"
+ highlight_dark_color="LtGray_50"
+ shadow_dark_color="LtGray_50"
+ bevel_style="in"
+ name="right_border"
+ />
<button
enabled="false"
height="132"
diff --git a/indra/newview/skins/default/xui/en/panel_status_bar.xml b/indra/newview/skins/default/xui/en/panel_status_bar.xml
index 8c7de22cf8..c2624ce0d0 100644
--- a/indra/newview/skins/default/xui/en/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_status_bar.xml
@@ -62,11 +62,11 @@
halign="right"
font="SansSerifSmall"
follows="right|top"
- image_selected="BuyArrow_Over"
- image_unselected="BuyArrow_Over"
- image_pressed="BuyArrow_Press"
+ image_selected="spacer35.tga"
+ image_unselected="spacer35.tga"
+ image_pressed="spacer35.tga"
height="16"
- label="Buy"
+ label="Buy L$"
label_color="EmphasisColor"
left_pad="0"
label_shadow="false"
diff --git a/indra/newview/skins/default/xui/en/panel_toast.xml b/indra/newview/skins/default/xui/en/panel_toast.xml
index 11069b3ac3..e7384fa77f 100644
--- a/indra/newview/skins/default/xui/en/panel_toast.xml
+++ b/indra/newview/skins/default/xui/en/panel_toast.xml
@@ -64,7 +64,6 @@
text_color="white"
top="5"
translate="false"
- v_pad="5"
use_ellipses="true"
width="260">
Toast text;
diff --git a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
index 20a1de59fc..73650a19dc 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
background_visible="true"
+default_tab_group="1"
follows="all"
height="570"
label="Outfits"
@@ -90,6 +91,7 @@ width="333">
min_height="410"
width="320"
left="0"
+ tab_group="1"
top_pad="6"
follows="all" />
<!-- <button
@@ -120,6 +122,6 @@ width="333">
layout="topleft"
left="0"
name="panel_edit_wearable"
- top="35"
+ top="0"
visible="false" />
</panel>
diff --git a/indra/newview/skins/default/xui/en/widgets/line_editor.xml b/indra/newview/skins/default/xui/en/widgets/line_editor.xml
index a21e3f2645..a054960bf8 100644
--- a/indra/newview/skins/default/xui/en/widgets/line_editor.xml
+++ b/indra/newview/skins/default/xui/en/widgets/line_editor.xml
@@ -3,7 +3,6 @@
background_image_disabled="TextField_Disabled"
background_image_focused="TextField_Active"
select_on_focus="false"
- handle_edit_keys_directly="false"
commit_on_focus_lost="true"
ignore_tab="true"
cursor_color="TextCursorColor"
diff --git a/indra/newview/skins/default/xui/es/floater_about_land.xml b/indra/newview/skins/default/xui/es/floater_about_land.xml
index c453d415b4..49bf2a7442 100644
--- a/indra/newview/skins/default/xui/es/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/es/floater_about_land.xml
@@ -264,7 +264,7 @@ Vaya al menú Mundo &gt; Acerca del terreno o seleccione otra parcela para ver s
[COUNT]
</text>
<text left="4" name="Autoreturn" width="412">
- Devolución automática de objetos de otros Residentes (minutos, 0 para desactivarla):
+ Devolución automática de objetos de otros (en min., 0 para desactivarla):
</text>
<line_editor name="clean other time" right="-20"/>
<text name="Object Owners:" width="150">
diff --git a/indra/newview/skins/default/xui/es/floater_buy_land.xml b/indra/newview/skins/default/xui/es/floater_buy_land.xml
index 9a0a566a55..a40f65d5d0 100644
--- a/indra/newview/skins/default/xui/es/floater_buy_land.xml
+++ b/indra/newview/skins/default/xui/es/floater_buy_land.xml
@@ -13,17 +13,17 @@
No puede unirse ni dividirse.
</floater.string>
<floater.string name="cant_buy_for_group">
- No tiene permiso de comprar terreno para el grupo que tiene activado.
+ No tienes permiso de comprar terreno para el grupo que tienes activado.
</floater.string>
<floater.string name="no_land_selected">
No se ha seleccionado terreno.
</floater.string>
<floater.string name="multiple_parcels_selected">
Se han seleccionado varias parcelas diferentes.
-Inténtelo seleccionando un área más pequeña.
+Inténtalo seleccionando un área más pequeña.
</floater.string>
<floater.string name="no_permission">
- No tiene permiso de comprar terreno para el grupo que tiene activado.
+ No tienes permiso de comprar terreno para el grupo que tienes activado.
</floater.string>
<floater.string name="parcel_not_for_sale">
La parcela seleccionada no está en venta.
@@ -32,20 +32,20 @@ Inténtelo seleccionando un área más pequeña.
El grupo ya es propietario de la parcela.
</floater.string>
<floater.string name="you_already_own">
- Usted ya es propietario de la parcela.
+ Ya eres propietario de la parcela.
</floater.string>
<floater.string name="set_to_sell_to_other">
- La parcela seleccionada está marcada para ser vendida a otro
+ La parcela seleccionada está marcada para ser vendida a otro.
</floater.string>
<floater.string name="no_public_land">
El área seleccionada no tiene terreno público.
</floater.string>
<floater.string name="not_owned_by_you">
- Está seleccionado un terreno propiedad de otro Residente.
+ Estás seleccionado un terreno propiedad de otro Residente.
Prueba a seleccionar un área más pequeña.
</floater.string>
<floater.string name="processing">
- Procesando su compra...
+ Procesando tu compra...
(Llevará uno o dos minutos).
</floater.string>
@@ -68,10 +68,10 @@ Prueba a seleccionar un área más pequeña.
no necesita
</floater.string>
<floater.string name="must_upgrade">
- Para poseer terreno, su cuenta debe ascender de categoría.
+ Para poseer terreno, tu cuenta debe ascender de categoría.
</floater.string>
<floater.string name="cant_own_land">
- Su cuenta puede poseer terreno.
+ Tu cuenta puede poseer terreno.
</floater.string>
<floater.string name="land_holdings">
Tienes [BUYER] m² de terreno.
@@ -112,16 +112,16 @@ los suficientes créditos de uso en contribución de terreno
para cubrir esta parcela.
</floater.string>
<floater.string name="have_enough_lindens">
- Tiene [AMOUNT] L$, cantidad suficiente para comprar este terreno.
+ Tienes [AMOUNT] L$, cantidad suficiente para comprar este terreno.
</floater.string>
<floater.string name="not_enough_lindens">
- Sólo tiene [AMOUNT] L$. Necesitaría [AMOUNT2] L$ más.
+ Sólo tienes [AMOUNT] L$. Necesitarías [AMOUNT2] L$ más.
</floater.string>
<floater.string name="balance_left">
- Tras la compra, aún tendrá [AMOUNT] L$.
+ Tras la compra, aún tendrás [AMOUNT] L$.
</floater.string>
<floater.string name="balance_needed">
- Para costearse este terreno, deberá comprar, al menos, [AMOUNT] L$.
+ Para costearte este terreno, deberás comprar, al menos, [AMOUNT] L$.
</floater.string>
<floater.string name="no_parcel_selected">
(No se ha seleccionado una parcela)
@@ -163,7 +163,7 @@ para cubrir esta parcela.
Podrá o no unirse o dividirse.
</text>
<text name="covenant_text">
- Deve aceptar el Contrato del Estado:
+ Debes aceptar el Contrato del Estado:
</text>
<text left="470" name="covenant_timestamp_text"/>
<text_editor name="covenant_editor">
@@ -198,7 +198,7 @@ se vende con los objetos
</text>
<button label="Ir al sitio web" name="error_web"/>
<text name="account_action">
- Ascienda a la categoría de miembro premium.
+ Asciende a la categoría de miembro premium.
</text>
<text name="account_reason">
Sólo pueden ser propietarios de terreno los miembros premium.
@@ -209,7 +209,7 @@ se vende con los objetos
<combo_box.item label="6.00 US$/mes, facturados anualmente" name="US$6.00/month,billedannually"/>
</combo_box>
<text name="land_use_action">
- Aumenta su cuota mensual por uso de terreno a 40 US$/mes.
+ Aumenta tu cuota mensual por uso de terreno a 40 US$/mes.
</text>
<text name="land_use_reason">
Tienes 1309 m² de terreno.
@@ -219,7 +219,7 @@ Esta parcela es de 512 m².
Pagar al residente Joe 4.000 L$ por el terreno
</text>
<text name="currency_reason">
- Tiene 2.100 L$.
+ Tienes 2.100 L$.
</text>
<text name="currency_action">
Comprar más L$
@@ -231,7 +231,7 @@ Esta parcela es de 512 m².
por, aprox., [LOCAL_AMOUNT]
</text>
<text name="currency_balance">
- Tiene 2.100 L$.
+ Tienes 2.100 L$.
</text>
<check_box label="Quitar [AMOUNT] m² de las contribuciones de grupo." name="remove_contribution"/>
<button label="Comprar" name="buy_btn"/>
diff --git a/indra/newview/skins/default/xui/es/floater_customize.xml b/indra/newview/skins/default/xui/es/floater_customize.xml
index 8daf2bed15..b7058d4314 100644
--- a/indra/newview/skins/default/xui/es/floater_customize.xml
+++ b/indra/newview/skins/default/xui/es/floater_customize.xml
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater customize" title="APARIENCIA" width="527">
- <tab_container name="customize tab container" width="525">
+<floater name="floater customize" title="APARIENCIA">
+ <tab_container name="customize tab container">
<text label="Partes del cuerpo" name="body_parts_placeholder">
Partes del cuerpo
</text>
- <panel label="Forma" name="Shape" width="389">
+ <panel label="Forma" name="Shape">
<button label="Restablecer" label_selected="Restablecer" name="Revert"/>
<button label="Cuerpo" label_selected="Cuerpo" name="Body"/>
<button label="Cabeza" label_selected="Cabeza" name="Head"/>
@@ -40,12 +40,12 @@
<text name="no modify instructions">
No tiene permiso para modificar este ítem.
</text>
- <text name="Item Action Label" right="107">
+ <text name="Item Action Label">
Forma:
</text>
<button label="Crear una forma nueva" label_selected="Crear una forma nueva" name="Create New"/>
- <button label="Guardar" label_selected="Guardar" left="113" name="Save"/>
- <button label="Guardar como..." label_selected="Guardar como..." left="199" name="Save As" width="102"/>
+ <button label="Guardar" label_selected="Guardar" name="Save"/>
+ <button label="Guardar como..." label_selected="Guardar como..." name="Save As"/>
</panel>
<panel label="Piel" name="Skin">
<button label="Color de piel" label_selected="Color de piel" name="Skin Color" width="115"/>
@@ -522,7 +522,7 @@
<button label="Revertir" label_selected="Revertir" name="Revert"/>
</panel>
</tab_container>
- <scroll_container left="230" name="panel_container"/>
+ <scroll_container name="panel_container"/>
<button label="Información del script" label_selected="Información del script" name="script_info" tool_tip="Mostrar los scripts anexados a tu avatar"/>
<button label="Hacer un vestuario" label_selected="Hacer un vestuario" name="make_outfit_btn"/>
<button label="Cancelar" label_selected="Cancelar" name="Cancel"/>
diff --git a/indra/newview/skins/default/xui/es/floater_incoming_call.xml b/indra/newview/skins/default/xui/es/floater_incoming_call.xml
index 2b5fc7f193..021e5fb6b7 100644
--- a/indra/newview/skins/default/xui/es/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/es/floater_incoming_call.xml
@@ -22,6 +22,6 @@
¿Quieres dejar [CURRENT_CHAT] y entrar a este chat de voz?
</text>
<button label="Aceptar" label_selected="Aceptar" name="Accept"/>
- <button label="Expulsar" label_selected="Expulsar" name="Reject"/>
+ <button label="Rechazar" label_selected="Rechazar" name="Reject"/>
<button label="Comenzar un MI" name="Start IM"/>
</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/es/floater_inventory_view_finder.xml
index 0cbee11bfb..c9d639d8cf 100644
--- a/indra/newview/skins/default/xui/es/floater_inventory_view_finder.xml
+++ b/indra/newview/skins/default/xui/es/floater_inventory_view_finder.xml
@@ -11,12 +11,12 @@
<check_box label="Sonidos" name="check_sound"/>
<check_box label="Texturas" name="check_texture"/>
<check_box label="Fotos" name="check_snapshot"/>
- <button label="Todo" label_selected="Todo" name="All" width="70"/>
- <button label="Nada" label_selected="Nada" name="None" width="70" bottom_delta="0" left="83"/>
- <check_box label="Mostrar siempre las&#10;carpetas" name="check_show_empty"/>
+ <button label="Todos" label_selected="Todo" name="All"/>
+ <button label="Ninguno" label_selected="Nada" name="None"/>
+ <check_box label="Mostrar siempre las carpetas" name="check_show_empty"/>
<check_box label="Desde el fin de sesión" name="check_since_logoff" bottom_delta="-36"/>
<text name="- OR -">
- - O -
+ - o -
</text>
<spinner label="horas atrás" name="spin_hours_ago"/>
<spinner label="días atrás" name="spin_days_ago"/>
diff --git a/indra/newview/skins/default/xui/es/floater_land_holdings.xml b/indra/newview/skins/default/xui/es/floater_land_holdings.xml
index 36a02b7300..ed7055b3a1 100644
--- a/indra/newview/skins/default/xui/es/floater_land_holdings.xml
+++ b/indra/newview/skins/default/xui/es/floater_land_holdings.xml
@@ -17,7 +17,7 @@
<column label="Superficie" name="area"/>
</scroll_list>
<text name="allowed_label">
- Propiedades de terreno permitidas en el plan de pago actual:
+ Propiedad de terreno permitida en el plan de pago:
</text>
<text name="allowed_text">
[AREA] m²
diff --git a/indra/newview/skins/default/xui/es/floater_preferences.xml b/indra/newview/skins/default/xui/es/floater_preferences.xml
index 37d56ea839..61f12fc0d7 100644
--- a/indra/newview/skins/default/xui/es/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/es/floater_preferences.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater min_width="350" name="Preferences" title="PREFERENCIAS" width="646">
+<floater name="Preferences" title="PREFERENCIAS">
<button label="OK" label_selected="OK" name="OK"/>
<button label="Cancelar" label_selected="Cancelar" name="Cancel"/>
- <tab_container name="pref core" tab_width="146" width="646">
+ <tab_container name="pref core">
<panel label="General" name="general"/>
<panel label="Gráficos" name="display"/>
<panel label="Privacidad" name="im"/>
diff --git a/indra/newview/skins/default/xui/es/floater_tools.xml b/indra/newview/skins/default/xui/es/floater_tools.xml
index 9c5fea9267..59f953c239 100644
--- a/indra/newview/skins/default/xui/es/floater_tools.xml
+++ b/indra/newview/skins/default/xui/es/floater_tools.xml
@@ -182,7 +182,7 @@
<button label="Configurar..." label_selected="Configurar..." name="button set group" tool_tip="Elige un grupo con el que compartir los permisos de este objeto"/>
<name_box initial_value="Cargando..." name="Group Name Proxy"/>
<button label="Transferir" label_selected="Transferir" name="button deed" tool_tip="La transferencia entrega este objeto con los permisos del próximo propietario. Los objetos compartidos por el grupo pueden ser transferidos por un oficial del grupo."/>
- <check_box label="Comprtir" name="checkbox share with group" tool_tip="Permite que todos los miembros del grupo compartan tus permisos de modificación en este objeto. Debes transferirlo para activar las restricciones según los roles."/>
+ <check_box label="Compartir" name="checkbox share with group" tool_tip="Permite que todos los miembros del grupo compartan tus permisos de modificación en este objeto. Debes transferirlo para activar las restricciones según los roles."/>
<text name="label click action" width="180">
Al tocarlo:
</text>
@@ -475,7 +475,7 @@ máximo" name="checkbox fullbright"/>
<text name="label_area">
Área: [AREA] m²
</text>
- <button label="Acerca del terreno" label_selected="Acerca del terreno" name="button about land" width="140"/>
+ <button label="Acerca del terreno" label_selected="Acerca del terreno" name="button about land"/>
<check_box label="Mostrar los propietarios" name="checkbox show owners" tool_tip="El color de las parcelas es según su propietario:
Verde = Su terreno
@@ -492,7 +492,7 @@ Gris = Público"/>
<text name="label_parcel_trans">
Transacciones de terreno
</text>
- <button label="Comprar terreno" label_selected="Comprar terreno" name="button buy land" width="140"/>
- <button label="Abandonar el terreno" label_selected="Abandonar el terreno" name="button abandon land" width="140"/>
+ <button label="Comprar terreno" label_selected="Comprar terreno" name="button buy land"/>
+ <button label="Abandonar el terreno" label_selected="Abandonar el terreno" name="button abandon land"/>
</panel>
</floater>
diff --git a/indra/newview/skins/default/xui/es/menu_attachment_self.xml b/indra/newview/skins/default/xui/es/menu_attachment_self.xml
index c5afb99d49..8cbe4299a8 100644
--- a/indra/newview/skins/default/xui/es/menu_attachment_self.xml
+++ b/indra/newview/skins/default/xui/es/menu_attachment_self.xml
@@ -4,7 +4,7 @@
<menu_item_call label="Editar" name="Edit..."/>
<menu_item_call label="Quitar" name="Detach"/>
<menu_item_call label="Soltar" name="Drop"/>
- <menu_item_call label="Levantarse" name="Stand Up"/>
+ <menu_item_call label="Levantarme" name="Stand Up"/>
<menu_item_call label="Mi apariencia" name="Appearance..."/>
<menu_item_call label="Mis amigos" name="Friends..."/>
<menu_item_call label="Mis grupos" name="Groups..."/>
diff --git a/indra/newview/skins/default/xui/es/menu_avatar_self.xml b/indra/newview/skins/default/xui/es/menu_avatar_self.xml
index 46b6d3ece6..67e56844b1 100644
--- a/indra/newview/skins/default/xui/es/menu_avatar_self.xml
+++ b/indra/newview/skins/default/xui/es/menu_avatar_self.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<context_menu name="Self Pie">
- <menu_item_call label="Levantarse" name="Stand Up"/>
+ <menu_item_call label="Levantarme" name="Stand Up"/>
<context_menu label="Quitarme ▶" name="Take Off &gt;">
<context_menu label="Ropas ▶" name="Clothes &gt;">
<menu_item_call label="Camisa" name="Shirt"/>
diff --git a/indra/newview/skins/default/xui/es/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/es/menu_inspect_self_gear.xml
index cb8fb82f0d..f21866e54f 100644
--- a/indra/newview/skins/default/xui/es/menu_inspect_self_gear.xml
+++ b/indra/newview/skins/default/xui/es/menu_inspect_self_gear.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<menu name="Gear Menu">
- <menu_item_call label="Levantarse" name="stand_up"/>
+ <menu_item_call label="Levantarme" name="stand_up"/>
<menu_item_call label="Mi apariencia" name="my_appearance"/>
<menu_item_call label="Mi perfil" name="my_profile"/>
<menu_item_call label="Mis amigos" name="my_friends"/>
diff --git a/indra/newview/skins/default/xui/es/menu_land.xml b/indra/newview/skins/default/xui/es/menu_land.xml
index c315cb2f2c..b0f15be1b6 100644
--- a/indra/newview/skins/default/xui/es/menu_land.xml
+++ b/indra/newview/skins/default/xui/es/menu_land.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<context_menu name="Land Pie">
<menu_item_call label="Acerca del terreno" name="Place Information..."/>
- <menu_item_call label="Sentarse aquí" name="Sit Here"/>
+ <menu_item_call label="Sentarme aquí" name="Sit Here"/>
<menu_item_call label="Comprar este terreno" name="Land Buy"/>
<menu_item_call label="Comprar un pase" name="Land Buy Pass"/>
<menu_item_call label="Construir" name="Create"/>
diff --git a/indra/newview/skins/default/xui/es/menu_object.xml b/indra/newview/skins/default/xui/es/menu_object.xml
index 1677b9461e..d2743cd4fc 100644
--- a/indra/newview/skins/default/xui/es/menu_object.xml
+++ b/indra/newview/skins/default/xui/es/menu_object.xml
@@ -4,12 +4,12 @@
<menu_item_call label="Editar" name="Edit..."/>
<menu_item_call label="Construir" name="Build"/>
<menu_item_call label="Abrir" name="Open"/>
- <menu_item_call label="Sentarse aquí" name="Object Sit"/>
+ <menu_item_call label="Sentarme aquí" name="Object Sit"/>
<menu_item_call label="Levantarme" name="Object Stand Up"/>
<menu_item_call label="Perfil del objeto" name="Object Inspect"/>
<menu_item_call label="Acercar el zoom" name="Zoom In"/>
<context_menu label="Ponerme ▶" name="Put On">
- <menu_item_call label="Ponerse" name="Wear"/>
+ <menu_item_call label="Ponerme" name="Wear"/>
<context_menu label="Anexar ▶" name="Object Attach"/>
<context_menu label="Anexar como HUD ▶" name="Object Attach HUD"/>
</context_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_participant_list.xml b/indra/newview/skins/default/xui/es/menu_participant_list.xml
index 60c92eec75..ed69683de9 100644
--- a/indra/newview/skins/default/xui/es/menu_participant_list.xml
+++ b/indra/newview/skins/default/xui/es/menu_participant_list.xml
@@ -5,7 +5,7 @@
<menu_item_call label="Ver el perfil" name="View Profile"/>
<menu_item_call label="Añadir como amigo" name="Add Friend"/>
<menu_item_call label="MI" name="IM"/>
- <menu_item_call label="Llamada" name="Call"/>
+ <menu_item_call label="Llamar" name="Call"/>
<menu_item_call label="Compartir" name="Share"/>
<menu_item_call label="Pagar" name="Pay"/>
<menu_item_check label="Ignorar la voz" name="Block/Unblock"/>
diff --git a/indra/newview/skins/default/xui/es/menu_people_nearby.xml b/indra/newview/skins/default/xui/es/menu_people_nearby.xml
index 88df983838..dc1486d879 100644
--- a/indra/newview/skins/default/xui/es/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/es/menu_people_nearby.xml
@@ -4,7 +4,7 @@
<menu_item_call label="Añadir como amigo" name="Add Friend"/>
<menu_item_call label="Quitarle como amigo" name="Remove Friend"/>
<menu_item_call label="MI" name="IM"/>
- <menu_item_call label="Llamada" name="Call"/>
+ <menu_item_call label="Llamar" name="Call"/>
<menu_item_call label="Mapa" name="Map"/>
<menu_item_call label="Compartir" name="Share"/>
<menu_item_call label="Pagar" name="Pay"/>
diff --git a/indra/newview/skins/default/xui/es/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/es/menu_people_nearby_multiselect.xml
index b87d6c6deb..4ab6000994 100644
--- a/indra/newview/skins/default/xui/es/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/es/menu_people_nearby_multiselect.xml
@@ -3,7 +3,7 @@
<menu_item_call label="Añadir como amigos" name="Add Friends"/>
<menu_item_call label="Quitar amigos" name="Remove Friend"/>
<menu_item_call label="MI" name="IM"/>
- <menu_item_call label="Llamada" name="Call"/>
+ <menu_item_call label="Llamar" name="Call"/>
<menu_item_call label="Compartir" name="Share"/>
<menu_item_call label="Pagar" name="Pay"/>
</context_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_viewer.xml b/indra/newview/skins/default/xui/es/menu_viewer.xml
index 93964a2f4f..bef803b45c 100644
--- a/indra/newview/skins/default/xui/es/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/es/menu_viewer.xml
@@ -19,7 +19,7 @@
<menu_item_call label="Dejar el estatus de Administrador" name="Leave Admin Options"/>
<menu_item_call label="Salir de [APP_NAME]" name="Quit"/>
</menu>
- <menu label="Comunicarse" name="Communicate">
+ <menu label="Comunicarme" name="Communicate">
<menu_item_call label="Mis amigos" name="My Friends"/>
<menu_item_call label="Mis grupos" name="My Groups"/>
<menu_item_check label="Chat" name="Nearby Chat"/>
diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml
index df18b88832..082841af31 100644
--- a/indra/newview/skins/default/xui/es/notifications.xml
+++ b/indra/newview/skins/default/xui/es/notifications.xml
@@ -74,7 +74,7 @@ Detalles del error: la notificación de nombre &apos;[_NAME]&apos; no se ha enco
<notification name="LoginFailedNoNetwork">
No se puede conectar con [SECOND_LIFE_GRID].
&apos;[DIAGNOSTIC]&apos;
-Asegúrate de que tu conexión a internet está funcionando adecuadamente.
+Asegúrate de que tu conexión a Internet está funcionando adecuadamente.
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="MessageTemplateNotFound">
@@ -86,19 +86,19 @@ Asegúrate de que tu conexión a internet está funcionando adecuadamente.
<usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="No guardarlos" yestext="Guardarlos"/>
</notification>
<notification name="CompileQueueSaveText">
- Hubo un problema al subir el texto de un script por la siguiente razón: [REASON]. Por favor, inténtelo más tarde.
+ Hubo un problema al subir el texto de un script por la siguiente razón: [REASON]. Por favor, inténtalo más tarde.
</notification>
<notification name="CompileQueueSaveBytecode">
- Hubo un problema al subir el script compilado por la siguiente razón: [REASON]. Por favor, inténtelo más tarde.
+ Hubo un problema al subir el script compilado por la siguiente razón: [REASON]. Por favor, inténtalo más tarde.
</notification>
<notification name="WriteAnimationFail">
- Hubo un problema al escribir los datos de la animación. Por favor, inténtelo más tarde.
+ Hubo un problema al escribir los datos de la animación. Por favor, inténtalo más tarde.
</notification>
<notification name="UploadAuctionSnapshotFail">
Hubo un problema al subir la foto de la subasta por la siguiente razón: [REASON]
</notification>
<notification name="UnableToViewContentsMoreThanOne">
- No se puede ver a la vez los contenidos de más de un ítem. Por favor, elija un solo objeto y vuelva a intentarlo.
+ No se puede ver a la vez los contenidos de más de un ítem. Por favor, elige un solo objeto y vuelve a intentarlo.
</notification>
<notification name="SaveClothingBodyChanges">
¿Guardar todos los cambios en la ropa y partes del cuerpo?
@@ -119,11 +119,11 @@ Asegúrate de que tu conexión a internet está funcionando adecuadamente.
<usetemplate name="okcancelbuttons" notext="No" yestext="Sí"/>
</notification>
<notification name="RevokeModifyRights">
- ¿Quiere revocar los derechos de modificación a [FIRST_NAME] [LAST_NAME]?
+ ¿Quieres revocar los derechos de modificación a [FIRST_NAME] [LAST_NAME]?
<usetemplate name="okcancelbuttons" notext="No" yestext="Sí"/>
</notification>
<notification name="RevokeModifyRightsMultiple">
- ¿Quiere revocar los derechos de modificación a los residentes seleccionados?
+ ¿Quieres revocar los derechos de modificación a los residentes seleccionados?
<usetemplate name="okcancelbuttons" notext="No" yestext="Sí"/>
</notification>
<notification name="UnableToCreateGroup">
@@ -188,7 +188,7 @@ Por favor, invita a miembros en las próximas 48 horas.
<usetemplate canceltext="Cancelar" name="okcancelbuttons" notext="Cancelar" yestext="Crear un grupo por 100 L$"/>
</notification>
<notification name="LandBuyPass">
- Por [COST] L$ puede entrar a este terreno (&apos;[PARCEL_NAME]&apos;) durante [TIME] horas. ¿Comprar un pase?
+ Por [COST] L$ puedes entrar a este terreno (&apos;[PARCEL_NAME]&apos;) durante [TIME] horas. ¿Comprar un pase?
<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
</notification>
<notification name="SalePriceRestriction">
@@ -208,7 +208,7 @@ El precio de venta será de [SALE_PRICE] L$ y se autoriza la compra a [NAME].
<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
</notification>
<notification name="ReturnObjectsDeededToGroup">
- ¿Estás seguros de que quieres devolver todos los objetos de esta parcela que estén compartidos con el grupo &apos;[NAME]&apos; al inventario de su propietario anterior?
+ ¿Estás seguro de que quieres devolver todos los objetos de esta parcela que estén compartidos con el grupo &apos;[NAME]&apos; al inventario de su propietario anterior?
*ATENCIÓN* ¡Esto borrará los objetos no transferibles que se hayan cedido al grupo!
@@ -304,7 +304,7 @@ debes estar dentro de ella.
La carpeta del vestuario contiene partes del cuerpo, u objetos a anexar o que no son ropa.
</notification>
<notification name="CannotWearTrash">
- No puede vestirte ropas o partes del cuerpo que estén en la Papelera
+ No puedes vestirte ropas o partes del cuerpo que estén en la Papelera
</notification>
<notification name="MaxAttachmentsOnOutfit">
No se puede anexar el objeto.
@@ -426,7 +426,7 @@ El objeto debe de haber sido borrado o estar fuera de rango (&apos;out of range&
Al guardar un script compilado, hubo un problema por: [REASON]. Por favor, vuelve a intentar guardarlo más tarde..
</notification>
<notification name="StartRegionEmpty">
- Perdon, no está definida tu Posición inicial.
+ Perdón, no está definida tu Posición inicial.
Por favor, escribe el nombre de la región en el cajetín de Posición inicial, o elige para esa posición Mi Base o Mi última posición.
<usetemplate name="okbutton" yestext="OK"/>
</notification>
@@ -639,22 +639,22 @@ Por favor, inténtalo más tarde.
</notification>
<notification name="CannotRecompileSelectObjectsNoScripts">
No se pudo &apos;recompilar&apos;.
-Seleccione un objeto con script.
+Selecciona un objeto con script.
</notification>
<notification name="CannotRecompileSelectObjectsNoPermission">
No se pudo &apos;recompilar&apos;.
-Seleccione objetos con scripts en los que usted tenga permiso para modificarlos.
+Selecciona objetos con scripts en los que tengas permiso para modificarlos.
</notification>
<notification name="CannotResetSelectObjectsNoScripts">
No se pudo &apos;reiniciar&apos;.
-Seleccione objetos con scripts.
+Selecciona objetos con scripts.
</notification>
<notification name="CannotResetSelectObjectsNoPermission">
No se pudo &apos;reiniciar&apos;.
-Seleccione objetos con scripts en los que usted tenga permiso para modificarlos.
+Selecciona objetos con scripts en los que tengas permiso para modificarlos.
</notification>
<notification name="CannotOpenScriptObjectNoMod">
Imposible abrir el script del objeto sin modificar los permisos.
@@ -662,7 +662,7 @@ Seleccione objetos con scripts en los que usted tenga permiso para modificarlos.
<notification name="CannotSetRunningSelectObjectsNoScripts">
No se puede configurar ningún script como &apos;ejecutándose&apos;.
-Seleccione objetos con scripts.
+Selecciona objetos con scripts.
</notification>
<notification name="CannotSetRunningNotSelectObjectsNoScripts">
No se puede configurar ningún script como &apos;no ejecutándose&apos;.
@@ -770,7 +770,7 @@ no se ha seleccionado una parcela.
</notification>
<notification name="CannotDeedLandNoGroup">
No se ha podido transferir el terreno:
-no ha seleccionado un grupo.
+no has seleccionado un grupo.
</notification>
<notification name="CannotDeedLandNoRegion">
No se ha podido transferir el terreno:
@@ -800,7 +800,7 @@ Vuelve a intentarlo en unos segundos.
</notification>
<notification name="CannotReleaseLandSelected">
No se ha podido abandonar el terreno:
-no es propietario de todas las parcelas seleccionadas.
+no eres propietario de todas las parcelas seleccionadas.
Por favor, selecciona una sola parcela.
</notification>
@@ -903,7 +903,7 @@ Deberás reconfigurar el nombre y las opciones de la nueva parcela.
Generalmente, esto es un fallo pasajero. Por favor, personaliza y guarda el ítem de aquí a unos minutos.
</notification>
<notification name="YouHaveBeenLoggedOut">
- Vaya, se ha cerrado tu sesión en [SECOND_LIFE]
+ Vaya, se ha cerrado tu sesión en [SECOND_LIFE].
[MESSAGE]
<usetemplate name="okcancelbuttons" notext="Salir" yestext="Ver MI y Chat"/>
</notification>
@@ -1093,9 +1093,9 @@ Si es la primera vez que usas [SECOND_LIFE], debes crear una cuenta antes de pod
<usetemplate name="okcancelbuttons" notext="Continuar" yestext="Cuenta nueva..."/>
</notification>
<notification name="LoginPacketNeverReceived">
- Tenemos problemas de conexión. Puede deberse a un problema de tu conexión a internet o de [SECOND_LIFE_GRID].
+ Tenemos problemas de conexión. Puede deberse a un problema de tu conexión a Internet o de [SECOND_LIFE_GRID].
-Puedes revisar tu conexión a internet y volver a intentarlo en unos minutos, pulsar Ayuda para conectarte a [SUPPORT_SITE], o pulsar Teleporte para intentar teleportarte a tu Base.
+Puedes revisar tu conexión a Internet y volver a intentarlo en unos minutos, pulsar Ayuda para conectarte a [SUPPORT_SITE], o pulsar Teleporte para intentar teleportarte a tu Base.
<url name="url">
http://es.secondlife.com/support/
</url>
diff --git a/indra/newview/skins/default/xui/es/panel_edit_classified.xml b/indra/newview/skins/default/xui/es/panel_edit_classified.xml
index 7afa50c0a2..6d53b401c0 100644
--- a/indra/newview/skins/default/xui/es/panel_edit_classified.xml
+++ b/indra/newview/skins/default/xui/es/panel_edit_classified.xml
@@ -29,7 +29,7 @@
<text name="classified_location">
cargando...
</text>
- <button label="Configurarlo en esta localización" name="set_to_curr_location_btn"/>
+ <button label="Configurar en esta posición" name="set_to_curr_location_btn"/>
<text name="category_label" value="Categoría:"/>
<text name="content_type_label" value="Tipo de contenido:"/>
<icons_combo_box label="Contenido general" name="content_type">
diff --git a/indra/newview/skins/default/xui/es/panel_edit_pick.xml b/indra/newview/skins/default/xui/es/panel_edit_pick.xml
index bde29f1665..f8a03d2302 100644
--- a/indra/newview/skins/default/xui/es/panel_edit_pick.xml
+++ b/indra/newview/skins/default/xui/es/panel_edit_pick.xml
@@ -21,11 +21,11 @@
<text name="pick_location">
cargando...
</text>
- <button label="Configurar en la posición actual" name="set_to_curr_location_btn"/>
+ <button label="Configurar en mi posición" name="set_to_curr_location_btn"/>
</panel>
</scroll_container>
<panel label="bottom_panel" name="bottom_panel">
- <button label="Guardar el destacado" name="save_changes_btn"/>
+ <button label="Guardar" name="save_changes_btn"/>
<button label="Cancelar" name="cancel_btn"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_notes.xml b/indra/newview/skins/default/xui/es/panel_notes.xml
index bf8da4cf73..8de2afa767 100644
--- a/indra/newview/skins/default/xui/es/panel_notes.xml
+++ b/indra/newview/skins/default/xui/es/panel_notes.xml
@@ -15,7 +15,7 @@
<panel name="notes_buttons_panel">
<button label="Añadir como amigo" name="add_friend" tool_tip="Ofrecer amistad a este Residente"/>
<button label="MI" name="im" tool_tip="Abrir un mensaje instantáneo"/>
- <button label="Llamada" name="call" tool_tip="Llamar a este Residente"/>
+ <button label="Llamar" name="call" tool_tip="Llamar a este Residente"/>
<button label="Mapa" name="show_on_map_btn" tool_tip="Mostrar al Residente en el mapa"/>
<button label="Teleportar" name="teleport" tool_tip="Ofrecer teleporte"/>
</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_people.xml b/indra/newview/skins/default/xui/es/panel_people.xml
index 6008c6a934..376aea5278 100644
--- a/indra/newview/skins/default/xui/es/panel_people.xml
+++ b/indra/newview/skins/default/xui/es/panel_people.xml
@@ -49,9 +49,9 @@ Si estás buscando gente para pasar el rato, [secondlife:///app/worldmap usa el
<panel name="button_bar">
<button label="Perfil" name="view_profile_btn" tool_tip="Mostrar imágenes, grupos y otra información del Residente"/>
<button label="MI" name="im_btn" tool_tip="Abrir un mensaje instantáneo"/>
- <button label="Llamada" name="call_btn" tool_tip="Llamar a este Residente"/>
+ <button label="Llamar" name="call_btn" tool_tip="Llamar a este Residente"/>
<button label="Compartir" name="share_btn"/>
- <button label="Teleportarse" name="teleport_btn" tool_tip="Ofrecer teleporte"/>
+ <button label="Teleportar" name="teleport_btn" tool_tip="Ofrecer teleporte"/>
<button label="Perfil del grupo" name="group_info_btn" tool_tip="Ver la información del grupo"/>
<button label="Chat de grupo" name="chat_btn" tool_tip="Abrir el chat"/>
<button label="Multiconferencia" name="group_call_btn" tool_tip="Llamar a este grupo"/>
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_chat.xml b/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
index 46d8984889..7a65eb32bc 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
@@ -49,7 +49,7 @@
Mostrar los MI en:
</text>
<text name="requires_restart_label">
- (requiere reiniciar)
+ (requiere reiniciar)
</text>
<radio_group name="chat_window" tool_tip="Muestra tus mensajes instantáneos en varias ventanas flotantes o en una sola con varias pestañas (requiere que reinicies)">
<radio_item label="Varias ventanas" name="radio" value="0"/>
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml
index 87e7dc1e8a..56d473e872 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml
@@ -52,7 +52,7 @@
m
</text>
<slider label="Núm. máx. de partículas:" name="MaxParticleCount"/>
- <slider label="Calidad de procesamiento:" label_width="142" name="RenderPostProcess"/>
+ <slider label="Calidad de procesamiento:" name="RenderPostProcess"/>
<text name="MeshDetailText">
Detalle de la malla:
</text>
diff --git a/indra/newview/skins/default/xui/es/panel_region_general.xml b/indra/newview/skins/default/xui/es/panel_region_general.xml
index 54b60b276c..9ee7bef493 100644
--- a/indra/newview/skins/default/xui/es/panel_region_general.xml
+++ b/indra/newview/skins/default/xui/es/panel_region_general.xml
@@ -24,8 +24,7 @@
<check_box label="Impedir los &apos;empujones&apos;" name="restrict_pushobject"/>
<check_box label="Permitir la reventa del terreno" name="allow_land_resell_check"/>
<check_box label="Permitir unir/dividir el terreno" name="allow_parcel_changes_check"/>
- <check_box label="Bloquear el mostrar el terreno en
-la búsqueda." name="block_parcel_search_check" tool_tip="Permitir que la gente vea esta región y sus parcelas en los resultados de la búsqueda."/>
+ <check_box label="Bloquear el mostrar el terreno en la búsqueda" name="block_parcel_search_check" tool_tip="Permitir que la gente vea esta región y sus parcelas en los resultados de la búsqueda."/>
<spinner label="Nº máximo de avatares" label_width="120" name="agent_limit_spin" width="180"/>
<spinner label="Plus de objetos" label_width="120" name="object_bonus_spin" width="180"/>
<text label="Calificación" name="access_text">
diff --git a/indra/newview/skins/default/xui/es/panel_side_tray.xml b/indra/newview/skins/default/xui/es/panel_side_tray.xml
index 4e9834063b..cf5afb3cd1 100644
--- a/indra/newview/skins/default/xui/es/panel_side_tray.xml
+++ b/indra/newview/skins/default/xui/es/panel_side_tray.xml
@@ -3,27 +3,27 @@
partially on screen to hold tab buttons. -->
<side_tray name="sidebar">
<sidetray_tab description="Manejar la barra lateral." name="sidebar_openclose" tab_title="Barra lateral"/>
- <sidetray_tab description="Base." name="sidebar_home" tab_title="Home">
- <panel label="base" name="panel_home"/>
+ <sidetray_tab description="Inicio." name="sidebar_home" tab_title="Inicio">
+ <panel label="Inicio" name="panel_home"/>
</sidetray_tab>
- <sidetray_tab description="Edita tu perfil público y tus destacados." name="sidebar_me" tab_title="My Profile">
+ <sidetray_tab description="Edita tu perfil público y tus destacados." name="sidebar_me" tab_title="Mi perfil">
<panel_container name="panel_container">
<panel label="Yo" name="panel_me"/>
</panel_container>
</sidetray_tab>
- <sidetray_tab description="Encuentra a tus amigos, contactos y gente que esté cerca." name="sidebar_people" tab_title="People">
+ <sidetray_tab description="Encuentra a tus amigos, contactos y gente que esté cerca." name="sidebar_people" tab_title="Gente">
<panel_container name="panel_container">
<panel label="Perfil del grupo" name="panel_group_info_sidetray"/>
<panel label="Residentes y objetos ignorados" name="panel_block_list_sidetray"/>
</panel_container>
</sidetray_tab>
- <sidetray_tab description="Encontrar lugares donde ir o que ya visitaste." label="Lugares" name="sidebar_places" tab_title="Places">
+ <sidetray_tab description="Encontrar lugares donde ir o que ya visitaste." label="Lugares" name="sidebar_places" tab_title="Lugares">
<panel label="Lugares" name="panel_places"/>
</sidetray_tab>
- <sidetray_tab description="Mira tu inventario." name="sidebar_inventory" tab_title="My Inventory">
+ <sidetray_tab description="Mira tu inventario." name="sidebar_inventory" tab_title="Mi inventario">
<panel label="Modificar el inventario" name="sidepanel_inventory"/>
</sidetray_tab>
- <sidetray_tab description="Cambia tu apariencia y tu &apos;look&apos; actual." name="sidebar_appearance" tab_title="My Appearance">
+ <sidetray_tab description="Cambia tu apariencia y tu &apos;look&apos; actual." name="sidebar_appearance" tab_title="Mi apariencia">
<panel label="Modificar la apariencia" name="sidepanel_appearance"/>
</sidetray_tab>
</side_tray>
diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml
index a8fc7f6b58..4cee677420 100644
--- a/indra/newview/skins/default/xui/es/strings.xml
+++ b/indra/newview/skins/default/xui/es/strings.xml
@@ -89,7 +89,7 @@
Descargando la ropa...
</string>
<string name="LoginFailedNoNetwork">
- Error de red: no se ha podido conectar; por favor, revisa tu conexión a internet.
+ Error de red: no se ha podido conectar; por favor, revisa tu conexión a Internet.
</string>
<string name="LoginFailed">
Error en el inicio de sesión.
@@ -101,7 +101,7 @@
http://join.secondlife.com/index.php?lang=es-ES
</string>
<string name="AgentLostConnection">
- Esta región puede estar teniendo problemas. Por favor, comprueba tu conexión a internet.
+ Esta región puede estar teniendo problemas. Por favor, comprueba tu conexión a Internet.
</string>
<string name="SavingSettings">
Guardando tus configuraciones...
@@ -1543,10 +1543,10 @@
No se ha aportado un contrato para este estado. El terreno de este estado lo vende el propietario del estado, no Linden Lab. Por favor, contacta con ese propietario para informarte sobre la venta.
</string>
<string name="covenant_last_modified">
- Última modificación:
+ Última modificación:
</string>
<string name="none_text" value="(no hay)"/>
- <string name="never_text" value="(nunca)"/>
+ <string name="never_text" value=" (nunca)"/>
<string name="GroupOwned">
Propiedad del grupo
</string>
@@ -2013,7 +2013,7 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].
Puente: ancho
</string>
<string name="Broad">
- Ancho
+ Aumentar
</string>
<string name="Brow Size">
Arco ciliar
diff --git a/indra/newview/skins/default/xui/es/teleport_strings.xml b/indra/newview/skins/default/xui/es/teleport_strings.xml
index 7e7ed6202f..e0e0061729 100644
--- a/indra/newview/skins/default/xui/es/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/es/teleport_strings.xml
@@ -10,7 +10,7 @@ Si sigues recibiendo este mensaje, por favor, acude al [SUPPORT_SITE].
Si sigues recibiendo este mensaje, por favor, acude al [SUPPORT_SITE].
</message>
<message name="blocked_tport">
- Lo sentimos, en estos momentos los teleportes están bloqueados. Vuelva a intentarlo en un momento. Si sigue sin poder teleportarse, desconéctese y vuelva a iniciar sesión para solucionar el problema.
+ Lo sentimos, en estos momentos los teleportes están bloqueados. Vuelve a intentarlo en un momento. Si sigues sin poder teleportarte, desconéctate y vuelve a iniciar sesión para solucionar el problema.
</message>
<message name="nolandmark_tport">
Lo sentimos, pero el sistema no ha podido localizar el destino de este hito.
@@ -20,22 +20,22 @@ Si sigues recibiendo este mensaje, por favor, acude al [SUPPORT_SITE].
Vuelva a intentarlo en un momento.
</message>
<message name="noaccess_tport">
- Lo sentimos, pero usted no tiene acceso al destino de este teleporte.
+ Lo sentimos, pero no tienes acceso al destino de este teleporte.
</message>
<message name="missing_attach_tport">
- Aún no han llegado sus objetos anexados. Espere unos segundos más o desconéctese y vuelva a iniciar sesión antes de teleportarse.
+ Aún no han llegado tus objetos anexados. Espera unos segundos más o desconéctate y vuelve a iniciar sesión antes de teleportarte.
</message>
<message name="too_many_uploads_tport">
- La cola de espera en esta región está actualmente obstruida, por lo que su petición de teleporte no se atenderá en un tiempo prudencial. Por favor, vuelva a intentarlo en unos minutos o vaya a una zona menos ocupada.
+ La cola de espera en esta región está actualmente obstruida, por lo que tu petición de teleporte no se atenderá en un tiempo prudencial. Por favor, vuelve a intentarlo en unos minutos o ve a una zona menos ocupada.
</message>
<message name="expired_tport">
- Lo sentimos, pero el sistema no ha podido atender a su petición de teleporte en un tiempo prudencial. Por favor, vuelva a intentarlo en unos pocos minutos.
+ Lo sentimos, pero el sistema no ha podido atender a tu petición de teleporte en un tiempo prudencial. Por favor, vuelve a intentarlo en unos minutos.
</message>
<message name="expired_region_handoff">
- Lo sentimos, pero el sistema no ha podido completar su paso a otra región en un tiempo prudencial. Por favor, vuelva a intentarlo en unos pocos minutos.
+ Lo sentimos, pero el sistema no ha podido completar tu paso a otra región en un tiempo prudencial. Por favor, vuelve a intentarlo en unos minutos.
</message>
<message name="no_host">
- Ha sido imposible encontrar el destino del teleporte: o está desactivado temporalmente o ya no existe. Por favor, vuelva a intentarlo en unos pocos minutos.
+ Ha sido imposible encontrar el destino del teleporte: o está desactivado temporalmente o ya no existe. Por favor, vuelve a intentarlo en unos minutos.
</message>
<message name="no_inventory_host">
En estos momentos no está disponible el sistema del inventario.
diff --git a/indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml
index 6cd886d4b9..1ee85a77ce 100644
--- a/indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml
+++ b/indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml
@@ -11,14 +11,14 @@
<check_box label="Sons" name="check_sound"/>
<check_box label="Textures" name="check_texture"/>
<check_box label="Photos" name="check_snapshot"/>
- <button label="Tout" label_selected="Tout" name="All" width="70"/>
- <button bottom_delta="0" label="Aucun" label_selected="Aucun" left="83" name="None" width="70"/>
- <check_box bottom_delta="-20" label="Toujours montrer les dossiers" name="check_show_empty"/>
- <check_box bottom_delta="-36" label="Depuis la déconnexion" name="check_since_logoff"/>
+ <button label="Tout" label_selected="Tout" name="All"/>
+ <button bottom_delta="0" label="Aucun" label_selected="Aucun" name="None"/>
+ <check_box label="Toujours montrer les dossiers" name="check_show_empty"/>
+ <check_box label="Depuis la déconnexion" name="check_since_logoff"/>
<text name="- OR -">
Ou il y a...
</text>
<spinner label="Heures" name="spin_hours_ago"/>
<spinner label="Jours" name="spin_days_ago"/>
- <button bottom_delta="-30" label="Fermer" label_selected="Fermer" name="Close"/>
+ <button label="Fermer" label_selected="Fermer" name="Close"/>
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_preferences.xml b/indra/newview/skins/default/xui/fr/floater_preferences.xml
index 406e91a18a..052e43388b 100644
--- a/indra/newview/skins/default/xui/fr/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/fr/floater_preferences.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater min_width="330" name="Preferences" title="PRÉFÉRENCES" width="626">
+<floater name="Preferences" title="PRÉFÉRENCES">
<button label="OK" label_selected="OK" name="OK"/>
<button label="Annuler" label_selected="Annuler" name="Cancel"/>
- <tab_container name="pref core" tab_width="126" width="626">
+ <tab_container name="pref core">
<panel label="Général" name="general"/>
<panel label="Graphiques" name="display"/>
<panel label="Confidentialité" name="im"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_tools.xml b/indra/newview/skins/default/xui/fr/floater_tools.xml
index 1d9d395960..16d276f8c2 100644
--- a/indra/newview/skins/default/xui/fr/floater_tools.xml
+++ b/indra/newview/skins/default/xui/fr/floater_tools.xml
@@ -441,9 +441,9 @@
<check_box label="Inverser" name="checkbox flip s"/>
<spinner label="Vertical (V)" name="TexScaleV"/>
<check_box label="Inverser" name="checkbox flip t"/>
- <spinner label="Rotation˚" left="122" name="TexRot" width="58"/>
- <spinner label="Répétitions / Mètre" left="122" name="rptctrl" width="58"/>
- <button label="Appliquer" label_selected="Appliquer" left_delta="68" name="button apply" width="75"/>
+ <spinner label="Rotation˚" name="TexRot" />
+ <spinner label="Répétitions / Mètre" name="rptctrl"/>
+ <button label="Appliquer" label_selected="Appliquer" name="button apply"/>
<text name="tex offset">
Décalage de la texture
</text>
diff --git a/indra/newview/skins/default/xui/it/floater_about_land.xml b/indra/newview/skins/default/xui/it/floater_about_land.xml
index a61b0584d3..bc23c2e8ff 100644
--- a/indra/newview/skins/default/xui/it/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/it/floater_about_land.xml
@@ -335,7 +335,7 @@ Solamente terreni più grandi possono essere abilitati nella ricerca.
<check_box label="Tutti i residenti" name="check other scripts"/>
<check_box label="Gruppo" name="check group scripts"/>
<text name="land_options_label">
- Opzioni della terra:
+ Opzioni per il terreno:
</text>
<check_box label="Sicuro (senza danno)" name="check safe" tool_tip="Se spuntato, imposta il terreno su &apos;sicuro&apos;, disabilitando i danni da combattimento. Se non spuntato, viene abilitato il combattimento a morte."/>
<check_box label="Nessuna spinta" name="PushRestrictCheck" tool_tip="Previeni i colpi. Selezionare questa opzione può essere utile per prevenire comportamenti dannosi sul tuo terreno."/>
diff --git a/indra/newview/skins/default/xui/it/floater_buy_land.xml b/indra/newview/skins/default/xui/it/floater_buy_land.xml
index f4e7a6c2c5..2e78168209 100644
--- a/indra/newview/skins/default/xui/it/floater_buy_land.xml
+++ b/indra/newview/skins/default/xui/it/floater_buy_land.xml
@@ -1,29 +1,29 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="buy land" title="ACQUISTA TERRENO">
<floater.string name="can_resell">
- Può essere rivenduta.
+ Può essere rivenduto.
</floater.string>
<floater.string name="can_not_resell">
- Può non essere rivenduta.
+ Può non essere rivenduto.
</floater.string>
<floater.string name="can_change">
- Può essere unita o suddivisa.
+ Può essere unito o suddiviso.
</floater.string>
<floater.string name="can_not_change">
- Non può essere unita o suddivisa.
+ Non può essere unito o suddiviso.
</floater.string>
<floater.string name="cant_buy_for_group">
- Non hai il permesso di comprare terra per il tuo gruppo attivo.
+ Non sei autorizzato ad acquistare terreno per il tuo gruppo attivo.
</floater.string>
<floater.string name="no_land_selected">
- Nessuna terra selezionata.
+ Nessun terreno selezionato.
</floater.string>
<floater.string name="multiple_parcels_selected">
- Hai selezionato appezzamenti diversi.
+ Hai selezionato lotti diversi.
Prova a selezionare un&apos;area più piccola.
</floater.string>
<floater.string name="no_permission">
- Non hai il permesso di comprare terra per il tuo gruppo attivo.
+ Non sei autorizzato ad acquistare terreno per il tuo gruppo attivo.
</floater.string>
<floater.string name="parcel_not_for_sale">
Il terreno selezionato non è in vendita.
@@ -32,7 +32,7 @@ Prova a selezionare un&apos;area più piccola.
Il gruppo possiede già il terreno.
</floater.string>
<floater.string name="you_already_own">
- Possiedi già il terreno.
+ Sei già proprietario del terreno.
</floater.string>
<floater.string name="set_to_sell_to_other">
Il terreno selezionato è già impostato per la vendita ad un altro gruppo.
@@ -41,7 +41,7 @@ Prova a selezionare un&apos;area più piccola.
L&apos;area selezionata non è pubblica.
</floater.string>
<floater.string name="not_owned_by_you">
- È selezionato terreno di proprietà di un altro residente.
+ Hai selezionato terreno di proprietà di un altro residente.
Prova a scegliere una superficie più piccola.
</floater.string>
<floater.string name="processing">
@@ -50,13 +50,13 @@ Prova a scegliere una superficie più piccola.
(Potrebbe volerci un minuto o due.)
</floater.string>
<floater.string name="fetching_error">
- C&apos;e stato un errore mentre si stavano ottenendo le informazioni sull&apos;acquisto della terra.
+ Si &apos;e verificato un errore mentre si stavano ottenendo le informazioni sull&apos;acquisto del terreno.
</floater.string>
<floater.string name="buying_will">
- Comprando questa terra:
+ Acuistando il terreno:
</floater.string>
<floater.string name="buying_for_group">
- Comprare la terra per il gruppo farà:
+ Acuistando il terreno per il gruppo:
</floater.string>
<floater.string name="cannot_buy_now">
Non puoi comprare ora:
@@ -68,10 +68,10 @@ Prova a scegliere una superficie più piccola.
nessuno necessario
</floater.string>
<floater.string name="must_upgrade">
- Il tuo tipo di account ha bisogno di un upgrade per possedere terra.
+ Per acquistare terreno devi passare a un livello di abbonamento superiore.
</floater.string>
<floater.string name="cant_own_land">
- Il tuo account può possedere terra.
+ Con questo account puoi essere proprietario di terreno.
</floater.string>
<floater.string name="land_holdings">
Sei proprietario di [BUYER] m² di terreno.
@@ -107,12 +107,10 @@ consente [AMOUNT2] oggetti
[VENDUTO_CON_OGGETTI]
</floater.string>
<floater.string name="insufficient_land_credits">
- Il gruppo [GROUP] avrà bisogno di contribuzioni anticipate, mediante crediti d&apos;uso terriero,
-sufficienti a coprire l&apos;area del terreno prima che l&apos;acquisto
-sia completato.
+ Il gruppo [GROUP] avrà bisogno di contributi di crediti di utilizzo terreno sufficienti a coprire il terreno prima che l&apos;acquisto sia completato.
</floater.string>
<floater.string name="have_enough_lindens">
- Hai [AMOUNT] L$, che sono sufficienti per comprare questa terra.
+ Hai [AMOUNT] L$, che sono sufficienti per comprare questo terreno.
</floater.string>
<floater.string name="not_enough_lindens">
Hai solo [AMOUNT] L$, ed hai bisogno di altri [AMOUNT2] L$.
@@ -209,7 +207,7 @@ venduto con oggetti
<combo_box.item label="US$ 6.00 al mese, addebitato annualmente" name="US$6.00/month,billedannually"/>
</combo_box>
<text name="land_use_action">
- Aumenta il tasso di pagamento mensile delle tasse d&apos;uso della terra a 40 US$/mese.
+ Aumenta le tariffe mensili di utilizzo del terreno a 40 US$/mese.
</text>
<text name="land_use_reason">
Tu occupi 1309 m² di terreno.
diff --git a/indra/newview/skins/default/xui/it/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/it/floater_inventory_view_finder.xml
index b5a17b2fc1..49130285f2 100644
--- a/indra/newview/skins/default/xui/it/floater_inventory_view_finder.xml
+++ b/indra/newview/skins/default/xui/it/floater_inventory_view_finder.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Inventory Finder" title="INVENTARIO_COSE_RECENTI" width="165">
+<floater name="Inventory Finder" title="INVENTARIO_COSE_RECENTI">
<check_box label="Animazioni" name="check_animation"/>
<check_box label="Biglietti da visita" name="check_calling_card"/>
<check_box label="Abiti" name="check_clothing"/>
diff --git a/indra/newview/skins/default/xui/it/floater_preferences.xml b/indra/newview/skins/default/xui/it/floater_preferences.xml
index 5ffe7f4802..c5b6654a69 100644
--- a/indra/newview/skins/default/xui/it/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/it/floater_preferences.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater min_width="350" name="Preferences" title="PREFERENZE" width="646">
+<floater name="Preferences" title="PREFERENZE">
<button label="OK" label_selected="OK" name="OK"/>
<button label="Annulla" label_selected="Annulla" name="Cancel"/>
- <tab_container name="pref core" tab_width="146" width="646">
+ <tab_container name="pref core" tab_width="100">
<panel label="Generale" name="general"/>
<panel label="Grafica" name="display"/>
<panel label="Riservatezza" name="im"/>
diff --git a/indra/newview/skins/default/xui/it/floater_tools.xml b/indra/newview/skins/default/xui/it/floater_tools.xml
index 16ee797ce4..6ad8d68df2 100644
--- a/indra/newview/skins/default/xui/it/floater_tools.xml
+++ b/indra/newview/skins/default/xui/it/floater_tools.xml
@@ -443,9 +443,9 @@ della texture
<check_box label="Inverti" name="checkbox flip s"/>
<spinner label="Verticale (V)" name="TexScaleV"/>
<check_box label="Inverti" name="checkbox flip t"/>
- <spinner label="Rotazione˚" left="120" name="TexRot" width="60"/>
- <spinner label="Ripetizioni / Metro" left="120" name="rptctrl" width="60"/>
- <button label="Applica" label_selected="Applica" left_delta="72" name="button apply"/>
+ <spinner label="Rotazione˚" name="TexRot" />
+ <spinner label="Ripetizioni / Metro" name="rptctrl" />
+ <button label="Applica" label_selected="Applica" name="button apply"/>
<text name="tex offset">
Bilanciamento della texture
</text>
@@ -484,7 +484,7 @@ della texture
<button label="Suddividi" label_selected="Suddividi" name="button subdivide land" width="156"/>
<button label="Iscriviti" label_selected="Iscriviti" name="button join land" width="156"/>
<text name="label_parcel_trans">
- Transazioni del territorio
+ Transazioni terreno
</text>
<button label="Acquista terreno" label_selected="Acquista terreno" name="button buy land" width="156"/>
<button label="Abbandona il terreno" label_selected="Abbandona il terreno" name="button abandon land" width="156"/>
diff --git a/indra/newview/skins/default/xui/it/panel_group_invite.xml b/indra/newview/skins/default/xui/it/panel_group_invite.xml
index 7874f588a5..e3cb3c1092 100644
--- a/indra/newview/skins/default/xui/it/panel_group_invite.xml
+++ b/indra/newview/skins/default/xui/it/panel_group_invite.xml
@@ -13,7 +13,7 @@
Puoi selezionare più residenti da invitare nel tuo gruppo. Per iniziare, clicca su Apri il selettore di residenti.
</text>
<button label="Scelta residenti" name="add_button" tool_tip=""/>
- <name_list name="invitee_list" tool_tip="Tieni premuto Ctrl e fai clic sui nomi dei residenti per una selezionare più nomi"/>
+ <name_list name="invitee_list" tool_tip="Tieni premuto Ctrl e fai clic sui nomi dei residenti per selezionare più nomi"/>
<button label="Rimuovi i selezionati dall&apos;elenco" name="remove_button" tool_tip="Rimuove i residenti selezionati dalla lista degli inviti"/>
<text name="role_text">
Scegli che ruolo assegnare loro:
diff --git a/indra/newview/skins/default/xui/it/panel_login.xml b/indra/newview/skins/default/xui/it/panel_login.xml
index bbf93ceb87..287e938d57 100644
--- a/indra/newview/skins/default/xui/it/panel_login.xml
+++ b/indra/newview/skins/default/xui/it/panel_login.xml
@@ -12,13 +12,21 @@
Nome:
</text>
<line_editor label="Nome" name="first_name_edit" tool_tip="[SECOND_LIFE] First Name"/>
+ <text name="last_name_text">
+ Cognome:
+ </text>
<line_editor label="Cognome" name="last_name_edit" tool_tip="[SECOND_LIFE] Last Name"/>
+ <text name="password_text">
+ Password:
+ </text>
<check_box label="Ricorda password" name="remember_check"/>
<text name="start_location_text">
Inizia da:
</text>
<combo_box name="start_location_combo">
+ <combo_box.item label="La mia ultima ubicazione" name="MyLastLocation"/>
<combo_box.item label="Casa mia" name="MyHome"/>
+ <combo_box.item label="&lt;Scrivi nome regione&gt;" name="Typeregionname"/>
</combo_box>
<button label="Accedi" name="connect_btn"/>
</layout_panel>
@@ -26,6 +34,9 @@
<text name="create_new_account_text">
Iscriviti
</text>
+ <text name="forgot_password_text">
+ Hai dimenticato il nome o la password?
+ </text>
<text name="login_help">
Ti serve aiuto con la fase di accesso?
</text>
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_sound.xml b/indra/newview/skins/default/xui/it/panel_preferences_sound.xml
index 2842b6a8aa..6936f24a8a 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_sound.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Suoni" name="Preference Media panel">
- <slider label="Comando volume centrale" name="System Volume"/>
- <check_box initial_value="true" label="Disattiva audio quando minimizzato" name="mute_when_minimized"/>
+ <slider label="Vol. principale" name="System Volume"/>
+ <check_box initial_value="true" label="Disatt. se a icona" name="mute_when_minimized"/>
<slider label="Pulsanti" name="UI Volume"/>
<slider label="Ambiente" name="Wind Volume"/>
<slider label="Effetti sonori" name="SFX Volume"/>
diff --git a/indra/newview/skins/default/xui/it/role_actions.xml b/indra/newview/skins/default/xui/it/role_actions.xml
index 95f1f662f9..e3f95f7f86 100644
--- a/indra/newview/skins/default/xui/it/role_actions.xml
+++ b/indra/newview/skins/default/xui/it/role_actions.xml
@@ -20,7 +20,7 @@
<action_set description="Queste Abilità comprendono il potere di intestare, modificare e vendere terreni di proprietà del gruppo. Per aprire la finestra Informazioni sul terreno, fai clic con il pulsante destro del mouse sul terreno e seleziona Informazioni sul terreno, o clicca sull&apos;icona &apos;i&apos; nella Barra di Navigazione." name="Parcel Management">
<action description="Cessione di terreno e acquisto di terreno per il gruppo" longdescription="Intesta terreno e acquista terreno per il gruppo. Ciò viene fatto in Informazioni sul terreno &gt; scheda Generale." name="land deed"/>
<action description="Abbandonare il terreno in favore di Governor Linden" longdescription="Abbandona il terreno in favore di Governor Linden. *ATTENZIONE* Ogni membro con questo ruolo e abilità può abbandonare il terreno di proprietà del gruppo in Informazioni sul terreno &gt; scheda Generale, restituendolo alla proprietà Linden senza effettuare una vendita. Sii sicuro della scelta prima di assegnare questa Abilità." name="land release"/>
- <action description="Informazioni su come impostare il terreno come in vendita" longdescription="Imposta le info per la vendita della terra. *ATTENZIONE* Ogni Membro con questo ruolo e abilità può vendere il terreno di proprietà del gruppo nella scheda Informazioni sul terreno &gt; scheda Generale. Pertanto sii sicuro della scelta prima di assegnare questa Abilità." name="land set sale info"/>
+ <action description="Informazioni su come impostare il terreno come in vendita" longdescription="Imposta le informazioni per la vendita del terreno. *ATTENZIONE* Ogni Membro con questo ruolo e abilità può vendere il terreno di proprietà del gruppo nella scheda Informazioni sul terreno &gt; scheda Generale. Pertanto sii sicuro della scelta prima di assegnare questa Abilità." name="land set sale info"/>
<action description="Suddividere e unire lotti" longdescription="Suddividi e unisci lotti. Viene fatto cliccando con il pulsante destro del mouse sul terreno, selezionando Modifica terreno e trascinando il mouse sul terreno per creare una selezione. Per suddividere, seleziona quale parte vuoi dividere e clicca su Suddividi. Per unire, seleziona due o più lotti confinanti e clicca su Unisci." name="land divide join"/>
</action_set>
<action_set description="Queste abilità permettono di cambiare il nome del lotto, le impostazioni di pubblicazione, la visibilità negli elenchi e il punto di arrivo, nonché opzioni di indirizzamento del Teleport." name="Parcel Identity">
diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml
index 93239983a8..a1b570d716 100644
--- a/indra/newview/skins/default/xui/it/strings.xml
+++ b/indra/newview/skins/default/xui/it/strings.xml
@@ -853,7 +853,7 @@
Offerta di Teleport
</string>
<string name="StartUpNotifications">
- Nuove notifice sono arrivate mentre eri assente...
+ Mentre eri assente sono arrivate nuove notifiche...
</string>
<string name="OverflowInfoChannelString">
Hai ancora [%d] notifiche
diff --git a/indra/newview/skins/default/xui/ja/floater_report_abuse.xml b/indra/newview/skins/default/xui/ja/floater_report_abuse.xml
index 105e903840..dc34441535 100644
--- a/indra/newview/skins/default/xui/ja/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/ja/floater_report_abuse.xml
@@ -92,7 +92,7 @@
<text name="dscr_title">
詳細:
</text>
- <text name="bug_aviso" width="210">
+ <text name="bug_aviso">
できるだけ具体的に詳しく記入してください。
</text>
<text name="incomplete_title">
diff --git a/indra/newview/skins/default/xui/nl/floater_about.xml b/indra/newview/skins/default/xui/nl/floater_about.xml
index 10c30eb361..f71f935c24 100644
--- a/indra/newview/skins/default/xui/nl/floater_about.xml
+++ b/indra/newview/skins/default/xui/nl/floater_about.xml
@@ -1,20 +1,60 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="floater_about" title="OVER [CAPITALIZED_APP_NAME]">
-<tab_container name="about_tab">
- <panel name="credits_panel">
- <text_editor name="credits_editor">
- Second Life wordt u aangeboden door Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les, Michon, Jenelle, Geo, Siz, Shapiro, Pete, Calyle, Selene, Allen, Phoebe, Goldin, Kimmora, Dakota, Slaton, Lindquist, Zoey, Hari, Othello, Rohit, Sheldon, Petra, Viale, Gordon, Kaye, Pink, Ferny, Emerson, Davy, Bri, Chan, Juan, Robert, Terrence, Nathan, Carl and many others.
+ <floater.string name="AboutHeader">
+ [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL])
+[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]]
+ </floater.string>
+ <floater.string name="AboutCompiler">
+ Gemaakt met [COMPILER] versie [COMPILER_VERSION]
+ </floater.string>
+ <floater.string name="AboutPosition">
+ U bent op [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] in [REGION] gelegen op [HOSTNAME] ([HOSTIP])
+[SERVER_VERSION]
+[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]]
+ </floater.string>
+ <floater.string name="AboutSystem">
+ CPU: [CPU]
+Geheugen: [MEMORY_MB] MB
+OS Versie: [OS_VERSION]
+Grafische Kaard Vendor: [GRAPHICS_CARD_VENDOR]
+Grafische Kaard: [GRAPHICS_CARD]
+ </floater.string>
+ <floater.string name="AboutDriver">
+ Windows Grafische Driver Versie: [GRAPHICS_DRIVER_VERSION]
+ </floater.string>
+ <floater.string name="AboutLibs">
+ OpenGL Versie: [OPENGL_VERSION]
+
+libcurl Versie: [LIBCURL_VERSION]
+J2C Decoder Versie: [J2C_VERSION]
+Audio Driver Versie: [AUDIO_DRIVER_VERSION]
+Qt Webkit Versie: [QT_WEBKIT_VERSION]
+Vivox Versie: [VIVOX_VERSION]
+ </floater.string>
+ <floater.string name="none">
+ (none)
+ </floater.string>
+ <floater.string name="AboutTraffic">
+ Pakketten Verloren: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)
+ </floater.string>
+ <tab_container name="about_tab">
+ <panel label="Info" name="support_panel">
+ <button label="Kopiëren naar Klembord" name="copy_btn"/>
+ </panel>
+ <panel label="Credits" name="credits_panel">
+ <text_editor name="credits_editor">
+ Second Life wordt u aangeboden door Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les, Michon, Jenelle, Geo, Siz, Shapiro, Pete, Calyle, Selene, Allen, Phoebe, Goldin, Kimmora, Dakota, Slaton, Lindquist, Zoey, Hari, Othello, Rohit, Sheldon, Petra, Viale, Gordon, Kaye, Pink, Ferny, Emerson, Davy, Bri, Chan, Juan, Robert, Terrence, Nathan, Carl and many others.
Een &apos;Dank u&apos; voor de volgende bewoners voor het helpen zorgdragen dat dit de beste versie tot nu toe is: able whitman, Adeon Writer, adonaira aabye, Aeron Kohime, Agathos Frascati, Aimee Trescothick, Aleric Inglewood, Alissa Sabre, Aminom Marvin, Angela Talamasca, Aralara Rajal, Armin Weatherwax, Ashrilyn Hayashida, Athanasius Skytower, Aura Dirval, Barney Boomslang, Biancaluce Robbiani, Biker Offcourse, Borg Capalini, Bulli Schumann, catherine pfeffer, Chalice Yao, Corre Porta, Court Goodman, Cummere Mayo, Dale Innis, Darien Caldwell, Darjeeling Schoonhoven, Daten Thielt, dimentox travanti, Dirk Talamasca, Drew Dwi, Duckless Vandyke, Elanthius Flagstaff, Electro Burnstein, emiley tomsen, Escort DeFarge, Eva Rau, Ezian Ecksol, Fire Centaur, Fluf Fredriksson, Francisco Koolhoven, Frontera Thor, Frungi Stastny, Gally Young, gearsawe stonecutter, Gigs Taggart, Gordon Wendt, Gudmund Shepherd, Gypsy Paz, Harleen Gretzky, Henri Beauchamp, Inma Rau, Irene Muni, Iskar Ariantho, Jacek Antonelli, JB Kraft, Jessicka Graves, Joeseph Albanese, Joshua Philgarlic, Khyota Wulluf, kirstenlee Cinquetti, Latif Khalifa, Lex Neva, Lilibeth Andree, Lisa Lowe, Lunita Savira, Loosey Demonia, lum pfohl, Marcos Fonzarelli, MartinRJ Fayray, Marusame Arai, Matthew Dowd, Maya Remblai, McCabe Maxsted, Meghan Dench, Melchoir Tokhes, Menos Short, Michelle2 Zenovka, Mimika Oh, Minerva Memel, Mm Alder, Ochi Wolfe, Omei Turnbull, Pesho Replacement, Phantom Ninetails, phoenixflames kukulcan, Polo Gufler, prez pessoa, princess niven, Prokofy Neva, Qie Niangao, Rem Beattie, RodneyLee Jessop, Saijanai Kuhn, Seg Baphomet, Sergen Davies, Shirley Marquez, SignpostMarv Martin, Sindy Tsure, Sira Arbizu, Skips Jigsaw, Sougent Harrop, Spritely Pixel, Squirrel Wood, StarSong Bright, Subversive Writer, Sugarcult Dagger, Sylumm Grigorovich, Tammy Nowotny, Tanooki Darkes, Tayra Dagostino, Theoretical Chemistry, Thickbrick Sleaford, valerie rosewood, Vex Streeter, Vixen Heron, Whoops Babii, Winter Ventura, Xiki Luik, Yann Dufaux, Yina Yao, Yukinoroh Kamachi, Zolute Infinity, Zwagoth Klaar
To be a success in business, be daring, be first, be different. --Henry Marchant
- </text_editor>
- </panel>
- <panel name="licenses_panel">
- <text_editor name="credits_editor">
-3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion
+ </text_editor>
+ </panel>
+ <panel label="Licenties" name="licenses_panel">
+ <text_editor name="credits_editor">
+ 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion
APR Copyright (C) 2000-2004 The Apache Software Foundation
cURL Copyright (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se)
DBus/dbus-glib Copyright (C) 2002, 2003 CodeFactory AB / Copyright (C) 2003, 2004
@@ -35,10 +75,7 @@ google-perftools Copyright (c) 2005, Google Inc.
All rights reserved. See licenses.txt for details.
Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
- </text_editor>
- </panel>
-</tab_container>
- <string name="you_are_at">
- U bent op [POSITION]
- </string>
+ </text_editor>
+ </panel>
+ </tab_container>
</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_mute_object.xml b/indra/newview/skins/default/xui/nl/floater_mute_object.xml
index 7a34be1bd7..edea63b42c 100644
--- a/indra/newview/skins/default/xui/nl/floater_mute_object.xml
+++ b/indra/newview/skins/default/xui/nl/floater_mute_object.xml
@@ -1,13 +1,14 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="mute by name" title="NEGEER OBJECT OP NAAM">
- <text name="message" bottom_delta="-40">
- Negeer op naam heeft alleen invloed op object chat
-en IM, niet op geluiden. U dient de naam van het object
-exact te typen.
+<floater name="mute by name" title="BLOKKEER VOORWERP BIJ NAAM">
+ <text bottom_delta="-40" name="message">
+ Blokkeer een Voorwerp:
</text>
- <line_editor name="object_name" bottom_delta="-58">
+ <line_editor bottom_delta="-58" name="object_name">
Object naam
</line_editor>
+ <text name="note">
+ * Blokkeerd alleen object tekst, niet de geluiden
+ </text>
<button label="Ok" name="OK"/>
<button label="Annuleren" name="Cancel"/>
</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_report_abuse.xml b/indra/newview/skins/default/xui/nl/floater_report_abuse.xml
index 19b11ede0a..a50773c2b3 100644
--- a/indra/newview/skins/default/xui/nl/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/nl/floater_report_abuse.xml
@@ -1,30 +1,33 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="floater_report_abuse" title="MISBRUIK RAPPORTEREN">
- <check_box label="Voeg schermafbeelding toe" name="screen_check"/>
+ <floater.string name="Screenshot">
+ Schermafbeelding
+ </floater.string>
+ <check_box label="Gebruik deze schermafbeelding" name="screen_check"/>
<text name="reporter_title" width="110">
Rapporteur:
</text>
- <text name="reporter_field" left_delta="70">
- Loremipsum Dolorsitamut
+ <text left_delta="70" name="reporter_field">
+ Loremipsum Dolorsitamut Longnamez
</text>
<text name="sim_title">
Regio:
</text>
- <text name="sim_field" left_delta="70">
+ <text left_delta="70" name="sim_field">
Regionaam
</text>
<text name="pos_title">
Positie:
</text>
- <text name="pos_field" left_delta="70">
+ <text left_delta="70" name="pos_field">
{128.1, 128.1, 15.4}
</text>
<text name="select_object_label">
- Klik de knop, daarna het object:
+ Klik de knop, vervolgens het misbruik voorwerp:
</text>
<button label="" label_selected="" name="pick_btn" tool_tip="Objectkiezer - Identificeer een object als het onderwerp van dit rapport"/>
<text name="object_name_label">
- Naam:
+ voorwerp:
</text>
<text name="object_name" width="120">
Consetetur Sadipscing
@@ -33,54 +36,53 @@
Eigenaar:
</text>
<text name="owner_name">
- Hendrerit Vulputate
+ Hendrerit Vulputate Kamawashi Longname
</text>
<combo_box name="category_combo" tool_tip="Categorie -- selecteer de categorie die dit rapport het best beschrijft">
- <combo_box.item name="Select_category" label="Selecteer categorie"/>
- <combo_box.item name="Age__Age_play" label="Leeftijd &gt; Leeftijd spelen"/>
- <combo_box.item name="Age__Adult_resident_on_Teen_Second_Life" label="Leeftijd &gt; Volwassen inwoner in Teen Second Life"/>
- <combo_box.item name="Age__Underage_resident_outside_of_Teen_Second_Life" label="Leeftijd &gt; Minderjarige inwoner buiten Teen Second Life"/>
- <combo_box.item name="Assault__Combat_sandbox___unsafe_area" label="Aanval &gt; Gevechtszandbak / onveilig gebied"/>
- <combo_box.item name="Assault__Safe_area" label="Aanval &gt; Veilig gebied"/>
- <combo_box.item name="Assault__Weapons_testing_sandbox" label="Aanval &gt; Zandbak voor het testen van wapens"/>
- <combo_box.item name="Commerce__Failure_to_deliver_product_or_service" label="Handel &gt; Product of dienst is niet geleverd"/>
- <combo_box.item name="Disclosure__Real_world_information" label="Openbaring &gt; Echte wereld informatie"/>
- <combo_box.item name="Disclosure__Remotely_monitoring chat" label="Openbaring &gt; Op afstand chat afluisteren"/>
- <combo_box.item name="Disclosure__Second_Life_information_chat_IMs" label="Openbaring &gt; Second Life informatie/chat/IMs"/>
- <combo_box.item name="Disturbing_the_peace__Unfair_use_of_region_resources" label="Vredebreuk &gt; Oneerlijk gebruik van regiomiddelen"/>
- <combo_box.item name="Disturbing_the_peace__Excessive_scripted_objects" label="Vredebreuk &gt; Excessieve gescripte objecten"/>
- <combo_box.item name="Disturbing_the_peace__Object_littering" label="Vredebreuk &gt; Objecten laten rondslingeren"/>
- <combo_box.item name="Disturbing_the_peace__Repetitive_spam" label="Vredebreuk &gt; Herhaalde spam"/>
- <combo_box.item name="Disturbing_the_peace__Unwanted_advert_spam" label="Vredebreuk &gt; Ongewenste reclame-spam"/>
- <combo_box.item name="Fraud__L$" label="Fraude &gt; L$"/>
- <combo_box.item name="Fraud__Land" label="Fraude &gt; Land"/>
- <combo_box.item name="Fraud__Pyramid_scheme_or_chain_letter" label="Fraude &gt; Piramideschema of kettingbrief"/>
- <combo_box.item name="Fraud__US$" label="Fraude &gt; US$"/>
- <combo_box.item name="Harassment__Advert_farms___visual_spam" label="Intimidatie &gt; Reclameverzamelingen / visuele spam"/>
- <combo_box.item name="Harassment__Defaming_individuals_or_groups" label="Intimidatie &gt; Individuen of groepen in diskrediet brengen"/>
- <combo_box.item name="Harassment__Impeding_movement" label="Intimidatie &gt; Beweging verhinderen"/>
- <combo_box.item name="Harassment__Sexual_harassment" label="Intimidatie &gt; Seksuele intimidatie"/>
- <combo_box.item name="Harassment__Solicting_inciting_others_to_violate_ToS" label="Intimidatie &gt; Anderen uitnodigen/aanzetten tot het schenden van de ToS"/>
- <combo_box.item name="Harassment__Verbal_abuse" label="Intimidatie &gt; Verbaal misbruik"/>
- <combo_box.item name="Indecency__Broadly_offensive_content_or_conduct" label="Onfatsoenlijkheid &gt; Globaal beledigende inhoud of gedrag"/>
- <combo_box.item name="Indecency__Inappropriate_avatar_name" label="Onfatsoenlijkheid &gt; Ongepaste avatar naam"/>
- <combo_box.item name="Indecency__Mature_content_in_PG_region" label="Onfatsoenlijkheid &gt; Ongepaste inhoud of gedrag in een PG regio"/>
- <combo_box.item name="Indecency__Inappropriate_content_in_Mature_region" label="Onfatsoenlijkheid &gt; Ongepaste inhoud of gedrag in een Mature regio"/>
- <combo_box.item name="Intellectual_property_infringement_Content_Removal" label="Inbreuk op intellectueel eigendom &gt; Verwijderen van inhoud"/>
- <combo_box.item name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit" label="Inbreuk op intellectueel eigendom &gt; CopyBot of misbruik van permissies"/>
- <combo_box.item name="Intolerance" label="Intolerantie"/>
- <combo_box.item name="Land__Abuse_of_sandbox_resources" label="Land &gt; Misbruik van zandbakmiddelen"/>
- <combo_box.item name="Land__Encroachment__Objects_textures" label="Land &gt; Indringing &gt; Objecten/texturen"/>
- <combo_box.item name="Land__Encroachment__Particles" label="Land &gt; Indringing &gt; Particles"/>
- <combo_box.item name="Land__Encroachment__Trees_plants" label="Land &gt; Indringing &gt; Bomen/planten"/>
- <combo_box.item name="Wagering_gambling" label="Weddenschappen/gokken"/>
- <combo_box.item name="Other" label="Anders"/>
+ <combo_box.item label="Selecteer categorie" name="Select_category"/>
+ <combo_box.item label="Leeftijd &gt; Leeftijd spelen" name="Age__Age_play"/>
+ <combo_box.item label="Leeftijd &gt; Volwassen inwoner in Teen Second Life" name="Age__Adult_resident_on_Teen_Second_Life"/>
+ <combo_box.item label="Leeftijd &gt; Minderjarige inwoner buiten Teen Second Life" name="Age__Underage_resident_outside_of_Teen_Second_Life"/>
+ <combo_box.item label="Aanval &gt; Gevechtszandbak / onveilig gebied" name="Assault__Combat_sandbox___unsafe_area"/>
+ <combo_box.item label="Aanval &gt; Veilig gebied" name="Assault__Safe_area"/>
+ <combo_box.item label="Aanval &gt; Zandbak voor het testen van wapens" name="Assault__Weapons_testing_sandbox"/>
+ <combo_box.item label="Handel &gt; Product of dienst is niet geleverd" name="Commerce__Failure_to_deliver_product_or_service"/>
+ <combo_box.item label="Openbaring &gt; Echte wereld informatie" name="Disclosure__Real_world_information"/>
+ <combo_box.item label="Openbaring &gt; Op afstand chat afluisteren" name="Disclosure__Remotely_monitoring chat"/>
+ <combo_box.item label="Openbaring &gt; Second Life informatie/chat/IMs" name="Disclosure__Second_Life_information_chat_IMs"/>
+ <combo_box.item label="Vredebreuk &gt; Oneerlijk gebruik van regiomiddelen" name="Disturbing_the_peace__Unfair_use_of_region_resources"/>
+ <combo_box.item label="Vredebreuk &gt; Excessieve gescripte objecten" name="Disturbing_the_peace__Excessive_scripted_objects"/>
+ <combo_box.item label="Vredebreuk &gt; Objecten laten rondslingeren" name="Disturbing_the_peace__Object_littering"/>
+ <combo_box.item label="Vredebreuk &gt; Herhaalde spam" name="Disturbing_the_peace__Repetitive_spam"/>
+ <combo_box.item label="Vredebreuk &gt; Ongewenste reclame-spam" name="Disturbing_the_peace__Unwanted_advert_spam"/>
+ <combo_box.item label="Fraude &gt; L$" name="Fraud__L$"/>
+ <combo_box.item label="Fraude &gt; Land" name="Fraud__Land"/>
+ <combo_box.item label="Fraude &gt; Piramideschema of kettingbrief" name="Fraud__Pyramid_scheme_or_chain_letter"/>
+ <combo_box.item label="Fraude &gt; US$" name="Fraud__US$"/>
+ <combo_box.item label="Intimidatie &gt; Reclameverzamelingen / visuele spam" name="Harassment__Advert_farms___visual_spam"/>
+ <combo_box.item label="Intimidatie &gt; Individuen of groepen in diskrediet brengen" name="Harassment__Defaming_individuals_or_groups"/>
+ <combo_box.item label="Intimidatie &gt; Beweging verhinderen" name="Harassment__Impeding_movement"/>
+ <combo_box.item label="Intimidatie &gt; Seksuele intimidatie" name="Harassment__Sexual_harassment"/>
+ <combo_box.item label="Intimidatie &gt; Anderen uitnodigen/aanzetten tot het schenden van de ToS" name="Harassment__Solicting_inciting_others_to_violate_ToS"/>
+ <combo_box.item label="Intimidatie &gt; Verbaal misbruik" name="Harassment__Verbal_abuse"/>
+ <combo_box.item label="Onfatsoenlijkheid &gt; Globaal beledigende inhoud of gedrag" name="Indecency__Broadly_offensive_content_or_conduct"/>
+ <combo_box.item label="Onfatsoenlijkheid &gt; Ongepaste avatar naam" name="Indecency__Inappropriate_avatar_name"/>
+ <combo_box.item label="Onfatsoenlijkheid &gt; Ongepaste inhoud of gedrag in een PG regio" name="Indecency__Mature_content_in_PG_region"/>
+ <combo_box.item label="Onfatsoenlijkheid &gt; Ongepaste inhoud of gedrag in een Mature regio" name="Indecency__Inappropriate_content_in_Mature_region"/>
+ <combo_box.item label="Inbreuk op intellectueel eigendom &gt; Verwijderen van inhoud" name="Intellectual_property_infringement_Content_Removal"/>
+ <combo_box.item label="Inbreuk op intellectueel eigendom &gt; CopyBot of misbruik van permissies" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/>
+ <combo_box.item label="Intolerantie" name="Intolerance"/>
+ <combo_box.item label="Land &gt; Misbruik van zandbakmiddelen" name="Land__Abuse_of_sandbox_resources"/>
+ <combo_box.item label="Land &gt; Indringing &gt; Objecten/texturen" name="Land__Encroachment__Objects_textures"/>
+ <combo_box.item label="Land &gt; Indringing &gt; Particles" name="Land__Encroachment__Particles"/>
+ <combo_box.item label="Land &gt; Indringing &gt; Bomen/planten" name="Land__Encroachment__Trees_plants"/>
+ <combo_box.item label="Weddenschappen/gokken" name="Wagering_gambling"/>
+ <combo_box.item label="Anders" name="Other"/>
</combo_box>
<text name="abuser_name_title">
Misbruikernaam:
</text>
<button label="Kies inwoner" label_selected="" name="select_abuser" tool_tip="Selecteer de naam van de misbruiker uit een lijst"/>
- <check_box label="Naam van misbruiker onbekend" name="omit_abuser_name" tool_tip="Vink dit aan wanneer u niet in staat bent de naam van de misbruiker te geven"/>
<text name="abuser_name_title2">
Locatie van misbruik:
</text>
@@ -91,13 +93,11 @@
Details:
</text>
<text name="bug_aviso">
- Wees alstublieft zo specifiek mogelijk m.b.t. datum, locatie,
-aard van het misbruik, relevante chat/IM tekst, en selecteer
-het object indien mogelijk.
+ Wees zo specifiek mogelijk
</text>
<text name="incomplete_title">
- Let op: onvolledige rapporten zullen niet worden onderzocht.
+ Let Op: Onvolledige verslagen zullen niet worden onderzocht
</text>
- <button label="Annuleren" label_selected="Annuleren" name="cancel_btn"/>
<button label="Misbruik rapporteren" label_selected="Misbruik rapporteren" name="send_btn"/>
+ <button label="Annuleren" label_selected="Annuleren" name="cancel_btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_stats.xml b/indra/newview/skins/default/xui/nl/floater_stats.xml
new file mode 100644
index 0000000000..0db3f76735
--- /dev/null
+++ b/indra/newview/skins/default/xui/nl/floater_stats.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Statistics" title="STATISTIEKEN">
+ <scroll_container name="statistics_scroll">
+ <container_view name="statistics_view">
+ <stat_view label="Basis" name="basic">
+ <stat_bar label="FPS" name="fps"/>
+ <stat_bar label="Bandbreedte" name="bandwidth"/>
+ <stat_bar label="Pakket Verlies" name="packet_loss"/>
+ <stat_bar label="Ping Sim" name="ping"/>
+ </stat_view>
+ <stat_view label="Geavanceerd" name="advanced">
+ <stat_view label="Weergeven" name="render">
+ <stat_bar label="KTris Tekenen" name="ktrisframe"/>
+ <stat_bar label="KTris Tekenen" name="ktrissec"/>
+ <stat_bar label="Totaal Voorwerpen" name="objs"/>
+ <stat_bar label="Nieuwe Voorwerpen" name="newobjs"/>
+ </stat_view>
+ <stat_view label="Textuur" name="texture">
+ <stat_bar label="Count" name="numimagesstat"/>
+ <stat_bar label="Raw Count" name="numrawimagesstat"/>
+ <stat_bar label="GL Mem" name="gltexmemstat"/>
+ <stat_bar label="Formatted Mem" name="formattedmemstat"/>
+ <stat_bar label="Raw Mem" name="rawmemstat"/>
+ <stat_bar label="Bound Mem" name="glboundmemstat"/>
+ </stat_view>
+ <stat_view label="Netwerk" name="network">
+ <stat_bar label="Pakketten In" name="packetsinstat"/>
+ <stat_bar label="Pakketten Uit" name="packetsoutstat"/>
+ <stat_bar label="Voorwerpen" name="objectkbitstat"/>
+ <stat_bar label="Textuur" name="texturekbitstat"/>
+ <stat_bar label="Bezit" name="assetkbitstat"/>
+ <stat_bar label="Lagen" name="layerskbitstat"/>
+ <stat_bar label="Daadwerkelijk In" name="actualinkbitstat"/>
+ <stat_bar label="Daadwerkelijk Out" name="actualoutkbitstat"/>
+ <stat_bar label="VFS Pending Ops" name="vfspendingoperations"/>
+ </stat_view>
+ </stat_view>
+ <stat_view label="Simulator" name="sim">
+ <stat_bar label="Tijd Dilatatie" name="simtimedilation"/>
+ <stat_bar label="Sim FPS" name="simfps"/>
+ <stat_bar label="Physics FPS" name="simphysicsfps"/>
+ <stat_view label="Physics Details" name="physicsdetail">
+ <stat_bar label="Pinned Objects" name="physicspinnedtasks"/>
+ <stat_bar label="Low LOD Objects" name="physicslodtasks"/>
+ <stat_bar label="Memory Allocated" name="physicsmemoryallocated"/>
+ <stat_bar label="Agent Updates/Sec" name="simagentups"/>
+ <stat_bar label="Main Agents" name="simmainagents"/>
+ <stat_bar label="Child Agents" name="simchildagents"/>
+ <stat_bar label="Voorwerpen" name="simobjects"/>
+ <stat_bar label="Actieve Voorwerpen" name="simactiveobjects"/>
+ <stat_bar label="Actieve Scripts" name="simactivescripts"/>
+ <stat_bar label="Actieve Evenementen" name="simscripteps"/>
+ <stat_bar label="Pakketten In" name="siminpps"/>
+ <stat_bar label="Pakketten Uit" name="simoutpps"/>
+ <stat_bar label="Wachtende Downloads" name="simpendingdownloads"/>
+ <stat_bar label="Wachtende Uploads" name="simpendinguploads"/>
+ <stat_bar label="Total Unacked Bytes" name="simtotalunackedbytes"/>
+ </stat_view>
+ <stat_view label="Tijd (ms)" name="simperf">
+ <stat_bar label="Totale Frame Tijd" name="simframemsec"/>
+ <stat_bar label="Net Time" name="simnetmsec"/>
+ <stat_bar label="Physics Time" name="simsimphysicsmsec"/>
+ <stat_bar label="Simulatie Tijd" name="simsimothermsec"/>
+ <stat_bar label="Agent Tijd" name="simagentmsec"/>
+ <stat_bar label="Plaatjes Tijd" name="simimagesmsec"/>
+ <stat_bar label="Script Tijd" name="simscriptmsec"/>
+ </stat_view>
+ </stat_view>
+ </container_view>
+ </scroll_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/nl/menu_inventory.xml b/indra/newview/skins/default/xui/nl/menu_inventory.xml
index 6a514422b9..c3b47cbddb 100644
--- a/indra/newview/skins/default/xui/nl/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/nl/menu_inventory.xml
@@ -12,7 +12,7 @@
<menu_item_call label="Nieuw script" name="New Script"/>
<menu_item_call label="Nieuwe notitie" name="New Note"/>
<menu_item_call label="Nieuw gebaar" name="New Gesture"/>
- <menu name="New Clothes" label="Nieuwe Kleding">
+ <menu label="Nieuwe Kleding" name="New Clothes">
<menu_item_call label="Nieuw shirt" name="New Shirt"/>
<menu_item_call label="Nieuwe broek" name="New Pants"/>
<menu_item_call label="Nieuwe schoenen" name="New Shoes"/>
@@ -22,31 +22,47 @@
<menu_item_call label="Nieuwe handschoenen" name="New Gloves"/>
<menu_item_call label="Nieuw onderhemd" name="New Undershirt"/>
<menu_item_call label="Nieuwe onderbroek" name="New Underpants"/>
+ <menu_item_call label="Nieuw Alpha Masker" name="New Alpha Mask"/>
+ <menu_item_call label="Nieuwe Tattoo" name="New Tattoo"/>
</menu>
- <menu name="New Body Parts" label="Nieuwe Lichaamsdelen">
+ <menu label="Nieuwe Lichaamsdelen" name="New Body Parts">
<menu_item_call label="Nieuwe postuur" name="New Shape"/>
<menu_item_call label="Nieuwe huid" name="New Skin"/>
<menu_item_call label="Nieuw haar" name="New Hair"/>
<menu_item_call label="Nieuwe ogen" name="New Eyes"/>
</menu>
+ <menu label="Change Type" name="Change Type">
+ <menu_item_call label="Standaard" name="Default"/>
+ <menu_item_call label="Handschoenen" name="Gloves"/>
+ <menu_item_call label="Jas" name="Jacket"/>
+ <menu_item_call label="Broek" name="Pants"/>
+ <menu_item_call label="Vorm" name="Shape"/>
+ <menu_item_call label="Schoenen" name="Shoes"/>
+ <menu_item_call label="Overhemd" name="Shirt"/>
+ <menu_item_call label="Rok" name="Skirt"/>
+ <menu_item_call label="Onderbroek" name="Underpants"/>
+ <menu_item_call label="Onderhemd" name="Undershirt"/>
+ </menu>
<menu_item_call label="Teleport" name="Landmark Open"/>
<menu_item_call label="Open" name="Animation Open"/>
<menu_item_call label="Open" name="Sound Open"/>
<menu_item_call label="Verwijderen item" name="Purge Item"/>
<menu_item_call label="Herstellen item" name="Restore Item"/>
+ <menu_item_call label="Ga Naar Link" name="Goto Link"/>
<menu_item_call label="Open" name="Open"/>
<menu_item_call label="Eigenschappen" name="Properties"/>
<menu_item_call label="Hernoemen" name="Rename"/>
<menu_item_call label="Kopieer asset UUID" name="Copy Asset UUID"/>
<menu_item_call label="Kopiëren" name="Copy"/>
<menu_item_call label="Plakken" name="Paste"/>
+ <menu_item_call label="Plak Als Link" name="Paste As Link"/>
<menu_item_call label="Verwijderen" name="Delete"/>
<menu_item_call label="Items uitdoen" name="Take Off Items"/>
<menu_item_call label="Voeg toe aan kleding" name="Add To Outfit"/>
<menu_item_call label="Vervang kleding" name="Replace Outfit"/>
<menu_item_call label="Start conferentie chat" name="Conference Chat Folder"/>
<menu_item_call label="Afspelen" name="Sound Play"/>
- <menu_item_call label="Over landmarkering" name="Teleport To Landmark"/>
+ <menu_item_call label="Over Landmark" name="About Landmark"/>
<menu_item_call label="In wereld afspelen" name="Animation Play"/>
<menu_item_call label="Lokaal afspelen" name="Animation Audition"/>
<menu_item_call label="Stuur instant message" name="Send Instant Message"/>
@@ -54,8 +70,8 @@
<menu_item_call label="Start conferentie chat" name="Conference Chat"/>
<menu_item_call label="Activeren" name="Activate"/>
<menu_item_call label="Deactiveren" name="Deactivate"/>
+ <menu_item_call label="Opslaan Als" name="Save As"/>
<menu_item_call label="Losmaken van jezelf" name="Detach From Yourself"/>
- <menu_item_call label="Herstellen naar laatste positie" name="Restore to Last Position"/>
<menu_item_call label="Dragen" name="Object Wear"/>
<menu label="Bevestigen aan" name="Attach To"/>
<menu label="Bevestigen aan HUD" name="Attach To HUD"/>
diff --git a/indra/newview/skins/default/xui/nl/menu_inventory_add.xml b/indra/newview/skins/default/xui/nl/menu_inventory_add.xml
new file mode 100644
index 0000000000..09330b9597
--- /dev/null
+++ b/indra/newview/skins/default/xui/nl/menu_inventory_add.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_inventory_add">
+ <menu label="Upload" name="upload">
+ <menu_item_call label="Plaatje (L$[COST])..." name="Upload Image"/>
+ <menu_item_call label="Geluid (L$[COST])..." name="Upload Sound"/>
+ <menu_item_call label="Animatie (L$[COST])..." name="Upload Animation"/>
+ <menu_item_call label="Bulk (L$[COST] per bestand)..." name="Bulk Upload"/>
+ </menu>
+ <menu_item_call label="Nieuwe Map" name="New Folder"/>
+ <menu_item_call label="Nieuw Script" name="New Script"/>
+ <menu_item_call label="Nieuw Notitie" name="New Note"/>
+ <menu_item_call label="Nieuw Gebaar" name="New Gesture"/>
+ <menu label="Nieuwe Kleding" name="New Clothes">
+ <menu_item_call label="Nieuw Overhemd" name="New Shirt"/>
+ <menu_item_call label="Nieuwe Broek" name="New Pants"/>
+ <menu_item_call label="Nieuwe Schoenen" name="New Shoes"/>
+ <menu_item_call label="Nieuwe Sokken" name="New Socks"/>
+ <menu_item_call label="Nieuw Jas" name="New Jacket"/>
+ <menu_item_call label="Nieuw Rok" name="New Skirt"/>
+ <menu_item_call label="Nieuwe Handschoenen" name="New Gloves"/>
+ <menu_item_call label="Nieuw Hemd" name="New Undershirt"/>
+ <menu_item_call label="Nieuwe Onderbroek" name="New Underpants"/>
+ <menu_item_call label="Nieuwe Alpha" name="New Alpha"/>
+ <menu_item_call label="Nieuwe Tattoo" name="New Tattoo"/>
+ </menu>
+ <menu label="Nieuwe Lichaamsdelen" name="New Body Parts">
+ <menu_item_call label="Nieuwe Vorm" name="New Shape"/>
+ <menu_item_call label="Nieuwe Huid" name="New Skin"/>
+ <menu_item_call label="Nieuw Haar" name="New Hair"/>
+ <menu_item_call label="Nieuwe Ogen" name="New Eyes"/>
+ </menu>
+</menu>
diff --git a/indra/newview/skins/default/xui/nl/menu_picks.xml b/indra/newview/skins/default/xui/nl/menu_picks.xml
new file mode 100644
index 0000000000..2e53dbda58
--- /dev/null
+++ b/indra/newview/skins/default/xui/nl/menu_picks.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Picks">
+ <menu_item_call label="Info" name="pick_info"/>
+ <menu_item_call label="Bewerken" name="pick_edit"/>
+ <menu_item_call label="Teleport" name="pick_teleport"/>
+ <menu_item_call label="Kaart" name="pick_map"/>
+ <menu_item_call label="Verweideren" name="pick_delete"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/nl/panel_group_roles.xml b/indra/newview/skins/default/xui/nl/panel_group_roles.xml
index ffaaa8137a..507906c0d7 100644
--- a/indra/newview/skins/default/xui/nl/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/nl/panel_group_roles.xml
@@ -1,92 +1,50 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Leden &amp; Rollen" name="roles_tab">
- <string name="default_needs_apply_text">
- Er zijn niet toegepaste wijzigingen op de huidige sub-tab.
- </string>
- <string name="want_apply_text">
- Wilt u deze wijzigingen toepassen?
- </string>
- <button label="?" name="help_button"/>
- <panel name="members_header">
- <text name="static">
- Leden &amp; Rollen
- </text>
- <text name="static2">
- Groepsleden krijgen Rollen met Mogelijkheden toegekend. Deze instellingen
-kunnen eenvoudig aangepast worden, zodat meer organisatie en flexibiliteit
-mogelijk is.
- </text>
- </panel>
- <panel name="roles_header">
- <text name="static">
- Rollen
- </text>
- <text name="role_properties_modifiable">
- Selecteer een Rol hieronder. U kunt zijn Naam, Omschrijving en
-Lid Titel wijzigen.
- </text>
- <text name="role_properties_not_modifiable">
- Selecteer een Rol hieronder om zijn eigenschappen, Leden en
-toegestane Mogelijkheden te bekijken.
- </text>
- <text bottom_delta="-28" name="role_actions_modifiable">
- U kunt ook Mogelijkheden aan de Rol toekennen.
- </text>
- <text name="role_actions_not_modifiable">
- U kunt de toegekende Mogelijkheden bekijken, maar niet wijzigen.
- </text>
- </panel>
- <panel name="actions_header">
- <text name="static">
- Mogelijkheden
- </text>
- <text name="static2">
- U kunt de Omschrijving van een Mogelijkheid bekijken en welke Rollen en
-Leden de Mogelijkheid kunnen uitvoeren.
- </text>
- </panel>
+ <panel.string name="default_needs_apply_text">
+ Er zijn niet opgeslagen veranderingen op de huidige tab
+ </panel.string>
+ <panel.string name="want_apply_text">
+ Wilt u deze wijzigingen opslaan?
+ </panel.string>
<tab_container height="164" name="roles_tab_container">
- <panel height="148" label="Leden" name="members_sub_tab" tool_tip="Leden">
- <line_editor bottom="127" name="search_text"/>
- <button label="Zoeken" name="search_button"/>
- <button label="Alles Tonen" name="show_all_button"/>
- <name_list bottom_delta="-105" height="104" name="member_list">
- <column label="Lid Naam" name="name"/>
- <column label="Gedoneerde Tier" name="donated"/>
- <column label="Laatste Login" name="online"/>
- </name_list>
- <button label="Nieuw Lid Uitnodigen..." name="member_invite"/>
- <button label="Uitwerpen uit de Groep" name="member_eject"/>
- <string name="help_text">
+ <panel height="148" label="LEDEN" name="members_sub_tab" tool_tip="Leden">
+ <panel.string name="help_text">
U kunt Rollen aan Leden toewijzen of van Leden afnemen. Selecteer meerdere Leden door de Ctrl toets ingedrukt te houden en op hun namen te klikken.
- </string>
+ </panel.string>
+ <filter_editor label="Filter Leden" name="filter_input"/>
+ <name_list bottom_delta="-105" height="104" name="member_list">
+ <name_list.columns label="Lid Naam" name="name"/>
+ <name_list.columns label="Donaties" name="donated"/>
+ <name_list.columns label="Laatste Login" name="online"/>
+ </name_list>
+ <button label="Uitnodigen" name="member_invite"/>
+ <button label="Uitwerpen" name="member_eject"/>
</panel>
- <panel height="148" label="Rollen" name="roles_sub_tab">
- <line_editor bottom="127" name="search_text"/>
- <button label="Zoeken" name="search_button"/>
- <button label="Alles Tonen" name="show_all_button"/>
+ <panel height="148" label="ROLLEN" name="roles_sub_tab">
+ <panel.string name="help_text">
+ Rollen hebben een titel en een toegestane lijst met Vaardigheden die Leden kunnen uitvoeren. Leden kunnen tot 1 of meer Rollen behoren. Een groep kan tot 10 Rollen bevatten, inclusief de Iedereen en Eigenaren Rollen.
+ </panel.string>
+ <panel.string name="cant_delete_role">
+ De &apos;Iedereen&apos; en &apos;Eigenaren&apos; Rollen zijn speciaal en kunnen niet verwijderd worden.
+ </panel.string>
+ <panel.string name="power_folder_icon">
+ Inv_FolderClosed
+ </panel.string>
+ <filter_editor label="Filter Rollen" name="filter_input"/>
<scroll_list bottom_delta="-104" height="104" name="role_list">
- <column label="Rol Naam" name="name"/>
- <column label="Titel" name="title"/>
- <column label="Leden" name="members"/>
+ <scroll_list.columns label="Rol" name="name"/>
+ <scroll_list.columns label="Titel" name="title"/>
+ <scroll_list.columns label="Leden" name="members"/>
</scroll_list>
- <button label="Nieuwe Rol Maken..." name="role_create"/>
+ <button label="Nieuwe Rol..." name="role_create"/>
<button label="Rol Verwijderen" name="role_delete"/>
- <string name="help_text">
- Rollen hebben een titel en een toegestane lijst met Mogelijkheden die Leden kunnen uitvoeren. Leden kunnen tot 1 of meer Rollen behoren. Een groep kan tot 10 Rollen bevatten, inclusief de Iedereen en Eigenaren Rollen.
- </string>
- <string name="cant_delete_role">
- De &apos;Iedereen&apos; en &apos;Eigenaren&apos; Rollen zijn speciaal en kunnen niet verwijderd worden.
- </string>
</panel>
- <panel height="148" label="Mogelijkheden" name="actions_sub_tab">
- <line_editor bottom="127" name="search_text"/>
- <button label="Zoeken" name="search_button"/>
- <button label="Alles Tonen" name="show_all_button"/>
- <scroll_list bottom_delta="-120" height="118" name="action_list" tool_tip="Selecteer een Mogelijkheid om meer details te bekijken."/>
- <string name="help_text">
+ <panel height="148" label="VAARDIGHEDEN" name="actions_sub_tab" tool_tip="Je kan een vaardigheid&apos;s beschrijving en welke Rollen en Leden kunnen uitvoeren van de Vaardigheid.">
+ <panel.string name="help_text">
Mogelijkheden stellen leden in staat om specifieke dingen in een groep te doen. Er is een brede variëteit aan Mogelijkheden.
- </string>
+ </panel.string>
+ <filter_editor label="Filter Vaardigheden" name="filter_input"/>
+ <scroll_list bottom_delta="-120" height="118" name="action_list" tool_tip="Selecteer een Vaardigheid om meer details te bekijken"/>
</panel>
</tab_container>
<panel name="members_footer">
@@ -96,15 +54,12 @@ Leden de Mogelijkheid kunnen uitvoeren.
<text name="static2">
Toegestane Mogelijkheden
</text>
- <scroll_list name="member_allowed_actions" tool_tip="Kijk voor details van elke Toegestane Mogelijkheid in de Mogelijkheden tab."/>
+ <scroll_list name="member_allowed_actions" tool_tip="Voor details van elke Toegestane Vaardigheid in de Mogelijkheden tab"/>
</panel>
<panel name="roles_footer">
<text name="static">
Naam
</text>
- <text name="static2">
- Omschrijving
- </text>
<line_editor name="role_name">
Werknemers
</line_editor>
@@ -114,30 +69,33 @@ Leden de Mogelijkheid kunnen uitvoeren.
<line_editor name="role_title">
(wachten)
</line_editor>
+ <text name="static2">
+ Omschrijving
+ </text>
<text_editor name="role_description">
(wachten)
</text_editor>
<text name="static4">
- Toegewezen Leden
+ Toegewezen Rollen
</text>
+ <check_box label="Leden Onthullen" name="role_visible_in_list" tool_tip="Bepaalt of leden van deze rol zichtbaar zijn in de Algemeen tab voor mensen buiten de groep."/>
<text name="static5" tool_tip="Een lijst met Mogelijkheden die de geselecteerd rol kan uitvoeren.">
Toegestane Mogelijkheden
</text>
- <check_box label="Leden zijn zichtbaar" name="role_visible_in_list" tool_tip="Bepaalt of leden van deze rol zichtbaar zijn in de Algemeen tab voor mensen buiten de groep."/>
- <scroll_list name="role_allowed_actions" tool_tip="Kijk voor details van elke Toegestane Mogelijkheid in de Mogelijkheden tab."/>
+ <scroll_list name="role_allowed_actions" tool_tip="For details of each allowed ability see the abilities tab"/>
</panel>
<panel name="actions_footer">
<text name="static">
- Omschrijving
+ Vaardigheid omschrijving
</text>
<text_editor name="action_description">
Dit is de Mogelijkheid &apos;Werp Leden uit deze Groep&apos;. Alleen een Eigenaar kan een andere Eigenaar uitwerpen.
</text_editor>
<text name="static2">
- Rollen met Mogelijkheid
+ Rollen met deze vaardigheid
</text>
<text name="static3">
- Leden met Mogelijkheid
+ Leden met deze vaardigheid
</text>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_login.xml b/indra/newview/skins/default/xui/nl/panel_login.xml
index 235e15e7fb..bcc888061f 100644
--- a/indra/newview/skins/default/xui/nl/panel_login.xml
+++ b/indra/newview/skins/default/xui/nl/panel_login.xml
@@ -6,34 +6,36 @@
<panel.string name="forgot_password_url">
http://secondlife.com/account/request.php?lang=nl-NL
</panel.string>
-<panel name="login_widgets">
- <text name="first_name_text">
- Voornaam:
- </text>
- <text name="last_name_text">
- Achternaam:
- </text>
- <text name="password_text">
- Wachtwoord:
- </text>
- <text name="start_location_text">
- Startlocatie:
- </text>
- <combo_box name="start_location_combo">
- <combo_box.item name="MyHome" label="Mijn Thuis"/>
- <combo_box.item name="MyLastLocation" label="Mijn Laatste Locatie"/>
- <combo_box.item name="Typeregionname" label="&lt; Type regio naam &gt;"/>
- </combo_box>
- <check_box label="Onthoud wachtwoord" name="remember_check"/>
- <button label="Inloggen" label_selected="Inloggen" name="connect_btn"/>
- <text name="create_new_account_text">
- Nieuw account maken
- </text>
- <text name="forgot_password_text">
- Naam of wachtwoord vergeten?
- </text>
- <text name="channel_text">
- [VERSION]
- </text>
-</panel>
+ <panel name="login_widgets">
+ <text name="first_name_text">
+ Voornaam:
+ </text>
+ <line_editor name="first_name_edit" tool_tip="[SECOND_LIFE] Voornaam"/>
+ <text name="last_name_text">
+ Achternaam:
+ </text>
+ <line_editor name="last_name_edit" tool_tip="[SECOND_LIFE] Achternaam"/>
+ <text name="password_text">
+ Paswoord:
+ </text>
+ <button label="Inloggen" label_selected="Inloggen" name="connect_btn"/>
+ <text name="start_location_text">
+ Start locatie:
+ </text>
+ <combo_box name="start_location_combo">
+ <combo_box.item label="Mijn Laatste Locatie" name="MyLastLocation"/>
+ <combo_box.item label="Mijn Thuis" name="MyHome"/>
+ <combo_box.item label="&lt;Tik regio naam&gt;" name="Typeregionname"/>
+ </combo_box>
+ <check_box label="Onthoud paswoord" name="remember_check"/>
+ <text name="create_new_account_text">
+ Maak een nieuwe account
+ </text>
+ <text name="forgot_password_text">
+ Naam of paswoord vergeten?
+ </text>
+ <text name="channel_text">
+ [VERSION]
+ </text>
+ </panel>
</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_main_inventory.xml b/indra/newview/skins/default/xui/nl/panel_main_inventory.xml
new file mode 100644
index 0000000000..c533cc20c0
--- /dev/null
+++ b/indra/newview/skins/default/xui/nl/panel_main_inventory.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Dingen" name="main inventory panel">
+ <panel.string name="Title">
+ Dingen
+ </panel.string>
+ <filter_editor label="Filter" name="inventory search editor"/>
+ <tab_container name="inventory filter tabs">
+ <inventory_panel label="Alle Voorwerpen" name="All Items"/>
+ <inventory_panel label="Recente Voorwerpen" name="Recent Items"/>
+ </tab_container>
+ <panel name="bottom_panel">
+ <button name="options_gear_btn" tool_tip="Toon extra opties"/>
+ <button name="add_btn" tool_tip="Voeg nieuw voorwerp toe"/>
+ <dnd_button name="trash_btn" tool_tip="Remove selected item"/>
+ </panel>
+ <menu_bar name="Inventory Menu">
+ <menu label="Bestand" name="File">
+ <menu_item_call label="Open" name="Open"/>
+ <menu label="Upload" name="upload">
+ <menu_item_call label="Plaatje (L$[COST])..." name="Upload Image"/>
+ <menu_item_call label="Geluid (L$[COST])..." name="Upload Sound"/>
+ <menu_item_call label="Animatie (L$[COST])..." name="Upload Animation"/>
+ <menu_item_call label="Bulk (L$[COST] per bestand)..." name="Bulk Upload"/>
+ </menu>
+ <menu_item_call label="Nieuw Venster" name="New Window"/>
+ <menu_item_call label="Toon Filters" name="Show Filters"/>
+ <menu_item_call label="Reset Filters" name="Reset Current"/>
+ <menu_item_call label="Sluit Alle Mappen" name="Close All Folders"/>
+ <menu_item_call label="Prullenbak Leegmaken" name="Empty Trash"/>
+ <menu_item_call label="Leeg Verloren En Gevonden" name="Empty Lost And Found"/>
+ </menu>
+ <menu label="Maken" name="Create">
+ <menu_item_call label="Nieuwe Map" name="New Folder"/>
+ <menu_item_call label="Nieuw Script" name="New Script"/>
+ <menu_item_call label="Nieuwe Notitie" name="New Note"/>
+ <menu_item_call label="Nieuw Gebaar" name="New Gesture"/>
+ <menu label="Nieuwe Kleding" name="New Clothes">
+ <menu_item_call label="Nieuw Overhemd" name="New Shirt"/>
+ <menu_item_call label="Nieuwe Broek" name="New Pants"/>
+ <menu_item_call label="Nieuwe Schoenen" name="New Shoes"/>
+ <menu_item_call label="Nieuwe Sokken" name="New Socks"/>
+ <menu_item_call label="Nieuwe Jas" name="New Jacket"/>
+ <menu_item_call label="Nieuwe Rok" name="New Skirt"/>
+ <menu_item_call label="Nieuwe Handschoenen" name="New Gloves"/>
+ <menu_item_call label="Nieuw Hemd" name="New Undershirt"/>
+ <menu_item_call label="Nieuwe Onderbroek" name="New Underpants"/>
+ <menu_item_call label="Nieuwe Alpha" name="New Alpha"/>
+ <menu_item_call label="Nieuwe Tattoo" name="New Tattoo"/>
+ </menu>
+ <menu label="Nieuwe Lichaamsdelen" name="New Body Parts">
+ <menu_item_call label="Nieuwe Vorm" name="New Shape"/>
+ <menu_item_call label="Nieuwe Huid" name="New Skin"/>
+ <menu_item_call label="Nieuw Haar" name="New Hair"/>
+ <menu_item_call label="Nieuwe Ogen" name="New Eyes"/>
+ </menu>
+ </menu>
+ <menu label="Sorteer" name="Sort">
+ <menu_item_check label="Bij Naam" name="By Name"/>
+ <menu_item_check label="Bij Datum" name="By Date"/>
+ <menu_item_check label="Mappen Altijd Op Naam" name="Folders Always By Name"/>
+ <menu_item_check label="Syteemmappen Naar Boven" name="System Folders To Top"/>
+ </menu>
+ </menu_bar>
+</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_world_map.xml b/indra/newview/skins/default/xui/nl/panel_world_map.xml
index 11855b7fc1..d9a0b66fbc 100644
--- a/indra/newview/skins/default/xui/nl/panel_world_map.xml
+++ b/indra/newview/skins/default/xui/nl/panel_world_map.xml
@@ -1,5 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="world_map">
+ <panel.string name="Loading">
+ Laden...
+ </panel.string>
+ <panel.string name="InvalidLocation">
+ Ongeldige Locatie
+ </panel.string>
<panel.string name="world_map_north">
N
</panel.string>
diff --git a/indra/newview/skins/default/xui/nl/strings.xml b/indra/newview/skins/default/xui/nl/strings.xml
index 0be5ec9e86..ae8d3b89dc 100644
--- a/indra/newview/skins/default/xui/nl/strings.xml
+++ b/indra/newview/skins/default/xui/nl/strings.xml
@@ -4,10 +4,21 @@
For example, the strings used in avatar chat bubbles, and strings
that are returned from one component and may appear in many places-->
<strings>
- <string name="create_account_url">http://join.secondlife.com/index.php?lang=nl-NL</string>
+ <string name="SUPPORT_SITE">
+ Second Life Ondersteunings Portaal
+ </string>
+ <string name="StartupDetectingHardware">
+ Detecteert hardware...
+ </string>
+ <string name="StartupLoading">
+ Laden
+ </string>
<string name="LoginInProgress">
Inloggen. Het kan lijken dat [APP_NAME] is vastgelopen. Wacht u alstublieft... .
</string>
+ <string name="LoginInProgressNoFrozen">
+ Inloggen...
+ </string>
<string name="LoginAuthenticating">
Authenticeren
</string>
@@ -26,11 +37,14 @@
<string name="LoginInitializingMultimedia">
Multimedia initialiseren...
</string>
+ <string name="LoginInitializingFonts">
+ Lettertypen laden...
+ </string>
<string name="LoginVerifyingCache">
- Cache bestanden verifiëren (kan 60-90 seconden duren)...
+ Veriveren cache bestanden (kan 60-90 seconden duren)...
</string>
<string name="LoginProcessingResponse">
- Antwoord verwerken...
+ Reactie Verwerken...
</string>
<string name="LoginInitializingWorld">
Wereld initialiseren...
@@ -56,9 +70,15 @@
<string name="LoginDownloadingClothing">
Kleding downloaden...
</string>
+ <string name="LoginFailedNoNetwork">
+ Netwerk Fout: Kon geen verbinding maken, kijk uw nerwerk connectie na alstublieft.
+ </string>
<string name="Quit">
Afsluiten
</string>
+ <string name="create_account_url">
+ http://join.secondlife.com/index.php?lang=nl-NL
+ </string>
<string name="AgentLostConnection">
Deze regio kan problemen ondervinden. Controleer alstublieft uw verbinding met het internet.
</string>
@@ -77,39 +97,9 @@
<string name="TooltipIsGroup">
(Groep)
</string>
- <string name="TooltipFlagScript">
- Script
- </string>
- <string name="TooltipFlagPhysics">
- Fysiek
- </string>
- <string name="TooltipFlagTouch">
- Aanraken
- </string>
- <string name="TooltipFlagL$">
- L$
- </string>
- <string name="TooltipFlagDropInventory">
- Deponeer inventaris
- </string>
- <string name="TooltipFlagPhantom">
- Fantoom
- </string>
- <string name="TooltipFlagTemporary">
- Tijdelijk
- </string>
- <string name="TooltipFlagRightClickMenu">
- (Rechtsklikken voor menu)
- </string>
- <string name="TooltipFreeToCopy">
- Vrij te kopiëren
- </string>
<string name="TooltipForSaleL$">
Te koop: L$[AMOUNT]
</string>
- <string name="TooltipForSaleMsg">
- Te koop: [MESSAGE]
- </string>
<string name="TooltipFlagGroupBuild">
Groep bouwen
</string>
@@ -137,6 +127,76 @@
<string name="TooltipMustSingleDrop">
Slechts een enkel item kan hier naartoe gesleept worden
</string>
+ <string name="TooltipHttpUrl">
+ Klik om deze web pagina te bekijken
+ </string>
+ <string name="TooltipSLURL">
+ Klik om deze locatie informatie te bekijken
+ </string>
+ <string name="TooltipAgentUrl">
+ Klik om deze inwoner zijn profiel te bekijken
+ </string>
+ <string name="TooltipGroupUrl">
+ Klik om deze groeps informatie te bekijken
+ </string>
+ <string name="TooltipEventUrl">
+ Klik om deze evenement informatie te bekijken
+ </string>
+ <string name="TooltipClassifiedUrl">
+ Klik om deze advertentie te bekijken
+ </string>
+ <string name="TooltipParcelUrl">
+ Klik om deze perceel informatie te bekijken
+ </string>
+ <string name="TooltipTeleportUrl">
+ Klik om naar deze lokatie te teleporteren
+ </string>
+ <string name="TooltipObjectIMUrl">
+ Klik om deze object informatie te bekijken
+ </string>
+ <string name="TooltipMapUrl">
+ Klik om deze locatie op een map te bekijken
+ </string>
+ <string name="TooltipSLAPP">
+ Klik om het secondlife:// commando te starten
+ </string>
+ <string name="CurrentURL" value="HuidigeURL: [HuidigeURL]"/>
+ <string name="SLurlLabelTeleport">
+ Teleporteer naar
+ </string>
+ <string name="SLurlLabelShowOnMap">
+ Toon Map voor
+ </string>
+ <string name="BUTTON_CLOSE_DARWIN">
+ Sluiten (⌘W)
+ </string>
+ <string name="BUTTON_CLOSE_WIN">
+ Sluiten (Ctrl+W)
+ </string>
+ <string name="BUTTON_RESTORE">
+ Restore
+ </string>
+ <string name="BUTTON_MINIMIZE">
+ Minimaliseren
+ </string>
+ <string name="BUTTON_TEAR_OFF">
+ Afscheuren
+ </string>
+ <string name="BUTTON_DOCK">
+ Koppelen
+ </string>
+ <string name="BUTTON_UNDOCK">
+ Loskoppelen
+ </string>
+ <string name="BUTTON_HELP">
+ Toon Help
+ </string>
+ <string name="Searching">
+ Zoeken...
+ </string>
+ <string name="NoneFound">
+ Geen gevonden.
+ </string>
<string name="RetrievingData">
Ophalen...
</string>
@@ -191,8 +251,77 @@
<string name="AssetErrorUnknownStatus">
Onbekende status
</string>
- <string name="AvatarEditingApparance">
- (Uiterlijk bewerken)
+ <string name="texture">
+ textuur
+ </string>
+ <string name="sound">
+ geluid
+ </string>
+ <string name="calling card">
+ visitekaart
+ </string>
+ <string name="landmark">
+ landmarkering
+ </string>
+ <string name="legacy script">
+ legacy script
+ </string>
+ <string name="clothing">
+ kleding
+ </string>
+ <string name="object">
+ object
+ </string>
+ <string name="note card">
+ notecard
+ </string>
+ <string name="folder">
+ map
+ </string>
+ <string name="root">
+ root
+ </string>
+ <string name="lsl2 script">
+ LSL2 script
+ </string>
+ <string name="lsl bytecode">
+ LSL bytecode
+ </string>
+ <string name="tga texture">
+ tga textuur
+ </string>
+ <string name="body part">
+ lichaamsdeel
+ </string>
+ <string name="snapshot">
+ foto
+ </string>
+ <string name="lost and found">
+ Verloren en Gevonden
+ </string>
+ <string name="targa image">
+ targa plaatje
+ </string>
+ <string name="trash">
+ Prullenbak
+ </string>
+ <string name="jpeg image">
+ jpeg plaatje
+ </string>
+ <string name="animation">
+ animatie
+ </string>
+ <string name="gesture">
+ gebaar
+ </string>
+ <string name="simstate">
+ simstate
+ </string>
+ <string name="favorite">
+ favorieten
+ </string>
+ <string name="symbolic link">
+ link
</string>
<string name="AvatarAway">
Afwezig
@@ -414,7 +543,19 @@
Laden...
</string>
<string name="worldmap_offline">
- Offline
+ Off line
+ </string>
+ <string name="worldmap_results_none_found">
+ Geen gevonden.
+ </string>
+ <string name="Ok">
+ OK
+ </string>
+ <string name="Premature end of file">
+ Vroegtijdig eind van bestand
+ </string>
+ <string name="ST_NO_JOINT">
+ Kan niet ROOT of JOINT vinden.
</string>
<string name="whisper">
fluistert:
@@ -422,6 +563,57 @@
<string name="shout">
schreeuwt:
</string>
+ <string name="ringing">
+ Verbinden met in-wereld voice chat...
+ </string>
+ <string name="connected">
+ Verbonden
+ </string>
+ <string name="unavailable">
+ Voice is niet beschikbaar op uw huidige locatie
+ </string>
+ <string name="hang_up">
+ Verbinding met in-wereld voicechat verbroken
+ </string>
+ <string name="ScriptQuestionCautionChatGranted">
+ &apos;[OBJECTNAME]&apos;, een object van &apos;[OWNERNAME]&apos;, gevestigd in [REGIONNAME] op [REGIONPOS], is toestemming verleend om te: [PERMISSIONS].
+ </string>
+ <string name="ScriptQuestionCautionChatDenied">
+ &apos;[OBJECTNAME]&apos;, een object van &apos;[OWNERNAME]&apos;, gevestigd in [REGIONNAME] op [REGIONPOS], is toestemming geweigerd om te: [PERMISSIONS].
+ </string>
+ <string name="ScriptTakeMoney">
+ Linden dollars (L$) van u wegnemen
+ </string>
+ <string name="ActOnControlInputs">
+ Acteren op uw bedieningsinvoer
+ </string>
+ <string name="RemapControlInputs">
+ Uw bedieningsinvoer herdefiniëren
+ </string>
+ <string name="AnimateYourAvatar">
+ Animeer uw avatar
+ </string>
+ <string name="AttachToYourAvatar">
+ Bevestig aan uw avatar
+ </string>
+ <string name="ReleaseOwnership">
+ Eigendom vrijgeven en openbaar worden
+ </string>
+ <string name="LinkAndDelink">
+ Koppelen met en ontkoppelen van andere objecten
+ </string>
+ <string name="AddAndRemoveJoints">
+ Toevoegen en verwijderen koppelingen met andere objecten
+ </string>
+ <string name="ChangePermissions">
+ Wijzig zijn permissies
+ </string>
+ <string name="TrackYourCamera">
+ Volg uw camera
+ </string>
+ <string name="ControlYourCamera">
+ Bedien uw camera
+ </string>
<string name="SIM_ACCESS_PG">
PG
</string>
@@ -440,8 +632,6 @@
<string name="land_type_unknown">
(onbekend)
</string>
- <string name="covenant_never_modified">Laatst gewijzigd: (nooit)</string>
- <string name="covenant_modified">Laatst gewijzigd: </string>
<string name="all_files">
Alle bestanden
</string>
@@ -487,17 +677,739 @@
<string name="choose_the_directory">
Kies folder
</string>
+ <string name="AvatarSetNotAway">
+ Niet Afwezig Instellen
+ </string>
+ <string name="AvatarSetAway">
+ Afwezig Instellen
+ </string>
+ <string name="AvatarSetNotBusy">
+ Niet Bezig Instellen
+ </string>
+ <string name="AvatarSetBusy">
+ Bezig Instellen
+ </string>
+ <string name="shape">
+ Postuur
+ </string>
+ <string name="skin">
+ Huid
+ </string>
+ <string name="hair">
+ Haar
+ </string>
+ <string name="eyes">
+ Ogen
+ </string>
+ <string name="shirt">
+ Hemd
+ </string>
+ <string name="pants">
+ Broek
+ </string>
+ <string name="shoes">
+ Schoenen
+ </string>
+ <string name="socks">
+ Sokken
+ </string>
+ <string name="jacket">
+ Jas
+ </string>
+ <string name="gloves">
+ Handschoenen
+ </string>
+ <string name="undershirt">
+ onderhemd
+ </string>
+ <string name="underpants">
+ Onderbroek
+ </string>
+ <string name="skirt">
+ Rok
+ </string>
+ <string name="alpha">
+ Alpha
+ </string>
+ <string name="tattoo">
+ Tattoo
+ </string>
+ <string name="invalid">
+ ongeldig
+ </string>
+ <string name="next">
+ Volgende
+ </string>
+ <string name="ok">
+ OK
+ </string>
+ <string name="GroupNotifyGroupNotice">
+ Groep Mededeling
+ </string>
+ <string name="GroupNotifyGroupNotices">
+ Groep Mededelingen
+ </string>
+ <string name="GroupNotifySentBy">
+ Verzonden Door:
+ </string>
+ <string name="GroupNotifyAttached">
+ Bijgevoegt:
+ </string>
+ <string name="GroupNotifyViewPastNotices">
+ Bekijk alle mededelingen en bijlages van verzonden Mededelingen in het verleden
+ </string>
+ <string name="GroupNotifyOpenAttachment">
+ Open Bijlage
+ </string>
+ <string name="GroupNotifySaveAttachment">
+ Sla Bijlage Op
+ </string>
+ <string name="TeleportOffer">
+ Teleporteer Aanbieding
+ </string>
+ <string name="StartUpNotification">
+ [%d] Nieuwe mededelingen aangekomen terwijl u weg was ...
+ </string>
+ <string name="StartUpNotifications">
+ [%d] Nieuwe mededelingen aangekomen terwijl u weg was ...
+ </string>
+ <string name="OverflowInfoChannelString">
+ U heeft [%d] meer mededelingen
+ </string>
+ <string name="BodyPartsRightArm">
+ Rechter Arm
+ </string>
+ <string name="BodyPartsHead">
+ Hoofd
+ </string>
+ <string name="BodyPartsLeftArm">
+ Linker Arm
+ </string>
+ <string name="BodyPartsLeftLeg">
+ Linker Been
+ </string>
+ <string name="BodyPartsTorso">
+ Torso
+ </string>
+ <string name="BodyPartsRightLeg">
+ Rechter Been
+ </string>
+ <string name="GraphicsQualityLow">
+ Laag
+ </string>
+ <string name="GraphicsQualityMid">
+ Middel
+ </string>
+ <string name="GraphicsQualityHigh">
+ Hoog
+ </string>
+ <string name="LeaveMouselook">
+ Druk op ESC om terug te keren naar Wereld Zicht
+ </string>
+ <string name="InventoryNoMatchingItems">
+ Geen overeenkomende objecten gevonden in de voorraad.
+ </string>
+ <string name="InventoryNoTexture">
+ Je hebt geen kopie van deze texture in je inventaris
+ </string>
+ <string name="no_transfer" value="(no transfer)"/>
+ <string name="no_modify" value="(no modify)"/>
+ <string name="no_copy" value="(no copy)"/>
+ <string name="worn" value="(worn)"/>
+ <string name="link" value="(link)"/>
+ <string name="broken_link" value="(broken_link)&quot;"/>
+ <string name="LoadingContents">
+ Loading contents...
+ </string>
+ <string name="NoContents">
+ No contents
+ </string>
+ <string name="WornOnAttachmentPoint" value="(worn on [ATTACHMENT_POINT])"/>
+ <string name="Chat" value="Chat :"/>
+ <string name="Sound" value="Geluid :"/>
+ <string name="Wait" value="--- Wachten :"/>
+ <string name="AnimFlagStop" value="Stop Animatie :"/>
+ <string name="AnimFlagStart" value="Start Animatie :"/>
+ <string name="Wave" value="Wave"/>
+ <string name="HelloAvatar" value="Hallo, avatar!"/>
+ <string name="ViewAllGestures" value="Bekijk alles &gt;"/>
+ <string name="Animations" value="Animaties,"/>
+ <string name="Calling Cards" value="Calling Cards,"/>
+ <string name="Clothing" value="Kleding,"/>
+ <string name="Gestures" value="Gestures,"/>
+ <string name="Landmarks" value="Landmarks,"/>
+ <string name="Notecards" value="Notecards,"/>
+ <string name="Objects" value="Objecten,"/>
+ <string name="Scripts" value="Scripts,"/>
+ <string name="Sounds" value="Geluiden,"/>
+ <string name="Textures" value="Textures,"/>
+ <string name="Snapshots" value="Snapshots,"/>
+ <string name="No Filters" value="Nee"/>
+ <string name="Since Logoff" value="- Sinds Afmelden"/>
+ <string name="InvFolder My Inventory">
+ Mijn Inventaris
+ </string>
+ <string name="InvFolder My Favorites">
+ Mijn Favorieten
+ </string>
+ <string name="InvFolder Library">
+ Bibliotheek
+ </string>
+ <string name="InvFolder Textures">
+ Textures
+ </string>
+ <string name="InvFolder Sounds">
+ Geluiden
+ </string>
+ <string name="InvFolder Calling Cards">
+ Calling Cards
+ </string>
+ <string name="InvFolder Landmarks">
+ Landmarks
+ </string>
+ <string name="InvFolder Scripts">
+ Scripts
+ </string>
+ <string name="InvFolder Clothing">
+ Kleding
+ </string>
+ <string name="InvFolder Objects">
+ Objecten
+ </string>
+ <string name="InvFolder Notecards">
+ Notecards
+ </string>
+ <string name="InvFolder New Folder">
+ Nieuwe Map
+ </string>
+ <string name="InvFolder Inventory">
+ Inventaris
+ </string>
+ <string name="InvFolder Uncompressed Images">
+ Ongecomprimeerde Afbeeldingen
+ </string>
+ <string name="InvFolder Body Parts">
+ Lichaams Delen
+ </string>
+ <string name="InvFolder Trash">
+ Afval
+ </string>
+ <string name="InvFolder Photo Album">
+ Foto Album
+ </string>
+ <string name="InvFolder Lost And Found">
+ Verloren en Gevonden
+ </string>
+ <string name="InvFolder Uncompressed Sounds">
+ Ongecomprimeerde Geluiden
+ </string>
+ <string name="InvFolder Animations">
+ Animaties
+ </string>
+ <string name="InvFolder Gestures">
+ Gebaren
+ </string>
+ <string name="InvFolder favorite">
+ Favoriten
+ </string>
+ <string name="InvFolder Current Outfit">
+ Huidige Uitrusting
+ </string>
+ <string name="InvFolder My Outfits">
+ Mijn Uitrustingen
+ </string>
+ <string name="InvFolder Friends">
+ Vrienden
+ </string>
+ <string name="InvFolder All">
+ Alles
+ </string>
+ <string name="Buy">
+ Koop
+ </string>
+ <string name="BuyforL$">
+ Koop voor L$
+ </string>
+ <string name="Stone">
+ Steen
+ </string>
+ <string name="Metal">
+ Metaal
+ </string>
+ <string name="Glass">
+ Glas
+ </string>
+ <string name="Wood">
+ Hout
+ </string>
+ <string name="Flesh">
+ Vlees
+ </string>
+ <string name="Plastic">
+ Plastic
+ </string>
+ <string name="Rubber">
+ Rubber
+ </string>
+ <string name="Light">
+ Licht
+ </string>
+ <string name="KBShift">
+ Shift
+ </string>
+ <string name="KBCtrl">
+ Ctrl
+ </string>
+ <string name="Chest">
+ Borstkas
+ </string>
+ <string name="Skull">
+ Schedel
+ </string>
+ <string name="Left Shoulder">
+ Linker Schouder
+ </string>
+ <string name="Right Shoulder">
+ Rechter Schouder
+ </string>
+ <string name="Left Hand">
+ Linker Hand
+ </string>
+ <string name="Right Hand">
+ Rechter Hand
+ </string>
+ <string name="Left Foot">
+ Linker Voet
+ </string>
+ <string name="Right Foot">
+ Rechter Voet
+ </string>
+ <string name="Spine">
+ Ruggegraat
+ </string>
+ <string name="Pelvis">
+ Bekken
+ </string>
+ <string name="Mouth">
+ Mond
+ </string>
+ <string name="Chin">
+ Kin
+ </string>
+ <string name="Left Ear">
+ Linker Oor
+ </string>
+ <string name="Right Ear">
+ Rechter Oor
+ </string>
+ <string name="Left Eyeball">
+ Linker Oogbal
+ </string>
+ <string name="Right Eyeball">
+ Rechter Oogbal
+ </string>
+ <string name="Nose">
+ Neus
+ </string>
+ <string name="R Upper Arm">
+ R Boven Arm
+ </string>
+ <string name="R Forearm">
+ R Onder Arm
+ </string>
+ <string name="L Upper Arm">
+ L Boven Arm
+ </string>
+ <string name="L Forearm">
+ L Onder Arm
+ </string>
+ <string name="Right Hip">
+ Rechter Heup
+ </string>
+ <string name="R Upper Leg">
+ R Boven Been
+ </string>
+ <string name="R Lower Leg">
+ R Onder Been
+ </string>
+ <string name="Left Hip">
+ Linker Heub
+ </string>
+ <string name="L Upper Leg">
+ L Boven Been
+ </string>
+ <string name="L Lower Leg">
+ L Onder Been
+ </string>
+ <string name="Stomach">
+ Maag
+ </string>
+ <string name="Left Pec">
+ Left Pec
+ </string>
+ <string name="Right Pec">
+ Right Pec
+ </string>
+ <string name="YearsMonthsOld">
+ [AGEYEARS] [AGEMONTHS] oud
+ </string>
+ <string name="YearsOld">
+ [AGEYEARS] oud
+ </string>
+ <string name="MonthsOld">
+ [AGEMONTHS] oud
+ </string>
+ <string name="WeeksOld">
+ [AGEWEEKS] oud
+ </string>
+ <string name="DaysOld">
+ [AGEDAYS] oud
+ </string>
+ <string name="TodayOld">
+ Vandaag toegetreden
+ </string>
+ <string name="AgeYearsA">
+ [COUNT] jaar
+ </string>
+ <string name="AgeYearsB">
+ [COUNT] jaar
+ </string>
+ <string name="AgeYearsC">
+ [COUNT] jaar
+ </string>
+ <string name="AgeMonthsA">
+ [COUNT] maand
+ </string>
+ <string name="AgeMonthsB">
+ [COUNT] maanden
+ </string>
+ <string name="AgeMonthsC">
+ [COUNT] maanden
+ </string>
+ <string name="AgeWeeksA">
+ [COUNT] week
+ </string>
+ <string name="AgeWeeksB">
+ [COUNT] weken
+ </string>
+ <string name="AgeWeeksC">
+ [COUNT] weken
+ </string>
+ <string name="AgeDaysA">
+ [COUNT] dag
+ </string>
+ <string name="AgeDaysB">
+ [COUNT] dagen
+ </string>
+ <string name="AgeDaysC">
+ [COUNT] dagen
+ </string>
+ <string name="GroupMembersA">
+ [COUNT] lid
+ </string>
+ <string name="GroupMembersB">
+ [COUNT] leden
+ </string>
+ <string name="GroupMembersC">
+ [COUNT] leden
+ </string>
+ <string name="AcctTypeResident">
+ bewoner
+ </string>
+ <string name="AcctTypeTrial">
+ Trial
+ </string>
+ <string name="AcctTypeCharterMember">
+ Charter Member
+ </string>
+ <string name="AcctTypeEmployee">
+ Linden Lab Werknemer
+ </string>
+ <string name="PaymentInfoUsed">
+ Betalings info gebruikt
+ </string>
+ <string name="PaymentInfoOnFile">
+ Betalings info op bestand
+ </string>
+ <string name="NoPaymentInfoOnFile">
+ Geen betalings info op bestand
+ </string>
+ <string name="AgeVerified">
+ Leeftijd gecontroleerd
+ </string>
+ <string name="NotAgeVerified">
+ Niet leeftijd gecontroleerd
+ </string>
+ <string name="Center 2">
+ Centrum 2
+ </string>
+ <string name="Top Right">
+ Rechts Boven
+ </string>
+ <string name="Top">
+ Boven
+ </string>
+ <string name="Top Left">
+ Links Boven
+ </string>
+ <string name="Center">
+ Centrum
+ </string>
+ <string name="Bottom Left">
+ Links beneden
+ </string>
+ <string name="Bottom">
+ Beneden
+ </string>
+ <string name="Bottom Right">
+ Rechts beneden
+ </string>
+ <string name="CompileQueueDownloadedCompiling">
+ Dedownload, nu samenstellen
+ </string>
+ <string name="CompileQueueScriptNotFound">
+ Script niet gevonden op server.
+ </string>
+ <string name="CompileQueueProblemDownloading">
+ Problem downloading
+ </string>
+ <string name="CompileQueueInsufficientPermDownload">
+ Onvoldoende rechten om een script te downloaden.
+ </string>
+ <string name="CompileQueueInsufficientPermFor">
+ Onvoldoende rechten voor
+ </string>
+ <string name="CompileQueueUnknownFailure">
+ Onbekende fout te downloaden
+ </string>
+ <string name="CompileQueueTitle">
+ Hercompilatie vooruitgang
+ </string>
+ <string name="CompileQueueStart">
+ Hercompilatie
+ </string>
+ <string name="ResetQueueTitle">
+ Reset Vooruitgang
+ </string>
+ <string name="ResetQueueStart">
+ reset
+ </string>
+ <string name="RunQueueTitle">
+ Set Running Progress
+ </string>
+ <string name="RunQueueStart">
+ set running
+ </string>
+ <string name="NotRunQueueTitle">
+ Set Not Running Progress
+ </string>
+ <string name="NotRunQueueStart">
+ set not running
+ </string>
+ <string name="CompileSuccessful">
+ Compileren succesvol!
+ </string>
+ <string name="CompileSuccessfulSaving">
+ Compileren succesvol, opslaan...
+ </string>
+ <string name="SaveComplete">
+ Opslaan gereed.
+ </string>
+ <string name="ObjectOutOfRange">
+ Script (object buiten het bereik)
+ </string>
+ <string name="GodToolsObjectOwnedBy">
+ Object [OBJECT] eigendom van [OWNER]
+ </string>
+ <string name="GroupsNone">
+ geen
+ </string>
+ <string name="Group" value="(group)"/>
+ <string name="Unknown">
+ (Unknown)
+ </string>
+ <string name="SummaryForTheWeek" value="Samenvatting voor deze week, vanaf"/>
+ <string name="NextStipendDay" value="The next stipend day is"/>
+ <string name="GroupIndividualShare" value="Groep Individueel Aandeel"/>
+ <string name="Balance">
+ Banksaldo
+ </string>
+ <string name="Credits">
+ Credits
+ </string>
+ <string name="Debits">
+ Debiteert
+ </string>
+ <string name="Total">
+ Totaal
+ </string>
+ <string name="NoGroupDataFound">
+ Geen groep gegevens gevonden voor groep
+ </string>
+ <string name="IMParentEstate">
+ parent estate
+ </string>
+ <string name="IMMainland">
+ mainland
+ </string>
+ <string name="IMTeen">
+ tiener
+ </string>
+ <string name="RegionInfoError">
+ fout
+ </string>
+ <string name="RegionInfoAllEstatesOwnedBy">
+ all estates owned by [OWNER]
+ </string>
+ <string name="RegionInfoAllEstatesYouOwn">
+ all estates that you own
+ </string>
+ <string name="RegionInfoAllEstatesYouManage">
+ all estates that you manage for [OWNER]
+ </string>
+ <string name="RegionInfoAllowedResidents">
+ Toegestane bewoners: ([ALLOWEDAGENTS], max [MAXACCESS])
+ </string>
+ <string name="RegionInfoAllowedGroups">
+ Toegestane groepen: ([ALLOWEDGROUPS], max [MAXACCESS])
+ </string>
+ <string name="CursorPos">
+ Lijn [LINE], Column [COLUMN]
+ </string>
+ <string name="PanelDirCountFound">
+ [COUNT] gevonden
+ </string>
+ <string name="PanelContentsNewScript">
+ Nieuw Script
+ </string>
+ <string name="MuteByName">
+ (by name)
+ </string>
+ <string name="MuteAgent">
+ (resident)
+ </string>
+ <string name="MuteObject">
+ (object)
+ </string>
+ <string name="MuteGroup">
+ (group)
+ </string>
+ <string name="RegionNoCovenant">
+ There is no Covenant provided for this Estate.
+ </string>
+ <string name="RegionNoCovenantOtherOwner">
+ There is no Covenant provided for this Estate. The land on this estate is being sold by the Estate owner, not Linden Lab. Please contact the Estate Owner for sales details.
+ </string>
+ <string name="covenant_last_modified">
+ Laatst bewerkt:
+ </string>
+ <string name="none_text" value="(none)"/>
+ <string name="never_text" value="(never)"/>
+ <string name="GroupOwned">
+ Groep Eigendom
+ </string>
+ <string name="Public">
+ Openbaar
+ </string>
+ <string name="ClassifiedClicksTxt">
+ Klikken: [TELEPORT] teleport, [MAP] map, [PROFILE] profiel
+ </string>
+ <string name="ClassifiedUpdateAfterPublish">
+ (zal bijwerken na publiceren)
+ </string>
+ <string name="MultiPreviewTitle">
+ Preview
+ </string>
+ <string name="MultiPropertiesTitle">
+ Eigenschappen
+ </string>
+ <string name="InvOfferAnObjectNamed">
+ Een object genaamd
+ </string>
+ <string name="InvOfferOwnedByGroup">
+ Eigendom van groep
+ </string>
+ <string name="InvOfferOwnedByUnknownGroup">
+ Eigendom van een onbekende groep
+ </string>
+ <string name="InvOfferOwnedBy">
+ Eigendom van
+ </string>
+ <string name="InvOfferOwnedByUnknownUser">
+ Eigendom van onbekende gebruiker
+ </string>
+ <string name="InvOfferGaveYou">
+ gaf je
+ </string>
+ <string name="InvOfferYouDecline">
+ You decline
+ </string>
+ <string name="InvOfferFrom">
+ van
+ </string>
+ <string name="GroupMoneyTotal">
+ Totaal
+ </string>
+ <string name="GroupMoneyBought">
+ kocht
+ </string>
+ <string name="GroupMoneyPaidYou">
+ betaald u
+ </string>
+ <string name="GroupMoneyPaidInto">
+ gestort
+ </string>
+ <string name="GroupMoneyBoughtPassTo">
+ bought pass to
+ </string>
+ <string name="GroupMoneyPaidFeeForEvent">
+ betaalde vergoeding voor evenement
+ </string>
+ <string name="GroupMoneyPaidPrizeForEvent">
+ betaalde prijs voor evenement
+ </string>
+ <string name="GroupMoneyBalance">
+ Banksaldo
+ </string>
+ <string name="GroupMoneyCredits">
+ Credits
+ </string>
+ <string name="GroupMoneyDebits">
+ Debiteert
+ </string>
+ <string name="ViewerObjectContents">
+ Inhoud
+ </string>
+ <string name="AcquiredItems">
+ Verworven objecten
+ </string>
+ <string name="Cancel">
+ Annuleren
+ </string>
+ <string name="UploadingCosts">
+ Uploading [%s] kosten
+ </string>
+ <string name="UnknownFileExtension">
+ Onbekende extensie [.%s]
+Verwacht .wav, .tga, .bmp, .jpg, .jpeg, or .bvh
+ </string>
+ <string name="AddLandmarkNavBarMenu">
+ Voeg Landmark toe...
+ </string>
+ <string name="EditLandmarkNavBarMenu">
+ Bewerk Landmark...
+ </string>
<string name="accel-mac-control">
- &#8963;
+ ⌃
</string>
<string name="accel-mac-command">
- &#8984;
+ ⌘
</string>
<string name="accel-mac-option">
- &#8997;
+ ⌥
</string>
<string name="accel-mac-shift">
- &#8679;
+ ⇧
</string>
<string name="accel-win-control">
Ctrl+
@@ -508,82 +1420,1790 @@
<string name="accel-win-shift">
Shift+
</string>
- <string name="GraphicsQualityLow">
- Laag
+ <string name="FileSaved">
+ Bestand Opgeslagen
</string>
- <string name="GraphicsQualityMid">
- Middel
+ <string name="Receiving">
+ Ontvangen
</string>
- <string name="GraphicsQualityHigh">
+ <string name="AM">
+ AM
+ </string>
+ <string name="PM">
+ PM
+ </string>
+ <string name="PST">
+ PST
+ </string>
+ <string name="PDT">
+ PDT
+ </string>
+ <string name="Forward">
+ Vooruit
+ </string>
+ <string name="Left">
+ Links
+ </string>
+ <string name="Right">
+ Rechts
+ </string>
+ <string name="Back">
+ Achteruit
+ </string>
+ <string name="North">
+ Noord
+ </string>
+ <string name="South">
+ Zuid
+ </string>
+ <string name="West">
+ West
+ </string>
+ <string name="East">
+ Oost
+ </string>
+ <string name="Up">
+ Omhoog
+ </string>
+ <string name="Down">
+ Omlaag
+ </string>
+ <string name="Any Category">
+ Elke Categorie
+ </string>
+ <string name="Shopping">
+ Boodschappen
+ </string>
+ <string name="Land Rental">
+ Land Verhuur
+ </string>
+ <string name="Property Rental">
+ Verhuur van onroerend goed
+ </string>
+ <string name="Special Attraction">
+ Speciale Attractie
+ </string>
+ <string name="New Products">
+ Nieuwe Producten
+ </string>
+ <string name="Employment">
+ Employment
+ </string>
+ <string name="Wanted">
+ Gezocht
+ </string>
+ <string name="Service">
+ Service
+ </string>
+ <string name="Personal">
+ Personal
+ </string>
+ <string name="None">
+ Geen
+ </string>
+ <string name="Linden Location">
+ Linden locatie
+ </string>
+ <string name="Adult">
+ Adult
+ </string>
+ <string name="Arts&amp;Culture">
+ Kunst &amp; Cultuur
+ </string>
+ <string name="Business">
+ Zakelijk
+ </string>
+ <string name="Educational">
+ Educatief
+ </string>
+ <string name="Gaming">
+ Spelen
+ </string>
+ <string name="Hangout">
+ Ontmoetingsplaats
+ </string>
+ <string name="Newcomer Friendly">
+ Nieuwkomervriendelijk
+ </string>
+ <string name="Parks&amp;Nature">
+ Parken &amp; natuur
+ </string>
+ <string name="Residential">
+ Woongebied
+ </string>
+ <string name="Stage">
+ Stage
+ </string>
+ <string name="Other">
+ Anders
+ </string>
+ <string name="Any">
+ Any
+ </string>
+ <string name="You">
+ Jij
+ </string>
+ <string name="Multiple Media">
+ Meerdere Media
+ </string>
+ <string name="Play Media">
+ Play/Pause Media
+ </string>
+ <string name="MBCmdLineError">
+ An error was found parsing the command line.
+Please see: http://wiki.secondlife.com/wiki/Client_parameters
+Error:
+ </string>
+ <string name="MBCmdLineUsg">
+ [APP_NAME] Command line usage:
+ </string>
+ <string name="MBUnableToAccessFile">
+ [APP_NAME] is unable to access a file that it needs.
+
+This can be because you somehow have multiple copies running, or your system incorrectly thinks a file is open.
+If this message persists, restart your computer and try again.
+If it continues to persist, you may need to completely uninstall [APP_NAME] and reinstall it.
+ </string>
+ <string name="MBFatalError">
+ Fatal Error
+ </string>
+ <string name="MBRequiresAltiVec">
+ [APP_NAME] requires a processor with AltiVec (G4 or later).
+ </string>
+ <string name="MBAlreadyRunning">
+ [APP_NAME] is already running.
+Check your task bar for a minimized copy of the program.
+If this message persists, restart your computer.
+ </string>
+ <string name="MBFrozenCrashed">
+ [APP_NAME] appears to have frozen or crashed on the previous run.
+Would you like to send a crash report?
+ </string>
+ <string name="MBAlert">
+ Alert
+ </string>
+ <string name="MBNoDirectX">
+ [APP_NAME] is unable to detect DirectX 9.0b or greater.
+[APP_NAME] uses DirectX to detect hardware and/or outdated drivers that can cause stability problems, poor performance and crashes. While you can run [APP_NAME] without it, we highly recommend running with DirectX 9.0b.
+
+Do you wish to continue?
+ </string>
+ <string name="MBWarning">
+ Warning
+ </string>
+ <string name="MBNoAutoUpdate">
+ Automatic updating is not yet implemented for Linux.
+Please download the latest version from www.secondlife.com.
+ </string>
+ <string name="MBRegClassFailed">
+ RegisterClass failed
+ </string>
+ <string name="MBError">
+ Error
+ </string>
+ <string name="MBFullScreenErr">
+ Unable to run fullscreen at [WIDTH] x [HEIGHT].
+Running in window.
+ </string>
+ <string name="MBDestroyWinFailed">
+ Shutdown Error while destroying window (DestroyWindow() failed)
+ </string>
+ <string name="MBShutdownErr">
+ Shutdown Error
+ </string>
+ <string name="MBDevContextErr">
+ Can&apos;t make GL device context
+ </string>
+ <string name="MBPixelFmtErr">
+ Can&apos;t find suitable pixel format
+ </string>
+ <string name="MBPixelFmtDescErr">
+ Can&apos;t get pixel format description
+ </string>
+ <string name="MBTrueColorWindow">
+ [APP_NAME] requires True Color (32-bit) to run.
+Please go to your computer&apos;s display settings and set the color mode to 32-bit.
+ </string>
+ <string name="MBAlpha">
+ [APP_NAME] is unable to run because it can&apos;t get an 8 bit alpha channel. Usually this is due to video card driver issues.
+Please make sure you have the latest video card drivers installed.
+Also be sure your monitor is set to True Color (32-bit) in Control Panels &gt; Display &gt; Settings.
+If you continue to receive this message, contact the [SUPPORT_SITE].
+ </string>
+ <string name="MBPixelFmtSetErr">
+ Can&apos;t set pixel format
+ </string>
+ <string name="MBGLContextErr">
+ Can&apos;t create GL rendering context
+ </string>
+ <string name="MBGLContextActErr">
+ Can&apos;t activate GL rendering context
+ </string>
+ <string name="MBVideoDrvErr">
+ [APP_NAME] is unable to run because your video card drivers did not install properly, are out of date, or are for unsupported hardware. Please make sure you have the latest video card drivers and even if you do have the latest, try reinstalling them.
+
+If you continue to receive this message, contact the [SUPPORT_SITE].
+ </string>
+ <string name="5 O&apos;Clock Shadow">
+ Stoppels
+ </string>
+ <string name="All White">
+ Alles Wit
+ </string>
+ <string name="Anime Eyes">
+ Ogen Animeren
+ </string>
+ <string name="Arced">
+ Gebogen
+ </string>
+ <string name="Arm Length">
+ Arm Lengte
+ </string>
+ <string name="Attached">
+ Bijgevoegt
+ </string>
+ <string name="Attached Earlobes">
+ Bijgevoegde Oorlellen
+ </string>
+ <string name="Back Bangs">
+ Achterkant Pony
+ </string>
+ <string name="Back Bangs Down">
+ Achterkant Pony Neer
+ </string>
+ <string name="Back Bangs Up">
+ Achterkant Pony Omhoog
+ </string>
+ <string name="Back Fringe">
+ Achterkant Franje
+ </string>
+ <string name="Back Hair">
+ Achterkant Haar
+ </string>
+ <string name="Back Hair Down">
+ Achterkant Haar Neer
+ </string>
+ <string name="Back Hair Up">
+ Achterkant Haar Omhoog
+ </string>
+ <string name="Baggy">
+ Oogwallen
+ </string>
+ <string name="Bangs">
+ Pony
+ </string>
+ <string name="Bangs Down">
+ Pony Neer
+ </string>
+ <string name="Bangs Up">
+ Pony Omhoog
+ </string>
+ <string name="Beady Eyes">
+ Kraaloogjes
+ </string>
+ <string name="Belly Size">
+ Buik Grootte
+ </string>
+ <string name="Big">
+ Groot
+ </string>
+ <string name="Big Butt">
+ Grote Kont
+ </string>
+ <string name="Big Eyeball">
+ Grote Oogbol
+ </string>
+ <string name="Big Hair Back">
+ Haar Volume Achter
+ </string>
+ <string name="Big Hair Front">
+ Haar Volume Voor
+ </string>
+ <string name="Big Hair Top">
+ Haar Volume Boven
+ </string>
+ <string name="Big Head">
+ Groot Hoofd
+ </string>
+ <string name="Big Pectorals">
+ Groote Borstspieren
+ </string>
+ <string name="Big Spikes">
+ Grote Stekels
+ </string>
+ <string name="Black">
+ Zwart
+ </string>
+ <string name="Blonde">
+ Blond
+ </string>
+ <string name="Blonde Hair">
+ Blond Haar
+ </string>
+ <string name="Blush">
+ Blozen
+ </string>
+ <string name="Blush Color">
+ Bloos Kleur
+ </string>
+ <string name="Blush Opacity">
+ Bloos Opaciteit
+ </string>
+ <string name="Body Definition">
+ Lichaam Definitie
+ </string>
+ <string name="Body Fat">
+ Lichaam vet
+ </string>
+ <string name="Body Freckles">
+ Lichaam Sproeten
+ </string>
+ <string name="Body Thick">
+ Lichaam Dik
+ </string>
+ <string name="Body Thickness">
+ Lichaam Dikte
+ </string>
+ <string name="Body Thin">
+ Lichaam Dun
+ </string>
+ <string name="Bow Legged">
+ Boog Benen
+ </string>
+ <string name="Breast Buoyancy">
+ Borst Drijfvermogen
+ </string>
+ <string name="Breast Cleavage">
+ Borst Splijting
+ </string>
+ <string name="Breast Size">
+ Borst Grootte
+ </string>
+ <string name="Bridge Width">
+ Brug Breedte
+ </string>
+ <string name="Broad">
+ Breed
+ </string>
+ <string name="Brow Size">
+ Wenkbrauw Grootte
+ </string>
+ <string name="Bug Eyes">
+ Insect Ogen
+ </string>
+ <string name="Bugged Eyes">
+ Insect Ogen
+ </string>
+ <string name="Bulbous">
+ Bolle
+ </string>
+ <string name="Bulbous Nose">
+ Bolle Neus
+ </string>
+ <string name="Bushy Eyebrows">
+ Borstelige Wenkbrauwen
+ </string>
+ <string name="Bushy Hair">
+ Borstelig Haar
+ </string>
+ <string name="Butt Size">
+ Kont Grootte
+ </string>
+ <string name="bustle skirt">
+ Bustle Skirt
+ </string>
+ <string name="no bustle">
+ No Bustle
+ </string>
+ <string name="more bustle">
+ More Bustle
+ </string>
+ <string name="Chaplin">
+ Smalle Snor
+ </string>
+ <string name="Cheek Bones">
+ Jukbeenderen
+ </string>
+ <string name="Chest Size">
+ Borst Grootte
+ </string>
+ <string name="Chin Angle">
+ Kin Hoek
+ </string>
+ <string name="Chin Cleft">
+ Gespleten Kin
+ </string>
+ <string name="Chin Curtains">
+ Kin Gordijnen
+ </string>
+ <string name="Chin Depth">
+ Kin Diepte
+ </string>
+ <string name="Chin Heavy">
+ Kin Zware
+ </string>
+ <string name="Chin In">
+ Kin In
+ </string>
+ <string name="Chin Out">
+ Kin uit
+ </string>
+ <string name="Chin-Neck">
+ Kin-Nek
+ </string>
+ <string name="Clear">
+ Opschonen
+ </string>
+ <string name="Cleft">
+ Gespleten
+ </string>
+ <string name="Close Set Eyes">
+ Close Set Eyes
+ </string>
+ <string name="Closed">
+ Gesloten
+ </string>
+ <string name="Closed Back">
+ Gesloten Achterkant
+ </string>
+ <string name="Closed Front">
+ Gesloten Voorkant
+ </string>
+ <string name="Closed Left">
+ Gesloten Links
+ </string>
+ <string name="Closed Right">
+ Gesloten Rechts
+ </string>
+ <string name="Coin Purse">
+ Verminder Grootte
+ </string>
+ <string name="Collar Back">
+ Kraag Achterkant
+ </string>
+ <string name="Collar Front">
+ Kraag Voorkant
+ </string>
+ <string name="Corner Down">
+ Hoek Omlaag
+ </string>
+ <string name="Corner Normal">
+ Hoek Normaal
+ </string>
+ <string name="Corner Up">
+ Hoek Omhoog
+ </string>
+ <string name="Creased">
+ Gevouwen
+ </string>
+ <string name="Crooked Nose">
+ Kromte Neus
+ </string>
+ <string name="Cropped Hair">
+ Bijgesneden Haar
+ </string>
+ <string name="Cuff Flare">
+ Cuff Flare
+ </string>
+ <string name="Dark">
+ Donker
+ </string>
+ <string name="Dark Green">
+ Donker Groen
+ </string>
+ <string name="Darker">
+ Donkerder
+ </string>
+ <string name="Deep">
+ Diep
+ </string>
+ <string name="Default Heels">
+ Standaard Hielen
+ </string>
+ <string name="Default Toe">
+ Standaard Teen
+ </string>
+ <string name="Dense">
+ Dicht
+ </string>
+ <string name="Dense hair">
+ Dicht haar
+ </string>
+ <string name="Double Chin">
+ Dubbele Kin
+ </string>
+ <string name="Downturned">
+ Downturned
+ </string>
+ <string name="Duffle Bag">
+ Vergroot Grootte
+ </string>
+ <string name="Ear Angle">
+ Oor Hoek
+ </string>
+ <string name="Ear Size">
+ Oor Grootte
+ </string>
+ <string name="Ear Tips">
+ Oor Punten
+ </string>
+ <string name="Egg Head">
+ Ei Hoofd
+ </string>
+ <string name="Eye Bags">
+ Oog Zakken
+ </string>
+ <string name="Eye Color">
+ Oog Kleur
+ </string>
+ <string name="Eye Depth">
+ Oog Diepte
+ </string>
+ <string name="Eye Lightness">
+ Oog Lichtheid
+ </string>
+ <string name="Eye Opening">
+ Oog Opening
+ </string>
+ <string name="Eye Pop">
+ Asymmetrisch
+ </string>
+ <string name="Eye Size">
+ Oog Grootte
+ </string>
+ <string name="Eye Spacing">
+ Oog Afstand
+ </string>
+ <string name="Eyeball Size">
+ Oogbal Grootte
+ </string>
+ <string name="Eyebrow Arc">
+ Wenkbrauw Boog
+ </string>
+ <string name="Eyebrow Density">
+ Wenkbrauw Dichtheid
+ </string>
+ <string name="Eyebrow Height">
+ Wenkbrauw Hoogte
+ </string>
+ <string name="Eyebrow Points">
+ Wenkbrauw Punten
+ </string>
+ <string name="Eyebrow Size">
+ Eyebrow Grootte
+ </string>
+ <string name="Eyelash Length">
+ Eyelash Lengte
+ </string>
+ <string name="Eyeliner">
+ Eyeliner
+ </string>
+ <string name="Eyeliner Color">
+ Eyeliner Kleur
+ </string>
+ <string name="Eyes Back">
+ Ogen Achteruit
+ </string>
+ <string name="Eyes Bugged">
+ Insect Ogen
+ </string>
+ <string name="Eyes Forward">
+ Ogen Vooruit
+ </string>
+ <string name="Eyes Long Head">
+ Eyes Long Head
+ </string>
+ <string name="Eyes Shear Left Up">
+ Eyes Shear Left Up
+ </string>
+ <string name="Eyes Shear Right Up">
+ Eyes Shear Right Up
+ </string>
+ <string name="Eyes Short Head">
+ Eyes Short Head
+ </string>
+ <string name="Eyes Spread">
+ Eyes Spread
+ </string>
+ <string name="Eyes Sunken">
+ Ingevallen Ogen
+ </string>
+ <string name="Eyes Together">
+ Ogen Bij Elkaar
+ </string>
+ <string name="Face Shear">
+ Gezicht Gelijkheid
+ </string>
+ <string name="Facial Definition">
+ Gezichts Definitie
+ </string>
+ <string name="Far Set Eyes">
+ Ogen Uit Elkaar
+ </string>
+ <string name="Fat">
+ Dik
+ </string>
+ <string name="Fat Head">
+ Dik Hoofd
+ </string>
+ <string name="Fat Lips">
+ Dikke Lippen
+ </string>
+ <string name="Fat Lower">
+ Fat Lower
+ </string>
+ <string name="Fat Lower Lip">
+ Fat Lower Lip
+ </string>
+ <string name="Fat Torso">
+ Fat Torso
+ </string>
+ <string name="Fat Upper">
+ Fat Upper
+ </string>
+ <string name="Fat Upper Lip">
+ Dikke Boven Lip
+ </string>
+ <string name="Female">
+ Vrouw
+ </string>
+ <string name="Fingerless">
+ Vingerloos
+ </string>
+ <string name="Fingers">
+ Vingers
+ </string>
+ <string name="Flared Cuffs">
+ Verbrede Vorm
+ </string>
+ <string name="Flat">
+ Plat
+ </string>
+ <string name="Flat Butt">
+ Platte Kont
+ </string>
+ <string name="Flat Head">
+ Plat Hoofd
+ </string>
+ <string name="Flat Toe">
+ Platte Teen
+ </string>
+ <string name="Foot Size">
+ Voet Grootte
+ </string>
+ <string name="Forehead Angle">
+ Voorhoofd Hoek
+ </string>
+ <string name="Forehead Heavy">
+ Zwaar Voorhoofd
+ </string>
+ <string name="Freckles">
+ Sproeten
+ </string>
+ <string name="Front Bangs Down">
+ Voorkant Pony Omlaag
+ </string>
+ <string name="Front Bangs Up">
+ Voorkant Pony Omhoog
+ </string>
+ <string name="Front Fringe">
+ Voorste Rand
+ </string>
+ <string name="Front Hair">
+ Gezichtshaar
+ </string>
+ <string name="Front Hair Down">
+ Gezichtshaar Omlaag
+ </string>
+ <string name="Front Hair Up">
+ Gezichtshaar Omhoog
+ </string>
+ <string name="Full Back">
+ Volle Achterkant
+ </string>
+ <string name="Full Eyeliner">
+ Volle Eyeliner
+ </string>
+ <string name="Full Front">
+ Volle Voorkant
+ </string>
+ <string name="Full Hair Sides">
+ Full Hair Sides
+ </string>
+ <string name="Full Sides">
+ Volle Zijkanten
+ </string>
+ <string name="Glossy">
+ Glanzend
+ </string>
+ <string name="Glove Fingers">
+ Vinger Handschoenen
+ </string>
+ <string name="Glove Length">
+ Handschoen Lengte
+ </string>
+ <string name="Hair">
+ Haar
+ </string>
+ <string name="Hair Back">
+ Haar: Zwart
+ </string>
+ <string name="Hair Front">
+ Haar: Voorkant
+ </string>
+ <string name="Hair Sides">
+ Haar: Zijkant
+ </string>
+ <string name="Hair Sweep">
+ Hair Sweep
+ </string>
+ <string name="Hair Thickess">
+ Haar Dikheid
+ </string>
+ <string name="Hair Thickness">
+ Hair Dikheid
+ </string>
+ <string name="Hair Tilt">
+ Hair Tilt
+ </string>
+ <string name="Hair Tilted Left">
+ Hair Tilted Left
+ </string>
+ <string name="Hair Tilted Right">
+ Hair Tilted Right
+ </string>
+ <string name="Hair Volume">
+ Haar: Volume
+ </string>
+ <string name="Hand Size">
+ Hand Grootte
+ </string>
+ <string name="Handlebars">
+ Handlebars
+ </string>
+ <string name="Head Length">
+ Hoofd Lengte
+ </string>
+ <string name="Head Shape">
+ Hoofd Vorm
+ </string>
+ <string name="Head Size">
+ Hooft Grootte
+ </string>
+ <string name="Head Stretch">
+ Hoofd Uitrekken
+ </string>
+ <string name="Heel Height">
+ Hiel Hoogte
+ </string>
+ <string name="Heel Shape">
+ Hiel Vorm
+ </string>
+ <string name="Height">
+ Hoogte
+ </string>
+ <string name="High">
Hoog
</string>
-
- <!-- PARCEL_CATEGORY_UI_STRING -->
- <string name="Linden Location">Linden locatie</string>
- <string name="Adult">Adult</string>
- <string name="Arts&amp;Culture">Kunst &amp; Cultuur</string>
- <string name="Business">Zakelijk</string>
- <string name="Educational">Educatief</string>
- <string name="Gaming">Spelen</string>
- <string name="Hangout">Ontmoetingsplaats</string>
- <string name="Newcomer Friendly">Nieuwkomervriendelijk</string>
- <string name="Parks&amp;Nature">Parken &amp; natuur</string>
- <string name="Residential">Woongebied</string>
- <string name="Shopping">Winkelen</string>
- <string name="Other">Anders</string>
-
- <string name="ringing">
- Verbinden met in-wereld voice chat...
+ <string name="High Heels">
+ Hoge Hielen
</string>
- <string name="connected">
- Verbonden
+ <string name="High Jaw">
+ Hoge Kaak
</string>
- <string name="unavailable">
- Voice is niet beschikbaar op uw huidige locatie
+ <string name="High Platforms">
+ High Platforms
</string>
- <string name="hang_up">
- Verbinding met in-wereld voicechat verbroken
+ <string name="High and Tight">
+ Hoog en Strak
+ </string>
+ <string name="Higher">
+ Hoger
+ </string>
+ <string name="Hip Length">
+ Heup Lengte
+ </string>
+ <string name="Hip Width">
+ Heup Breedte
+ </string>
+ <string name="In">
+ Naar Binnen
+ </string>
+ <string name="In Shdw Color">
+ Binnenste Schaduw Kleur
+ </string>
+ <string name="In Shdw Opacity">
+ Binnenste Schaduw Opaciteit
+ </string>
+ <string name="Inner Eye Corner">
+ Binnenste Oog Hoek
+ </string>
+ <string name="Inner Eye Shadow">
+ Binnenste Oog Schaduw
+ </string>
+ <string name="Inner Shadow">
+ Binnenste Schaduw
+ </string>
+ <string name="Jacket Length">
+ Jas Lengte
+ </string>
+ <string name="Jacket Wrinkles">
+ Jas Rimpels
+ </string>
+ <string name="Jaw Angle">
+ Kaak Hoek
+ </string>
+ <string name="Jaw Jut">
+ Jaw Jut
+ </string>
+ <string name="Jaw Shape">
+ Kaak Vorm
+ </string>
+ <string name="Join">
+ Samenvoegen
+ </string>
+ <string name="Jowls">
+ Kaken
+ </string>
+ <string name="Knee Angle">
+ Knie Hoek
+ </string>
+ <string name="Knock Kneed">
+ Knieën Naar binnen
+ </string>
+ <string name="Large">
+ Fors
+ </string>
+ <string name="Large Hands">
+ Grote Handen
+ </string>
+ <string name="Left Part">
+ Linker Deel
+ </string>
+ <string name="Leg Length">
+ Been Lengte
+ </string>
+ <string name="Leg Muscles">
+ Been Spieren
+ </string>
+ <string name="Less">
+ Minder
+ </string>
+ <string name="Less Body Fat">
+ Minder Lichaams Vet
+ </string>
+ <string name="Less Curtains">
+ Less Curtains
+ </string>
+ <string name="Less Freckles">
+ Minder Sproeten
+ </string>
+ <string name="Less Full">
+ Minder Vol
+ </string>
+ <string name="Less Gravity">
+ Minder Zwaartekracht
+ </string>
+ <string name="Less Love">
+ Less Love
+ </string>
+ <string name="Less Muscles">
+ Minder Spieren
+ </string>
+ <string name="Less Muscular">
+ Minder Spieren
+ </string>
+ <string name="Less Rosy">
+ Minder Rooskleurig
+ </string>
+ <string name="Less Round">
+ Minder Rond
+ </string>
+ <string name="Less Saddle">
+ Minder Heupen
+ </string>
+ <string name="Less Square">
+ Minder Vierkant
+ </string>
+ <string name="Less Volume">
+ Minder Volume
+ </string>
+ <string name="Less soul">
+ Minder Ziel
+ </string>
+ <string name="Lighter">
+ Lichter
+ </string>
+ <string name="Lip Cleft">
+ Gespleten Lip
+ </string>
+ <string name="Lip Cleft Depth">
+ Gespleten Lip Diepte
+ </string>
+ <string name="Lip Fullness">
+ Lip Volheid
+ </string>
+ <string name="Lip Pinkness">
+ Rozeheid Lippen
+ </string>
+ <string name="Lip Ratio">
+ Lip Ratio
+ </string>
+ <string name="Lip Thickness">
+ Lip Dikheid
+ </string>
+ <string name="Lip Width">
+ Lip Breedte
+ </string>
+ <string name="Lipgloss">
+ Lipgloss
+ </string>
+ <string name="Lipstick">
+ Lipstick
+ </string>
+ <string name="Lipstick Color">
+ Lipstick Kleur
+ </string>
+ <string name="Long">
+ Lang
+ </string>
+ <string name="Long Head">
+ Lang Hoofd
+ </string>
+ <string name="Long Hips">
+ Lange Heupen
+ </string>
+ <string name="Long Legs">
+ Lange Benen
+ </string>
+ <string name="Long Neck">
+ Lange Nek
+ </string>
+ <string name="Long Pigtails">
+ Long Pigtails
+ </string>
+ <string name="Long Ponytail">
+ Lange Paardenstaart
+ </string>
+ <string name="Long Torso">
+ Lang Torso
+ </string>
+ <string name="Long arms">
+ Lange Armen
+ </string>
+ <string name="Longcuffs">
+ Longcuffs
+ </string>
+ <string name="Loose Pants">
+ Losse Broek
+ </string>
+ <string name="Loose Shirt">
+ Los Shirt
+ </string>
+ <string name="Loose Sleeves">
+ Losse Mouwen
+ </string>
+ <string name="Love Handles">
+ Love Handles
+ </string>
+ <string name="Low">
+ Laag
+ </string>
+ <string name="Low Heels">
+ Lage Hielen
+ </string>
+ <string name="Low Jaw">
+ Lage Kaak
+ </string>
+ <string name="Low Platforms">
+ Lage Platforms
+ </string>
+ <string name="Low and Loose">
+ Laag en Los
+ </string>
+ <string name="Lower">
+ Lager
+ </string>
+ <string name="Lower Bridge">
+ Lagere Brug
+ </string>
+ <string name="Lower Cheeks">
+ Lagere Wangen
+ </string>
+ <string name="Male">
+ Man
+ </string>
+ <string name="Middle Part">
+ Middelste Deel
+ </string>
+ <string name="More">
+ Meer
+ </string>
+ <string name="More Blush">
+ Meer Blozen
+ </string>
+ <string name="More Body Fat">
+ Meer Lichaams Vet
+ </string>
+ <string name="More Curtains">
+ More Curtains
+ </string>
+ <string name="More Eyeshadow">
+ Meer Oogshadow
+ </string>
+ <string name="More Freckles">
+ Meer Sproeten
+ </string>
+ <string name="More Full">
+ Meer Vol
+ </string>
+ <string name="More Gravity">
+ Meer Zwaartekracht
+ </string>
+ <string name="More Lipstick">
+ Meer Lippenstift
+ </string>
+ <string name="More Love">
+ Meer Lovehandels
+ </string>
+ <string name="More Lower Lip">
+ Meer Onder Lip
+ </string>
+ <string name="More Muscles">
+ Meer Spieren
+ </string>
+ <string name="More Muscular">
+ Meer Spieren
+ </string>
+ <string name="More Rosy">
+ More Rosy
+ </string>
+ <string name="More Round">
+ Meer Rond
+ </string>
+ <string name="More Saddle">
+ Meer Heupen
+ </string>
+ <string name="More Sloped">
+ Meer Hellend
+ </string>
+ <string name="More Square">
+ Meer Vierkant
+ </string>
+ <string name="More Upper Lip">
+ Meer Boven Lip
+ </string>
+ <string name="More Vertical">
+ Meer Verticaal
+ </string>
+ <string name="More Volume">
+ Meer Volume
+ </string>
+ <string name="More soul">
+ Meer ziel
+ </string>
+ <string name="Moustache">
+ Snor
+ </string>
+ <string name="Mouth Corner">
+ Mond Hoek
+ </string>
+ <string name="Mouth Position">
+ Mond Positie
+ </string>
+ <string name="Mowhawk">
+ Hanekam
+ </string>
+ <string name="Muscular">
+ Gespiert
+ </string>
+ <string name="Mutton Chops">
+ Mutton Chops
+ </string>
+ <string name="Nail Polish">
+ Nagel Lak
+ </string>
+ <string name="Nail Polish Color">
+ Nagel Lak Kleur
+ </string>
+ <string name="Narrow">
+ Smal
+ </string>
+ <string name="Narrow Back">
+ Smalle Achterkant
+ </string>
+ <string name="Narrow Front">
+ Smalle Voorkant
+ </string>
+ <string name="Narrow Lips">
+ Smalle Lippen
+ </string>
+ <string name="Natural">
+ Natural
+ </string>
+ <string name="Neck Length">
+ Nek Lengte
+ </string>
+ <string name="Neck Thickness">
+ Nek Dikheid
+ </string>
+ <string name="No Blush">
+ Geen Bloos
+ </string>
+ <string name="No Eyeliner">
+ Geen Eyeliner
+ </string>
+ <string name="No Eyeshadow">
+ Geen Oogschaduw
+ </string>
+ <string name="No Heels">
+ Geen Hakken
+ </string>
+ <string name="No Lipgloss">
+ Geen Lipgloss
+ </string>
+ <string name="No Lipstick">
+ Geen Lippenstift
+ </string>
+ <string name="No Part">
+ Geen Deel
+ </string>
+ <string name="No Polish">
+ Geen Glans
+ </string>
+ <string name="No Red">
+ Geen Rood
+ </string>
+ <string name="No Spikes">
+ Geen Stekels
+ </string>
+ <string name="No White">
+ Geen Wit
+ </string>
+ <string name="No Wrinkles">
+ Geen Rimpels
+ </string>
+ <string name="Normal Lower">
+ Normaal Onder
+ </string>
+ <string name="Normal Upper">
+ Normaal Boven
+ </string>
+ <string name="Nose Left">
+ Neus Links
+ </string>
+ <string name="Nose Right">
+ Neus Rechts
+ </string>
+ <string name="Nose Size">
+ Neus Grootte
+ </string>
+ <string name="Nose Thickness">
+ Neus Dickheid
+ </string>
+ <string name="Nose Tip Angle">
+ Neus Top Hoek
+ </string>
+ <string name="Nose Tip Shape">
+ Neus Top Vorm
+ </string>
+ <string name="Nose Width">
+ Neus Breedte
+ </string>
+ <string name="Nostril Division">
+ Nostril Division
+ </string>
+ <string name="Nostril Width">
+ Neusgat Breedte
+ </string>
+ <string name="Old">
+ Oud
+ </string>
+ <string name="Opaque">
+ Ondoorzichtig
+ </string>
+ <string name="Open">
+ Open
+ </string>
+ <string name="Open Back">
+ Open Achterkant
+ </string>
+ <string name="Open Front">
+ Open Voorkant
+ </string>
+ <string name="Open Left">
+ Open Links
+ </string>
+ <string name="Open Right">
+ Open Rechts
+ </string>
+ <string name="Orange">
+ Oranje
+ </string>
+ <string name="Out">
+ Uit
+ </string>
+ <string name="Out Shdw Color">
+ Buitenste Schaduw Kleur
+ </string>
+ <string name="Out Shdw Opacity">
+ Buitenste Schaduw Opaciteit
+ </string>
+ <string name="Outer Eye Corner">
+ Buitenste Oog Hoek
+ </string>
+ <string name="Outer Eye Shadow">
+ Buitenste Oog Schaduw
+ </string>
+ <string name="Outer Shadow">
+ Buitenste Schaduw
+ </string>
+ <string name="Overbite">
+ Overbeet
+ </string>
+ <string name="Package">
+ Genitaliën
+ </string>
+ <string name="Painted Nails">
+ Gelakte Nagels
+ </string>
+ <string name="Pale">
+ Dof
+ </string>
+ <string name="Pants Crotch">
+ Broek Kruis
+ </string>
+ <string name="Pants Fit">
+ Broek Passend
+ </string>
+ <string name="Pants Length">
+ Broek Lengte
+ </string>
+ <string name="Pants Waist">
+ Broek Teille
+ </string>
+ <string name="Pants Wrinkles">
+ Broek Rimpels
+ </string>
+ <string name="Part">
+ Deel
+ </string>
+ <string name="Part Bangs">
+ Part Bangs
+ </string>
+ <string name="Pectorals">
+ Borstspieren
+ </string>
+ <string name="Pigment">
+ Pigment
+ </string>
+ <string name="Pigtails">
+ Pigtails
+ </string>
+ <string name="Pink">
+ Roze
+ </string>
+ <string name="Pinker">
+ Rozer
+ </string>
+ <string name="Platform Height">
+ Platform Hoogte
+ </string>
+ <string name="Platform Width">
+ Platform Breedte
+ </string>
+ <string name="Pointy">
+ Puntig
+ </string>
+ <string name="Pointy Heels">
+ Puntige Hielen
+ </string>
+ <string name="Pointy Toe">
+ Puntige Tenen
+ </string>
+ <string name="Ponytail">
+ Paardenstaard
+ </string>
+ <string name="Poofy Skirt">
+ Poofy Skirt
+ </string>
+ <string name="Pop Left Eye">
+ Asymmetrisch Links
+ </string>
+ <string name="Pop Right Eye">
+ Asymmetrisch Rechts
+ </string>
+ <string name="Puffy">
+ Opgezwollen
+ </string>
+ <string name="Puffy Eyelids">
+ Opgezwollen Oogleden
+ </string>
+ <string name="Rainbow Color">
+ Regenboog Kleur
+ </string>
+ <string name="Red Hair">
+ Rood Haar
+ </string>
+ <string name="Red Skin">
+ Rode Huid
+ </string>
+ <string name="Regular">
+ Normaal
+ </string>
+ <string name="Regular Muscles">
+ Normale Spieren
+ </string>
+ <string name="Right Part">
+ Rechter Deel
+ </string>
+ <string name="Rosy Complexion">
+ Rosy Complexion
+ </string>
+ <string name="Round">
+ Rond
+ </string>
+ <string name="Round Forehead">
+ Rond Voorhoofd
+ </string>
+ <string name="Ruddiness">
+ Rossige kleur
+ </string>
+ <string name="Ruddy">
+ Rossig
+ </string>
+ <string name="Rumpled Hair">
+ Rumpled Hair
+ </string>
+ <string name="Saddle Bags">
+ Saddle Bags
+ </string>
+ <string name="Saddlebags">
+ Saddlebags
+ </string>
+ <string name="Scrawny">
+ Magere
+ </string>
+ <string name="Scrawny Leg">
+ Mager Been
+ </string>
+ <string name="Separate">
+ Scheiden
+ </string>
+ <string name="Shading">
+ Shading
+ </string>
+ <string name="Shadow hair">
+ Schaduw Haar
+ </string>
+ <string name="Shallow">
+ Ondiep
+ </string>
+ <string name="Shear Back">
+ Shear Back
+ </string>
+ <string name="Shear Face">
+ Shear Face
+ </string>
+ <string name="Shear Front">
+ Shear Front
+ </string>
+ <string name="Shear Left">
+ Shear Left
+ </string>
+ <string name="Shear Left Up">
+ Shear Left Up
+ </string>
+ <string name="Shear Right">
+ Shear Right
+ </string>
+ <string name="Shear Right Up">
+ Shear Right Up
+ </string>
+ <string name="Sheared Back">
+ Sheared Back
+ </string>
+ <string name="Sheared Front">
+ Sheared Front
+ </string>
+ <string name="Shift Left">
+ Verplaats Links
+ </string>
+ <string name="Shift Mouth">
+ Verplaats Mond
+ </string>
+ <string name="Shift Right">
+ Verplaats Rechts
+ </string>
+ <string name="Shirt Bottom">
+ Hemd Onderkant
+ </string>
+ <string name="Shirt Fit">
+ Hemd Passend
+ </string>
+ <string name="Shirt Wrinkles">
+ Hemd Rimpels
+ </string>
+ <string name="Shoe Height">
+ Schoen Hoogte
+ </string>
+ <string name="Short">
+ Kort
+ </string>
+ <string name="Short Arms">
+ Korte Armen
+ </string>
+ <string name="Short Legs">
+ Korte Benen
+ </string>
+ <string name="Short Neck">
+ Korte Nek
+ </string>
+ <string name="Short Pigtails">
+ Short Pigtails
+ </string>
+ <string name="Short Ponytail">
+ Korte Paardenstaart
+ </string>
+ <string name="Short Sideburns">
+ Korte Bakkebaarden
+ </string>
+ <string name="Short Torso">
+ Korte Torso
+ </string>
+ <string name="Short hips">
+ Korte Heupen
+ </string>
+ <string name="Shoulders">
+ Shouders
+ </string>
+ <string name="Side Bangs">
+ Side Bangs
+ </string>
+ <string name="Side Bangs Down">
+ Side Bangs Down
+ </string>
+ <string name="Side Bangs Up">
+ Side Bangs Up
+ </string>
+ <string name="Side Fringe">
+ Side Fringe
+ </string>
+ <string name="Sideburns">
+ Bakkebaarden
+ </string>
+ <string name="Sides Hair">
+ Sides Hair
+ </string>
+ <string name="Sides Hair Down">
+ Sides Hair Down
+ </string>
+ <string name="Sides Hair Up">
+ Sides Hair Up
+ </string>
+ <string name="Skinny">
+ Broodmager
+ </string>
+ <string name="Skinny Neck">
+ Smalle Nek
+ </string>
+ <string name="Skirt Fit">
+ Skirt Fit
+ </string>
+ <string name="Skirt Length">
+ Rok Lengte
+ </string>
+ <string name="Slanted Forehead">
+ Schuin voorhoofd
+ </string>
+ <string name="Sleeve Length">
+ Mouw Lengte
+ </string>
+ <string name="Sleeve Looseness">
+ Mouw Losheid
+ </string>
+ <string name="Slit Back">
+ Spleet: Achter
+ </string>
+ <string name="Slit Front">
+ Spleet: Voor
+ </string>
+ <string name="Slit Left">
+ Spleet: Links
+ </string>
+ <string name="Slit Right">
+ Spleet: Rechts
+ </string>
+ <string name="Small">
+ Klein
+ </string>
+ <string name="Small Hands">
+ Kleine Handen
+ </string>
+ <string name="Small Head">
+ Klein Hoofd
+ </string>
+ <string name="Smooth">
+ Glad
+ </string>
+ <string name="Smooth Hair">
+ Glad Haar
+ </string>
+ <string name="Socks Length">
+ Sok Lengte
+ </string>
+ <string name="Some">
+ enkele
+ </string>
+ <string name="Soulpatch">
+ Soulpatch
+ </string>
+ <string name="Sparse">
+ Schaars
+ </string>
+ <string name="Spiked Hair">
+ Puntig Haar
+ </string>
+ <string name="Square">
+ Vierkant
+ </string>
+ <string name="Square Toe">
+ Vierkante Teen
+ </string>
+ <string name="Squash Head">
+ Squash Head
+ </string>
+ <string name="Squash/Stretch Head">
+ Squash/Stretch Head
+ </string>
+ <string name="Stretch Head">
+ Uitgerekt Hoofd
+ </string>
+ <string name="Sunken">
+ Verzonken
+ </string>
+ <string name="Sunken Chest">
+ Verzonken Borstkas
+ </string>
+ <string name="Sunken Eyes">
+ Verzonken Ogen
+ </string>
+ <string name="Sweep Back">
+ Sweep Back
+ </string>
+ <string name="Sweep Forward">
+ Sweep Forward
+ </string>
+ <string name="Swept Back">
+ Swept Back
+ </string>
+ <string name="Swept Back Hair">
+ Swept Back Hair
+ </string>
+ <string name="Swept Forward">
+ Swept Forward
+ </string>
+ <string name="Swept Forward Hair">
+ Swept Forward Hair
+ </string>
+ <string name="Tall">
+ Lang
+ </string>
+ <string name="Taper Back">
+ Spits Achter
+ </string>
+ <string name="Taper Front">
+ Spits Voor
+ </string>
+ <string name="Thick Heels">
+ Dikke Hielen
+ </string>
+ <string name="Thick Neck">
+ Dikke Nek
+ </string>
+ <string name="Thick Toe">
+ Dikke Teen
+ </string>
+ <string name="Thickness">
+ Dikheid
+ </string>
+ <string name="Thin">
+ Dun
+ </string>
+ <string name="Thin Eyebrows">
+ Dunne Wenkbrouwen
+ </string>
+ <string name="Thin Lips">
+ Dunne Lippen
+ </string>
+ <string name="Thin Nose">
+ Dunne Neus
+ </string>
+ <string name="Tight Chin">
+ Strakke Kin
+ </string>
+ <string name="Tight Cuffs">
+ Strakke Manchetten
+ </string>
+ <string name="Tight Pants">
+ Strakke Broek
+ </string>
+ <string name="Tight Shirt">
+ Strak Hemd
+ </string>
+ <string name="Tight Skirt">
+ Strakke Rok
+ </string>
+ <string name="Tight Sleeves">
+ Strakke Mouwen
+ </string>
+ <string name="Tilt Left">
+ Tilt Left
+ </string>
+ <string name="Tilt Right">
+ Tilt Right
+ </string>
+ <string name="Toe Shape">
+ Teen Vorm
+ </string>
+ <string name="Toe Thickness">
+ Teen Dikheid
+ </string>
+ <string name="Torso Length">
+ Borstkas Lengte
+ </string>
+ <string name="Torso Muscles">
+ Borstkas Spieren
+ </string>
+ <string name="Torso Scrawny">
+ Magere Borstkas
+ </string>
+ <string name="Unattached">
+ Niet Verbonden
+ </string>
+ <string name="Uncreased">
+ Uncreased
+ </string>
+ <string name="Underbite">
+ onderbeet
+ </string>
+ <string name="Unnatural">
+ Onnatuurlijk
+ </string>
+ <string name="Upper Bridge">
+ Boven Brug
+ </string>
+ <string name="Upper Cheeks">
+ Bovenste Wangen
+ </string>
+ <string name="Upper Chin Cleft">
+ Bovenste Kin Gespleten
+ </string>
+ <string name="Upper Eyelid Fold">
+ Bovenste Ooglid Gevouwen
+ </string>
+ <string name="Upturned">
+ Omgekeerde
+ </string>
+ <string name="Very Red">
+ Erg Rood
+ </string>
+ <string name="Waist Height">
+ Taille Hoogte
+ </string>
+ <string name="Well-Fed">
+ Goed Gevoed
+ </string>
+ <string name="White Hair">
+ Wit Haar
+ </string>
+ <string name="Wide">
+ Breed
+ </string>
+ <string name="Wide Back">
+ Breede Achterkant
+ </string>
+ <string name="Wide Front">
+ Breed Voorkant
+ </string>
+ <string name="Wide Lips">
+ Breed Lippen
+ </string>
+ <string name="Wild">
+ Wild
+ </string>
+ <string name="Wrinkles">
+ Rimpels
+ </string>
+ <string name="LocationCtrlAddLandmarkTooltip">
+ Add to My Landmarks
+ </string>
+ <string name="LocationCtrlEditLandmarkTooltip">
+ Edit My Landmark
+ </string>
+ <string name="LocationCtrlInfoBtnTooltip">
+ See more info about the current location
+ </string>
+ <string name="LocationCtrlComboBtnTooltip">
+ My location history
+ </string>
+ <string name="UpdaterWindowTitle">
+ [APP_NAME] Update
+ </string>
+ <string name="UpdaterNowUpdating">
+ Now updating [APP_NAME]...
+ </string>
+ <string name="UpdaterNowInstalling">
+ Installing [APP_NAME]...
+ </string>
+ <string name="UpdaterUpdatingDescriptive">
+ Your [APP_NAME] Viewer is being updated to the latest release. This may take some time, so please be patient.
+ </string>
+ <string name="UpdaterProgressBarTextWithEllipses">
+ Downloading update...
+ </string>
+ <string name="UpdaterProgressBarText">
+ Downloading update
+ </string>
+ <string name="UpdaterFailDownloadTitle">
+ Failed to download update
+ </string>
+ <string name="UpdaterFailUpdateDescriptive">
+ An error occurred while updating [APP_NAME]. Please download the latest version from www.secondlife.com.
+ </string>
+ <string name="UpdaterFailInstallTitle">
+ Failed to install update
+ </string>
+ <string name="UpdaterFailStartTitle">
+ Failed to start viewer
+ </string>
+ <string name="IM_logging_string">
+ -- Instant message logging enabled --
+ </string>
+ <string name="IM_typing_start_string">
+ [NAME] is typing...
+ </string>
+ <string name="Unnamed">
+ (Unnamed)
+ </string>
+ <string name="IM_moderated_chat_label">
+ (Moderated: Voices off by default)
+ </string>
+ <string name="IM_unavailable_text_label">
+ Text chat is not available for this call.
+ </string>
+ <string name="IM_muted_text_label">
+ Your text chat has been disabled by a Group Moderator.
+ </string>
+ <string name="IM_default_text_label">
+ Click here to instant message.
+ </string>
+ <string name="IM_to_label">
+ To
+ </string>
+ <string name="IM_moderator_label">
+ (Moderator)
</string>
- <string name="ScriptQuestionCautionChatGranted">
- &apos;[OBJECTNAME]&apos;, een object van &apos;[OWNERNAME]&apos;, gevestigd in [REGIONNAME] op [REGIONPOS], is toestemming verleend om te: [PERMISSIONS].
- </string>
- <string name="ScriptQuestionCautionChatDenied">
- &apos;[OBJECTNAME]&apos;, een object van &apos;[OWNERNAME]&apos;, gevestigd in [REGIONNAME] op [REGIONPOS], is toestemming geweigerd om te: [PERMISSIONS].
- </string>
- <string name="ScriptTakeMoney">
- Linden dollars (L$) van u wegnemen
- </string>
- <string name="ActOnControlInputs">
- Acteren op uw bedieningsinvoer
- </string>
- <string name="RemapControlInputs">
- Uw bedieningsinvoer herdefiniëren
- </string>
- <string name="AnimateYourAvatar">
- Animeer uw avatar
- </string>
- <string name="AttachToYourAvatar">
- Bevestig aan uw avatar
- </string>
- <string name="ReleaseOwnership">
- Eigendom vrijgeven en openbaar worden
- </string>
- <string name="LinkAndDelink">
- Koppelen met en ontkoppelen van andere objecten
- </string>
- <string name="AddAndRemoveJoints">
- Toevoegen en verwijderen koppelingen met andere objecten
- </string>
- <string name="ChangePermissions">
- Wijzig zijn permissies
- </string>
- <string name="TrackYourCamera">
- Volg uw camera
- </string>
- <string name="ControlYourCamera">
- Bedien uw camera
- </string>
-
<string name="only_user_message">
U bent de enige gebruiker in deze sessie.
</string>
@@ -626,31 +3246,4 @@
<string name="close_on_no_ability">
U heeft niet langer de mogelijkheid om in deze chatsessie te zijn.
</string>
- <string name="AcctTypeResident">
- Inwoner
- </string>
- <string name="AcctTypeTrial">
- Proef
- </string>
- <string name="AcctTypeCharterMember">
- Charter lid
- </string>
- <string name="AcctTypeEmployee">
- Linden Lab werknemer
- </string>
- <string name="PaymentInfoUsed">
- Betalingsinformatie gebruikt
- </string>
- <string name="PaymentInfoOnFile">
- Betalingsinformatie aanwezig
- </string>
- <string name="NoPaymentInfoOnFile">
- Geen betalingsinfo aanwezig
- </string>
- <string name="AgeVerified">
- Leeftijd geverifieerd
- </string>
- <string name="NotAgeVerified">
- Leeftijd niet geverifieerd
- </string>
</strings>
diff --git a/indra/newview/skins/default/xui/nl/teleport_strings.xml b/indra/newview/skins/default/xui/nl/teleport_strings.xml
index ff43e0f32f..12a81447c0 100644
--- a/indra/newview/skins/default/xui/nl/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/nl/teleport_strings.xml
@@ -2,12 +2,12 @@
<teleport_messages>
<message_set name="errors">
<message name="invalid_tport">
- Er is een probleem opgetreden bij het verwerken van uw verzoek voor een teleport. U dient wellicht opnieuw in te loggen voor uw kunt teleporteren. Wanneer u deze boodschap blijft ontvangen, controleert u dan alstublieft de Tech Support FAQ op:
-www.secondlife.com/support
+ Probleem ondervonden bij het verwerken van uw verzoek voor een teleport. Het kan nodig zijn om opnieuw in te loggen voordat u kunt teleporteren.
+Als u dit bericht blijft krijgen, controleert u dan alstublieft [SUPPORT_SITE].
</message>
<message name="invalid_region_handoff">
- Er is een probleem opgetreden bij het oversteken naar een andere regio. U dient wellicht opnieuw in te loggen voor uw kunt oversteken naar andere regio&apos;s. Wanneer u deze boodschap blijft ontvangen, controleert u dan alstublieft de Tech Support FAQ op:
-www.secondlife.com/support
+ Er is een probleem opgetreden bij het oversteken naar een andere regio. U dient wellicht opnieuw in te loggen voor uw kunt oversteken naar andere regio&apos;s.
+Als u dit bericht blijft krijgen, controleert u dan alstublieft [SUPPORT_SITE].
</message>
<message name="blocked_tport">
Sorry, teleport is momenteel geblokkeerd. Probeer het zo meteen opnieuw. Indien u nog steeds niet kunt teleporteren, log dan alstublieft uit en weer in om het probleem te verhelpen.
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml b/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml
index b69efeb77e..04372208d6 100644
--- a/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Dźwięki" name="Preference Media panel">
<slider label="Główny" name="System Volume"/>
- <check_box initial_value="true" label="Wycisz dzwięk podczas minimalizacji okna" name="mute_when_minimized"/>
+ <check_box initial_value="true" label="Wycisz podczas minimalizacji" name="mute_when_minimized"/>
<slider label="Interfejs" name="UI Volume"/>
<slider label="Otoczenie" name="Wind Volume"/>
<slider label="Efekty dźwiękowe" name="SFX Volume"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/pt/floater_inventory_view_finder.xml
index 57cdd50dcc..d21e574011 100644
--- a/indra/newview/skins/default/xui/pt/floater_inventory_view_finder.xml
+++ b/indra/newview/skins/default/xui/pt/floater_inventory_view_finder.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Inventory Finder" title="ITENS_DE_INVENTÁRIO_RECENTES" width="165">
+<floater name="Inventory Finder" title="ITENS_DE_INVENTÁRIO_RECENTES">
<check_box label="Animação" name="check_animation"/>
<check_box label="Cartões de chamadas" name="check_calling_card"/>
<check_box label="Roupas" name="check_clothing"/>
@@ -13,8 +13,8 @@
<check_box label="Fotos" name="check_snapshot"/>
<button label="Tudo" label_selected="Tudo" name="All"/>
<button label="Nenhum" label_selected="Nenhum" name="None"/>
- <check_box label="Sempre mostrar as pastas" name="check_show_empty" left="3"/>
- <check_box label="Desde o Logoff" name="check_since_logoff" left="3"/>
+ <check_box label="Sempre mostrar as pastas" name="check_show_empty"/>
+ <check_box label="Desde o Logoff" name="check_since_logoff"/>
<text name="- OR -">
- OU -
</text>
diff --git a/indra/newview/skins/default/xui/pt/floater_preferences.xml b/indra/newview/skins/default/xui/pt/floater_preferences.xml
index 2736900d5f..2c76a72ca8 100644
--- a/indra/newview/skins/default/xui/pt/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/pt/floater_preferences.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater min_width="332" name="Preferences" title="PREFERÊNCIAS" width="628">
+<floater name="Preferences" title="PREFERÊNCIAS">
<button label="OK" label_selected="OK" name="OK"/>
<button label="Cancelar" label_selected="Cancelar" name="Cancel"/>
- <tab_container name="pref core" tab_width="128" width="628">
+ <tab_container name="pref core">
<panel label="Geral" name="general"/>
<panel label="Vídeo" name="display"/>
<panel label="Privacidade" name="im"/>
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml
index 121272bf6c..eb38323940 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml
@@ -48,12 +48,12 @@ rápido
<check_box initial_value="true" label="Atributos do Avatar" name="AvatarImpostors"/>
<check_box initial_value="true" label="Melhoria de Hardware" name="AvatarVertexProgram"/>
<check_box initial_value="true" label="Vestimenta do Avatar" name="AvatarCloth"/>
- <slider label="Distancia de desenho:" label_width="150" name="DrawDistance" width="255"/>
+ <slider label="Distancia de desenho:" name="DrawDistance"/>
<text name="DrawDistanceMeterText2">
m
</text>
- <slider label="Contador máx. de partículas:" label_width="150" name="MaxParticleCount" width="262"/>
- <slider label="Qualidade de Pós-processamento:" label_width="178" name="RenderPostProcess" width="223"/>
+ <slider label="Contador máx. de partículas:" name="MaxParticleCount"/>
+ <slider label="Qualidade de Pós-processamento:" name="RenderPostProcess"/>
<text name="MeshDetailText">
Detalhes de Malha:
</text>
@@ -94,13 +94,13 @@ rápido
<text name="TerrainDetailText">
Detalhe do Terreno:
</text>
- <radio_group left_delta="45" name="TerrainDetailRadio" width="276">
+ <radio_group left_delta="45" name="TerrainDetailRadio">
<radio_item label="Baixo" name="0"/>
<radio_item label="Alto" name="2"/>
</radio_group>
</panel>
<button label="Aplicar" label_selected="Aplicar" name="Apply"/>
- <button label="Redefinir" left="110" name="Defaults" width="190"/>
+ <button label="Redefinir" left="110" name="Defaults"/>
<button label="Avançado" name="Advanced"/>
<button label="Hardware" label_selected="Hardware" name="GraphicsHardwareButton"/>
</panel>
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 659ce4a47b..99dfc07cd5 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -276,8 +276,12 @@ class WindowsManifest(ViewerManifest):
self.disable_manifest_check()
# Mesh 3rd party libs needed for auto LOD and collada reading
- self.path("libcollada14dom21.dll")
- self.path("glod.dll")
+ try:
+ self.path("libcollada14dom21.dll")
+ self.path("glod.dll")
+ except RuntimeError, err:
+ print err.message
+ print "Skipping COLLADA and GLOD libraries (assumming linked statically)"
# For textures
if self.args['configuration'].lower() == 'debug':