summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorTofu Linden <tofu.linden@lindenlab.com>2010-08-24 18:44:39 +0100
committerTofu Linden <tofu.linden@lindenlab.com>2010-08-24 18:44:39 +0100
commit98cc2365034a93c69704daa69efb389799cc9627 (patch)
tree4c3ec75b78a26a736f18a2153af025040ae05a4b /indra
parent6ba23344c95157793af9e4154933ae8df61630e8 (diff)
Backed out changeset a62bf7c0af21
Backing out this merge that I pushed (prematurely) to the wrong place.
Diffstat (limited to 'indra')
-rw-r--r--indra/cmake/ViewerMiscLibs.cmake7
-rw-r--r--indra/llcommon/lldarray.h2
-rw-r--r--indra/llcommon/llstrider.h2
-rw-r--r--indra/llcommon/llversionserver.h2
-rw-r--r--indra/llcrashlogger/llcrashlogger.cpp2
-rw-r--r--indra/llinventory/llparcel.cpp1
-rw-r--r--indra/llmath/llvolume.cpp93
-rw-r--r--indra/llmessage/llhttpclient.cpp11
-rw-r--r--indra/llmessage/llpumpio.cpp7
-rw-r--r--indra/llmessage/llurlrequest.cpp5
-rw-r--r--indra/llmessage/llurlrequest.h5
-rw-r--r--indra/llprimitive/llprimitive.h1
-rw-r--r--indra/llrender/llfontfreetype.cpp6
-rw-r--r--indra/llrender/llfontfreetype.h4
-rw-r--r--indra/llrender/llfontgl.cpp213
-rw-r--r--indra/llrender/llfontgl.h4
-rw-r--r--indra/llrender/llgl.cpp89
-rw-r--r--indra/llrender/llgl.h9
-rw-r--r--indra/llrender/llglheaders.h22
-rw-r--r--indra/llrender/llimagegl.cpp101
-rw-r--r--indra/llrender/llimagegl.h2
-rw-r--r--indra/llrender/llrender.cpp138
-rw-r--r--indra/llrender/llrender.h18
-rw-r--r--indra/llrender/llvertexbuffer.cpp5
-rw-r--r--indra/llui/llaccordionctrl.h2
-rw-r--r--indra/llui/llaccordionctrltab.cpp3
-rw-r--r--indra/llui/llaccordionctrltab.h2
-rw-r--r--indra/llui/llbutton.cpp12
-rw-r--r--indra/llui/llbutton.h1
-rw-r--r--indra/llui/llcallbackmap.h3
-rw-r--r--indra/llui/lldockablefloater.cpp17
-rw-r--r--indra/llui/lldockablefloater.h7
-rw-r--r--indra/llui/lldraghandle.cpp2
-rw-r--r--indra/llui/llflatlistview.cpp28
-rw-r--r--indra/llui/llflatlistview.h1
-rw-r--r--indra/llui/llfloater.cpp14
-rw-r--r--indra/llui/llfloater.h3
-rw-r--r--indra/llui/lllocalcliprect.cpp48
-rw-r--r--indra/llui/lllocalcliprect.h26
-rw-r--r--indra/llui/llmenugl.cpp6
-rw-r--r--indra/llui/llpanel.cpp66
-rw-r--r--indra/llui/llpanel.h4
-rw-r--r--indra/llui/llscrolllistctrl.cpp8
-rw-r--r--indra/llui/llscrolllistctrl.h4
-rw-r--r--indra/llui/llsliderctrl.cpp4
-rw-r--r--indra/llui/llstyle.cpp12
-rw-r--r--indra/llui/llstyle.h37
-rw-r--r--indra/llui/lltextbase.cpp121
-rw-r--r--indra/llui/lltextbase.h29
-rw-r--r--indra/llui/lltextbox.cpp11
-rw-r--r--indra/llui/lltextbox.h2
-rw-r--r--indra/llui/lltexteditor.cpp10
-rw-r--r--indra/llui/lltextvalidate.cpp18
-rw-r--r--indra/llui/lltextvalidate.h1
-rw-r--r--indra/llui/lltooltip.cpp2
-rw-r--r--indra/llui/llui.cpp400
-rw-r--r--indra/llui/llui.h2
-rw-r--r--indra/llui/lluictrl.cpp1
-rw-r--r--indra/llui/lluictrl.h4
-rw-r--r--indra/llui/llurlentry.cpp19
-rw-r--r--indra/llui/llurlentry.h5
-rw-r--r--indra/llui/llurlmatch.cpp6
-rw-r--r--indra/llui/llurlmatch.h6
-rw-r--r--indra/llui/llurlregistry.cpp6
-rw-r--r--indra/llui/llview.cpp62
-rw-r--r--indra/llui/llview.h7
-rw-r--r--indra/llwindow/llkeyboard.cpp7
-rw-r--r--indra/llxuixml/lltrans.h11
-rw-r--r--indra/newview/CMakeLists.txt8
-rw-r--r--indra/newview/ViewerInstall.cmake4
-rw-r--r--indra/newview/app_settings/high_graphics.xml11
-rw-r--r--indra/newview/app_settings/low_graphics.xml11
-rw-r--r--indra/newview/app_settings/mid_graphics.xml11
-rw-r--r--indra/newview/app_settings/settings.xml194
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl11
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl25
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl25
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/avatarF.glsl3
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl4
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl23
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/bumpF.glsl14
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl10
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl11
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/giF.glsl3
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl3
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl4
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl103
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl3
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl9
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl99
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl14
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl191
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl124
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl3
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/treeF.glsl3
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/waterF.glsl14
-rw-r--r--indra/newview/app_settings/shaders/class1/lighting/lightFuncV.glsl9
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl11
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl24
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl25
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/blurLightF.glsl3
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/edgeF.glsl11
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl64
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl86
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl18
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl80
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl257
-rw-r--r--indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl9
-rw-r--r--indra/newview/app_settings/shaders/class3/deferred/giDownsampleF.glsl10
-rw-r--r--indra/newview/app_settings/shaders/class3/deferred/giF.glsl3
-rw-r--r--indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl77
-rw-r--r--indra/newview/app_settings/shaders/class3/deferred/treeF.glsl3
-rw-r--r--indra/newview/app_settings/shaders/class3/lighting/sumLightsV.glsl27
-rw-r--r--indra/newview/app_settings/ultra_graphics.xml13
-rw-r--r--indra/newview/featuretable.txt54
-rw-r--r--indra/newview/featuretable_linux.txt86
-rw-r--r--indra/newview/featuretable_mac.txt1
-rw-r--r--indra/newview/llagent.cpp4
-rw-r--r--indra/newview/llagentcamera.cpp18
-rw-r--r--indra/newview/llagentwearables.cpp15
-rw-r--r--indra/newview/llagentwearablesfetch.cpp2
-rw-r--r--indra/newview/llappearancemgr.cpp147
-rw-r--r--indra/newview/llappearancemgr.h8
-rw-r--r--indra/newview/llappviewer.cpp74
-rw-r--r--indra/newview/llavatarlist.cpp4
-rw-r--r--indra/newview/llavatarlist.h2
-rw-r--r--indra/newview/llavatarlistitem.cpp6
-rw-r--r--indra/newview/llbottomtray.cpp2
-rw-r--r--indra/newview/llcallfloater.cpp10
-rw-r--r--indra/newview/llchatbar.cpp4
-rw-r--r--indra/newview/llchathistory.cpp5
-rw-r--r--indra/newview/llcofwearables.cpp24
-rw-r--r--indra/newview/llcofwearables.h2
-rw-r--r--indra/newview/llcompilequeue.cpp4
-rw-r--r--indra/newview/llcurrencyuimanager.cpp28
-rw-r--r--indra/newview/lldrawable.cpp2
-rw-r--r--indra/newview/lldrawpool.cpp1
-rw-r--r--indra/newview/lldrawpool.h1
-rw-r--r--indra/newview/lldrawpoolalpha.cpp185
-rw-r--r--indra/newview/lldrawpoolalpha.h7
-rw-r--r--indra/newview/lldrawpoolavatar.cpp31
-rw-r--r--indra/newview/lldrawpoolavatar.h4
-rw-r--r--indra/newview/lldrawpoolbump.cpp116
-rw-r--r--indra/newview/lldrawpoolbump.h16
-rw-r--r--indra/newview/lldrawpoolsimple.cpp7
-rw-r--r--indra/newview/lldynamictexture.cpp22
-rw-r--r--indra/newview/llexpandabletextbox.cpp11
-rw-r--r--indra/newview/llface.cpp65
-rw-r--r--indra/newview/llface.h5
-rw-r--r--indra/newview/llfloateranimpreview.cpp304
-rw-r--r--indra/newview/llfloateranimpreview.h28
-rw-r--r--indra/newview/llfloaterauction.cpp35
-rw-r--r--indra/newview/llfloateravatarpicker.cpp44
-rw-r--r--indra/newview/llfloaterbuy.cpp8
-rw-r--r--indra/newview/llfloaterbuycontents.cpp24
-rw-r--r--indra/newview/llfloaterbuycurrency.cpp80
-rw-r--r--indra/newview/llfloaterbuyland.cpp104
-rw-r--r--indra/newview/llfloatercamera.cpp50
-rw-r--r--indra/newview/llfloatercamera.h6
-rw-r--r--indra/newview/llfloatercolorpicker.cpp12
-rw-r--r--indra/newview/llfloaterdaycycle.cpp4
-rw-r--r--indra/newview/llfloaterenvsettings.cpp32
-rw-r--r--indra/newview/llfloaterevent.cpp32
-rw-r--r--indra/newview/llfloatergesture.cpp12
-rw-r--r--indra/newview/llfloatergodtools.cpp272
-rw-r--r--indra/newview/llfloatergroups.cpp31
-rw-r--r--indra/newview/llfloaterhardwaresettings.cpp14
-rw-r--r--indra/newview/llfloaterhelpbrowser.cpp4
-rw-r--r--indra/newview/llfloaterimagepreview.cpp12
-rw-r--r--indra/newview/llfloaterinspect.cpp8
-rw-r--r--indra/newview/llfloaterjoystick.cpp6
-rw-r--r--indra/newview/llfloaterlagmeter.cpp18
-rw-r--r--indra/newview/llfloaterland.cpp173
-rw-r--r--indra/newview/llfloaterland.h5
-rw-r--r--indra/newview/llfloaterlandholdings.cpp10
-rw-r--r--indra/newview/llfloatermediabrowser.cpp34
-rw-r--r--indra/newview/llfloatermemleak.cpp20
-rw-r--r--indra/newview/llfloaternamedesc.cpp10
-rw-r--r--indra/newview/llfloateropenobject.cpp8
-rw-r--r--indra/newview/llfloaterparcel.cpp122
-rw-r--r--indra/newview/llfloaterparcel.h53
-rw-r--r--indra/newview/llfloaterpay.cpp66
-rw-r--r--indra/newview/llfloaterpostcard.cpp42
-rw-r--r--indra/newview/llfloaterpostprocess.cpp34
-rw-r--r--indra/newview/llfloaterpreference.cpp195
-rw-r--r--indra/newview/llfloaterproperties.cpp180
-rw-r--r--indra/newview/llfloaterregioninfo.cpp421
-rw-r--r--indra/newview/llfloaterregioninfo.h26
-rw-r--r--indra/newview/llfloaterreporter.cpp104
-rw-r--r--indra/newview/llfloaterscriptlimits.cpp42
-rw-r--r--indra/newview/llfloatersearch.cpp8
-rw-r--r--indra/newview/llfloatersellland.cpp70
-rw-r--r--indra/newview/llfloatersettingsdebug.cpp58
-rw-r--r--indra/newview/llfloatersnapshot.cpp290
-rw-r--r--indra/newview/llfloatertelehub.cpp26
-rw-r--r--indra/newview/llfloatertools.cpp72
-rw-r--r--indra/newview/llfloatertopobjects.cpp18
-rw-r--r--indra/newview/llfloatertos.cpp4
-rw-r--r--indra/newview/llfloateruipreview.cpp4
-rw-r--r--indra/newview/llfloaterurldisplay.cpp103
-rw-r--r--indra/newview/llfloaterurldisplay.h58
-rw-r--r--indra/newview/llfloaterurlentry.cpp14
-rw-r--r--indra/newview/llfloatervoicedevicesettings.cpp2
-rw-r--r--indra/newview/llfloatervoiceeffect.cpp2
-rw-r--r--indra/newview/llfloaterwater.cpp42
-rw-r--r--indra/newview/llfloaterwindlight.cpp132
-rw-r--r--indra/newview/llfloaterworldmap.cpp82
-rw-r--r--indra/newview/llfolderview.cpp67
-rw-r--r--indra/newview/llfolderview.h6
-rw-r--r--indra/newview/llfriendcard.cpp11
-rw-r--r--indra/newview/llgrouplist.cpp14
-rw-r--r--indra/newview/llimview.cpp68
-rw-r--r--indra/newview/llimview.h3
-rw-r--r--indra/newview/llinspectavatar.cpp4
-rw-r--r--indra/newview/llinspectgroup.cpp2
-rw-r--r--indra/newview/llinventorybridge.cpp76
-rw-r--r--indra/newview/llinventorybridge.h3
-rw-r--r--indra/newview/llinventoryfunctions.cpp18
-rw-r--r--indra/newview/llinventoryfunctions.h1
-rw-r--r--indra/newview/llinventoryitemslist.cpp37
-rw-r--r--indra/newview/llinventoryitemslist.h7
-rw-r--r--indra/newview/llinventorylistitem.cpp11
-rw-r--r--indra/newview/llinventorylistitem.h3
-rw-r--r--indra/newview/llinventorypanel.cpp18
-rw-r--r--indra/newview/llinventorypanel.h4
-rw-r--r--indra/newview/llmediactrl.cpp14
-rw-r--r--indra/newview/llmediactrl.h5
-rw-r--r--indra/newview/llmediadataclient.cpp1030
-rw-r--r--indra/newview/llmediadataclient.h248
-rw-r--r--indra/newview/llnavigationbar.cpp12
-rw-r--r--indra/newview/llnearbychatbar.cpp2
-rw-r--r--indra/newview/lloutfitslist.cpp54
-rw-r--r--indra/newview/lloutfitslist.h4
-rw-r--r--indra/newview/llpanelavatar.cpp130
-rw-r--r--indra/newview/llpanelblockedlist.cpp4
-rw-r--r--indra/newview/llpanelclassified.cpp1165
-rw-r--r--indra/newview/llpanelclassified.h166
-rw-r--r--indra/newview/llpanelcontents.cpp4
-rw-r--r--indra/newview/llpaneleditwearable.cpp17
-rw-r--r--indra/newview/llpaneleditwearable.h2
-rw-r--r--indra/newview/llpanelface.cpp144
-rw-r--r--indra/newview/llpanelgenerictip.cpp2
-rw-r--r--indra/newview/llpanelgroup.cpp22
-rw-r--r--indra/newview/llpanelgroupgeneral.cpp20
-rw-r--r--indra/newview/llpanelgroupgeneral.h1
-rw-r--r--indra/newview/llpanelgrouplandmoney.cpp8
-rw-r--r--indra/newview/llpanelimcontrolpanel.cpp30
-rw-r--r--indra/newview/llpanelland.cpp69
-rw-r--r--indra/newview/llpanelland.h19
-rw-r--r--indra/newview/llpanellandmarkinfo.cpp65
-rw-r--r--indra/newview/llpanellandmarks.cpp4
-rw-r--r--indra/newview/llpanellandmedia.cpp18
-rw-r--r--indra/newview/llpanellogin.cpp46
-rw-r--r--indra/newview/llpanelmaininventory.cpp112
-rw-r--r--indra/newview/llpanelme.cpp36
-rw-r--r--indra/newview/llpanelmediasettingsgeneral.cpp26
-rw-r--r--indra/newview/llpanelmediasettingspermissions.cpp22
-rw-r--r--indra/newview/llpanelobject.cpp58
-rw-r--r--indra/newview/llpanelonlinestatus.cpp4
-rw-r--r--indra/newview/llpaneloutfitedit.cpp332
-rw-r--r--indra/newview/llpaneloutfitedit.h18
-rw-r--r--indra/newview/llpanelpeople.cpp71
-rw-r--r--indra/newview/llpanelpeople.h4
-rw-r--r--indra/newview/llpanelpermissions.cpp356
-rw-r--r--indra/newview/llpanelpick.cpp28
-rw-r--r--indra/newview/llpanelpicks.cpp66
-rw-r--r--indra/newview/llpanelpicks.h4
-rw-r--r--indra/newview/llpanelplace.cpp421
-rw-r--r--indra/newview/llpanelplace.h114
-rw-r--r--indra/newview/llpanelplaceinfo.cpp16
-rw-r--r--indra/newview/llpanelplaces.cpp37
-rw-r--r--indra/newview/llpanelprofileview.cpp4
-rw-r--r--indra/newview/llpanelteleporthistory.cpp6
-rw-r--r--indra/newview/llpaneltopinfobar.cpp23
-rw-r--r--indra/newview/llpaneltopinfobar.h5
-rw-r--r--indra/newview/llpanelvolume.cpp254
-rw-r--r--indra/newview/llpanelwearing.cpp51
-rw-r--r--indra/newview/llparticipantlist.cpp4
-rw-r--r--indra/newview/llpreview.cpp12
-rw-r--r--indra/newview/llpreviewanim.cpp12
-rw-r--r--indra/newview/llpreviewgesture.cpp12
-rw-r--r--indra/newview/llpreviewnotecard.cpp22
-rw-r--r--indra/newview/llpreviewscript.cpp28
-rw-r--r--indra/newview/llpreviewsound.cpp4
-rw-r--r--indra/newview/llpreviewtexture.cpp31
-rw-r--r--indra/newview/llremoteparcelrequest.cpp1
-rw-r--r--indra/newview/llsaveoutfitcombobtn.cpp2
-rw-r--r--indra/newview/llscriptfloater.cpp2
-rw-r--r--indra/newview/llscrollingpanelparam.cpp34
-rw-r--r--indra/newview/llselectmgr.cpp9
-rw-r--r--indra/newview/llselectmgr.h2
-rw-r--r--indra/newview/llsidepanelappearance.cpp6
-rw-r--r--indra/newview/llsidepaneliteminfo.cpp188
-rw-r--r--indra/newview/llsidepaneltaskinfo.cpp358
-rw-r--r--indra/newview/llspatialpartition.cpp43
-rw-r--r--indra/newview/llspatialpartition.h18
-rw-r--r--indra/newview/llspeakers.cpp5
-rw-r--r--indra/newview/llstartup.cpp20
-rw-r--r--indra/newview/llstatusbar.cpp103
-rw-r--r--indra/newview/llstatusbar.h2
-rw-r--r--indra/newview/llstylemap.cpp12
-rw-r--r--indra/newview/llsyswellitem.cpp4
-rw-r--r--indra/newview/llsyswellitem.h1
-rw-r--r--indra/newview/lltexlayer.cpp4
-rw-r--r--indra/newview/lltexturectrl.cpp32
-rw-r--r--indra/newview/lltexturefetch.cpp131
-rw-r--r--indra/newview/lltexturefetch.h14
-rw-r--r--indra/newview/lltoastgroupnotifypanel.cpp2
-rw-r--r--indra/newview/lltoolpie.cpp2
-rw-r--r--indra/newview/llurldispatcher.cpp20
-rw-r--r--indra/newview/llviewchildren.cpp4
-rw-r--r--indra/newview/llviewerattachmenu.cpp2
-rw-r--r--indra/newview/llviewercontrol.cpp25
-rw-r--r--indra/newview/llviewerdisplay.cpp19
-rw-r--r--indra/newview/llviewerfloaterreg.cpp4
-rw-r--r--indra/newview/llviewerinventory.cpp2
-rw-r--r--indra/newview/llviewerjoint.cpp4
-rw-r--r--indra/newview/llviewerjoint.h2
-rw-r--r--indra/newview/llviewerjointattachment.cpp37
-rw-r--r--indra/newview/llviewerjointmesh.cpp103
-rw-r--r--indra/newview/llviewerjointmesh.h2
-rw-r--r--indra/newview/llviewermedia.cpp42
-rw-r--r--indra/newview/llviewermedia.h5
-rw-r--r--indra/newview/llviewermenu.cpp98
-rw-r--r--indra/newview/llviewermessage.cpp10
-rw-r--r--indra/newview/llviewernetwork.cpp22
-rw-r--r--indra/newview/llviewernetwork.h3
-rw-r--r--indra/newview/llviewerobject.cpp25
-rw-r--r--indra/newview/llviewerobject.h10
-rw-r--r--indra/newview/llviewershadermgr.cpp55
-rw-r--r--indra/newview/llviewerstats.cpp2
-rw-r--r--indra/newview/llviewertexture.cpp139
-rw-r--r--indra/newview/llviewertexture.h2
-rw-r--r--indra/newview/llviewerwindow.cpp164
-rw-r--r--indra/newview/llvoavatar.cpp246
-rw-r--r--indra/newview/llvoavatar.h7
-rw-r--r--indra/newview/llvoavatarself.cpp84
-rw-r--r--indra/newview/llvoavatarself.h8
-rw-r--r--indra/newview/llvosky.cpp5
-rw-r--r--indra/newview/llvotree.cpp33
-rw-r--r--indra/newview/llvovolume.cpp150
-rw-r--r--indra/newview/llvovolume.h6
-rw-r--r--indra/newview/llwearable.cpp7
-rw-r--r--indra/newview/llwearableitemslist.cpp150
-rw-r--r--indra/newview/llwearableitemslist.h38
-rw-r--r--indra/newview/llwebsharing.cpp609
-rw-r--r--indra/newview/llwebsharing.h230
-rw-r--r--indra/newview/llworld.cpp2
-rw-r--r--indra/newview/pipeline.cpp920
-rw-r--r--indra/newview/pipeline.h33
-rw-r--r--indra/newview/res/have_artwork_bundle.marker1
-rw-r--r--indra/newview/res/viewerRes.rc2
-rw-r--r--indra/newview/skins/default/colors.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_aaa.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_about.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_event.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_im_session.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_nearby_chat.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_preview_gesture.xml16
-rw-r--r--indra/newview/skins/default/xui/en/floater_preview_notecard.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_search.xml8
-rw-r--r--indra/newview/skins/default/xui/en/floater_snapshot.xml34
-rw-r--r--indra/newview/skins/default/xui/en/floater_tools.xml15
-rw-r--r--indra/newview/skins/default/xui/en/inspect_object.xml2
-rw-r--r--indra/newview/skins/default/xui/en/menu_add_wearable_gear.xml41
-rw-r--r--indra/newview/skins/default/xui/en/menu_inspect_object_gear.xml9
-rw-r--r--indra/newview/skins/default/xui/en/menu_object.xml9
-rw-r--r--indra/newview/skins/default/xui/en/menu_places_gear_folder.xml6
-rw-r--r--indra/newview/skins/default/xui/en/menu_viewer.xml186
-rw-r--r--indra/newview/skins/default/xui/en/menu_wearable_list_item.xml2
-rw-r--r--indra/newview/skins/default/xui/en/menu_wearing_tab.xml18
-rw-r--r--indra/newview/skins/default/xui/en/notifications.xml13
-rw-r--r--indra/newview/skins/default/xui/en/outfit_accordion_tab.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_bars.xml18
-rw-r--r--indra/newview/skins/default/xui/en/panel_body_parts_list_item.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_chat_header.xml27
-rw-r--r--indra/newview/skins/default/xui/en/panel_classified_info.xml4
-rw-r--r--indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_clothing_list_item.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_deletable_wearable_list_item.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_dummy_clothing_list_item.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_group_list_item.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_group_notify.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_group_roles.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_inventory_item.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_landmark_info.xml5
-rw-r--r--indra/newview/skins/default/xui/en/panel_media_settings_permissions.xml15
-rw-r--r--indra/newview/skins/default/xui/en/panel_my_profile.xml3
-rw-r--r--indra/newview/skins/default/xui/en/panel_navigation_bar.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_notification.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_pick_info.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_pick_list_item.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_place_profile.xml5
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml274
-rw-r--r--indra/newview/skins/default/xui/en/panel_profile.xml3
-rw-r--r--indra/newview/skins/default/xui/en/panel_teleport_history_item.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_topinfo_bar.xml10
-rw-r--r--indra/newview/skins/default/xui/en/strings.xml12
-rw-r--r--indra/newview/skins/default/xui/en/widgets/bodyparts_list_item.xml2
-rw-r--r--indra/newview/skins/default/xui/en/widgets/clothing_list_item.xml2
-rw-r--r--indra/newview/skins/default/xui/en/widgets/deletable_wearable_list_item.xml2
-rw-r--r--indra/newview/skins/default/xui/en/widgets/dummy_clothing_list_item.xml2
-rw-r--r--indra/newview/skins/default/xui/en/widgets/expandable_text.xml3
-rw-r--r--indra/newview/skins/default/xui/en/widgets/inventory_list_item.xml2
-rw-r--r--indra/newview/skins/default/xui/en/widgets/scroll_list.xml1
-rw-r--r--indra/newview/skins/default/xui/en/widgets/simple_text_editor.xml4
-rw-r--r--indra/newview/skins/default/xui/en/widgets/text.xml4
-rw-r--r--indra/newview/skins/default/xui/en/widgets/text_editor.xml3
-rw-r--r--indra/newview/skins/default/xui/fr/floater_postcard.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_preview_gesture.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_tools.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/menu_object.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/menu_picks.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/notifications.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/panel_pick_info.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/panel_script_ed.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/floater_bulk_perms.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/floater_pay.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/floater_pay_object.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/floater_post_process.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/floater_postcard.xml8
-rw-r--r--indra/newview/skins/default/xui/pl/floater_preview_gesture.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/floater_preview_gesture_info.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/floater_preview_gesture_shortcut.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/floater_preview_gesture_steps.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/floater_preview_sound.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/floater_report_abuse.xml6
-rw-r--r--indra/newview/skins/default/xui/pl/floater_script_search.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/floater_sell_land.xml12
-rw-r--r--indra/newview/skins/default/xui/pl/floater_stats.xml14
-rw-r--r--indra/newview/skins/default/xui/pl/floater_tools.xml30
-rw-r--r--indra/newview/skins/default/xui/pl/floater_top_objects.xml8
-rw-r--r--indra/newview/skins/default/xui/pl/floater_windlight_options.xml6
-rw-r--r--indra/newview/skins/default/xui/pl/floater_world_map.xml20
-rw-r--r--indra/newview/skins/default/xui/pl/inspect_avatar.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/inspect_group.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/inspect_object.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/menu_attachment_other.xml6
-rw-r--r--indra/newview/skins/default/xui/pl/menu_attachment_self.xml6
-rw-r--r--indra/newview/skins/default/xui/pl/menu_avatar_icon.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/menu_avatar_other.xml6
-rw-r--r--indra/newview/skins/default/xui/pl/menu_avatar_self.xml12
-rw-r--r--indra/newview/skins/default/xui/pl/menu_bottomtray.xml8
-rw-r--r--indra/newview/skins/default/xui/pl/menu_cof_gear.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/menu_favorites.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/menu_group_plus.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/menu_imchiclet_group.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/menu_imchiclet_p2p.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/menu_inspect_avatar_gear.xml6
-rw-r--r--indra/newview/skins/default/xui/pl/menu_inspect_self_gear.xml6
-rw-r--r--indra/newview/skins/default/xui/pl/menu_inventory.xml14
-rw-r--r--indra/newview/skins/default/xui/pl/menu_inventory_add.xml6
-rw-r--r--indra/newview/skins/default/xui/pl/menu_inventory_gear_default.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/menu_land.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/menu_login.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/menu_navbar.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/menu_outfit_gear.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/menu_participant_list.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/menu_people_groups.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/menu_people_groups_view_sort.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/menu_people_nearby.xml6
-rw-r--r--indra/newview/skins/default/xui/pl/menu_people_nearby_multiselect.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/menu_picks_plus.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/menu_place.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/menu_place_add_button.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/menu_places_gear_folder.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/menu_places_gear_landmark.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/menu_slurl.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/menu_teleport_history_gear.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/menu_text_editor.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/menu_url_agent.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/menu_url_group.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/menu_url_inventory.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/menu_url_parcel.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/menu_url_slurl.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/menu_url_teleport.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/menu_viewer.xml358
-rw-r--r--indra/newview/skins/default/xui/pl/mime_types_mac.xml8
-rw-r--r--indra/newview/skins/default/xui/pl/notifications.xml124
-rw-r--r--indra/newview/skins/default/xui/pl/panel_active_object_row.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/panel_adhoc_control_panel.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/panel_audio_device.xml10
-rw-r--r--indra/newview/skins/default/xui/pl/panel_block_list_sidetray.xml6
-rw-r--r--indra/newview/skins/default/xui/pl/panel_bottomtray.xml12
-rw-r--r--indra/newview/skins/default/xui/pl/panel_bottomtray_lite.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/panel_edit_alpha.xml10
-rw-r--r--indra/newview/skins/default/xui/pl/panel_edit_classified.xml10
-rw-r--r--indra/newview/skins/default/xui/pl/panel_edit_profile.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/panel_edit_wearable.xml8
-rw-r--r--indra/newview/skins/default/xui/pl/panel_friends.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/panel_group_control_panel.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/panel_group_general.xml8
-rw-r--r--indra/newview/skins/default/xui/pl/panel_group_info_sidetray.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/panel_group_invite.xml6
-rw-r--r--indra/newview/skins/default/xui/pl/panel_group_land_money.xml16
-rw-r--r--indra/newview/skins/default/xui/pl/panel_group_notices.xml8
-rw-r--r--indra/newview/skins/default/xui/pl/panel_group_notify.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/panel_group_roles.xml40
-rw-r--r--indra/newview/skins/default/xui/pl/panel_groups.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/panel_im_control_panel.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/panel_landmark_info.xml8
-rw-r--r--indra/newview/skins/default/xui/pl/panel_login.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/panel_media_settings_general.xml10
-rw-r--r--indra/newview/skins/default/xui/pl/panel_media_settings_permissions.xml8
-rw-r--r--indra/newview/skins/default/xui/pl/panel_my_profile.xml8
-rw-r--r--indra/newview/skins/default/xui/pl/panel_nearby_chat_bar.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/panel_nearby_media.xml8
-rw-r--r--indra/newview/skins/default/xui/pl/panel_outfit_edit.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/panel_outfits_inventory_gear_default.xml10
-rw-r--r--indra/newview/skins/default/xui/pl/panel_people.xml18
-rw-r--r--indra/newview/skins/default/xui/pl/panel_place_profile.xml8
-rw-r--r--indra/newview/skins/default/xui/pl/panel_preferences_advanced.xml8
-rw-r--r--indra/newview/skins/default/xui/pl/panel_preferences_alerts.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/panel_preferences_general.xml14
-rw-r--r--indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml16
-rw-r--r--indra/newview/skins/default/xui/pl/panel_preferences_privacy.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/panel_preferences_setup.xml8
-rw-r--r--indra/newview/skins/default/xui/pl/panel_preferences_sound.xml14
-rw-r--r--indra/newview/skins/default/xui/pl/panel_prim_media_controls.xml12
-rw-r--r--indra/newview/skins/default/xui/pl/panel_profile.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/panel_region_covenant.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/panel_region_estate.xml8
-rw-r--r--indra/newview/skins/default/xui/pl/panel_region_general.xml6
-rw-r--r--indra/newview/skins/default/xui/pl/panel_region_general_layout.xml6
-rw-r--r--indra/newview/skins/default/xui/pl/panel_region_terrain.xml6
-rw-r--r--indra/newview/skins/default/xui/pl/panel_region_texture.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/panel_script_ed.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/panel_script_limits_my_avatar.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/panel_script_limits_region_memory.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/panel_side_tray.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/panel_stand_stop_flying.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/panel_status_bar.xml6
-rw-r--r--indra/newview/skins/default/xui/pl/role_actions.xml76
-rw-r--r--indra/newview/skins/default/xui/pl/sidepanel_appearance.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/sidepanel_item_info.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/sidepanel_task_info.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/strings.xml630
-rw-r--r--indra/newview/skins/default/xui/pl/teleport_strings.xml14
-rw-r--r--indra/newview/tests/llmediadataclient_test.cpp109
-rw-r--r--indra/newview/tests/llsecapi_test.cpp92
-rw-r--r--indra/newview/tests/llslurl_test.cpp5
-rw-r--r--indra/newview/tests/llviewernetwork_test.cpp5
542 files changed, 9732 insertions, 11485 deletions
diff --git a/indra/cmake/ViewerMiscLibs.cmake b/indra/cmake/ViewerMiscLibs.cmake
index 32c4bc81df..2a8abdac23 100644
--- a/indra/cmake/ViewerMiscLibs.cmake
+++ b/indra/cmake/ViewerMiscLibs.cmake
@@ -7,10 +7,3 @@ if (NOT STANDALONE)
use_prebuilt_binary(fontconfig)
endif(NOT STANDALONE)
-if(VIEWER AND NOT STANDALONE)
- if(EXISTS ${CMAKE_SOURCE_DIR}/newview/res/have_artwork_bundle.marker)
- message(STATUS "We seem to have an artwork bundle in the tree - brilliant.")
- else(EXISTS ${CMAKE_SOURCE_DIR}/newview/res/have_artwork_bundle.marker)
- message(FATAL_ERROR "Didn't find an artwork bundle - this needs to be downloaded separately and unpacked into this tree. You can probably get it from the same place you got your viewer source. Thanks!")
- endif(EXISTS ${CMAKE_SOURCE_DIR}/newview/res/have_artwork_bundle.marker)
-endif(VIEWER AND NOT STANDALONE)
diff --git a/indra/llcommon/lldarray.h b/indra/llcommon/lldarray.h
index a8cd03b42a..95c57de189 100644
--- a/indra/llcommon/lldarray.h
+++ b/indra/llcommon/lldarray.h
@@ -196,7 +196,7 @@ public:
{
U32 n = mVector.size();
mIndexMap[k] = n;
- mVector.push_back(Type());
+ mVector.resize(n+1);
llassert(mVector.size() == mIndexMap.size());
return mVector[n];
}
diff --git a/indra/llcommon/llstrider.h b/indra/llcommon/llstrider.h
index f4c43bac61..488b8d0f35 100644
--- a/indra/llcommon/llstrider.h
+++ b/indra/llcommon/llstrider.h
@@ -45,7 +45,7 @@ public:
void setStride (S32 skipBytes) { mSkip = (skipBytes ? skipBytes : sizeof(Object));}
void skip(const U32 index) { mBytep += mSkip*index;}
- U32 getSkip() const { return mSkip; }
+
Object* get() { return mObjectp; }
Object* operator->() { return mObjectp; }
Object& operator *() { return *mObjectp; }
diff --git a/indra/llcommon/llversionserver.h b/indra/llcommon/llversionserver.h
index b19ba3bf74..2c2c819272 100644
--- a/indra/llcommon/llversionserver.h
+++ b/indra/llcommon/llversionserver.h
@@ -30,7 +30,7 @@
const S32 LL_VERSION_MAJOR = 2;
const S32 LL_VERSION_MINOR = 1;
const S32 LL_VERSION_PATCH = 0;
-const S32 LL_VERSION_BUILD = 13828;
+const S32 LL_VERSION_BUILD = 0;
const char * const LL_CHANNEL = "Second Life Server";
diff --git a/indra/llcrashlogger/llcrashlogger.cpp b/indra/llcrashlogger/llcrashlogger.cpp
index 68e45f36e4..2152feaf80 100644
--- a/indra/llcrashlogger/llcrashlogger.cpp
+++ b/indra/llcrashlogger/llcrashlogger.cpp
@@ -369,8 +369,6 @@ void LLCrashLogger::updateApplication(const std::string& message)
bool LLCrashLogger::init()
{
- LLCurl::initClass();
-
// We assume that all the logs we're looking for reside on the current drive
gDirUtilp->initAppDirs("SecondLife");
diff --git a/indra/llinventory/llparcel.cpp b/indra/llinventory/llparcel.cpp
index 488bd45d8f..ede624141d 100644
--- a/indra/llinventory/llparcel.cpp
+++ b/indra/llinventory/llparcel.cpp
@@ -52,6 +52,7 @@ static const std::string PARCEL_OWNERSHIP_STATUS_STRING[LLParcel::OS_COUNT+1] =
};
// NOTE: Adding parcel categories also requires updating:
+// * floater_directory.xml category combobox
// * floater_about_land.xml category combobox
// * Web site "create event" tools
// DO NOT DELETE ITEMS FROM THIS LIST WITHOUT DEEPLY UNDERSTANDING WHAT YOU'RE DOING.
diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp
index 14e1ca8d43..39b7453ffc 100644
--- a/indra/llmath/llvolume.cpp
+++ b/indra/llmath/llvolume.cpp
@@ -80,8 +80,6 @@ const F32 SKEW_MAX = 0.95f;
const F32 SCULPT_MIN_AREA = 0.002f;
const S32 SCULPT_MIN_AREA_DETAIL = 1;
-#define GEN_TRI_STRIP 0
-
BOOL check_same_clock_dir( const LLVector3& pt1, const LLVector3& pt2, const LLVector3& pt3, const LLVector3& norm)
{
LLVector3 test = (pt2-pt1)%(pt3-pt2);
@@ -1684,7 +1682,7 @@ LLVolume::LLVolume(const LLVolumeParams &params, const F32 detail, const BOOL ge
mGenerateSingleFace = generate_single_face;
generate();
- if (mParams.getSculptID().isNull() && params.getSculptType() == LL_SCULPT_TYPE_NONE)
+ if (mParams.getSculptID().isNull())
{
createVolumeFaces();
}
@@ -1860,11 +1858,6 @@ void LLVolume::createVolumeFaces()
LLProfile::Face& face = mProfilep->mFaces[i];
vf.mBeginS = face.mIndex;
vf.mNumS = face.mCount;
- if (vf.mNumS < 0)
- {
- llerrs << "Volume face corruption detected." << llendl;
- }
-
vf.mBeginT = 0;
vf.mNumT= getPath().mPath.size();
vf.mID = i;
@@ -1908,10 +1901,6 @@ void LLVolume::createVolumeFaces()
if (face.mFlat && vf.mNumS > 2)
{ //flat inner faces have to copy vert normals
vf.mNumS = vf.mNumS*2;
- if (vf.mNumS < 0)
- {
- llerrs << "Volume face corruption detected." << llendl;
- }
}
}
else
@@ -4526,9 +4515,7 @@ BOOL LLVolumeFace::createUnCutCubeCap(LLVolume* volume, BOOL partial_build)
if (!partial_build)
{
-#if GEN_TRI_STRIP
mTriStrip.clear();
-#endif
S32 idxs[] = {0,1,(grid_size+1)+1,(grid_size+1)+1,(grid_size+1),0};
for(S32 gx = 0;gx<grid_size;gx++)
{
@@ -4542,7 +4529,6 @@ BOOL LLVolumeFace::createUnCutCubeCap(LLVolume* volume, BOOL partial_build)
mIndices.push_back(vtop+(gy*(grid_size+1))+gx+idxs[i]);
}
-#if GEN_TRI_STRIP
if (gy == 0)
{
mTriStrip.push_back((gx+1)*(grid_size+1));
@@ -4558,7 +4544,6 @@ BOOL LLVolumeFace::createUnCutCubeCap(LLVolume* volume, BOOL partial_build)
{
mTriStrip.push_back(gy+1+gx*(grid_size+1));
}
-#endif
}
else
{
@@ -4567,7 +4552,6 @@ BOOL LLVolumeFace::createUnCutCubeCap(LLVolume* volume, BOOL partial_build)
mIndices.push_back(vtop+(gy*(grid_size+1))+gx+idxs[i]);
}
-#if GEN_TRI_STRIP
if (gy == 0)
{
mTriStrip.push_back(gx*(grid_size+1));
@@ -4582,18 +4566,15 @@ BOOL LLVolumeFace::createUnCutCubeCap(LLVolume* volume, BOOL partial_build)
{
mTriStrip.push_back(gy+1+(gx+1)*(grid_size+1));
}
-#endif
}
}
}
-#if GEN_TRI_STRIP
if (mTriStrip.size()%2 == 1)
{
mTriStrip.push_back(mTriStrip[mTriStrip.size()-1]);
}
-#endif
}
return TRUE;
@@ -4963,7 +4944,6 @@ BOOL LLVolumeFace::createCap(LLVolume* volume, BOOL partial_build)
mIndices[3*i+v2] = i + 1;
}
-#if GEN_TRI_STRIP
//make tri strip
if (mTypeMask & OPEN_MASK)
{
@@ -5006,7 +4986,6 @@ BOOL LLVolumeFace::createCap(LLVolume* volume, BOOL partial_build)
mTriStrip.push_back(mTriStrip[mTriStrip.size()-1]);
}
}
-#endif
}
return TRUE;
@@ -5014,7 +4993,6 @@ BOOL LLVolumeFace::createCap(LLVolume* volume, BOOL partial_build)
void LLVolumeFace::makeTriStrip()
{
-#if GEN_TRI_STRIP
for (U32 i = 0; i < mIndices.size(); i+=3)
{
U16 i0 = mIndices[i];
@@ -5043,7 +5021,6 @@ void LLVolumeFace::makeTriStrip()
{
mTriStrip.push_back(mTriStrip[mTriStrip.size()-1]);
}
-#endif
}
void LLVolumeFace::createBinormals()
@@ -5129,6 +5106,12 @@ BOOL LLVolumeFace::createSide(LLVolume* volume, BOOL partial_build)
mHasBinormals = FALSE;
}
+
+ LLVector3& face_min = mExtents[0];
+ LLVector3& face_max = mExtents[1];
+
+ mCenter.clearVec();
+
S32 begin_stex = llfloor( profile[mBeginS].mV[2] );
S32 num_s = ((mTypeMask & INNER_MASK) && (mTypeMask & FLAT_MASK) && mNumS > 2) ? mNumS/2 : mNumS;
@@ -5184,6 +5167,15 @@ BOOL LLVolumeFace::createSide(LLVolume* volume, BOOL partial_build)
mVertices[cur_vertex].mNormal = LLVector3(0,0,0);
mVertices[cur_vertex].mBinormal = LLVector3(0,0,0);
+
+ if (cur_vertex == 0)
+ {
+ face_min = face_max = mesh[i].mPos;
+ }
+ else
+ {
+ update_min_max(face_min, face_max, mesh[i].mPos);
+ }
cur_vertex++;
@@ -5217,22 +5209,12 @@ BOOL LLVolumeFace::createSide(LLVolume* volume, BOOL partial_build)
mVertices[cur_vertex].mNormal = LLVector3(0,0,0);
mVertices[cur_vertex].mBinormal = LLVector3(0,0,0);
+ update_min_max(face_min,face_max,mesh[i].mPos);
+
cur_vertex++;
}
}
-
- //get bounding box for this side
- LLVector3& face_min = mExtents[0];
- LLVector3& face_max = mExtents[1];
- mCenter.clearVec();
-
- face_min = face_max = mVertices[0].mPosition;
- for (U32 i = 1; i < mVertices.size(); ++i)
- {
- update_min_max(face_min, face_max, mVertices[i].mPosition);
- }
-
mCenter = (face_min + face_max) * 0.5f;
S32 cur_index = 0;
@@ -5241,17 +5223,13 @@ BOOL LLVolumeFace::createSide(LLVolume* volume, BOOL partial_build)
if (!partial_build)
{
-#if GEN_TRI_STRIP
mTriStrip.clear();
-#endif
// Now we generate the indices.
for (t = 0; t < (mNumT-1); t++)
{
-#if GEN_TRI_STRIP
//prepend terminating index to strip
mTriStrip.push_back(mNumS*t);
-#endif
for (s = 0; s < (mNumS-1); s++)
{
@@ -5262,7 +5240,6 @@ BOOL LLVolumeFace::createSide(LLVolume* volume, BOOL partial_build)
mIndices[cur_index++] = s+1 + mNumS*t; //bottom right
mIndices[cur_index++] = s+1 + mNumS*(t+1); //top right
-#if GEN_TRI_STRIP
if (s == 0)
{
mTriStrip.push_back(s+mNumS*t);
@@ -5270,7 +5247,6 @@ BOOL LLVolumeFace::createSide(LLVolume* volume, BOOL partial_build)
}
mTriStrip.push_back(s+1+mNumS*t);
mTriStrip.push_back(s+1+mNumS*(t+1));
-#endif
mEdge[cur_edge++] = (mNumS-1)*2*t+s*2+1; //bottom left/top right neighbor face
if (t < mNumT-2) { //top right/top left neighbor face
@@ -5312,37 +5288,44 @@ BOOL LLVolumeFace::createSide(LLVolume* volume, BOOL partial_build)
}
mEdge[cur_edge++] = (mNumS-1)*2*t+s*2; //top right/bottom left neighbor face
}
-#if GEN_TRI_STRIP
//append terminating vertex to strip
mTriStrip.push_back(mNumS-1+mNumS*(t+1));
-#endif
}
-#if GEN_TRI_STRIP
if (mTriStrip.size()%2 == 1)
{
mTriStrip.push_back(mTriStrip[mTriStrip.size()-1]);
}
-#endif
}
//generate normals
for (U32 i = 0; i < mIndices.size()/3; i++) //for each triangle
{
- const U16* idx = &(mIndices[i*3]);
-
- VertexData* v[] =
- { &mVertices[idx[0]], &mVertices[idx[1]], &mVertices[idx[2]] };
+ const S32 i0 = mIndices[i*3+0];
+ const S32 i1 = mIndices[i*3+1];
+ const S32 i2 = mIndices[i*3+2];
+ const VertexData& v0 = mVertices[i0];
+ const VertexData& v1 = mVertices[i1];
+ const VertexData& v2 = mVertices[i2];
//calculate triangle normal
- LLVector3 norm = (v[0]->mPosition-v[1]->mPosition) % (v[0]->mPosition-v[2]->mPosition);
+ LLVector3 norm = (v0.mPosition-v1.mPosition) % (v0.mPosition-v2.mPosition);
- v[0]->mNormal += norm;
- v[1]->mNormal += norm;
- v[2]->mNormal += norm;
+ for (U32 j = 0; j < 3; j++)
+ { //add triangle normal to vertices
+ const S32 idx = mIndices[i*3+j];
+ mVertices[idx].mNormal += norm; // * (weight_sum - d[j])/weight_sum;
+ }
//even out quad contributions
- v[i%2+1]->mNormal += norm;
+ if ((i & 1) == 0)
+ {
+ mVertices[i2].mNormal += norm;
+ }
+ else
+ {
+ mVertices[i1].mNormal += norm;
+ }
}
// adjust normals based on wrapping and stitching
diff --git a/indra/llmessage/llhttpclient.cpp b/indra/llmessage/llhttpclient.cpp
index 0e5206a520..47b86bd53d 100644
--- a/indra/llmessage/llhttpclient.cpp
+++ b/indra/llmessage/llhttpclient.cpp
@@ -234,14 +234,9 @@ static void request(
lldebugs << LLURLRequest::actionAsVerb(method) << " " << url << " "
<< headers << llendl;
- // Insert custom headers if the caller sent any
- if (headers.isMap())
- {
- if (headers.has("Cookie"))
- {
- req->allowCookies();
- }
-
+ // Insert custom headers is the caller sent any
+ if (headers.isMap())
+ {
LLSD::map_const_iterator iter = headers.beginMap();
LLSD::map_const_iterator end = headers.endMap();
diff --git a/indra/llmessage/llpumpio.cpp b/indra/llmessage/llpumpio.cpp
index a8d2a0a224..393e6e9813 100644
--- a/indra/llmessage/llpumpio.cpp
+++ b/indra/llmessage/llpumpio.cpp
@@ -438,13 +438,13 @@ void LLPumpIO::pump()
pump(DEFAULT_POLL_TIMEOUT);
}
-static LLFastTimer::DeclareTimer FTM_PUMP_IO("Pump IO");
+static LLFastTimer::DeclareTimer FTM_PUMP("Pump");
//timeout is in microseconds
void LLPumpIO::pump(const S32& poll_timeout)
{
LLMemType m1(LLMemType::MTYPE_IO_PUMP);
- LLFastTimer t1(FTM_PUMP_IO);
+ LLFastTimer t1(FTM_PUMP);
//llinfos << "LLPumpIO::pump()" << llendl;
// Run any pending runners.
@@ -772,8 +772,6 @@ bool LLPumpIO::respond(
return true;
}
-static LLFastTimer::DeclareTimer FTM_PUMP_CALLBACK_CHAIN("Chain");
-
void LLPumpIO::callback()
{
LLMemType m1(LLMemType::MTYPE_IO_PUMP);
@@ -795,7 +793,6 @@ void LLPumpIO::callback()
callbacks_t::iterator end = mCallbacks.end();
for(; it != end; ++it)
{
- LLFastTimer t(FTM_PUMP_CALLBACK_CHAIN);
// it's always the first and last time for respone chains
(*it).mHead = (*it).mChainLinks.begin();
(*it).mInit = true;
diff --git a/indra/llmessage/llurlrequest.cpp b/indra/llmessage/llurlrequest.cpp
index cb9d1c3731..8adb3cda19 100644
--- a/indra/llmessage/llurlrequest.cpp
+++ b/indra/llmessage/llurlrequest.cpp
@@ -245,11 +245,6 @@ void LLURLRequest::useProxy(const std::string &proxy)
mDetail->mCurlRequest->setoptString(CURLOPT_PROXY, proxy);
}
-void LLURLRequest::allowCookies()
-{
- mDetail->mCurlRequest->setoptString(CURLOPT_COOKIEFILE, "");
-}
-
// virtual
LLIOPipe::EStatus LLURLRequest::handleError(
LLIOPipe::EStatus status,
diff --git a/indra/llmessage/llurlrequest.h b/indra/llmessage/llurlrequest.h
index ec5c2c1941..dad245f154 100644
--- a/indra/llmessage/llurlrequest.h
+++ b/indra/llmessage/llurlrequest.h
@@ -183,11 +183,6 @@ public:
*/
void useProxy(const std::string& proxy);
- /**
- * @brief Turn on cookie handling for this request with CURLOPT_COOKIEFILE.
- */
- void allowCookies();
-
public:
/**
* @brief Give this pipe a chance to handle a generated error
diff --git a/indra/llprimitive/llprimitive.h b/indra/llprimitive/llprimitive.h
index f535fb1672..921f407859 100644
--- a/indra/llprimitive/llprimitive.h
+++ b/indra/llprimitive/llprimitive.h
@@ -280,7 +280,6 @@ public:
void setLightTexture(const LLUUID& id) { mLightTexture = id; }
LLUUID getLightTexture() const { return mLightTexture; }
- bool isLightSpotlight() const { return mLightTexture.notNull(); }
void setParams(const LLVector3& params) { mParams = params; }
LLVector3 getParams() const { return mParams; }
diff --git a/indra/llrender/llfontfreetype.cpp b/indra/llrender/llfontfreetype.cpp
index b84e696e2d..163b79813e 100644
--- a/indra/llrender/llfontfreetype.cpp
+++ b/indra/llrender/llfontfreetype.cpp
@@ -253,10 +253,10 @@ F32 LLFontFreetype::getXAdvance(llwchar wch) const
}
else
{
- char_glyph_info_map_t::iterator found_it = mCharGlyphInfoMap.find((llwchar)0);
- if (found_it != mCharGlyphInfoMap.end())
+ gi = get_if_there(mCharGlyphInfoMap, (llwchar)0, (LLFontGlyphInfo*)NULL);
+ if (gi)
{
- return found_it->second->mXAdvance;
+ return gi->mXAdvance;
}
}
diff --git a/indra/llrender/llfontfreetype.h b/indra/llrender/llfontfreetype.h
index f1b23f22d5..f3f62533da 100644
--- a/indra/llrender/llfontfreetype.h
+++ b/indra/llrender/llfontfreetype.h
@@ -27,7 +27,7 @@
#ifndef LL_LLFONTFREETYPE_H
#define LL_LLFONTFREETYPE_H
-#include <boost/unordered_map.hpp>
+#include <map>
#include "llpointer.h"
#include "llstl.h"
@@ -164,7 +164,7 @@ private:
BOOL mValid;
- typedef boost::unordered_map<llwchar, LLFontGlyphInfo*> char_glyph_info_map_t;
+ typedef std::map<llwchar, LLFontGlyphInfo*> char_glyph_info_map_t;
mutable char_glyph_info_map_t mCharGlyphInfoMap; // Information about glyph location in bitmap
mutable LLPointer<LLFontBitmapCache> mFontBitmapCachep;
diff --git a/indra/llrender/llfontgl.cpp b/indra/llrender/llfontgl.cpp
index 386bb987f9..a548e618b3 100644
--- a/indra/llrender/llfontgl.cpp
+++ b/indra/llrender/llfontgl.cpp
@@ -141,8 +141,6 @@ S32 LLFontGL::render(const LLWString &wstr, S32 begin_offset, const LLRect& rect
S32 LLFontGL::render(const LLWString &wstr, S32 begin_offset, F32 x, F32 y, const LLColor4 &color, HAlign halign, VAlign valign, U8 style,
ShadowType shadow, S32 max_chars, S32 max_pixels, F32* right_x, BOOL use_ellipses) const
{
- LLFastTimer _(FTM_RENDER_FONTS);
-
if(!sDisplayFont) //do not display texts
{
return wstr.length() ;
@@ -177,18 +175,16 @@ S32 LLFontGL::render(const LLWString &wstr, S32 begin_offset, F32 x, F32 y, cons
gGL.loadUIIdentity();
- //gGL.translateUI(floorf(sCurOrigin.mX*sScaleX), floorf(sCurOrigin.mY*sScaleY), sCurOrigin.mZ);
+ gGL.translateUI(floorf(sCurOrigin.mX*sScaleX), floorf(sCurOrigin.mY*sScaleY), sCurOrigin.mZ);
// this code snaps the text origin to a pixel grid to start with
- //F32 pixel_offset_x = llround((F32)sCurOrigin.mX) - (sCurOrigin.mX);
- //F32 pixel_offset_y = llround((F32)sCurOrigin.mY) - (sCurOrigin.mY);
- //gGL.translateUI(-pixel_offset_x, -pixel_offset_y, 0.f);
+ F32 pixel_offset_x = llround((F32)sCurOrigin.mX) - (sCurOrigin.mX);
+ F32 pixel_offset_y = llround((F32)sCurOrigin.mY) - (sCurOrigin.mY);
+ gGL.translateUI(-pixel_offset_x, -pixel_offset_y, 0.f);
- LLVector2 origin(floorf(sCurOrigin.mX*sScaleX), floorf(sCurOrigin.mY*sScaleY));
- // snap the text origin to a pixel grid to start with
- origin.mV[VX] -= llround((F32)sCurOrigin.mX) - (sCurOrigin.mX);
- origin.mV[VY] -= llround((F32)sCurOrigin.mY) - (sCurOrigin.mY);
+ LLFastTimer t(FTM_RENDER_FONTS);
+ gGL.color4fv( color.mV );
S32 chars_drawn = 0;
S32 i;
@@ -208,8 +204,8 @@ S32 LLFontGL::render(const LLWString &wstr, S32 begin_offset, F32 x, F32 y, cons
// Not guaranteed to be set correctly
gGL.setSceneBlendType(LLRender::BT_ALPHA);
- cur_x = ((F32)x * sScaleX) + origin.mV[VX];
- cur_y = ((F32)y * sScaleY) + origin.mV[VY];
+ cur_x = ((F32)x * sScaleX);
+ cur_y = ((F32)y * sScaleY);
// Offset y by vertical alignment.
switch (valign)
@@ -274,15 +270,6 @@ S32 LLFontGL::render(const LLWString &wstr, S32 begin_offset, F32 x, F32 y, cons
const LLFontGlyphInfo* next_glyph = NULL;
- const S32 GLYPH_BATCH_SIZE = 30;
- LLVector3 vertices[GLYPH_BATCH_SIZE * 4];
- LLVector2 uvs[GLYPH_BATCH_SIZE * 4];
- LLColor4U colors[GLYPH_BATCH_SIZE * 4];
-
- LLColor4U text_color(color);
-
- S32 bitmap_num = -1;
- S32 glyph_count = 0;
for (i = begin_offset; i < begin_offset + length; i++)
{
llwchar wch = wstr[i];
@@ -299,13 +286,8 @@ S32 LLFontGL::render(const LLWString &wstr, S32 begin_offset, F32 x, F32 y, cons
break;
}
// Per-glyph bitmap texture.
- S32 next_bitmap_num = fgi->mBitmapNum;
- if (next_bitmap_num != bitmap_num)
- {
- bitmap_num = next_bitmap_num;
- LLImageGL *font_image = font_bitmap_cache->getImageGL(bitmap_num);
- gGL.getTexUnit(0)->bind(font_image);
- }
+ LLImageGL *image_gl = mFontFreetype->getFontBitmapCache()->getImageGL(fgi->mBitmapNum);
+ gGL.getTexUnit(0)->bind(image_gl);
if ((start_x + scaled_max_pixels) < (cur_x + fgi->mXBearing + fgi->mWidth))
{
@@ -325,18 +307,7 @@ S32 LLFontGL::render(const LLWString &wstr, S32 begin_offset, F32 x, F32 y, cons
llround(cur_render_x + (F32)fgi->mXBearing) + (F32)fgi->mWidth,
llround(cur_render_y + (F32)fgi->mYBearing) - (F32)fgi->mHeight);
- if (glyph_count >= GLYPH_BATCH_SIZE)
- {
- gGL.begin(LLRender::QUADS);
- {
- gGL.vertexBatchPreTransformed(vertices, uvs, colors, glyph_count * 4);
- }
- gGL.end();
-
- glyph_count = 0;
- }
-
- drawGlyph(glyph_count, vertices, uvs, colors, screen_rect, uv_rect, text_color, style_to_add, shadow, drop_shadow_strength);
+ drawGlyph(screen_rect, uv_rect, color, style_to_add, shadow, drop_shadow_strength);
chars_drawn++;
cur_x += fgi->mXAdvance;
@@ -361,19 +332,11 @@ S32 LLFontGL::render(const LLWString &wstr, S32 begin_offset, F32 x, F32 y, cons
cur_render_y = cur_y;
}
- gGL.begin(LLRender::QUADS);
- {
- gGL.vertexBatchPreTransformed(vertices, uvs, colors, glyph_count * 4);
- }
- gGL.end();
-
-
if (right_x)
{
- *right_x = (cur_x - origin.mV[VX]) / sScaleX;
+ *right_x = cur_x / sScaleX;
}
- //FIXME: add underline as glyph?
if (style_to_add & UNDERLINE)
{
F32 descender = mFontFreetype->getDescenderHeight();
@@ -393,7 +356,7 @@ S32 LLFontGL::render(const LLWString &wstr, S32 begin_offset, F32 x, F32 y, cons
gGL.pushUIMatrix();
renderUTF8(std::string("..."),
0,
- (cur_x - origin.mV[VX]) / sScaleX, (F32)y,
+ cur_x / sScaleX, (F32)y,
color,
LEFT, valign,
style_to_add,
@@ -1122,95 +1085,95 @@ LLFontGL &LLFontGL::operator=(const LLFontGL &source)
return *this;
}
-void LLFontGL::renderQuad(LLVector3* vertex_out, LLVector2* uv_out, LLColor4U* colors_out, const LLRectf& screen_rect, const LLRectf& uv_rect, const LLColor4U& color, F32 slant_amt) const
+void LLFontGL::renderQuad(const LLRectf& screen_rect, const LLRectf& uv_rect, F32 slant_amt) const
{
- S32 index = 0;
-
- vertex_out[index] = LLVector3(llfont_round_x(screen_rect.mRight), llfont_round_y(screen_rect.mTop), 0.f);
- uv_out[index] = LLVector2(uv_rect.mRight, uv_rect.mTop);
- colors_out[index] = color;
- index++;
-
- vertex_out[index] = LLVector3(llfont_round_x(screen_rect.mLeft), llfont_round_y(screen_rect.mTop), 0.f);
- uv_out[index] = LLVector2(uv_rect.mLeft, uv_rect.mTop);
- colors_out[index] = color;
- index++;
-
- vertex_out[index] = LLVector3(llfont_round_x(screen_rect.mLeft), llfont_round_y(screen_rect.mBottom), 0.f);
- uv_out[index] = LLVector2(uv_rect.mLeft, uv_rect.mBottom);
- colors_out[index] = color;
- index++;
-
- vertex_out[index] = LLVector3(llfont_round_x(screen_rect.mRight), llfont_round_y(screen_rect.mBottom), 0.f);
- uv_out[index] = LLVector2(uv_rect.mRight, uv_rect.mBottom);
- colors_out[index] = color;
+ gGL.texCoord2f(uv_rect.mRight, uv_rect.mTop);
+ gGL.vertex2f(llfont_round_x(screen_rect.mRight),
+ llfont_round_y(screen_rect.mTop));
+
+ gGL.texCoord2f(uv_rect.mLeft, uv_rect.mTop);
+ gGL.vertex2f(llfont_round_x(screen_rect.mLeft),
+ llfont_round_y(screen_rect.mTop));
+
+ gGL.texCoord2f(uv_rect.mLeft, uv_rect.mBottom);
+ gGL.vertex2f(llfont_round_x(screen_rect.mLeft + slant_amt),
+ llfont_round_y(screen_rect.mBottom));
+
+ gGL.texCoord2f(uv_rect.mRight, uv_rect.mBottom);
+ gGL.vertex2f(llfont_round_x(screen_rect.mRight + slant_amt),
+ llfont_round_y(screen_rect.mBottom));
}
-void LLFontGL::drawGlyph(S32& glyph_count, LLVector3* vertex_out, LLVector2* uv_out, LLColor4U* colors_out, const LLRectf& screen_rect, const LLRectf& uv_rect, const LLColor4U& color, U8 style, ShadowType shadow, F32 drop_shadow_strength) const
+void LLFontGL::drawGlyph(const LLRectf& screen_rect, const LLRectf& uv_rect, const LLColor4& color, U8 style, ShadowType shadow, F32 drop_shadow_strength) const
{
F32 slant_offset;
slant_offset = ((style & ITALIC) ? ( -mFontFreetype->getAscenderHeight() * 0.2f) : 0.f);
- //FIXME: bold and drop shadow are mutually exclusive only for convenience
- //Allow both when we need them.
- if (style & BOLD)
+ gGL.begin(LLRender::QUADS);
{
- for (S32 pass = 0; pass < 2; pass++)
+ //FIXME: bold and drop shadow are mutually exclusive only for convenience
+ //Allow both when we need them.
+ if (style & BOLD)
{
- LLRectf screen_rect_offset = screen_rect;
+ gGL.color4fv(color.mV);
+ for (S32 pass = 0; pass < 2; pass++)
+ {
+ LLRectf screen_rect_offset = screen_rect;
- screen_rect_offset.translate((F32)(pass * BOLD_OFFSET), 0.f);
- renderQuad(&vertex_out[glyph_count * 4], &uv_out[glyph_count * 4], &colors_out[glyph_count * 4], screen_rect_offset, uv_rect, color, slant_offset);
- glyph_count++;
+ screen_rect_offset.translate((F32)(pass * BOLD_OFFSET), 0.f);
+ renderQuad(screen_rect_offset, uv_rect, slant_offset);
+ }
}
- }
- else if (shadow == DROP_SHADOW_SOFT)
- {
- LLColor4U shadow_color = LLFontGL::sShadowColor;
- shadow_color.mV[VALPHA] = U8(color.mV[VALPHA] * drop_shadow_strength * DROP_SHADOW_SOFT_STRENGTH);
- for (S32 pass = 0; pass < 5; pass++)
+ else if (shadow == DROP_SHADOW_SOFT)
{
- LLRectf screen_rect_offset = screen_rect;
-
- switch(pass)
+ LLColor4 shadow_color = LLFontGL::sShadowColor;
+ shadow_color.mV[VALPHA] = color.mV[VALPHA] * drop_shadow_strength * DROP_SHADOW_SOFT_STRENGTH;
+ gGL.color4fv(shadow_color.mV);
+ for (S32 pass = 0; pass < 5; pass++)
{
- case 0:
- screen_rect_offset.translate(-1.f, -1.f);
- break;
- case 1:
- screen_rect_offset.translate(1.f, -1.f);
- break;
- case 2:
- screen_rect_offset.translate(1.f, 1.f);
- break;
- case 3:
- screen_rect_offset.translate(-1.f, 1.f);
- break;
- case 4:
- screen_rect_offset.translate(0, -2.f);
- break;
+ LLRectf screen_rect_offset = screen_rect;
+
+ switch(pass)
+ {
+ case 0:
+ screen_rect_offset.translate(-1.f, -1.f);
+ break;
+ case 1:
+ screen_rect_offset.translate(1.f, -1.f);
+ break;
+ case 2:
+ screen_rect_offset.translate(1.f, 1.f);
+ break;
+ case 3:
+ screen_rect_offset.translate(-1.f, 1.f);
+ break;
+ case 4:
+ screen_rect_offset.translate(0, -2.f);
+ break;
+ }
+
+ renderQuad(screen_rect_offset, uv_rect, slant_offset);
}
-
- renderQuad(&vertex_out[glyph_count * 4], &uv_out[glyph_count * 4], &colors_out[glyph_count * 4], screen_rect_offset, uv_rect, shadow_color, slant_offset);
- glyph_count++;
+ gGL.color4fv(color.mV);
+ renderQuad(screen_rect, uv_rect, slant_offset);
}
- renderQuad(&vertex_out[glyph_count * 4], &uv_out[glyph_count * 4], &colors_out[glyph_count * 4], screen_rect, uv_rect, color, slant_offset);
- glyph_count++;
- }
- else if (shadow == DROP_SHADOW)
- {
- LLColor4U shadow_color = LLFontGL::sShadowColor;
- shadow_color.mV[VALPHA] = U8(color.mV[VALPHA] * drop_shadow_strength);
- LLRectf screen_rect_shadow = screen_rect;
- screen_rect_shadow.translate(1.f, -1.f);
- renderQuad(&vertex_out[glyph_count * 4], &uv_out[glyph_count * 4], &colors_out[glyph_count * 4], screen_rect_shadow, uv_rect, shadow_color, slant_offset);
- glyph_count++;
- renderQuad(&vertex_out[glyph_count * 4], &uv_out[glyph_count * 4], &colors_out[glyph_count * 4], screen_rect, uv_rect, color, slant_offset);
- glyph_count++;
- }
- else // normal rendering
- {
- renderQuad(&vertex_out[glyph_count * 4], &uv_out[glyph_count * 4], &colors_out[glyph_count * 4], screen_rect, uv_rect, color, slant_offset);
- glyph_count++;
+ else if (shadow == DROP_SHADOW)
+ {
+ LLColor4 shadow_color = LLFontGL::sShadowColor;
+ shadow_color.mV[VALPHA] = color.mV[VALPHA] * drop_shadow_strength;
+ gGL.color4fv(shadow_color.mV);
+ LLRectf screen_rect_shadow = screen_rect;
+ screen_rect_shadow.translate(1.f, -1.f);
+ renderQuad(screen_rect_shadow, uv_rect, slant_offset);
+ gGL.color4fv(color.mV);
+ renderQuad(screen_rect, uv_rect, slant_offset);
+ }
+ else // normal rendering
+ {
+ gGL.color4fv(color.mV);
+ renderQuad(screen_rect, uv_rect, slant_offset);
+ }
+
}
+ gGL.end();
}
diff --git a/indra/llrender/llfontgl.h b/indra/llrender/llfontgl.h
index dc8d848ed2..224ba51609 100644
--- a/indra/llrender/llfontgl.h
+++ b/indra/llrender/llfontgl.h
@@ -211,8 +211,8 @@ private:
LLFontDescriptor mFontDescriptor;
LLPointer<LLFontFreetype> mFontFreetype;
- void renderQuad(LLVector3* vertex_out, LLVector2* uv_out, LLColor4U* colors_out, const LLRectf& screen_rect, const LLRectf& uv_rect, const LLColor4U& color, F32 slant_amt) const;
- void drawGlyph(S32& glyph_count, LLVector3* vertex_out, LLVector2* uv_out, LLColor4U* colors_out, const LLRectf& screen_rect, const LLRectf& uv_rect, const LLColor4U& color, U8 style, ShadowType shadow, F32 drop_shadow_fade) const;
+ void renderQuad(const LLRectf& screen_rect, const LLRectf& uv_rect, F32 slant_amt) const;
+ void drawGlyph(const LLRectf& screen_rect, const LLRectf& uv_rect, const LLColor4& color, U8 style, ShadowType shadow, F32 drop_shadow_fade) const;
// Registry holds all instantiated fonts.
static LLFontRegistry* sFontRegistry;
diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index c0edd92bc1..ec1bd353cb 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -179,9 +179,6 @@ PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC glRenderbufferStorageMultisampleEXT =
// GL_EXT_framebuffer_blit
PFNGLBLITFRAMEBUFFEREXTPROC glBlitFramebufferEXT = NULL;
-// GL_EXT_blend_func_separate
-PFNGLBLENDFUNCSEPARATEEXTPROC glBlendFuncSeparateEXT = NULL;
-
// GL_ARB_draw_buffers
PFNGLDRAWBUFFERSARBPROC glDrawBuffersARB = NULL;
@@ -321,7 +318,6 @@ LLGLManager::LLGLManager() :
mHasCompressedTextures(FALSE),
mHasFramebufferObject(FALSE),
mHasFramebufferMultisample(FALSE),
- mHasBlendFuncSeparate(FALSE),
mHasVertexBufferObject(FALSE),
mHasPBuffer(FALSE),
@@ -350,8 +346,6 @@ LLGLManager::LLGLManager() :
mHasSeparateSpecularColor(FALSE),
- mDebugGPU(FALSE),
-
mDriverVersionMajor(1),
mDriverVersionMinor(0),
mDriverVersionRelease(0),
@@ -519,23 +513,11 @@ bool LLGLManager::initGL()
return false;
}
- setToDebugGPU();
initGLStates();
return true;
}
-void LLGLManager::setToDebugGPU()
-{
- //"MOBILE INTEL(R) 965 EXPRESS CHIP",
- if (mGLRenderer.find("INTEL") != std::string::npos && mGLRenderer.find("965") != std::string::npos)
- {
- mDebugGPU = TRUE ;
- }
-
- return ;
-}
-
void LLGLManager::getGLInfo(LLSD& info)
{
info["GLInfo"]["GLVendor"] = std::string((const char *)glGetString(GL_VENDOR));
@@ -645,11 +627,6 @@ void LLGLManager::initExtensions()
#else
mHasDrawBuffers = FALSE;
# endif
-# if GL_EXT_blend_func_separate
- mHasBlendFuncSeparate = TRUE;
-#else
- mHasBlendFuncSeparate = FALSE;
-# endif
mHasMipMapGeneration = FALSE;
mHasSeparateSpecularColor = FALSE;
mHasAnisotropic = FALSE;
@@ -676,7 +653,6 @@ void LLGLManager::initExtensions()
&& ExtensionExists("GL_EXT_packed_depth_stencil", gGLHExts.mSysExts);
mHasFramebufferMultisample = mHasFramebufferObject && ExtensionExists("GL_EXT_framebuffer_multisample", gGLHExts.mSysExts);
mHasDrawBuffers = ExtensionExists("GL_ARB_draw_buffers", gGLHExts.mSysExts);
- mHasBlendFuncSeparate = ExtensionExists("GL_EXT_blend_func_separate", gGLHExts.mSysExts);
mHasTextureRectangle = ExtensionExists("GL_ARB_texture_rectangle", gGLHExts.mSysExts);
#if !LL_DARWIN
mHasPointParameters = !mIsATI && ExtensionExists("GL_ARB_point_parameters", gGLHExts.mSysExts);
@@ -700,7 +676,6 @@ void LLGLManager::initExtensions()
mHasFramebufferObject = FALSE;
mHasFramebufferMultisample = FALSE;
mHasDrawBuffers = FALSE;
- mHasBlendFuncSeparate = FALSE;
mHasMipMapGeneration = FALSE;
mHasSeparateSpecularColor = FALSE;
mHasAnisotropic = FALSE;
@@ -725,7 +700,6 @@ void LLGLManager::initExtensions()
mHasShaderObjects = FALSE;
mHasVertexShader = FALSE;
mHasFragmentShader = FALSE;
- mHasBlendFuncSeparate = FALSE;
LL_WARNS("RenderInit") << "GL extension support forced to SIMPLE level via LL_GL_BASICEXT" << LL_ENDL;
}
if (getenv("LL_GL_BLACKLIST")) /* Flawfinder: ignore */
@@ -754,8 +728,7 @@ void LLGLManager::initExtensions()
if (strchr(blacklist,'r')) mHasDrawBuffers = FALSE;//S
if (strchr(blacklist,'s')) mHasFramebufferMultisample = FALSE;
if (strchr(blacklist,'t')) mHasTextureRectangle = FALSE;
- if (strchr(blacklist,'u')) mHasBlendFuncSeparate = FALSE;//S
-
+
}
#endif // LL_LINUX || LL_SOLARIS
@@ -803,14 +776,6 @@ void LLGLManager::initExtensions()
{
LL_INFOS("RenderInit") << "Couldn't initialize GL_ARB_fragment_shader" << LL_ENDL;
}
- if (!mHasBlendFuncSeparate)
- {
- LL_INFOS("RenderInit") << "Couldn't initialize GL_EXT_blend_func_separate" << LL_ENDL;
- }
- if (!mHasDrawBuffers)
- {
- LL_INFOS("RenderInit") << "Couldn't initialize GL_ARB_draw_buffers" << LL_ENDL;
- }
// Disable certain things due to known bugs
if (mIsIntel && mHasMipMapGeneration)
@@ -881,10 +846,6 @@ void LLGLManager::initExtensions()
{
glDrawBuffersARB = (PFNGLDRAWBUFFERSARBPROC) GLH_EXT_GET_PROC_ADDRESS("glDrawBuffersARB");
}
- if (mHasBlendFuncSeparate)
- {
- glBlendFuncSeparateEXT = (PFNGLBLENDFUNCSEPARATEEXTPROC) GLH_EXT_GET_PROC_ADDRESS("glBlendFuncSeparateEXT");
- }
#if (!LL_LINUX && !LL_SOLARIS) || LL_LINUX_NV_GL_HEADERS
// This is expected to be a static symbol on Linux GL implementations, except if we use the nvidia headers - bah
glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)GLH_EXT_GET_PROC_ADDRESS("glDrawRangeElements");
@@ -1047,9 +1008,24 @@ void flush_glerror()
glGetError();
}
-void do_assert_glerror()
+void assert_glerror()
{
- if (LL_UNLIKELY(!gGLManager.mInited))
+ if (!gGLActive)
+ {
+ //llwarns << "GL used while not active!" << llendl;
+
+ if (gDebugSession)
+ {
+ //ll_fail("GL used while not active");
+ }
+ }
+
+ if (gNoRender || !gDebugGL)
+ {
+ return;
+ }
+
+ if (!gGLManager.mInited)
{
LL_ERRS("RenderInit") << "GL not initialized" << LL_ENDL;
}
@@ -1057,9 +1033,10 @@ void do_assert_glerror()
GLenum error;
error = glGetError();
BOOL quit = FALSE;
- while (LL_UNLIKELY(error))
+ while (error)
{
quit = TRUE;
+#ifndef LL_LINUX // *FIX: ! This should be an error for linux as well.
GLubyte const * gl_error_msg = gluErrorString(error);
if (NULL != gl_error_msg)
{
@@ -1083,6 +1060,7 @@ void do_assert_glerror()
}
}
error = glGetError();
+#endif
}
if (quit)
@@ -1098,25 +1076,6 @@ void do_assert_glerror()
}
}
-void assert_glerror()
-{
- if (!gGLActive)
- {
- //llwarns << "GL used while not active!" << llendl;
-
- if (gDebugSession)
- {
- //ll_fail("GL used while not active");
- }
- }
-
- if (!gNoRender && gDebugGL)
- {
- do_assert_glerror();
- }
-}
-
-
void clear_glerror()
{
// Create or update texture to be used with this data
@@ -1130,7 +1089,7 @@ void clear_glerror()
//
// Static members
-boost::unordered_map<LLGLenum, LLGLboolean> LLGLState::sStateMap;
+std::map<LLGLenum, LLGLboolean> LLGLState::sStateMap;
GLboolean LLGLDepthTest::sDepthEnabled = GL_FALSE; // OpenGL default
GLenum LLGLDepthTest::sDepthFunc = GL_LESS; // OpenGL default
@@ -1178,7 +1137,7 @@ void LLGLState::resetTextureStates()
void LLGLState::dumpStates()
{
LL_INFOS("RenderState") << "GL States:" << LL_ENDL;
- for (boost::unordered_map<LLGLenum, LLGLboolean>::iterator iter = sStateMap.begin();
+ for (std::map<LLGLenum, LLGLboolean>::iterator iter = sStateMap.begin();
iter != sStateMap.end(); ++iter)
{
LL_INFOS("RenderState") << llformat(" 0x%04x : %s",(S32)iter->first,iter->second?"TRUE":"FALSE") << LL_ENDL;
@@ -1214,7 +1173,7 @@ void LLGLState::checkStates(const std::string& msg)
}
}
- for (boost::unordered_map<LLGLenum, LLGLboolean>::iterator iter = sStateMap.begin();
+ for (std::map<LLGLenum, LLGLboolean>::iterator iter = sStateMap.begin();
iter != sStateMap.end(); ++iter)
{
LLGLenum state = iter->first;
diff --git a/indra/llrender/llgl.h b/indra/llrender/llgl.h
index 5e8965c06a..46c57c7585 100644
--- a/indra/llrender/llgl.h
+++ b/indra/llrender/llgl.h
@@ -30,7 +30,7 @@
// This file contains various stuff for handling gl extensions and other gl related stuff.
#include <string>
-#include <boost/unordered_map.hpp>
+#include <map>
#include <list>
#include "llerror.h"
@@ -81,7 +81,6 @@ public:
BOOL mHasCompressedTextures;
BOOL mHasFramebufferObject;
BOOL mHasFramebufferMultisample;
- BOOL mHasBlendFuncSeparate;
// ARB Extensions
BOOL mHasVertexBufferObject;
@@ -114,9 +113,6 @@ public:
// Misc extensions
BOOL mHasSeparateSpecularColor;
-
- //whether this GPU is in the debug list.
- BOOL mDebugGPU;
S32 mDriverVersionMajor;
S32 mDriverVersionMinor;
@@ -145,7 +141,6 @@ private:
void initExtensions();
void initGLStates();
void initGLImages();
- void setToDebugGPU();
};
extern LLGLManager gGLManager;
@@ -239,7 +234,7 @@ public:
static void checkClientArrays(const std::string& msg = "", U32 data_mask = 0x0001);
protected:
- static boost::unordered_map<LLGLenum, LLGLboolean> sStateMap;
+ static std::map<LLGLenum, LLGLboolean> sStateMap;
public:
enum { CURRENT_STATE = -2 };
diff --git a/indra/llrender/llglheaders.h b/indra/llrender/llglheaders.h
index 5a34b46d0c..436c861ab4 100644
--- a/indra/llrender/llglheaders.h
+++ b/indra/llrender/llglheaders.h
@@ -210,9 +210,6 @@ extern PFNGLGETCOMPRESSEDTEXIMAGEARBPROC glGetCompressedTexImageARB;
extern PFNGLCOLORTABLEEXTPROC glColorTableEXT;
-//GL_EXT_blend_func_separate
-extern PFNGLBLENDFUNCSEPARATEEXTPROC glBlendFuncSeparateEXT;
-
//GL_EXT_framebuffer_object
extern PFNGLISRENDERBUFFEREXTPROC glIsRenderbufferEXT;
extern PFNGLBINDRENDERBUFFEREXTPROC glBindRenderbufferEXT;
@@ -246,10 +243,7 @@ extern PFNGLGENERATEMIPMAPEXTPROC glGenerateMipmapEXT;
# include "GL/glh_extensions.h"
# undef __APPLE__
-#elif LL_LINUX
-//----------------------------------------------------------------------------
-// LL_LINUX
-
+#elif LL_LINUX
//----------------------------------------------------------------------------
// Linux, MESA headers, but not necessarily assuming MESA runtime.
// quotes so we get libraries/.../GL/ version
@@ -285,7 +279,6 @@ extern PFNGLGENERATEMIPMAPEXTPROC glGenerateMipmapEXT;
# define LL_LINUX_NV_GL_HEADERS 0
#endif // LL_LINUX && defined(WINGDIAPI)
-
#if LL_LINUX_NV_GL_HEADERS
// Missing functions when using nvidia headers:
extern PFNGLACTIVETEXTUREARBPROC glActiveTextureARB;
@@ -446,9 +439,6 @@ extern PFNGLGETATTRIBLOCATIONARBPROC glGetAttribLocationARB;
extern PFNGLCOMPRESSEDTEXIMAGE2DARBPROC glCompressedTexImage2DARB;
extern PFNGLGETCOMPRESSEDTEXIMAGEARBPROC glGetCompressedTexImageARB;
-//GL_EXT_blend_func_separate
-extern PFNGLBLENDFUNCSEPARATEEXTPROC glBlendFuncSeparateEXT;
-
//GL_EXT_framebuffer_object
extern PFNGLISRENDERBUFFEREXTPROC glIsRenderbufferEXT;
extern PFNGLBINDRENDERBUFFEREXTPROC glBindRenderbufferEXT;
@@ -477,10 +467,7 @@ extern PFNGLBLITFRAMEBUFFEREXTPROC glBlitFramebufferEXT;
//GL_ARB_draw_buffers
extern PFNGLDRAWBUFFERSARBPROC glDrawBuffersARB;
-
#elif LL_WINDOWS
-//----------------------------------------------------------------------------
-// LL_WINDOWS
// windows gl headers depend on things like APIENTRY, so include windows.
#define WIN32_LEAN_AND_MEAN
@@ -648,9 +635,6 @@ extern PFNGLBINDATTRIBLOCATIONARBPROC glBindAttribLocationARB;
extern PFNGLGETACTIVEATTRIBARBPROC glGetActiveAttribARB;
extern PFNGLGETATTRIBLOCATIONARBPROC glGetAttribLocationARB;
-//GL_EXT_blend_func_separate
-extern PFNGLBLENDFUNCSEPARATEEXTPROC glBlendFuncSeparateEXT;
-
//GL_EXT_framebuffer_object
extern PFNGLISRENDERBUFFEREXTPROC glIsRenderbufferEXT;
extern PFNGLBINDRENDERBUFFEREXTPROC glBindRenderbufferEXT;
@@ -679,7 +663,6 @@ extern PFNGLBLITFRAMEBUFFEREXTPROC glBlitFramebufferEXT;
//GL_ARB_draw_buffers
extern PFNGLDRAWBUFFERSARBPROC glDrawBuffersARB;
-
#elif LL_DARWIN
//----------------------------------------------------------------------------
// LL_DARWIN
@@ -696,9 +679,6 @@ extern PFNGLDRAWBUFFERSARBPROC glDrawBuffersARB;
// Note that they also must not be called on 10.3.9. This should be taken care of by a runtime check for the existence of the GL extension.
#include <AvailabilityMacros.h>
-//GL_EXT_blend_func_separate
-extern void glBlendFuncSeparateEXT(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
-
// GL_EXT_framebuffer_object
extern GLboolean glIsRenderbufferEXT(GLuint renderbuffer) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
extern void glBindRenderbufferEXT(GLenum target, GLuint renderbuffer) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp
index 90fcf6ab3f..7860b32f34 100644
--- a/indra/llrender/llimagegl.cpp
+++ b/indra/llrender/llimagegl.cpp
@@ -144,12 +144,12 @@ void LLImageGL::checkTexSize(bool forced) const
if (gDebugSession)
{
gFailLog << "wrong texture size and discard level!" <<
- mWidth << " Height: " << mHeight << " Current Level: " << (S32)mCurrentDiscardLevel << std::endl;
+ mWidth << " Height: " << mHeight << " Current Level: " << mCurrentDiscardLevel << std::endl;
}
else
{
llerrs << "wrong texture size and discard level: width: " <<
- mWidth << " Height: " << mHeight << " Current Level: " << (S32)mCurrentDiscardLevel << llendl ;
+ mWidth << " Height: " << mHeight << " Current Level: " << mCurrentDiscardLevel << llendl ;
}
}
@@ -1051,12 +1051,8 @@ BOOL LLImageGL::setSubImageFromFrameBuffer(S32 fb_x, S32 fb_y, S32 x_pos, S32 y_
{
if (gGL.getTexUnit(0)->bind(this, false, true))
{
- if(gGLManager.mDebugGPU)
- {
- llinfos << "Calling glCopyTexSubImage2D(...)" << llendl ;
- checkTexSize(true) ;
- llcallstacks << fb_x << " : " << fb_y << " : " << x_pos << " : " << y_pos << " : " << width << " : " << height << llcallstacksendl ;
- }
+ 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;
@@ -1652,7 +1648,7 @@ void LLImageGL::calcAlphaChannelOffsetAndStride()
}
}
-void LLImageGL::analyzeAlpha(const void* data_in, U32 w, U32 h)
+void LLImageGL::analyzeAlpha(const void* data_in, S32 w, S32 h)
{
if(!mNeedsAlphaAndPickMask)
{
@@ -1660,91 +1656,26 @@ void LLImageGL::analyzeAlpha(const void* data_in, U32 w, U32 h)
}
U32 length = w * h;
- U32 alphatotal = 0;
+ const GLubyte* current = ((const GLubyte*) data_in) + mAlphaOffset ;
- U32 sample[16];
- memset(sample, 0, sizeof(U32)*16);
-
- // generate histogram of quantized alpha.
- // also add-in the histogram of a 2x2 box-sampled version. The idea is
- // this will mid-skew the data (and thus increase the chances of not
- // being used as a mask) from high-frequency alpha maps which
- // suffer the worst from aliasing when used as alpha masks.
- if (w >= 2 && h >= 2)
- {
- llassert(w%2 == 0);
- llassert(h%2 == 0);
- const GLubyte* rowstart = ((const GLubyte*) data_in) + mAlphaOffset;
- for (U32 y = 0; y < h; y+=2)
- {
- const GLubyte* current = rowstart;
- for (U32 x = 0; x < w; x+=2)
- {
- const U32 s1 = current[0];
- alphatotal += s1;
- const U32 s2 = current[w * mAlphaStride];
- alphatotal += s2;
- current += mAlphaStride;
- const U32 s3 = current[0];
- alphatotal += s3;
- const U32 s4 = current[w * mAlphaStride];
- alphatotal += s4;
- current += mAlphaStride;
-
- ++sample[s1/16];
- ++sample[s2/16];
- ++sample[s3/16];
- ++sample[s4/16];
-
- const U32 asum = (s1+s2+s3+s4);
- alphatotal += asum;
- sample[asum/(16*4)] += 4;
- }
-
- rowstart += 2 * w * mAlphaStride;
- }
- length *= 2; // we sampled everything twice, essentially
- }
- else
+ S32 sample[16];
+ memset(sample, 0, sizeof(S32)*16);
+
+ for (U32 i = 0; i < length; i++)
{
- const GLubyte* current = ((const GLubyte*) data_in) + mAlphaOffset;
- for (U32 i = 0; i < length; i++)
- {
- const U32 s1 = *current;
- alphatotal += s1;
- ++sample[s1/16];
- current += mAlphaStride;
- }
+ ++sample[*current/16];
+ current += mAlphaStride ;
}
-
- // if more than 1/16th of alpha samples are mid-range, this
- // shouldn't be treated as a 1-bit mask
- // also, if all of the alpha samples are clumped on one half
- // of the range (but not at an absolute extreme), then consider
- // this to be an intentional effect and don't treat as a mask.
-
- U32 midrangetotal = 0;
+ U32 total = 0;
for (U32 i = 4; i < 11; i++)
{
- midrangetotal += sample[i];
- }
- U32 lowerhalftotal = 0;
- for (U32 i = 0; i < 8; i++)
- {
- lowerhalftotal += sample[i];
- }
- U32 upperhalftotal = 0;
- for (U32 i = 8; i < 16; i++)
- {
- upperhalftotal += sample[i];
+ total += sample[i];
}
- if (midrangetotal > length/16 || // lots of midrange, or
- (lowerhalftotal == length && alphatotal != 0) || // all close to transparent but not all totally transparent, or
- (upperhalftotal == length && alphatotal != 255*length)) // all close to opaque but not all totally opaque
+ if (total > length/16)
{
- mIsMask = FALSE; // not suitable for masking
+ mIsMask = FALSE;
}
else
{
diff --git a/indra/llrender/llimagegl.h b/indra/llrender/llimagegl.h
index 87a835cdcc..95379298ef 100644
--- a/indra/llrender/llimagegl.h
+++ b/indra/llrender/llimagegl.h
@@ -85,7 +85,7 @@ public:
protected:
virtual ~LLImageGL();
- void analyzeAlpha(const void* data_in, U32 w, U32 h);
+ void analyzeAlpha(const void* data_in, S32 w, S32 h);
void calcAlphaChannelOffsetAndStride();
public:
diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp
index e1f6964f83..a829616df2 100644
--- a/indra/llrender/llrender.cpp
+++ b/indra/llrender/llrender.cpp
@@ -772,10 +772,8 @@ LLRender::LLRender()
mCurrAlphaFunc = CF_DEFAULT;
mCurrAlphaFuncVal = 0.01f;
- mCurrBlendColorSFactor = BF_UNDEF;
- mCurrBlendAlphaSFactor = BF_UNDEF;
- mCurrBlendColorDFactor = BF_UNDEF;
- mCurrBlendAlphaDFactor = BF_UNDEF;
+ mCurrBlendSFactor = BF_UNDEF;
+ mCurrBlendDFactor = BF_UNDEF;
}
LLRender::~LLRender()
@@ -845,9 +843,9 @@ void LLRender::translateUI(F32 x, F32 y, F32 z)
llerrs << "Need to push a UI translation frame before offsetting" << llendl;
}
- mUIOffset.back().mV[0] += x;
- mUIOffset.back().mV[1] += y;
- mUIOffset.back().mV[2] += z;
+ mUIOffset.front().mV[0] += x;
+ mUIOffset.front().mV[1] += y;
+ mUIOffset.front().mV[2] += z;
}
void LLRender::scaleUI(F32 x, F32 y, F32 z)
@@ -857,27 +855,27 @@ void LLRender::scaleUI(F32 x, F32 y, F32 z)
llerrs << "Need to push a UI transformation frame before scaling." << llendl;
}
- mUIScale.back().scaleVec(LLVector3(x,y,z));
+ mUIScale.front().scaleVec(LLVector3(x,y,z));
}
void LLRender::pushUIMatrix()
{
if (mUIOffset.empty())
{
- mUIOffset.push_back(LLVector3(0,0,0));
+ mUIOffset.push_front(LLVector3(0,0,0));
}
else
{
- mUIOffset.push_back(mUIOffset.back());
+ mUIOffset.push_front(mUIOffset.front());
}
if (mUIScale.empty())
{
- mUIScale.push_back(LLVector3(1,1,1));
+ mUIScale.push_front(LLVector3(1,1,1));
}
else
{
- mUIScale.push_back(mUIScale.back());
+ mUIScale.push_front(mUIScale.front());
}
}
@@ -887,8 +885,8 @@ void LLRender::popUIMatrix()
{
llerrs << "UI offset stack blown." << llendl;
}
- mUIOffset.pop_back();
- mUIScale.pop_back();
+ mUIOffset.pop_front();
+ mUIScale.pop_front();
}
LLVector3 LLRender::getUITranslation()
@@ -897,7 +895,7 @@ LLVector3 LLRender::getUITranslation()
{
llerrs << "UI offset stack empty." << llendl;
}
- return mUIOffset.back();
+ return mUIOffset.front();
}
LLVector3 LLRender::getUIScale()
@@ -906,7 +904,7 @@ LLVector3 LLRender::getUIScale()
{
llerrs << "UI scale stack empty." << llendl;
}
- return mUIScale.back();
+ return mUIScale.front();
}
@@ -916,8 +914,8 @@ void LLRender::loadUIIdentity()
{
llerrs << "Need to push UI translation frame before clearing offset." << llendl;
}
- mUIOffset.back().setVec(0,0,0);
- mUIScale.back().setVec(1,1,1);
+ mUIOffset.front().setVec(0,0,0);
+ mUIScale.front().setVec(1,1,1);
}
void LLRender::setColorMask(bool writeColor, bool writeAlpha)
@@ -991,44 +989,15 @@ void LLRender::blendFunc(eBlendFactor sfactor, eBlendFactor dfactor)
{
llassert(sfactor < BF_UNDEF);
llassert(dfactor < BF_UNDEF);
- if (mCurrBlendColorSFactor != sfactor || mCurrBlendColorDFactor != dfactor ||
- mCurrBlendAlphaSFactor != sfactor || mCurrBlendAlphaDFactor != dfactor)
+ if (mCurrBlendSFactor != sfactor || mCurrBlendDFactor != dfactor)
{
- mCurrBlendColorSFactor = sfactor;
- mCurrBlendAlphaSFactor = sfactor;
- mCurrBlendColorDFactor = dfactor;
- mCurrBlendAlphaDFactor = dfactor;
+ mCurrBlendSFactor = sfactor;
+ mCurrBlendDFactor = dfactor;
flush();
glBlendFunc(sGLBlendFactor[sfactor], sGLBlendFactor[dfactor]);
}
}
-void LLRender::blendFunc(eBlendFactor color_sfactor, eBlendFactor color_dfactor,
- eBlendFactor alpha_sfactor, eBlendFactor alpha_dfactor)
-{
- llassert(color_sfactor < BF_UNDEF);
- llassert(color_dfactor < BF_UNDEF);
- llassert(alpha_sfactor < BF_UNDEF);
- llassert(alpha_dfactor < BF_UNDEF);
- if (!gGLManager.mHasBlendFuncSeparate)
- {
- LL_WARNS_ONCE("render") << "no glBlendFuncSeparateEXT(), using color-only blend func" << llendl;
- blendFunc(color_sfactor, color_dfactor);
- return;
- }
- if (mCurrBlendColorSFactor != color_sfactor || mCurrBlendColorDFactor != color_dfactor ||
- mCurrBlendAlphaSFactor != alpha_sfactor || mCurrBlendAlphaDFactor != alpha_dfactor)
- {
- mCurrBlendColorSFactor = color_sfactor;
- mCurrBlendAlphaSFactor = alpha_sfactor;
- mCurrBlendColorDFactor = color_dfactor;
- mCurrBlendAlphaDFactor = alpha_dfactor;
- flush();
- glBlendFuncSeparateEXT(sGLBlendFactor[color_sfactor], sGLBlendFactor[color_dfactor],
- sGLBlendFactor[alpha_sfactor], sGLBlendFactor[alpha_dfactor]);
- }
-}
-
LLTexUnit* LLRender::getTexUnit(U32 index)
{
if (index < mTexUnits.size())
@@ -1204,79 +1173,18 @@ void LLRender::vertex3f(const GLfloat& x, const GLfloat& y, const GLfloat& z)
}
else
{
- LLVector3 vert = (LLVector3(x,y,z)+mUIOffset.back()).scaledVec(mUIScale.back());
+ LLVector3 vert = (LLVector3(x,y,z)+mUIOffset.front()).scaledVec(mUIScale.front());
mVerticesp[mCount] = vert;
}
mCount++;
- mVerticesp[mCount] = mVerticesp[mCount-1];
- mColorsp[mCount] = mColorsp[mCount-1];
- mTexcoordsp[mCount] = mTexcoordsp[mCount-1];
-}
-
-void LLRender::vertexBatchPreTransformed(LLVector3* verts, S32 vert_count)
-{
- if (mCount + vert_count > 4094)
+ if (mCount < 4096)
{
- // llwarns << "GL immediate mode overflow. Some geometry not drawn." << llendl;
- return;
- }
-
- for (S32 i = 0; i < vert_count; i++)
- {
- mVerticesp[mCount] = verts[i];
-
- mCount++;
- mTexcoordsp[mCount] = mTexcoordsp[mCount-1];
+ mVerticesp[mCount] = mVerticesp[mCount-1];
mColorsp[mCount] = mColorsp[mCount-1];
+ mTexcoordsp[mCount] = mTexcoordsp[mCount-1];
}
-
- mVerticesp[mCount] = mVerticesp[mCount-1];
-}
-
-void LLRender::vertexBatchPreTransformed(LLVector3* verts, LLVector2* uvs, S32 vert_count)
-{
- if (mCount + vert_count > 4094)
- {
- // llwarns << "GL immediate mode overflow. Some geometry not drawn." << llendl;
- return;
- }
-
- for (S32 i = 0; i < vert_count; i++)
- {
- mVerticesp[mCount] = verts[i];
- mTexcoordsp[mCount] = uvs[i];
-
- mCount++;
- mColorsp[mCount] = mColorsp[mCount-1];
- }
-
- mVerticesp[mCount] = mVerticesp[mCount-1];
- mTexcoordsp[mCount] = mTexcoordsp[mCount-1];
-}
-
-void LLRender::vertexBatchPreTransformed(LLVector3* verts, LLVector2* uvs, LLColor4U* colors, S32 vert_count)
-{
- if (mCount + vert_count > 4094)
- {
- // llwarns << "GL immediate mode overflow. Some geometry not drawn." << llendl;
- return;
- }
-
- for (S32 i = 0; i < vert_count; i++)
- {
- mVerticesp[mCount] = verts[i];
- mTexcoordsp[mCount] = uvs[i];
- mColorsp[mCount] = colors[i];
-
- mCount++;
- }
-
- mVerticesp[mCount] = mVerticesp[mCount-1];
- mTexcoordsp[mCount] = mTexcoordsp[mCount-1];
- mColorsp[mCount] = mColorsp[mCount-1];
}
-
void LLRender::vertex2i(const GLint& x, const GLint& y)
{
vertex3f((GLfloat) x, (GLfloat) y, 0);
diff --git a/indra/llrender/llrender.h b/indra/llrender/llrender.h
index 2767aa64a8..fb3a4d214d 100644
--- a/indra/llrender/llrender.h
+++ b/indra/llrender/llrender.h
@@ -311,21 +311,13 @@ public:
void color3fv(const GLfloat* c);
void color4ubv(const GLubyte* c);
- void vertexBatchPreTransformed(LLVector3* verts, S32 vert_count);
- void vertexBatchPreTransformed(LLVector3* verts, LLVector2* uvs, S32 vert_count);
- void vertexBatchPreTransformed(LLVector3* verts, LLVector2* uvs, LLColor4U*, S32 vert_count);
-
void setColorMask(bool writeColor, bool writeAlpha);
void setColorMask(bool writeColorR, bool writeColorG, bool writeColorB, bool writeAlpha);
void setSceneBlendType(eBlendType type);
void setAlphaRejectSettings(eCompareFunc func, F32 value = 0.01f);
- // applies blend func to both color and alpha
void blendFunc(eBlendFactor sfactor, eBlendFactor dfactor);
- // applies separate blend functions to color and alpha
- void blendFunc(eBlendFactor color_sfactor, eBlendFactor color_dfactor,
- eBlendFactor alpha_sfactor, eBlendFactor alpha_dfactor);
LLTexUnit* getTexUnit(U32 index);
@@ -364,15 +356,13 @@ private:
std::vector<LLTexUnit*> mTexUnits;
LLTexUnit* mDummyTexUnit;
- eBlendFactor mCurrBlendColorSFactor;
- eBlendFactor mCurrBlendColorDFactor;
- eBlendFactor mCurrBlendAlphaSFactor;
- eBlendFactor mCurrBlendAlphaDFactor;
+ eBlendFactor mCurrBlendSFactor;
+ eBlendFactor mCurrBlendDFactor;
F32 mMaxAnisotropy;
- std::vector<LLVector3> mUIOffset;
- std::vector<LLVector3> mUIScale;
+ std::list<LLVector3> mUIOffset;
+ std::list<LLVector3> mUIScale;
};
diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp
index de4501dd0f..0f41e278b6 100644
--- a/indra/llrender/llvertexbuffer.cpp
+++ b/indra/llrender/llvertexbuffer.cpp
@@ -376,11 +376,6 @@ LLVertexBuffer::LLVertexBuffer(U32 typemask, S32 usage) :
{
mUsage = 0 ;
}
-
- if (mUsage == GL_STREAM_DRAW_ARB && !sUseStreamDraw)
- {
- mUsage = 0;
- }
if (mUsage == GL_STREAM_DRAW_ARB && !sUseStreamDraw)
{
diff --git a/indra/llui/llaccordionctrl.h b/indra/llui/llaccordionctrl.h
index 1fe64c472e..e2de4b9d3b 100644
--- a/indra/llui/llaccordionctrl.h
+++ b/indra/llui/llaccordionctrl.h
@@ -133,7 +133,7 @@ public:
*/
const LLAccordionCtrlTab* getExpandedTab() const;
- LLAccordionCtrlTab* getSelectedTab() const { return mSelectedTab; }
+ const LLAccordionCtrlTab* getSelectedTab() const { return mSelectedTab; }
bool getFitParent() const {return mFitParent;}
diff --git a/indra/llui/llaccordionctrltab.cpp b/indra/llui/llaccordionctrltab.cpp
index b7da5f4a1b..4e0537f592 100644
--- a/indra/llui/llaccordionctrltab.cpp
+++ b/indra/llui/llaccordionctrltab.cpp
@@ -353,7 +353,6 @@ LLAccordionCtrlTab::LLAccordionCtrlTab(const LLAccordionCtrlTab::Params&p)
,mPaddingBottom(p.padding_bottom)
,mCanOpenClose(true)
,mFitPanel(p.fit_panel)
- ,mSelectionEnabled(p.selection_enabled)
,mContainerPanel(NULL)
,mScrollbar(NULL)
{
@@ -825,7 +824,7 @@ void LLAccordionCtrlTab::showAndFocusHeader()
{
LLAccordionCtrlTabHeader* header = getChild<LLAccordionCtrlTabHeader>(DD_HEADER_NAME);
header->setFocus(true);
- header->setSelected(mSelectionEnabled);
+ header->setSelected(true);
LLRect screen_rc;
LLRect selected_rc = header->getRect();
diff --git a/indra/llui/llaccordionctrltab.h b/indra/llui/llaccordionctrltab.h
index d6ac8cbc8f..8ae91ad651 100644
--- a/indra/llui/llaccordionctrltab.h
+++ b/indra/llui/llaccordionctrltab.h
@@ -236,8 +236,6 @@ private:
bool mStoredOpenCloseState;
bool mWasStateStored;
- bool mSelectionEnabled;
-
LLScrollbar* mScrollbar;
LLView* mContainerPanel;
diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp
index f0f34ebd4f..ac5651e4b6 100644
--- a/indra/llui/llbutton.cpp
+++ b/indra/llui/llbutton.cpp
@@ -114,7 +114,6 @@ LLButton::LLButton(const LLButton::Params& p)
mFlashing( FALSE ),
mCurGlowStrength(0.f),
mNeedsHighlight(FALSE),
- mMouseOver(false),
mUnselectedLabel(p.label()),
mSelectedLabel(p.label_selected()),
mGLFont(p.font),
@@ -499,11 +498,7 @@ void LLButton::onMouseEnter(S32 x, S32 y, MASK mask)
LLUICtrl::onMouseEnter(x, y, mask);
if (isInEnabledChain())
- {
mNeedsHighlight = TRUE;
- }
-
- mMouseOver = true;
}
void LLButton::onMouseLeave(S32 x, S32 y, MASK mask)
@@ -511,7 +506,6 @@ void LLButton::onMouseLeave(S32 x, S32 y, MASK mask)
LLUICtrl::onMouseLeave(x, y, mask);
mNeedsHighlight = FALSE;
- mMouseOver = true;
}
void LLButton::setHighlight(bool b)
@@ -565,10 +559,14 @@ void LLButton::draw()
}
// Unselected image assignments
+ S32 local_mouse_x;
+ S32 local_mouse_y;
+ LLUI::getMousePositionLocal(this, &local_mouse_x, &local_mouse_y);
+
bool enabled = isInEnabledChain();
bool pressed = pressed_by_keyboard
- || (hasMouseCapture() && mMouseOver)
+ || (hasMouseCapture() && pointInView(local_mouse_x, local_mouse_y))
|| mForcePressedState;
bool selected = getToggleState();
diff --git a/indra/llui/llbutton.h b/indra/llui/llbutton.h
index d87ceb7c42..2d5fefa78c 100644
--- a/indra/llui/llbutton.h
+++ b/indra/llui/llbutton.h
@@ -350,7 +350,6 @@ private:
BOOL mCommitOnReturn;
BOOL mFadeWhenDisabled;
bool mForcePressedState;
- bool mMouseOver;
LLFrameTimer mFlashingTimer;
};
diff --git a/indra/llui/llcallbackmap.h b/indra/llui/llcallbackmap.h
index 0a10877c09..eb8b423b29 100644
--- a/indra/llui/llcallbackmap.h
+++ b/indra/llui/llcallbackmap.h
@@ -29,13 +29,12 @@
#include <map>
#include <string>
-#include <boost/function.hpp>
class LLCallbackMap
{
public:
// callback definition.
- typedef boost::function<void* (void* data)> callback_t;
+ typedef void* (*callback_t)(void* data);
typedef std::map<std::string, LLCallbackMap> map_t;
typedef map_t::iterator map_iter_t;
diff --git a/indra/llui/lldockablefloater.cpp b/indra/llui/lldockablefloater.cpp
index ca2dc644a4..bf55239f1b 100644
--- a/indra/llui/lldockablefloater.cpp
+++ b/indra/llui/lldockablefloater.cpp
@@ -43,13 +43,12 @@ void LLDockableFloater::init(LLDockableFloater* thiz)
thiz->setCanClose(TRUE);
thiz->setCanDock(true);
thiz->setCanMinimize(TRUE);
- thiz->setOverlapsScreenChannel(false);
- thiz->mForceDocking = false;
}
LLDockableFloater::LLDockableFloater(LLDockControl* dockControl,
const LLSD& key, const Params& params) :
LLFloater(key, params), mDockControl(dockControl), mUniqueDocking(true)
+ , mOverlapsScreenChannel(false)
{
init(this);
mUseTongue = true;
@@ -76,12 +75,6 @@ LLDockableFloater::~LLDockableFloater()
BOOL LLDockableFloater::postBuild()
{
- // Remember we should force docking when the floater is opened for the first time
- if (mIsDockedStateForcedCallback != NULL && mIsDockedStateForcedCallback())
- {
- mForceDocking = true;
- }
-
mDockTongue = LLUI::getUIImage("windows/Flyout_Pointer.png");
LLFloater::setDocked(true);
return LLView::postBuild();
@@ -135,14 +128,6 @@ void LLDockableFloater::resetInstance()
void LLDockableFloater::setVisible(BOOL visible)
{
- // Force docking if requested
- if (visible && mForceDocking)
- {
- setCanDock(true);
- setDocked(true);
- mForceDocking = false;
- }
-
if(visible && isDocked())
{
resetInstance();
diff --git a/indra/llui/lldockablefloater.h b/indra/llui/lldockablefloater.h
index 8deb6c1159..86dcf670b1 100644
--- a/indra/llui/lldockablefloater.h
+++ b/indra/llui/lldockablefloater.h
@@ -124,10 +124,6 @@ protected:
void setDockControl(LLDockControl* dockControl);
const LLUIImagePtr& getDockTongue();
- // Checks if docking should be forced.
- // It may be useful e.g. if floater created in mouselook mode (see EXT-5609)
- boost::function<BOOL ()> mIsDockedStateForcedCallback;
-
private:
std::auto_ptr<LLDockControl> mDockControl;
LLUIImagePtr mDockTongue;
@@ -141,9 +137,6 @@ private:
bool mUseTongue;
bool mOverlapsScreenChannel;
-
- // Force docking when the floater is being shown for the first time.
- bool mForceDocking;
};
#endif /* LL_DOCKABLEFLOATER_H */
diff --git a/indra/llui/lldraghandle.cpp b/indra/llui/lldraghandle.cpp
index 42e6c3c786..9ad7c01bd5 100644
--- a/indra/llui/lldraghandle.cpp
+++ b/indra/llui/lldraghandle.cpp
@@ -107,7 +107,7 @@ void LLDragHandleTop::setTitle(const std::string& title)
params.follows.flags(FOLLOWS_TOP | FOLLOWS_LEFT | FOLLOWS_RIGHT);
params.font_shadow(LLFontGL::DROP_SHADOW_SOFT);
params.use_ellipses = true;
- params.parse_urls = false; //cancel URL replacement in floater title
+ params.allow_html = false; //cancel URL replacement in floater title
mTitleBox = LLUICtrlFactory::create<LLTextBox> (params);
addChild( mTitleBox );
}
diff --git a/indra/llui/llflatlistview.cpp b/indra/llui/llflatlistview.cpp
index c57c02f4b1..b28399a36b 100644
--- a/indra/llui/llflatlistview.cpp
+++ b/indra/llui/llflatlistview.cpp
@@ -607,14 +607,8 @@ void LLFlatListView::onItemMouseClick(item_pair_t* item_pair, MASK mask)
return;
}
- //no need to do additional commit on selection reset
- if (!(mask & MASK_CONTROL) || !mMultipleSelection) resetSelection(true);
-
- //only CTRL usage allows to deselect an item, usual clicking on an item cannot deselect it
- if (mask & MASK_CONTROL)
+ if (!(mask & MASK_CONTROL) || !mMultipleSelection) resetSelection();
selectItemPair(item_pair, select_item);
- else
- selectItemPair(item_pair, true);
}
void LLFlatListView::onItemRightMouseClick(item_pair_t* item_pair, MASK mask)
@@ -666,14 +660,6 @@ BOOL LLFlatListView::handleKeyHere(KEY key, MASK mask)
}
break;
}
- case KEY_ESCAPE:
- {
- if (mask == MASK_NONE)
- {
- setFocus(FALSE); // pass focus to the game area (EXT-8357)
- }
- break;
- }
default:
break;
}
@@ -789,18 +775,6 @@ bool LLFlatListView::selectItemPair(item_pair_t* item_pair, bool select)
return true;
}
-void LLFlatListView::scrollToShowFirstSelectedItem()
-{
- if (!mSelectedItemPairs.size()) return;
-
- LLRect selected_rc = mSelectedItemPairs.front()->first->getRect();
-
- if (selected_rc.isValid())
- {
- scrollToShowRect(selected_rc);
- }
-}
-
LLRect LLFlatListView::getLastSelectedItemRect()
{
if (!mSelectedItemPairs.size())
diff --git a/indra/llui/llflatlistview.h b/indra/llui/llflatlistview.h
index 0515853698..afd0176d98 100644
--- a/indra/llui/llflatlistview.h
+++ b/indra/llui/llflatlistview.h
@@ -292,7 +292,6 @@ public:
bool updateValue(const LLSD& old_value, const LLSD& new_value);
- void scrollToShowFirstSelectedItem();
void selectFirstItem ();
void selectLastItem ();
diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index e1203971ea..3cfb2c5d4a 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -2279,7 +2279,6 @@ void LLFloaterView::getMinimizePosition(S32 *left, S32 *bottom)
S32 floater_header_size = default_params.header_height;
static LLUICachedControl<S32> minimized_width ("UIMinimizedWidth", 0);
LLRect snap_rect_local = getLocalSnapRect();
- snap_rect_local.mTop += mMinimizePositionVOffset;
for(S32 col = snap_rect_local.mLeft;
col < snap_rect_local.getWidth() - minimized_width;
col += minimized_width)
@@ -2377,19 +2376,6 @@ BOOL LLFloaterView::allChildrenClosed()
return true;
}
-void LLFloaterView::shiftFloaters(S32 x_offset, S32 y_offset)
-{
- for (child_list_const_iter_t it = getChildList()->begin(); it != getChildList()->end(); ++it)
- {
- LLFloater* floaterp = dynamic_cast<LLFloater*>(*it);
-
- if (floaterp && floaterp->isMinimized())
- {
- floaterp->translate(x_offset, y_offset);
- }
- }
-}
-
void LLFloaterView::refresh()
{
// Constrain children to be entirely on the screen
diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h
index 5e482cbac3..2deae29607 100644
--- a/indra/llui/llfloater.h
+++ b/indra/llui/llfloater.h
@@ -449,7 +449,6 @@ public:
// Given a child of gFloaterView, make sure this view can fit entirely onscreen.
void adjustToFitScreen(LLFloater* floater, BOOL allow_partial_outside);
- void setMinimizePositionVerticalOffset(S32 offset) { mMinimizePositionVOffset = offset; }
void getMinimizePosition( S32 *left, S32 *bottom);
void restoreAll(); // un-minimize all floaters
typedef std::set<LLView*> skip_list_t;
@@ -466,7 +465,6 @@ public:
// attempt to close all floaters
void closeAllChildren(bool app_quitting);
BOOL allChildrenClosed();
- void shiftFloaters(S32 x_offset, S32 y_offset);
LLFloater* getFrontmost() const;
LLFloater* getBackmost() const;
@@ -486,7 +484,6 @@ private:
BOOL mFocusCycleMode;
S32 mSnapOffsetBottom;
S32 mSnapOffsetRight;
- S32 mMinimizePositionVOffset;
};
//
diff --git a/indra/llui/lllocalcliprect.cpp b/indra/llui/lllocalcliprect.cpp
index 6841301219..1a311bb13a 100644
--- a/indra/llui/lllocalcliprect.cpp
+++ b/indra/llui/lllocalcliprect.cpp
@@ -27,8 +27,33 @@
#include "lllocalcliprect.h"
#include "llfontgl.h"
+#include "llgl.h"
#include "llui.h"
+#include <stack>
+
+//---------------------------------------------------------------------------
+// LLScreenClipRect
+// implementation class in screen space
+//---------------------------------------------------------------------------
+class LLScreenClipRect
+{
+public:
+ LLScreenClipRect(const LLRect& rect, BOOL enabled = TRUE);
+ virtual ~LLScreenClipRect();
+
+private:
+ static void pushClipRect(const LLRect& rect);
+ static void popClipRect();
+ static void updateScissorRegion();
+
+private:
+ LLGLState mScissorState;
+ BOOL mEnabled;
+
+ static std::stack<LLRect> sClipRectStack;
+};
+
/*static*/ std::stack<LLRect> LLScreenClipRect::sClipRectStack;
@@ -39,9 +64,9 @@ LLScreenClipRect::LLScreenClipRect(const LLRect& rect, BOOL enabled)
if (mEnabled)
{
pushClipRect(rect);
- mScissorState.setEnabled(!sClipRectStack.empty());
- updateScissorRegion();
}
+ mScissorState.setEnabled(!sClipRectStack.empty());
+ updateScissorRegion();
}
LLScreenClipRect::~LLScreenClipRect()
@@ -49,8 +74,8 @@ LLScreenClipRect::~LLScreenClipRect()
if (mEnabled)
{
popClipRect();
- updateScissorRegion();
}
+ updateScissorRegion();
}
//static
@@ -100,11 +125,16 @@ void LLScreenClipRect::updateScissorRegion()
// LLLocalClipRect
//---------------------------------------------------------------------------
LLLocalClipRect::LLLocalClipRect(const LLRect& rect, BOOL enabled /* = TRUE */)
-: LLScreenClipRect(LLRect(rect.mLeft + LLFontGL::sCurOrigin.mX,
- rect.mTop + LLFontGL::sCurOrigin.mY,
- rect.mRight + LLFontGL::sCurOrigin.mX,
- rect.mBottom + LLFontGL::sCurOrigin.mY), enabled)
-{}
+{
+ LLRect screen(rect.mLeft + LLFontGL::sCurOrigin.mX,
+ rect.mTop + LLFontGL::sCurOrigin.mY,
+ rect.mRight + LLFontGL::sCurOrigin.mX,
+ rect.mBottom + LLFontGL::sCurOrigin.mY);
+ mScreenClipRect = new LLScreenClipRect(screen, enabled);
+}
LLLocalClipRect::~LLLocalClipRect()
-{}
+{
+ delete mScreenClipRect;
+ mScreenClipRect = NULL;
+}
diff --git a/indra/llui/lllocalcliprect.h b/indra/llui/lllocalcliprect.h
index eeeaf2adb6..0097958916 100644
--- a/indra/llui/lllocalcliprect.h
+++ b/indra/llui/lllocalcliprect.h
@@ -25,9 +25,7 @@
#ifndef LLLOCALCLIPRECT_H
#define LLLOCALCLIPRECT_H
-#include "llgl.h"
#include "llrect.h" // can't forward declare, it's templated
-#include <stack>
// Clip rendering to a specific rectangle using GL scissor
// Just create one of these on the stack:
@@ -35,29 +33,15 @@
// LLLocalClipRect(rect);
// draw();
// }
-class LLScreenClipRect
-{
-public:
- LLScreenClipRect(const LLRect& rect, BOOL enabled = TRUE);
- virtual ~LLScreenClipRect();
-
-private:
- static void pushClipRect(const LLRect& rect);
- static void popClipRect();
- static void updateScissorRegion();
-
-private:
- LLGLState mScissorState;
- BOOL mEnabled;
-
- static std::stack<LLRect> sClipRectStack;
-};
-
-class LLLocalClipRect : public LLScreenClipRect
+class LLLocalClipRect
{
public:
LLLocalClipRect(const LLRect& rect, BOOL enabled = TRUE);
~LLLocalClipRect();
+
+private:
+ // implementation class
+ class LLScreenClipRect* mScreenClipRect;
};
#endif
diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
index 3e652ea960..c533610381 100644
--- a/indra/llui/llmenugl.cpp
+++ b/indra/llui/llmenugl.cpp
@@ -52,7 +52,6 @@
#include "llbutton.h"
#include "llfontgl.h"
#include "llresmgr.h"
-#include "lltrans.h"
#include "llui.h"
#include "llstl.h"
@@ -2267,9 +2266,8 @@ void LLMenuGL::createSpilloverBranch()
// technically, you can't tear off spillover menus, but we're passing the handle
// along just to be safe
LLMenuGL::Params p;
- std::string label = LLTrans::getString("More");
p.name("More");
- p.label(label);
+ p.label("More"); // *TODO: Translate
p.bg_color(mBackgroundColor);
p.bg_visible(true);
p.can_tear_off(false);
@@ -2278,7 +2276,7 @@ void LLMenuGL::createSpilloverBranch()
LLMenuItemBranchGL::Params branch_params;
branch_params.name = "More";
- branch_params.label = label;
+ branch_params.label = "More"; // *TODO: Translate
branch_params.branch = mSpilloverMenu;
branch_params.font.style = "italic";
diff --git a/indra/llui/llpanel.cpp b/indra/llui/llpanel.cpp
index b2e08c48c5..6fe36bbc0c 100644
--- a/indra/llui/llpanel.cpp
+++ b/indra/llui/llpanel.cpp
@@ -655,7 +655,7 @@ void LLPanel::childSetEnabled(const std::string& id, bool enabled)
void LLPanel::childSetTentative(const std::string& id, bool tentative)
{
- LLUICtrl* child = findChild<LLUICtrl>(id);
+ LLView* child = findChild<LLView>(id);
if (child)
{
child->setTentative(tentative);
@@ -854,16 +854,13 @@ LLPanel *LLPanel::childGetVisibleTab(const std::string& id) const
return NULL;
}
-LLPanel* LLPanel::childGetVisibleTabWithHelp()
+static LLPanel *childGetVisibleTabWithHelp(LLView *parent)
{
LLView *child;
- bfs_tree_iterator_t it = beginTreeBFS();
- // skip ourselves
- ++it;
- for (; it != endTreeBFS(); ++it)
+ // look through immediate children first for an active tab with help
+ for (child = parent->getFirstChild(); child; child = parent->findNextSibling(child))
{
- child = *it;
LLPanel *curTabPanel = NULL;
// do we have a tab container?
@@ -887,21 +884,36 @@ LLPanel* LLPanel::childGetVisibleTabWithHelp()
}
}
+ // then try a bit harder and recurse through all children
+ for (child = parent->getFirstChild(); child; child = parent->findNextSibling(child))
+ {
+ if (child->getVisible())
+ {
+ LLPanel* tab = ::childGetVisibleTabWithHelp(child);
+ if (tab)
+ {
+ return tab;
+ }
+ }
+ }
+
// couldn't find any active tabs with a help topic string
return NULL;
}
+LLPanel *LLPanel::childGetVisibleTabWithHelp()
+{
+ // find a visible tab with a help topic (to determine help context)
+ return ::childGetVisibleTabWithHelp(this);
+}
-LLPanel *LLPanel::childGetVisiblePanelWithHelp()
+static LLPanel *childGetVisiblePanelWithHelp(LLView *parent)
{
LLView *child;
- bfs_tree_iterator_t it = beginTreeBFS();
- // skip ourselves
- ++it;
- for (; it != endTreeBFS(); ++it)
+ // look through immediate children first for an active panel with help
+ for (child = parent->getFirstChild(); child; child = parent->findNextSibling(child))
{
- child = *it;
// do we have a panel with a help topic?
LLPanel *panel = dynamic_cast<LLPanel *>(child);
if (panel && panel->getVisible() && !panel->getHelpTopic().empty())
@@ -910,19 +922,39 @@ LLPanel *LLPanel::childGetVisiblePanelWithHelp()
}
}
+ // then try a bit harder and recurse through all children
+ for (child = parent->getFirstChild(); child; child = parent->findNextSibling(child))
+ {
+ if (child->getVisible())
+ {
+ LLPanel* panel = ::childGetVisiblePanelWithHelp(child);
+ if (panel)
+ {
+ return panel;
+ }
+ }
+ }
+
// couldn't find any active panels with a help topic string
return NULL;
}
-void LLPanel::childSetAction(const std::string& id, const commit_signal_t::slot_type& function)
+LLPanel *LLPanel::childGetVisiblePanelWithHelp()
{
- LLButton* button = findChild<LLButton>(id);
- if (button)
+ // find a visible tab with a help topic (to determine help context)
+ return ::childGetVisiblePanelWithHelp(this);
+}
+
+void LLPanel::childSetPrevalidate(const std::string& id, bool (*func)(const LLWString &) )
+{
+ LLLineEditor* child = findChild<LLLineEditor>(id);
+ if (child)
{
- button->setClickedCallback(function);
+ child->setPrevalidate(func);
}
}
+
void LLPanel::childSetAction(const std::string& id, boost::function<void(void*)> function, void* value)
{
LLButton* button = findChild<LLButton>(id);
diff --git a/indra/llui/llpanel.h b/indra/llui/llpanel.h
index a7224648c1..ca8bb77b77 100644
--- a/indra/llui/llpanel.h
+++ b/indra/llui/llpanel.h
@@ -164,7 +164,6 @@ public:
std::string getString(const std::string& name) const;
// ** Wrappers for setting child properties by name ** -TomY
- // WARNING: These are deprecated, please use getChild<T>("name")->doStuff() idiom instead
// LLView
void childSetVisible(const std::string& name, bool visible);
@@ -228,8 +227,7 @@ public:
void childSetPrevalidate(const std::string& id, bool (*func)(const LLWString &) );
// LLButton
- void childSetAction(const std::string& id, boost::function<void(void*)> function, void* value);
- void childSetAction(const std::string& id, const commit_signal_t::slot_type& function);
+ void childSetAction(const std::string& id, boost::function<void(void*)> function, void* value = NULL);
// LLTextBox
void childSetActionTextbox(const std::string& id, boost::function<void(void*)> function, void* value = NULL);
diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp
index 84e438cfb7..3f4ab0fbc8 100644
--- a/indra/llui/llscrolllistctrl.cpp
+++ b/indra/llui/llscrolllistctrl.cpp
@@ -129,7 +129,6 @@ LLScrollListCtrl::Params::Params()
search_column("search_column", 0),
sort_column("sort_column", -1),
sort_ascending("sort_ascending", true),
- mouse_wheel_opaque("mouse_wheel_opaque", false),
commit_on_keyboard_movement("commit_on_keyboard_movement", true),
heading_height("heading_height"),
page_lines("page_lines", 0),
@@ -158,7 +157,6 @@ LLScrollListCtrl::LLScrollListCtrl(const LLScrollListCtrl::Params& p)
: LLUICtrl(p),
mLineHeight(0),
mScrollLines(0),
- mMouseWheelOpaque(p.mouse_wheel_opaque),
mPageLines(p.page_lines),
mMaxSelectable(0),
mAllowKeyboardMovement(TRUE),
@@ -1532,12 +1530,6 @@ BOOL LLScrollListCtrl::handleScrollWheel(S32 x, S32 y, S32 clicks)
BOOL handled = FALSE;
// Pretend the mouse is over the scrollbar
handled = mScrollbar->handleScrollWheel( 0, 0, clicks );
-
- if (mMouseWheelOpaque)
- {
- return TRUE;
- }
-
return handled;
}
diff --git a/indra/llui/llscrolllistctrl.h b/indra/llui/llscrolllistctrl.h
index 8a2f893ba2..30618866af 100644
--- a/indra/llui/llscrolllistctrl.h
+++ b/indra/llui/llscrolllistctrl.h
@@ -96,8 +96,7 @@ public:
{
// behavioral flags
Optional<bool> multi_select,
- commit_on_keyboard_movement,
- mouse_wheel_opaque;
+ commit_on_keyboard_movement;
// display flags
Optional<bool> has_border,
@@ -444,7 +443,6 @@ private:
BOOL mCommitOnSelectionChange;
BOOL mSelectionChanged;
BOOL mNeedsScroll;
- BOOL mMouseWheelOpaque;
BOOL mCanSelect;
const BOOL mDisplayColumnHeaders;
BOOL mColumnsDirty;
diff --git a/indra/llui/llsliderctrl.cpp b/indra/llui/llsliderctrl.cpp
index d760178e35..904c458e85 100644
--- a/indra/llui/llsliderctrl.cpp
+++ b/indra/llui/llsliderctrl.cpp
@@ -229,10 +229,6 @@ void LLSliderCtrl::updateText()
std::string text = llformat(format.c_str(), displayed_value);
if( mEditor )
{
- // Setting editor text here to "" before using actual text is here because if text which
- // is set is the same as the one which is actually typed into lineeditor, LLLineEditor::setText()
- // will exit at it's beginning, so text for revert on escape won't be saved. (EXT-8536)
- mEditor->setText( LLStringUtil::null );
mEditor->setText( text );
}
else
diff --git a/indra/llui/llstyle.cpp b/indra/llui/llstyle.cpp
index 5e09cee78b..93314d7bc0 100644
--- a/indra/llui/llstyle.cpp
+++ b/indra/llui/llstyle.cpp
@@ -36,8 +36,6 @@ LLStyle::Params::Params()
: visible("visible", true),
drop_shadow("drop_shadow", LLFontGL::NO_SHADOW),
color("color", LLColor4::black),
- readonly_color("readonly_color", LLColor4::black),
- selected_color("selected_color", LLColor4::black),
font("font", LLFontGL::getFontMonospace()),
image("image"),
link_href("href")
@@ -45,10 +43,12 @@ LLStyle::Params::Params()
LLStyle::LLStyle(const LLStyle::Params& p)
-: mVisible(p.visible),
- mColor(p.color),
- mReadOnlyColor(p.readonly_color),
- mSelectedColor(p.selected_color),
+: mItalic(FALSE),
+ mBold(FALSE),
+ mUnderline(FALSE),
+ mVisible(p.visible),
+ mColor(p.color()),
+ mReadOnlyColor(p.readonly_color()),
mFont(p.font()),
mLink(p.link_href),
mDropShadow(p.drop_shadow),
diff --git a/indra/llui/llstyle.h b/indra/llui/llstyle.h
index 66cd639936..bfd0d72e85 100644
--- a/indra/llui/llstyle.h
+++ b/indra/llui/llstyle.h
@@ -41,8 +41,7 @@ public:
Optional<bool> visible;
Optional<LLFontGL::ShadowType> drop_shadow;
Optional<LLUIColor> color,
- readonly_color,
- selected_color;
+ readonly_color;
Optional<const LLFontGL*> font;
Optional<LLUIImage*> image;
Optional<std::string> link_href;
@@ -50,14 +49,11 @@ public:
};
LLStyle(const Params& p = Params());
public:
- const LLUIColor& getColor() const { return mColor; }
- void setColor(const LLUIColor &color) { mColor = color; }
+ const LLColor4& getColor() const { return mColor; }
+ void setColor(const LLColor4 &color) { mColor = color; }
- const LLUIColor& getReadOnlyColor() const { return mReadOnlyColor; }
- void setReadOnlyColor(const LLUIColor& color) { mReadOnlyColor = color; }
-
- const LLUIColor& getSelectedColor() const { return mSelectedColor; }
- void setSelectedColor(const LLUIColor& color) { mSelectedColor = color; }
+ const LLColor4& getReadOnlyColor() const { return mReadOnlyColor; }
+ void setReadOnlyColor(const LLColor4& color) { mReadOnlyColor = color; }
BOOL isVisible() const;
void setVisible(BOOL is_visible);
@@ -77,36 +73,41 @@ public:
BOOL isImage() const { return mImagep.notNull(); }
+ // inlined here to make it easier to compare to member data below. -MG
bool operator==(const LLStyle &rhs) const
{
return
mVisible == rhs.mVisible
&& mColor == rhs.mColor
&& mReadOnlyColor == rhs.mReadOnlyColor
- && mSelectedColor == rhs.mSelectedColor
&& mFont == rhs.mFont
&& mLink == rhs.mLink
&& mImagep == rhs.mImagep
+ && mItalic == rhs.mItalic
+ && mBold == rhs.mBold
+ && mUnderline == rhs.mUnderline
&& mDropShadow == rhs.mDropShadow;
}
bool operator!=(const LLStyle& rhs) const { return !(*this == rhs); }
public:
+ BOOL mItalic;
+ BOOL mBold;
+ BOOL mUnderline;
LLFontGL::ShadowType mDropShadow;
protected:
~LLStyle() { }
private:
- BOOL mVisible;
- LLUIColor mColor;
- LLUIColor mReadOnlyColor;
- LLUIColor mSelectedColor;
- std::string mFontName;
- const LLFontGL* mFont;
- std::string mLink;
- LLUIImagePtr mImagep;
+ BOOL mVisible;
+ LLUIColor mColor;
+ LLUIColor mReadOnlyColor;
+ std::string mFontName;
+ const LLFontGL* mFont; // cached for performance
+ std::string mLink;
+ LLUIImagePtr mImagep;
};
typedef LLPointer<LLStyle> LLStyleSP;
diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index 8d91aa2284..60c313b6ce 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -149,8 +149,6 @@ LLTextBase::Params::Params()
bg_readonly_color("bg_readonly_color"),
bg_writeable_color("bg_writeable_color"),
bg_focus_color("bg_focus_color"),
- text_selected_color("text_selected_color"),
- bg_selected_color("bg_selected_color"),
allow_scroll("allow_scroll", true),
plain_text("plain_text",false),
track_end("track_end", false),
@@ -163,12 +161,11 @@ LLTextBase::Params::Params()
font_shadow("font_shadow"),
wrap("wrap"),
use_ellipses("use_ellipses", false),
- parse_urls("parse_urls", false),
+ allow_html("allow_html", false),
parse_highlights("parse_highlights", false)
{
addSynonym(track_end, "track_bottom");
addSynonym(wrap, "word_wrap");
- addSynonym(parse_urls, "allow_html");
}
@@ -187,8 +184,6 @@ LLTextBase::LLTextBase(const LLTextBase::Params &p)
mWriteableBgColor(p.bg_writeable_color),
mReadOnlyBgColor(p.bg_readonly_color),
mFocusBgColor(p.bg_focus_color),
- mTextSelectedColor(p.text_selected_color),
- mSelectedBGColor(p.bg_selected_color),
mReflowIndex(S32_MAX),
mCursorPos( 0 ),
mScrollNeeded(FALSE),
@@ -208,7 +203,7 @@ LLTextBase::LLTextBase(const LLTextBase::Params &p)
mPlainText ( p.plain_text ),
mWordWrap(p.wrap),
mUseEllipses( p.use_ellipses ),
- mParseHTML(p.parse_urls),
+ mParseHTML(p.allow_html),
mParseHighlights(p.parse_highlights),
mBGVisible(p.bg_visible),
mScroller(NULL),
@@ -268,6 +263,9 @@ void LLTextBase::initFromParams(const LLTextBase::Params& p)
{
mReadOnly = p.read_only;
}
+
+ // HACK: text editors always need to be enabled so that we can scroll
+ LLView::setEnabled(true);
}
bool LLTextBase::truncate()
@@ -297,14 +295,11 @@ bool LLTextBase::truncate()
const LLStyle::Params& LLTextBase::getDefaultStyleParams()
{
- //FIXME: convert mDefaultStyle to a flyweight http://www.boost.org/doc/libs/1_40_0/libs/flyweight/doc/index.html
- //and eliminate color member values
if (mStyleDirty)
{
mDefaultStyle
- .color(LLUIColor(&mFgColor)) // pass linked color instead of copy of mFGColor
+ .color(LLUIColor(&mFgColor))
.readonly_color(LLUIColor(&mReadOnlyFgColor))
- .selected_color(LLUIColor(&mTextSelectedColor))
.font(mDefaultFont)
.drop_shadow(mFontShadow);
mStyleDirty = false;
@@ -402,7 +397,7 @@ void LLTextBase::drawSelectionBackground()
// Draw the selection box (we're using a box instead of reversing the colors on the selected text).
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
- const LLColor4& color = mSelectedBGColor;
+ const LLColor4& color = mReadOnly ? mReadOnlyFgColor.get() : mFgColor.get();
F32 alpha = hasFocus() ? 0.7f : 0.3f;
alpha *= getDrawContext().mAlpha;
LLColor4 selection_color(color.mV[VRED], color.mV[VGREEN], color.mV[VBLUE], alpha);
@@ -442,6 +437,7 @@ void LLTextBase::drawCursor()
}
else
{
+ //segmentp = mSegments.back();
return;
}
@@ -475,8 +471,21 @@ void LLTextBase::drawCursor()
{
LLColor4 text_color;
const LLFontGL* fontp;
+ if (segmentp)
+ {
text_color = segmentp->getColor();
fontp = segmentp->getStyle()->getFont();
+ }
+ else if (mReadOnly)
+ {
+ text_color = mReadOnlyFgColor.get();
+ fontp = mDefaultFont;
+ }
+ else
+ {
+ text_color = mFgColor.get();
+ fontp = mDefaultFont;
+ }
fontp->render(text, mCursorPos, cursor_rect,
LLColor4(1.f - text_color.mV[VRED], 1.f - text_color.mV[VGREEN], 1.f - text_color.mV[VBLUE], alpha),
LLFontGL::LEFT, mVAlign,
@@ -1006,26 +1015,21 @@ void LLTextBase::draw()
if (mBGVisible)
{
// clip background rect against extents, if we support scrolling
- LLRect bg_rect = mVisibleTextRect;
- if (mScroller)
- {
- bg_rect.intersectWith(doc_rect);
- }
+ LLLocalClipRect clip(doc_rect, mScroller != NULL);
+
LLColor4 bg_color = mReadOnly
? mReadOnlyBgColor.get()
: hasFocus()
? mFocusBgColor.get()
: mWriteableBgColor.get();
- gl_rect_2d(doc_rect, bg_color, TRUE);
+ gl_rect_2d(mVisibleTextRect, bg_color, TRUE);
}
// draw document view
LLUICtrl::draw();
{
- // only clip if we support scrolling...
- // since convention is that text boxes never vertically truncate their contents
- // regardless of rect bounds
+ // only clip if we support scrolling (mScroller != NULL)
LLLocalClipRect clip(doc_rect, mScroller != NULL);
drawSelectionBackground();
drawText();
@@ -1489,32 +1493,23 @@ void LLTextBase::getSegmentAndOffset( S32 startpos, segment_set_t::iterator* seg
LLTextBase::segment_set_t::iterator LLTextBase::getSegIterContaining(S32 index)
{
- static LLPointer<LLIndexSegment> index_segment = new LLIndexSegment();
-
if (index > getLength()) { return mSegments.end(); }
// when there are no segments, we return the end iterator, which must be checked by caller
if (mSegments.size() <= 1) { return mSegments.begin(); }
- //FIXME: avoid operator new somehow (without running into refcount problems)
- index_segment->setStart(index);
- index_segment->setEnd(index);
- segment_set_t::iterator it = mSegments.upper_bound(index_segment);
+ segment_set_t::iterator it = mSegments.upper_bound(new LLIndexSegment(index));
return it;
}
LLTextBase::segment_set_t::const_iterator LLTextBase::getSegIterContaining(S32 index) const
{
- static LLPointer<LLIndexSegment> index_segment = new LLIndexSegment();
-
if (index > getLength()) { return mSegments.end(); }
// when there are no segments, we return the end iterator, which must be checked by caller
if (mSegments.size() <= 1) { return mSegments.begin(); }
- index_segment->setStart(index);
- index_segment->setEnd(index);
- LLTextBase::segment_set_t::const_iterator it = mSegments.upper_bound(index_segment);
+ LLTextBase::segment_set_t::const_iterator it = mSegments.upper_bound(new LLIndexSegment(index));
return it;
}
@@ -1650,7 +1645,7 @@ void LLTextBase::appendTextImpl(const std::string &new_text, const LLStyle::Para
}
else
{
- appendAndHighlightText(match.getLabel(), part, link_params, match.underlineOnHoverOnly());
+ appendAndHighlightText(match.getLabel(), part, link_params);
// set the tooltip for the Url label
if (! match.getTooltip().empty())
@@ -1733,7 +1728,7 @@ void LLTextBase::appendWidget(const LLInlineViewSegment::Params& params, const s
insertStringNoUndo(getLength(), widget_wide_text, &segments);
}
-void LLTextBase::appendAndHighlightTextImpl(const std::string &new_text, S32 highlight_part, const LLStyle::Params& style_params, bool underline_on_hover_only)
+void LLTextBase::appendAndHighlightTextImpl(const std::string &new_text, S32 highlight_part, const LLStyle::Params& style_params)
{
// Save old state
S32 selection_start = mSelectionStart;
@@ -1764,17 +1759,7 @@ void LLTextBase::appendAndHighlightTextImpl(const std::string &new_text, S32 hig
S32 cur_length = getLength();
LLStyleConstSP sp(new LLStyle(highlight_params));
- LLTextSegmentPtr segmentp;
- if(underline_on_hover_only)
- {
- highlight_params.font.style("NORMAL");
- LLStyleConstSP normal_sp(new LLStyle(highlight_params));
- segmentp = new LLOnHoverChangeableTextSegment(sp, normal_sp, cur_length, cur_length + wide_text.size(), *this);
- }
- else
- {
- segmentp = new LLNormalTextSegment(sp, cur_length, cur_length + wide_text.size(), *this);
- }
+ LLTextSegmentPtr segmentp = new LLNormalTextSegment(sp, cur_length, cur_length + wide_text.size(), *this);
segment_vec_t segments;
segments.push_back(segmentp);
insertStringNoUndo(cur_length, wide_text, &segments);
@@ -1789,17 +1774,7 @@ void LLTextBase::appendAndHighlightTextImpl(const std::string &new_text, S32 hig
S32 segment_start = old_length;
S32 segment_end = old_length + wide_text.size();
LLStyleConstSP sp(new LLStyle(style_params));
- if (underline_on_hover_only)
- {
- LLStyle::Params normal_style_params(style_params);
- normal_style_params.font.style("NORMAL");
- LLStyleConstSP normal_sp(new LLStyle(normal_style_params));
- segments.push_back(new LLOnHoverChangeableTextSegment(sp, normal_sp, segment_start, segment_end, *this ));
- }
- else
- {
segments.push_back(new LLNormalTextSegment(sp, segment_start, segment_end, *this ));
- }
insertStringNoUndo(getLength(), wide_text, &segments);
}
@@ -1823,7 +1798,7 @@ void LLTextBase::appendAndHighlightTextImpl(const std::string &new_text, S32 hig
}
}
-void LLTextBase::appendAndHighlightText(const std::string &new_text, S32 highlight_part, const LLStyle::Params& style_params, bool underline_on_hover_only)
+void LLTextBase::appendAndHighlightText(const std::string &new_text, S32 highlight_part, const LLStyle::Params& style_params)
{
if (new_text.empty()) return;
@@ -1835,7 +1810,7 @@ void LLTextBase::appendAndHighlightText(const std::string &new_text, S32 highlig
if(pos!=start)
{
std::string str = std::string(new_text,start,pos-start);
- appendAndHighlightTextImpl(str,highlight_part, style_params, underline_on_hover_only);
+ appendAndHighlightTextImpl(str,highlight_part, style_params);
}
appendLineBreakSegment(style_params);
start = pos+1;
@@ -1843,7 +1818,7 @@ void LLTextBase::appendAndHighlightText(const std::string &new_text, S32 highlig
}
std::string str = std::string(new_text,start,new_text.length()-start);
- appendAndHighlightTextImpl(str,highlight_part, style_params, underline_on_hover_only);
+ appendAndHighlightTextImpl(str,highlight_part, style_params);
}
@@ -2297,7 +2272,6 @@ void LLTextBase::updateRects()
// allow horizontal scrolling?
// if so, use entire width of text contents
// otherwise, stop at width of mVisibleTextRect
- //FIXME: consider use of getWordWrap() instead
doc_rect.mRight = mScroller
? llmax(mVisibleTextRect.getWidth(), mTextBoundingRect.mRight)
: mVisibleTextRect.getWidth();
@@ -2507,7 +2481,7 @@ F32 LLNormalTextSegment::drawClippedSegment(S32 seg_start, S32 seg_end, S32 sele
font->render(text, start,
rect,
- mStyle->getSelectedColor().get(),
+ LLColor4( 1.f - color.mV[0], 1.f - color.mV[1], 1.f - color.mV[2], 1.f ),
LLFontGL::LEFT, mEditor.mVAlign,
LLFontGL::NORMAL,
LLFontGL::NO_SHADOW,
@@ -2704,33 +2678,6 @@ void LLNormalTextSegment::dump() const
llendl;
}
-//
-// LLOnHoverChangeableTextSegment
-//
-
-LLOnHoverChangeableTextSegment::LLOnHoverChangeableTextSegment( LLStyleConstSP style, LLStyleConstSP normal_style, S32 start, S32 end, LLTextBase& editor ):
- LLNormalTextSegment(normal_style, start, end, editor),
- mHoveredStyle(style),
- mNormalStyle(normal_style){}
-
-/*virtual*/
-F32 LLOnHoverChangeableTextSegment::draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRect& draw_rect)
-{
- F32 result = LLNormalTextSegment::draw(start, end, selection_start, selection_end, draw_rect);
- if (end == mEnd - mStart)
- {
- mStyle = mNormalStyle;
- }
- return result;
-}
-
-/*virtual*/
-BOOL LLOnHoverChangeableTextSegment::handleHover(S32 x, S32 y, MASK mask)
-{
- mStyle = mHoveredStyle;
- return LLNormalTextSegment::handleHover(x, y, mask);
-}
-
//
// LLInlineViewSegment
diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h
index e5dfecad54..86ab8f357d 100644
--- a/indra/llui/lltextbase.h
+++ b/indra/llui/lltextbase.h
@@ -139,25 +139,10 @@ protected:
boost::signals2::connection mImageLoadedConnection;
};
-// Text segment that changes it's style depending of mouse pointer position ( is it inside or outside segment)
-class LLOnHoverChangeableTextSegment : public LLNormalTextSegment
-{
-public:
- LLOnHoverChangeableTextSegment( LLStyleConstSP style, LLStyleConstSP normal_style, S32 start, S32 end, LLTextBase& editor );
- /*virtual*/ F32 draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRect& draw_rect);
- /*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask);
-protected:
- // Style used for text when mouse pointer is over segment
- LLStyleConstSP mHoveredStyle;
- // Style used for text when mouse pointer is outside segment
- LLStyleConstSP mNormalStyle;
-
-};
-
class LLIndexSegment : public LLTextSegment
{
public:
- LLIndexSegment() : LLTextSegment(0, 0) {}
+ LLIndexSegment(S32 pos) : LLTextSegment(pos, pos) {}
};
class LLInlineViewSegment : public LLTextSegment
@@ -250,9 +235,7 @@ public:
text_readonly_color,
bg_readonly_color,
bg_writeable_color,
- bg_focus_color,
- text_selected_color,
- bg_selected_color;
+ bg_focus_color;
Optional<bool> bg_visible,
border_visible,
@@ -262,7 +245,7 @@ public:
plain_text,
wrap,
use_ellipses,
- parse_urls,
+ allow_html,
parse_highlights,
clip_partial;
@@ -452,7 +435,7 @@ protected:
S32 insertStringNoUndo(S32 pos, const LLWString &wstr, segment_vec_t* segments = NULL); // returns num of chars actually inserted
S32 removeStringNoUndo(S32 pos, S32 length);
S32 overwriteCharNoUndo(S32 pos, llwchar wc);
- void appendAndHighlightText(const std::string &new_text, S32 highlight_part, const LLStyle::Params& stylep, bool underline_on_hover_only = false);
+ void appendAndHighlightText(const std::string &new_text, S32 highlight_part, const LLStyle::Params& stylep);
// manage segments
@@ -495,7 +478,7 @@ protected:
void replaceUrlLabel(const std::string &url, const std::string &label);
void appendTextImpl(const std::string &new_text, const LLStyle::Params& input_params = LLStyle::Params());
- void appendAndHighlightTextImpl(const std::string &new_text, S32 highlight_part, const LLStyle::Params& style_params, bool underline_on_hover_only = false);
+ void appendAndHighlightTextImpl(const std::string &new_text, S32 highlight_part, const LLStyle::Params& style_params);
protected:
@@ -518,8 +501,6 @@ protected:
LLUIColor mWriteableBgColor;
LLUIColor mReadOnlyBgColor;
LLUIColor mFocusBgColor;
- LLUIColor mTextSelectedColor;
- LLUIColor mSelectedBGColor;
// cursor
S32 mCursorPos; // I-beam is just after the mCursorPos-th character.
diff --git a/indra/llui/lltextbox.cpp b/indra/llui/lltextbox.cpp
index 6a905b7ec0..3e2422c88b 100644
--- a/indra/llui/lltextbox.cpp
+++ b/indra/llui/lltextbox.cpp
@@ -113,17 +113,6 @@ BOOL LLTextBox::handleHover(S32 x, S32 y, MASK mask)
return handled;
}
-void LLTextBox::setEnabled(BOOL enabled)
-{
- // just treat enabled as read-only flag
- bool read_only = !enabled;
- if (read_only != mReadOnly)
- {
- LLTextBase::setReadOnly(read_only);
- updateSegments();
- }
-}
-
void LLTextBox::setText(const LLStringExplicit& text , const LLStyle::Params& input_params )
{
// does string argument insertion
diff --git a/indra/llui/lltextbox.h b/indra/llui/lltextbox.h
index 071e18c638..4634dd0ff2 100644
--- a/indra/llui/lltextbox.h
+++ b/indra/llui/lltextbox.h
@@ -52,8 +52,6 @@ public:
/*virtual*/ BOOL handleMouseUp(S32 x, S32 y, MASK mask);
/*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask);
- /*virtual*/ void setEnabled(BOOL enabled);
-
/*virtual*/ void setText( const LLStringExplicit& text, const LLStyle::Params& input_params = LLStyle::Params() );
void setRightAlign() { mHAlign = LLFontGL::RIGHT; }
diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp
index 94bf716e7d..e09df60704 100644
--- a/indra/llui/lltexteditor.cpp
+++ b/indra/llui/lltexteditor.cpp
@@ -283,9 +283,6 @@ void LLTextEditor::initFromParams( const LLTextEditor::Params& p)
{
LLTextBase::initFromParams(p);
- // HACK: text editors always need to be enabled so that we can scroll
- LLView::setEnabled(true);
-
if (p.commit_on_focus_lost.isProvided())
{
mCommitOnFocusLost = p.commit_on_focus_lost;
@@ -455,13 +452,8 @@ S32 LLTextEditor::nextWordPos(S32 cursorPos) const
const LLTextSegmentPtr LLTextEditor::getPreviousSegment() const
{
- static LLPointer<LLIndexSegment> index_segment = new LLIndexSegment;
-
- index_segment->setStart(mCursorPos);
- index_segment->setEnd(mCursorPos);
-
// find segment index at character to left of cursor (or rightmost edge of selection)
- segment_set_t::const_iterator it = mSegments.lower_bound(index_segment);
+ segment_set_t::const_iterator it = mSegments.lower_bound(new LLIndexSegment(mCursorPos));
if (it != mSegments.end())
{
diff --git a/indra/llui/lltextvalidate.cpp b/indra/llui/lltextvalidate.cpp
index 4b9faa0560..d7260369ec 100644
--- a/indra/llui/lltextvalidate.cpp
+++ b/indra/llui/lltextvalidate.cpp
@@ -44,7 +44,6 @@ namespace LLTextValidate
declare("alpha_num_space", validateAlphaNumSpace);
declare("ascii_printable_no_pipe", validateASCIIPrintableNoPipe);
declare("ascii_printable_no_space", validateASCIIPrintableNoSpace);
- declare("ascii_with_newline", validateASCIIWithNewLine);
}
// Limits what characters can be used to [1234567890.-] with [-] only valid in the first position.
@@ -294,21 +293,4 @@ namespace LLTextValidate
}
return rv;
}
-
- // Used for multiline text stored on the server.
- // Example is landmark description in Places SP.
- bool validateASCIIWithNewLine(const LLWString &str)
- {
- bool rv = TRUE;
- S32 len = str.length();
- while(len--)
- {
- if (str[len] < 0x20 && str[len] != 0xA || str[len] > 0x7f)
- {
- rv = FALSE;
- break;
- }
- }
- return rv;
- }
}
diff --git a/indra/llui/lltextvalidate.h b/indra/llui/lltextvalidate.h
index 84644be30c..1b61eca051 100644
--- a/indra/llui/lltextvalidate.h
+++ b/indra/llui/lltextvalidate.h
@@ -51,7 +51,6 @@ namespace LLTextValidate
bool validateASCIIPrintableNoPipe(const LLWString &str);
bool validateASCIIPrintableNoSpace(const LLWString &str);
bool validateASCII(const LLWString &str);
- bool validateASCIIWithNewLine(const LLWString &str);
}
diff --git a/indra/llui/lltooltip.cpp b/indra/llui/lltooltip.cpp
index b02d3122fe..8ab4a119e5 100644
--- a/indra/llui/lltooltip.cpp
+++ b/indra/llui/lltooltip.cpp
@@ -180,7 +180,7 @@ LLToolTip::LLToolTip(const LLToolTip::Params& p)
params.font = p.font;
params.use_ellipses = true;
params.wrap = p.wrap;
- params.parse_urls = false; // disallow hyperlinks in tooltips, as they want to spawn their own explanatory tooltips
+ params.allow_html = false; // disallow hyperlinks in tooltips, as they want to spawn their own explanatory tooltips
mTextBox = LLUICtrlFactory::create<LLTextBox> (params);
addChild(mTextBox);
diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp
index d33d8e3178..03223b45f7 100644
--- a/indra/llui/llui.cpp
+++ b/indra/llui/llui.cpp
@@ -460,7 +460,7 @@ void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 border_width, S32 border
gl_draw_scaled_image_with_border(x, y, width, height, image, color, solid_color, uv_rect, scale_rect);
}
-void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTexture* image, const LLColor4& color, BOOL solid_color, const LLRectf& uv_outer_rect, const LLRectf& center_rect)
+void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTexture* image, const LLColor4& color, BOOL solid_color, const LLRectf& uv_rect, const LLRectf& scale_rect)
{
stop_glerror();
@@ -470,53 +470,36 @@ void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTex
return;
}
- // add in offset of current image to current ui translation
- const LLVector3 ui_scale = gGL.getUIScale();
- const LLVector3 ui_translation = (gGL.getUITranslation() + LLVector3(x, y, 0.f)).scaledVec(ui_scale);
-
- F32 uv_width = uv_outer_rect.getWidth();
- F32 uv_height = uv_outer_rect.getHeight();
-
// shrink scaling region to be proportional to clipped image region
- LLRectf uv_center_rect(
- uv_outer_rect.mLeft + (center_rect.mLeft * uv_width),
- uv_outer_rect.mBottom + (center_rect.mTop * uv_height),
- uv_outer_rect.mLeft + (center_rect.mRight * uv_width),
- uv_outer_rect.mBottom + (center_rect.mBottom * uv_height));
-
- F32 image_width = image->getWidth(0);
- F32 image_height = image->getHeight(0);
-
- S32 image_natural_width = llround(image_width * uv_width);
- S32 image_natural_height = llround(image_height * uv_height);
-
- LLRectf draw_center_rect( uv_center_rect.mLeft * image_width,
- uv_center_rect.mTop * image_height,
- uv_center_rect.mRight * image_width,
- uv_center_rect.mBottom * image_height);
-
- { // scale fixed region of image to drawn region
- draw_center_rect.mRight += width - image_natural_width;
- draw_center_rect.mTop += height - image_natural_height;
-
- F32 border_shrink_width = llmax(0.f, draw_center_rect.mLeft - draw_center_rect.mRight);
- F32 border_shrink_height = llmax(0.f, draw_center_rect.mBottom - draw_center_rect.mTop);
-
- F32 shrink_width_ratio = center_rect.getWidth() == 1.f ? 0.f : border_shrink_width / ((F32)image_natural_width * (1.f - center_rect.getWidth()));
- F32 shrink_height_ratio = center_rect.getHeight() == 1.f ? 0.f : border_shrink_height / ((F32)image_natural_height * (1.f - center_rect.getHeight()));
-
- F32 shrink_scale = 1.f - llmax(shrink_width_ratio, shrink_height_ratio);
-
- draw_center_rect.mLeft = llround(ui_translation.mV[VX] + (F32)draw_center_rect.mLeft * shrink_scale * ui_scale.mV[VX]);
- draw_center_rect.mTop = llround(ui_translation.mV[VY] + lerp((F32)height, (F32)draw_center_rect.mTop, shrink_scale) * ui_scale.mV[VY]);
- draw_center_rect.mRight = llround(ui_translation.mV[VX] + lerp((F32)width, (F32)draw_center_rect.mRight, shrink_scale) * ui_scale.mV[VX]);
- draw_center_rect.mBottom = llround(ui_translation.mV[VY] + (F32)draw_center_rect.mBottom * shrink_scale * ui_scale.mV[VY]);
- }
-
- LLRectf draw_outer_rect(ui_translation.mV[VX],
- ui_translation.mV[VY] + height * ui_scale.mV[VY],
- ui_translation.mV[VX] + width * ui_scale.mV[VX],
- ui_translation.mV[VY]);
+ LLRectf scale_rect_uv(
+ uv_rect.mLeft + (scale_rect.mLeft * uv_rect.getWidth()),
+ uv_rect.mBottom + (scale_rect.mTop * uv_rect.getHeight()),
+ uv_rect.mLeft + (scale_rect.mRight * uv_rect.getWidth()),
+ uv_rect.mBottom + (scale_rect.mBottom * uv_rect.getHeight()));
+
+ S32 image_natural_width = llround((F32)image->getWidth(0) * uv_rect.getWidth());
+ S32 image_natural_height = llround((F32)image->getHeight(0) * uv_rect.getHeight());
+
+ LLRect draw_rect(0, height, width, 0);
+ LLRect draw_scale_rect(llround(scale_rect_uv.mLeft * (F32)image->getWidth(0)),
+ llround(scale_rect_uv.mTop * (F32)image->getHeight(0)),
+ llround(scale_rect_uv.mRight * (F32)image->getWidth(0)),
+ llround(scale_rect_uv.mBottom * (F32)image->getHeight(0)));
+ // scale fixed region of image to drawn region
+ draw_scale_rect.mRight += width - image_natural_width;
+ draw_scale_rect.mTop += height - image_natural_height;
+
+ S32 border_shrink_width = llmax(0, draw_scale_rect.mLeft - draw_scale_rect.mRight);
+ S32 border_shrink_height = llmax(0, draw_scale_rect.mBottom - draw_scale_rect.mTop);
+
+ F32 shrink_width_ratio = scale_rect.getWidth() == 1.f ? 0.f : border_shrink_width / ((F32)image_natural_width * (1.f - scale_rect.getWidth()));
+ F32 shrink_height_ratio = scale_rect.getHeight() == 1.f ? 0.f : border_shrink_height / ((F32)image_natural_height * (1.f - scale_rect.getHeight()));
+
+ F32 shrink_scale = 1.f - llmax(shrink_width_ratio, shrink_height_ratio);
+ draw_scale_rect.mLeft = llround((F32)draw_scale_rect.mLeft * shrink_scale);
+ draw_scale_rect.mTop = llround(lerp((F32)height, (F32)draw_scale_rect.mTop, shrink_scale));
+ draw_scale_rect.mRight = llround(lerp((F32)width, (F32)draw_scale_rect.mRight, shrink_scale));
+ draw_scale_rect.mBottom = llround((F32)draw_scale_rect.mBottom * shrink_scale);
LLGLSUIDefault gls_ui;
@@ -526,174 +509,136 @@ void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTex
gGL.getTexUnit(0)->setTextureAlphaBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_TEX_ALPHA, LLTexUnit::TBS_VERT_ALPHA);
}
- gGL.getTexUnit(0)->bind(image);
-
- gGL.color4fv(color.mV);
-
- const S32 NUM_VERTICES = 9 * 4; // 9 quads
- LLVector2 uv[NUM_VERTICES];
- LLVector3 pos[NUM_VERTICES];
-
- S32 index = 0;
-
- gGL.begin(LLRender::QUADS);
+ gGL.pushUIMatrix();
{
- // draw bottom left
- uv[index] = LLVector2(uv_outer_rect.mLeft, uv_outer_rect.mBottom);
- pos[index] = LLVector3(draw_outer_rect.mLeft, draw_outer_rect.mBottom, 0.f);
- index++;
+ gGL.translateUI((F32)x, (F32)y, 0.f);
- uv[index] = LLVector2(uv_center_rect.mLeft, uv_outer_rect.mBottom);
- pos[index] = LLVector3(draw_center_rect.mLeft, draw_outer_rect.mBottom, 0.f);
- index++;
+ gGL.getTexUnit(0)->bind(image);
- uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mBottom);
- pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mBottom, 0.f);
- index++;
+ gGL.color4fv(color.mV);
+
+ gGL.begin(LLRender::QUADS);
+ {
+ // draw bottom left
+ gGL.texCoord2f(uv_rect.mLeft, uv_rect.mBottom);
+ gGL.vertex2i(0, 0);
- uv[index] = LLVector2(uv_outer_rect.mLeft, uv_center_rect.mBottom);
- pos[index] = LLVector3(draw_outer_rect.mLeft, draw_center_rect.mBottom, 0.f);
- index++;
+ gGL.texCoord2f(scale_rect_uv.mLeft, uv_rect.mBottom);
+ gGL.vertex2i(draw_scale_rect.mLeft, 0);
- // draw bottom middle
- uv[index] = LLVector2(uv_center_rect.mLeft, uv_outer_rect.mBottom);
- pos[index] = LLVector3(draw_center_rect.mLeft, draw_outer_rect.mBottom, 0.f);
- index++;
+ gGL.texCoord2f(scale_rect_uv.mLeft, scale_rect_uv.mBottom);
+ gGL.vertex2i(draw_scale_rect.mLeft, draw_scale_rect.mBottom);
- uv[index] = LLVector2(uv_center_rect.mRight, uv_outer_rect.mBottom);
- pos[index] = LLVector3(draw_center_rect.mRight, draw_outer_rect.mBottom, 0.f);
- index++;
+ gGL.texCoord2f(uv_rect.mLeft, scale_rect_uv.mBottom);
+ gGL.vertex2i(0, draw_scale_rect.mBottom);
- uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mBottom);
- pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mBottom, 0.f);
- index++;
+ // draw bottom middle
+ gGL.texCoord2f(scale_rect_uv.mLeft, uv_rect.mBottom);
+ gGL.vertex2i(draw_scale_rect.mLeft, 0);
- uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mBottom);
- pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mBottom, 0.f);
- index++;
+ gGL.texCoord2f(scale_rect_uv.mRight, uv_rect.mBottom);
+ gGL.vertex2i(draw_scale_rect.mRight, 0);
- // draw bottom right
- uv[index] = LLVector2(uv_center_rect.mRight, uv_outer_rect.mBottom);
- pos[index] = LLVector3(draw_center_rect.mRight, draw_outer_rect.mBottom, 0.f);
- index++;
+ gGL.texCoord2f(scale_rect_uv.mRight, scale_rect_uv.mBottom);
+ gGL.vertex2i(draw_scale_rect.mRight, draw_scale_rect.mBottom);
- uv[index] = LLVector2(uv_outer_rect.mRight, uv_outer_rect.mBottom);
- pos[index] = LLVector3(draw_outer_rect.mRight, draw_outer_rect.mBottom, 0.f);
- index++;
+ gGL.texCoord2f(scale_rect_uv.mLeft, scale_rect_uv.mBottom);
+ gGL.vertex2i(draw_scale_rect.mLeft, draw_scale_rect.mBottom);
- uv[index] = LLVector2(uv_outer_rect.mRight, uv_center_rect.mBottom);
- pos[index] = LLVector3(draw_outer_rect.mRight, draw_center_rect.mBottom, 0.f);
- index++;
+ // draw bottom right
+ gGL.texCoord2f(scale_rect_uv.mRight, uv_rect.mBottom);
+ gGL.vertex2i(draw_scale_rect.mRight, 0);
- uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mBottom);
- pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mBottom, 0.f);
- index++;
+ gGL.texCoord2f(uv_rect.mRight, uv_rect.mBottom);
+ gGL.vertex2i(width, 0);
- // draw left
- uv[index] = LLVector2(uv_outer_rect.mLeft, uv_center_rect.mBottom);
- pos[index] = LLVector3(draw_outer_rect.mLeft, draw_center_rect.mBottom, 0.f);
- index++;
+ gGL.texCoord2f(uv_rect.mRight, scale_rect_uv.mBottom);
+ gGL.vertex2i(width, draw_scale_rect.mBottom);
- uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mBottom);
- pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mBottom, 0.f);
- index++;
+ gGL.texCoord2f(scale_rect_uv.mRight, scale_rect_uv.mBottom);
+ gGL.vertex2i(draw_scale_rect.mRight, draw_scale_rect.mBottom);
- uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mTop);
- pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mTop, 0.f);
- index++;
+ // draw left
+ gGL.texCoord2f(uv_rect.mLeft, scale_rect_uv.mBottom);
+ gGL.vertex2i(0, draw_scale_rect.mBottom);
- uv[index] = LLVector2(uv_outer_rect.mLeft, uv_center_rect.mTop);
- pos[index] = LLVector3(draw_outer_rect.mLeft, draw_center_rect.mTop, 0.f);
- index++;
+ gGL.texCoord2f(scale_rect_uv.mLeft, scale_rect_uv.mBottom);
+ gGL.vertex2i(draw_scale_rect.mLeft, draw_scale_rect.mBottom);
- // draw middle
- uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mBottom);
- pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mBottom, 0.f);
- index++;
+ gGL.texCoord2f(scale_rect_uv.mLeft, scale_rect_uv.mTop);
+ gGL.vertex2i(draw_scale_rect.mLeft, draw_scale_rect.mTop);
- uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mBottom);
- pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mBottom, 0.f);
- index++;
+ gGL.texCoord2f(uv_rect.mLeft, scale_rect_uv.mTop);
+ gGL.vertex2i(0, draw_scale_rect.mTop);
- uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mTop);
- pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mTop, 0.f);
- index++;
+ // draw middle
+ gGL.texCoord2f(scale_rect_uv.mLeft, scale_rect_uv.mBottom);
+ gGL.vertex2i(draw_scale_rect.mLeft, draw_scale_rect.mBottom);
- uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mTop);
- pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mTop, 0.f);
- index++;
+ gGL.texCoord2f(scale_rect_uv.mRight, scale_rect_uv.mBottom);
+ gGL.vertex2i(draw_scale_rect.mRight, draw_scale_rect.mBottom);
- // draw right
- uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mBottom);
- pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mBottom, 0.f);
- index++;
+ gGL.texCoord2f(scale_rect_uv.mRight, scale_rect_uv.mTop);
+ gGL.vertex2i(draw_scale_rect.mRight, draw_scale_rect.mTop);
- uv[index] = LLVector2(uv_outer_rect.mRight, uv_center_rect.mBottom);
- pos[index] = LLVector3(draw_outer_rect.mRight, draw_center_rect.mBottom, 0.f);
- index++;
+ gGL.texCoord2f(scale_rect_uv.mLeft, scale_rect_uv.mTop);
+ gGL.vertex2i(draw_scale_rect.mLeft, draw_scale_rect.mTop);
- uv[index] = LLVector2(uv_outer_rect.mRight, uv_center_rect.mTop);
- pos[index] = LLVector3(draw_outer_rect.mRight, draw_center_rect.mTop, 0.f);
- index++;
+ // draw right
+ gGL.texCoord2f(scale_rect_uv.mRight, scale_rect_uv.mBottom);
+ gGL.vertex2i(draw_scale_rect.mRight, draw_scale_rect.mBottom);
- uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mTop);
- pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mTop, 0.f);
- index++;
+ gGL.texCoord2f(uv_rect.mRight, scale_rect_uv.mBottom);
+ gGL.vertex2i(width, draw_scale_rect.mBottom);
- // draw top left
- uv[index] = LLVector2(uv_outer_rect.mLeft, uv_center_rect.mTop);
- pos[index] = LLVector3(draw_outer_rect.mLeft, draw_center_rect.mTop, 0.f);
- index++;
+ gGL.texCoord2f(uv_rect.mRight, scale_rect_uv.mTop);
+ gGL.vertex2i(width, draw_scale_rect.mTop);
+
+ gGL.texCoord2f(scale_rect_uv.mRight, scale_rect_uv.mTop);
+ gGL.vertex2i(draw_scale_rect.mRight, draw_scale_rect.mTop);
- uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mTop);
- pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mTop, 0.f);
- index++;
+ // draw top left
+ gGL.texCoord2f(uv_rect.mLeft, scale_rect_uv.mTop);
+ gGL.vertex2i(0, draw_scale_rect.mTop);
- uv[index] = LLVector2(uv_center_rect.mLeft, uv_outer_rect.mTop);
- pos[index] = LLVector3(draw_center_rect.mLeft, draw_outer_rect.mTop, 0.f);
- index++;
+ gGL.texCoord2f(scale_rect_uv.mLeft, scale_rect_uv.mTop);
+ gGL.vertex2i(draw_scale_rect.mLeft, draw_scale_rect.mTop);
- uv[index] = LLVector2(uv_outer_rect.mLeft, uv_outer_rect.mTop);
- pos[index] = LLVector3(draw_outer_rect.mLeft, draw_outer_rect.mTop, 0.f);
- index++;
+ gGL.texCoord2f(scale_rect_uv.mLeft, uv_rect.mTop);
+ gGL.vertex2i(draw_scale_rect.mLeft, height);
- // draw top middle
- uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mTop);
- pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mTop, 0.f);
- index++;
+ gGL.texCoord2f(uv_rect.mLeft, uv_rect.mTop);
+ gGL.vertex2i(0, height);
- uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mTop);
- pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mTop, 0.f);
- index++;
+ // draw top middle
+ gGL.texCoord2f(scale_rect_uv.mLeft, scale_rect_uv.mTop);
+ gGL.vertex2i(draw_scale_rect.mLeft, draw_scale_rect.mTop);
- uv[index] = LLVector2(uv_center_rect.mRight, uv_outer_rect.mTop);
- pos[index] = LLVector3(draw_center_rect.mRight, draw_outer_rect.mTop, 0.f);
- index++;
+ gGL.texCoord2f(scale_rect_uv.mRight, scale_rect_uv.mTop);
+ gGL.vertex2i(draw_scale_rect.mRight, draw_scale_rect.mTop);
- uv[index] = LLVector2(uv_center_rect.mLeft, uv_outer_rect.mTop);
- pos[index] = LLVector3(draw_center_rect.mLeft, draw_outer_rect.mTop, 0.f);
- index++;
+ gGL.texCoord2f(scale_rect_uv.mRight, uv_rect.mTop);
+ gGL.vertex2i(draw_scale_rect.mRight, height);
- // draw top right
- uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mTop);
- pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mTop, 0.f);
- index++;
+ gGL.texCoord2f(scale_rect_uv.mLeft, uv_rect.mTop);
+ gGL.vertex2i(draw_scale_rect.mLeft, height);
- uv[index] = LLVector2(uv_outer_rect.mRight, uv_center_rect.mTop);
- pos[index] = LLVector3(draw_outer_rect.mRight, draw_center_rect.mTop, 0.f);
- index++;
+ // draw top right
+ gGL.texCoord2f(scale_rect_uv.mRight, scale_rect_uv.mTop);
+ gGL.vertex2i(draw_scale_rect.mRight, draw_scale_rect.mTop);
- uv[index] = LLVector2(uv_outer_rect.mRight, uv_outer_rect.mTop);
- pos[index] = LLVector3(draw_outer_rect.mRight, draw_outer_rect.mTop, 0.f);
- index++;
+ gGL.texCoord2f(uv_rect.mRight, scale_rect_uv.mTop);
+ gGL.vertex2i(width, draw_scale_rect.mTop);
- uv[index] = LLVector2(uv_center_rect.mRight, uv_outer_rect.mTop);
- pos[index] = LLVector3(draw_center_rect.mRight, draw_outer_rect.mTop, 0.f);
- index++;
+ gGL.texCoord2f(uv_rect.mRight, uv_rect.mTop);
+ gGL.vertex2i(width, height);
- gGL.vertexBatchPreTransformed(pos, uv, NUM_VERTICES);
+ gGL.texCoord2f(scale_rect_uv.mRight, uv_rect.mTop);
+ gGL.vertex2i(draw_scale_rect.mRight, height);
+ }
+ gGL.end();
}
- gGL.end();
+ gGL.popUIMatrix();
if (solid_color)
{
@@ -723,40 +668,25 @@ void gl_draw_scaled_rotated_image(S32 x, S32 y, S32 width, S32 height, F32 degre
if (degrees == 0.f)
{
- const S32 NUM_VERTICES = 4; // 9 quads
- LLVector2 uv[NUM_VERTICES];
- LLVector3 pos[NUM_VERTICES];
-
+ gGL.pushUIMatrix();
+ gGL.translateUI((F32)x, (F32)y, 0.f);
+
gGL.begin(LLRender::QUADS);
{
- LLVector3 ui_scale = gGL.getUIScale();
- LLVector3 ui_translation = gGL.getUITranslation();
- ui_translation.mV[VX] += x;
- ui_translation.mV[VY] += y;
- ui_translation.scaleVec(ui_scale);
- S32 index = 0;
- S32 scaled_width = llround(width * ui_scale.mV[VX]);
- S32 scaled_height = llround(height * ui_scale.mV[VY]);
-
- uv[index] = LLVector2(uv_rect.mRight, uv_rect.mTop);
- pos[index] = LLVector3(ui_translation.mV[VX] + scaled_width, ui_translation.mV[VY] + scaled_height, 0.f);
- index++;
-
- uv[index] = LLVector2(uv_rect.mLeft, uv_rect.mTop);
- pos[index] = LLVector3(ui_translation.mV[VX], ui_translation.mV[VY] + scaled_height, 0.f);
- index++;
-
- uv[index] = LLVector2(uv_rect.mLeft, uv_rect.mBottom);
- pos[index] = LLVector3(ui_translation.mV[VX], ui_translation.mV[VY], 0.f);
- index++;
-
- uv[index] = LLVector2(uv_rect.mRight, uv_rect.mBottom);
- pos[index] = LLVector3(ui_translation.mV[VX] + scaled_width, ui_translation.mV[VY], 0.f);
- index++;
-
- gGL.vertexBatchPreTransformed(pos, uv, NUM_VERTICES);
+ gGL.texCoord2f(uv_rect.mRight, uv_rect.mTop);
+ gGL.vertex2i(width, height );
+
+ gGL.texCoord2f(uv_rect.mLeft, uv_rect.mTop);
+ gGL.vertex2i(0, height );
+
+ gGL.texCoord2f(uv_rect.mLeft, uv_rect.mBottom);
+ gGL.vertex2i(0, 0);
+
+ gGL.texCoord2f(uv_rect.mRight, uv_rect.mBottom);
+ gGL.vertex2i(width, 0);
}
gGL.end();
+ gGL.popUIMatrix();
}
else
{
@@ -825,6 +755,25 @@ void gl_stippled_line_3d( const LLVector3& start, const LLVector3& end, const LL
LLUI::setLineWidth(1.f);
}
+
+void gl_rect_2d_xor(S32 left, S32 top, S32 right, S32 bottom)
+{
+ gGL.color4fv( LLColor4::white.mV );
+ glLogicOp( GL_XOR );
+ stop_glerror();
+
+ gGL.begin(LLRender::QUADS);
+ gGL.vertex2i(left, top);
+ gGL.vertex2i(left, bottom);
+ gGL.vertex2i(right, bottom);
+ gGL.vertex2i(right, top);
+ gGL.end();
+
+ glLogicOp( GL_COPY );
+ stop_glerror();
+}
+
+
void gl_arc_2d(F32 center_x, F32 center_y, F32 radius, S32 steps, BOOL filled, F32 start_angle, F32 end_angle)
{
if (end_angle < start_angle)
@@ -1058,6 +1007,42 @@ void gl_washer_segment_2d(F32 outer_radius, F32 inner_radius, F32 start_radians,
gGL.end();
}
+// Draws spokes around a circle.
+void gl_washer_spokes_2d(F32 outer_radius, F32 inner_radius, S32 count, const LLColor4& inner_color, const LLColor4& outer_color)
+{
+ const F32 DELTA = F_TWO_PI / count;
+ const F32 HALF_DELTA = DELTA * 0.5f;
+ const F32 SIN_DELTA = sin( DELTA );
+ const F32 COS_DELTA = cos( DELTA );
+
+ F32 x1 = outer_radius * cos( HALF_DELTA );
+ F32 y1 = outer_radius * sin( HALF_DELTA );
+ F32 x2 = inner_radius * cos( HALF_DELTA );
+ F32 y2 = inner_radius * sin( HALF_DELTA );
+
+ gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+
+ gGL.begin( LLRender::LINES );
+ {
+ while( count-- )
+ {
+ gGL.color4fv(outer_color.mV);
+ gGL.vertex2f( x1, y1 );
+ gGL.color4fv(inner_color.mV);
+ gGL.vertex2f( x2, y2 );
+
+ F32 x1_new = x1 * COS_DELTA - y1 * SIN_DELTA;
+ y1 = x1 * SIN_DELTA + y1 * COS_DELTA;
+ x1 = x1_new;
+
+ F32 x2_new = x2 * COS_DELTA - y2 * SIN_DELTA;
+ y2 = x2 * SIN_DELTA + y2 * COS_DELTA;
+ x2 = x2_new;
+ }
+ }
+ gGL.end();
+}
+
void gl_rect_2d_simple_tex( S32 width, S32 height )
{
gGL.begin( LLRender::QUADS );
@@ -1245,7 +1230,6 @@ void gl_segmented_rect_2d_tex(const S32 left,
gGL.popUIMatrix();
}
-//FIXME: rewrite to use scissor?
void gl_segmented_rect_2d_fragment_tex(const S32 left,
const S32 top,
const S32 right,
diff --git a/indra/llui/llui.h b/indra/llui/llui.h
index fc545c85d5..afec2e9c26 100644
--- a/indra/llui/llui.h
+++ b/indra/llui/llui.h
@@ -90,6 +90,7 @@ void gl_ring( F32 radius, F32 width, const LLColor4& center_color, const LLColor
void gl_corners_2d(S32 left, S32 top, S32 right, S32 bottom, S32 length, F32 max_frac);
void gl_washer_2d(F32 outer_radius, F32 inner_radius, S32 steps, const LLColor4& inner_color, const LLColor4& outer_color);
void gl_washer_segment_2d(F32 outer_radius, F32 inner_radius, F32 start_radians, F32 end_radians, S32 steps, const LLColor4& inner_color, const LLColor4& outer_color);
+void gl_washer_spokes_2d(F32 outer_radius, F32 inner_radius, S32 count, const LLColor4& inner_color, const LLColor4& outer_color);
void gl_draw_image(S32 x, S32 y, LLTexture* image, const LLColor4& color = UI_VERTEX_COLOR, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
void gl_draw_scaled_image(S32 x, S32 y, S32 width, S32 height, LLTexture* image, const LLColor4& color = UI_VERTEX_COLOR, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
@@ -98,6 +99,7 @@ void gl_draw_scaled_rotated_image(S32 x, S32 y, S32 width, S32 height, F32 degre
void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 border_width, S32 border_height, S32 width, S32 height, LLTexture* image, const LLColor4 &color, BOOL solid_color = FALSE, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTexture* image, const LLColor4 &color, BOOL solid_color = FALSE, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f), const LLRectf& scale_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
+void gl_rect_2d_xor(S32 left, S32 top, S32 right, S32 bottom);
void gl_stippled_line_3d( const LLVector3& start, const LLVector3& end, const LLColor4& color, F32 phase = 0.f );
void gl_rect_2d_simple_tex( S32 width, S32 height );
diff --git a/indra/llui/lluictrl.cpp b/indra/llui/lluictrl.cpp
index 3ac3bf8c41..294c96f8f4 100644
--- a/indra/llui/lluictrl.cpp
+++ b/indra/llui/lluictrl.cpp
@@ -95,7 +95,6 @@ LLUICtrl::LLUICtrl(const LLUICtrl::Params& p, const LLViewModelPtr& viewmodel)
: LLView(p),
mTentative(FALSE),
mIsChrome(FALSE),
- mTabStop(FALSE),
mViewModel(viewmodel),
mControlVariable(NULL),
mEnabledControlVariable(NULL),
diff --git a/indra/llui/lluictrl.h b/indra/llui/lluictrl.h
index 76dfdf754c..71fd5034df 100644
--- a/indra/llui/lluictrl.h
+++ b/indra/llui/lluictrl.h
@@ -141,6 +141,8 @@ public:
// LLView interface
/*virtual*/ BOOL setLabelArg( const std::string& key, const LLStringExplicit& text );
/*virtual*/ BOOL isCtrl() const;
+ /*virtual*/ void setTentative(BOOL b);
+ /*virtual*/ BOOL getTentative() const;
/*virtual*/ void onMouseEnter(S32 x, S32 y, MASK mask);
/*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask);
/*virtual*/ BOOL canFocusChildren() const;
@@ -172,8 +174,6 @@ public:
void setMakeVisibleControlVariable(LLControlVariable* control);
void setMakeInvisibleControlVariable(LLControlVariable* control);
- virtual void setTentative(BOOL b);
- virtual BOOL getTentative() const;
virtual void setValue(const LLSD& value);
virtual LLSD getValue() const;
/// When two widgets are displaying the same data (e.g. during a skin
diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp
index 5680ab8bd4..a34ede439a 100644
--- a/indra/llui/llurlentry.cpp
+++ b/indra/llui/llurlentry.cpp
@@ -357,12 +357,6 @@ std::string LLUrlEntryAgent::getTooltip(const std::string &string) const
return LLTrans::getString("TooltipAgentUrl");
}
-bool LLUrlEntryAgent::underlineOnHoverOnly(const std::string &string) const
-{
- std::string url = getUrl(string);
- return LLStringUtil::endsWith(url, "/about") || LLStringUtil::endsWith(url, "/inspect");
-}
-
std::string LLUrlEntryAgent::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
{
if (!gCacheName)
@@ -730,19 +724,6 @@ std::string LLUrlEntrySLLabel::getTooltip(const std::string &string) const
return LLUrlEntryBase::getTooltip(string);
}
-bool LLUrlEntrySLLabel::underlineOnHoverOnly(const std::string &string) const
-{
- std::string url = getUrl(string);
- LLUrlMatch match;
- if (LLUrlRegistry::instance().findUrl(url, match))
- {
- return match.underlineOnHoverOnly();
- }
-
- // unrecognized URL? should not happen
- return LLUrlEntryBase::underlineOnHoverOnly(string);
-}
-
//
// LLUrlEntryWorldMap Describes secondlife:///<location> URLs
//
diff --git a/indra/llui/llurlentry.h b/indra/llui/llurlentry.h
index e25eaa7555..d868e01aa6 100644
--- a/indra/llui/llurlentry.h
+++ b/indra/llui/llurlentry.h
@@ -88,9 +88,6 @@ public:
/// is this a match for a URL that should not be hyperlinked?
bool isLinkDisabled() const { return mDisabledLink; }
- /// Should this link text be underlined only when mouse is hovered over it?
- virtual bool underlineOnHoverOnly(const std::string &string) const { return false; }
-
virtual LLUUID getID(const std::string &string) const { return LLUUID::null; }
protected:
@@ -170,7 +167,6 @@ public:
/*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb);
/*virtual*/ std::string getTooltip(const std::string &string) const;
/*virtual*/ LLUUID getID(const std::string &string) const;
- /*virtual*/ bool underlineOnHoverOnly(const std::string &string) const;
private:
void onAgentNameReceived(const LLUUID& id, const std::string& first,
const std::string& last, BOOL is_group);
@@ -273,7 +269,6 @@ public:
/*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb);
/*virtual*/ std::string getUrl(const std::string &string) const;
/*virtual*/ std::string getTooltip(const std::string &string) const;
- /*virtual*/ bool underlineOnHoverOnly(const std::string &string) const;
};
///
diff --git a/indra/llui/llurlmatch.cpp b/indra/llui/llurlmatch.cpp
index e53b0c4370..4ec97091a3 100644
--- a/indra/llui/llurlmatch.cpp
+++ b/indra/llui/llurlmatch.cpp
@@ -37,8 +37,7 @@ LLUrlMatch::LLUrlMatch() :
mIcon(""),
mMenuName(""),
mLocation(""),
- mDisabledLink(false),
- mUnderlineOnHoverOnly(false)
+ mDisabledLink(false)
{
}
@@ -46,7 +45,7 @@ void LLUrlMatch::setValues(U32 start, U32 end, const std::string &url,
const std::string &label, const std::string &tooltip,
const std::string &icon, const LLUIColor& color,
const std::string &menu, const std::string &location,
- bool disabled_link, const LLUUID& id, bool underline_on_hover_only)
+ bool disabled_link, const LLUUID& id)
{
mStart = start;
mEnd = end;
@@ -59,5 +58,4 @@ void LLUrlMatch::setValues(U32 start, U32 end, const std::string &url,
mLocation = location;
mDisabledLink = disabled_link;
mID = id;
- mUnderlineOnHoverOnly = underline_on_hover_only;
}
diff --git a/indra/llui/llurlmatch.h b/indra/llui/llurlmatch.h
index d1b2112ee7..7a4f0bc10e 100644
--- a/indra/llui/llurlmatch.h
+++ b/indra/llui/llurlmatch.h
@@ -80,15 +80,12 @@ public:
/// is this a match for a URL that should not be hyperlinked?
bool isLinkDisabled() const { return mDisabledLink; }
- /// Should this link text be underlined only when mouse is hovered over it?
- bool underlineOnHoverOnly() const { return mUnderlineOnHoverOnly; }
-
/// Change the contents of this match object (used by LLUrlRegistry)
void setValues(U32 start, U32 end, const std::string &url, const std::string &label,
const std::string &tooltip, const std::string &icon,
const LLUIColor& color, const std::string &menu,
const std::string &location, bool disabled_link
- , const LLUUID& id, bool underline_on_hover_only = false );
+ , const LLUUID& id );
const LLUUID& getID() const { return mID;}
@@ -105,7 +102,6 @@ private:
LLUUID mID;
LLUIColor mColor;
bool mDisabledLink;
- bool mUnderlineOnHoverOnly;
};
#endif
diff --git a/indra/llui/llurlregistry.cpp b/indra/llui/llurlregistry.cpp
index 9d215cf7ef..1c103a628b 100644
--- a/indra/llui/llurlregistry.cpp
+++ b/indra/llui/llurlregistry.cpp
@@ -178,8 +178,7 @@ bool LLUrlRegistry::findUrl(const std::string &text, LLUrlMatch &match, const LL
match_entry->getMenuName(),
match_entry->getLocation(url),
match_entry->isLinkDisabled(),
- match_entry->getID(url),
- match_entry->underlineOnHoverOnly(url));
+ match_entry->getID(url));
return true;
}
@@ -214,8 +213,7 @@ bool LLUrlRegistry::findUrl(const LLWString &text, LLUrlMatch &match, const LLUr
match.getMenuName(),
match.getLocation(),
match.isLinkDisabled(),
- match.getID(),
- match.underlineOnHoverOnly());
+ match.getID());
return true;
}
return false;
diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp
index fe5ef269a9..42ce7b84fe 100644
--- a/indra/llui/llview.cpp
+++ b/indra/llui/llview.cpp
@@ -397,40 +397,28 @@ bool LLCompareByTabOrder::operator() (const LLView* const a, const LLView* const
return (a_score == b_score) ? a < b : a_score < b_score;
}
-BOOL LLView::isInVisibleChain() const
+bool LLView::trueToRoot(const boost::function<bool (const LLView*)>& predicate) const
{
- BOOL visible = TRUE;
-
- const LLView* viewp = this;
- while(viewp)
+ const LLView* cur_view = this;
+ while(cur_view)
{
- if (!viewp->getVisible())
+ if(!predicate(cur_view))
{
- visible = FALSE;
- break;
+ return false;
}
- viewp = viewp->getParent();
+ cur_view = cur_view->getParent();
}
-
- return visible;
+ return true;
}
-BOOL LLView::isInEnabledChain() const
+BOOL LLView::isInVisibleChain() const
{
- BOOL enabled = TRUE;
+ return trueToRoot(&LLView::getVisible);
+}
- const LLView* viewp = this;
- while(viewp)
- {
- if (!viewp->getEnabled())
- {
- enabled = FALSE;
- break;
- }
- viewp = viewp->getParent();
- }
-
- return enabled;
+BOOL LLView::isInEnabledChain() const
+{
+ return trueToRoot(&LLView::getEnabled);
}
// virtual
@@ -440,6 +428,17 @@ BOOL LLView::canFocusChildren() const
}
//virtual
+void LLView::setTentative(BOOL b)
+{
+}
+
+//virtual
+BOOL LLView::getTentative() const
+{
+ return FALSE;
+}
+
+//virtual
void LLView::setEnabled(BOOL enabled)
{
mEnabled = enabled;
@@ -2779,19 +2778,6 @@ LLView::tree_post_iterator_t LLView::endTreeDFSPost()
return tree_post_iterator_t();
}
-LLView::bfs_tree_iterator_t LLView::beginTreeBFS()
-{
- return bfs_tree_iterator_t(this,
- boost::bind(boost::mem_fn(&LLView::beginChild), _1),
- boost::bind(boost::mem_fn(&LLView::endChild), _1));
-}
-
-LLView::bfs_tree_iterator_t LLView::endTreeBFS()
-{
- // an empty iterator is an "end" iterator
- return bfs_tree_iterator_t();
-}
-
LLView::root_to_view_iterator_t LLView::beginRootToView()
{
diff --git a/indra/llui/llview.h b/indra/llui/llview.h
index f7175112bf..b9cecb0f84 100644
--- a/indra/llui/llview.h
+++ b/indra/llui/llview.h
@@ -267,6 +267,7 @@ public:
S32 getDefaultTabGroup() const { return mDefaultTabGroup; }
S32 getLastTabGroup() { return mLastTabGroup; }
+ bool trueToRoot(const boost::function<bool (const LLView*)>& predicate) const;
BOOL isInVisibleChain() const;
BOOL isInEnabledChain() const;
@@ -282,6 +283,8 @@ public:
// children, etc.
virtual void deleteAllChildren();
+ virtual void setTentative(BOOL b);
+ virtual BOOL getTentative() const;
void setAllChildrenEnabled(BOOL b);
virtual void setVisible(BOOL visible);
@@ -348,10 +351,6 @@ public:
tree_post_iterator_t beginTreeDFSPost();
tree_post_iterator_t endTreeDFSPost();
- typedef LLTreeBFSIter<LLView, child_list_const_iter_t> bfs_tree_iterator_t;
- bfs_tree_iterator_t beginTreeBFS();
- bfs_tree_iterator_t endTreeBFS();
-
typedef LLTreeDownIter<LLView> root_to_view_iterator_t;
root_to_view_iterator_t beginRootToView();
diff --git a/indra/llwindow/llkeyboard.cpp b/indra/llwindow/llkeyboard.cpp
index 53cecf9d4a..65a755e134 100644
--- a/indra/llwindow/llkeyboard.cpp
+++ b/indra/llwindow/llkeyboard.cpp
@@ -337,13 +337,6 @@ std::string LLKeyboard::stringFromKey(KEY key)
buffer[1] = '\0';
res = std::string(buffer);
}
-
- LLKeyStringTranslatorFunc *trans = gKeyboard->mStringTranslator;
- if (trans != NULL)
- {
- res = trans(res.c_str());
- }
-
return res;
}
diff --git a/indra/llxuixml/lltrans.h b/indra/llxuixml/lltrans.h
index 42c27b6976..5c90695598 100644
--- a/indra/llxuixml/lltrans.h
+++ b/indra/llxuixml/lltrans.h
@@ -97,12 +97,11 @@ public:
return findString(result, xml_desc, empty);
}
- static std::string getKeyboardString(const char* keystring)
- {
- std::string key_str(keystring);
- std::string trans_str;
- return findString(trans_str, key_str) ? trans_str : key_str;
- }
+ static std::string getKeyboardString(const char* keystring)
+ {
+ // These map directly - no need to specialize
+ return getString( ll_safe_string(keystring) );
+ }
// get the default args
static const LLStringUtil::format_map_t& getDefaultArgs()
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 653bc13260..1ee7586d5f 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -190,6 +190,7 @@ set(viewer_SOURCE_FILES
llfloaternamedesc.cpp
llfloaternotificationsconsole.cpp
llfloateropenobject.cpp
+ llfloaterparcel.cpp
llfloaterpay.cpp
llfloaterperms.cpp
llfloaterpostcard.cpp
@@ -211,6 +212,7 @@ set(viewer_SOURCE_FILES
llfloatertopobjects.cpp
llfloatertos.cpp
llfloateruipreview.cpp
+ llfloaterurldisplay.cpp
llfloaterurlentry.cpp
llfloatervoicedevicesettings.cpp
llfloatervoiceeffect.cpp
@@ -347,6 +349,7 @@ set(viewer_SOURCE_FILES
llpanelpermissions.cpp
llpanelpick.cpp
llpanelpicks.cpp
+ llpanelplace.cpp
llpanelplaceinfo.cpp
llpanelplaceprofile.cpp
llpanelplaces.cpp
@@ -549,7 +552,6 @@ set(viewer_SOURCE_FILES
llwearablelist.cpp
llwearabletype.cpp
llweb.cpp
- llwebsharing.cpp
llwind.cpp
llwlanimator.cpp
llwldaycycle.cpp
@@ -714,6 +716,7 @@ set(viewer_HEADER_FILES
llfloaternamedesc.h
llfloaternotificationsconsole.h
llfloateropenobject.h
+ llfloaterparcel.h
llfloaterpay.h
llfloaterperms.h
llfloaterpostcard.h
@@ -735,6 +738,7 @@ set(viewer_HEADER_FILES
llfloatertopobjects.h
llfloatertos.h
llfloateruipreview.h
+ llfloaterurldisplay.h
llfloaterurlentry.h
llfloatervoicedevicesettings.h
llfloatervoiceeffect.h
@@ -867,6 +871,7 @@ set(viewer_HEADER_FILES
llpanelpermissions.h
llpanelpick.h
llpanelpicks.h
+ llpanelplace.h
llpanelplaceinfo.h
llpanelplaceprofile.h
llpanelplaces.h
@@ -1071,7 +1076,6 @@ set(viewer_HEADER_FILES
llwearablelist.h
llwearabletype.h
llweb.h
- llwebsharing.h
llwind.h
llwlanimator.h
llwldaycycle.h
diff --git a/indra/newview/ViewerInstall.cmake b/indra/newview/ViewerInstall.cmake
index 0b0d3e2adc..8168e91a06 100644
--- a/indra/newview/ViewerInstall.cmake
+++ b/indra/newview/ViewerInstall.cmake
@@ -7,8 +7,8 @@ install(DIRECTORY skins app_settings linux_tools
PATTERN ".svn" EXCLUDE
)
-find_file(IS_ARTWORK_PRESENT NAMES have_artwork_bundle.marker
- PATHS ${VIEWER_DIR}/newview/res)
+find_file(IS_ARTWORK_PRESENT NAMES avatar_lad.xml
+ PATHS ${VIEWER_DIR}/newview/character)
if (IS_ARTWORK_PRESENT)
install(DIRECTORY res res-sdl character
diff --git a/indra/newview/app_settings/high_graphics.xml b/indra/newview/app_settings/high_graphics.xml
index 587b2f2a89..6368f7099e 100644
--- a/indra/newview/app_settings/high_graphics.xml
+++ b/indra/newview/app_settings/high_graphics.xml
@@ -12,6 +12,8 @@
<RenderFlexTimeFactor value="1"/>
<!--256... but they don't use this-->
<RenderGlowResolutionPow value="9"/>
+ <!--Sun/Moon only-->
+ <RenderLightingDetail value="1"/>
<!--Low number-->
<RenderMaxPartCount value="4096"/>
<!--bump okay-->
@@ -29,14 +31,9 @@
<!--Default for now-->
<RenderVolumeLODFactor value="1.125"/>
<!--NO SHADERS-->
+ <RenderWaterReflections value="FALSE"/>
+ <!--NO SHADERS-->
<VertexShaderEnable value="TRUE"/>
<!--NO SHADERS-->
<WindLightUseAtmosShaders value="TRUE"/>
- <!--Deferred Shading-->
- <RenderDeferred value="FALSE"/>
- <!--SSAO Disabled-->
- <RenderDeferredSSAO value="FALSE"/>
- <!--Sun Shadows-->
- <RenderShadowDetail value="0"/>
-
</settings>
diff --git a/indra/newview/app_settings/low_graphics.xml b/indra/newview/app_settings/low_graphics.xml
index a5bbdfc1d0..d02a13a671 100644
--- a/indra/newview/app_settings/low_graphics.xml
+++ b/indra/newview/app_settings/low_graphics.xml
@@ -14,6 +14,8 @@
<RenderFlexTimeFactor value="0.5"/>
<!--256... but they don't use this-->
<RenderGlowResolutionPow value="8"/>
+ <!--Sun/Moon only-->
+ <RenderLightingDetail value="0"/>
<!--Low number-->
<RenderMaxPartCount value="1024"/>
<!--bump okay-->
@@ -31,14 +33,9 @@
<!--Default for now-->
<RenderVolumeLODFactor value="1.125"/>
<!--NO SHADERS-->
+ <RenderWaterReflections value="FALSE"/>
+ <!--NO SHADERS-->
<VertexShaderEnable value="FALSE"/>
<!--NO SHADERS-->
<WindLightUseAtmosShaders value="FALSE"/>
- <!--No Deferred Shading-->
- <RenderDeferred value="FALSE"/>
- <!--SSAO Disabled-->
- <RenderDeferredSSAO value="FALSE"/>
- <!--No Shadows-->
- <RenderShadowDetail value="0"/>
-
</settings>
diff --git a/indra/newview/app_settings/mid_graphics.xml b/indra/newview/app_settings/mid_graphics.xml
index a1430a58f9..12da77da40 100644
--- a/indra/newview/app_settings/mid_graphics.xml
+++ b/indra/newview/app_settings/mid_graphics.xml
@@ -12,6 +12,8 @@
<RenderFlexTimeFactor value="1"/>
<!--256... but they don't use this-->
<RenderGlowResolutionPow value="8"/>
+ <!--Sun/Moon only-->
+ <RenderLightingDetail value="1"/>
<!--Low number-->
<RenderMaxPartCount value="2048"/>
<!--bump okay-->
@@ -29,14 +31,9 @@
<!--Default for now-->
<RenderVolumeLODFactor value="1.125"/>
<!--NO SHADERS-->
+ <RenderWaterReflections value="FALSE"/>
+ <!--NO SHADERS-->
<VertexShaderEnable value="TRUE"/>
<!--NO SHADERS-->
<WindLightUseAtmosShaders value="FALSE"/>
- <!--No Deferred Shading-->
- <RenderDeferred value="FALSE"/>
- <!--SSAO Disabled-->
- <RenderDeferredSSAO value="FALSE"/>
- <!--No Shadows-->
- <RenderShadowDetail value="0"/>
-
</settings>
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 07418d1b5e..810b2d9a1d 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -1741,17 +1741,6 @@
<key>Value</key>
<integer>0</integer>
</map>
- <key>DebugAvatarLocalTexLoadedTime</key>
- <map>
- <key>Comment</key>
- <string>Display time for loading avatar local textures.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
<key>DebugBeaconLineWidth</key>
<map>
<key>Comment</key>
@@ -5384,6 +5373,17 @@
<key>Value</key>
<integer>0</integer>
</map>
+ <key>MultipleAttachments</key>
+ <map>
+ <key>Comment</key>
+ <string>Allow multiple objects to be attached to a single attachment point.</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
<key>MuteAmbient</key>
<map>
<key>Comment</key>
@@ -6748,7 +6748,7 @@
<key>Type</key>
<string>U32</string>
<key>Value</key>
- <integer>200</integer>
+ <integer>60</integer>
</map>
<key>RenderSSAOFactor</key>
<map>
@@ -7123,64 +7123,6 @@
<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>RenderSpotLightsInNondeferred</key>
- <map>
- <key>Comment</key>
- <string>Whether to support projectors as spotlights when Lighting and Shadows is disabled</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </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.0</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.04</real>
- </map>
-
<key>RenderShadowResolutionScale</key>
<map>
<key>Comment</key>
@@ -7193,6 +7135,8 @@
<real>1.0</real>
</map>
+
+
<key>RenderDeferredTreeShadowBias</key>
<map>
<key>Comment</key>
@@ -7314,7 +7258,7 @@
<key>Type</key>
<string>F32</string>
<key>Value</key>
- <real>8</real>
+ <real>1</real>
</map>
<key>RenderDeferred</key>
@@ -7329,6 +7273,18 @@
<integer>0</integer>
</map>
+ <key>RenderDeferredShadow</key>
+ <map>
+ <key>Comment</key>
+ <string>Enable shadows in deferred renderer.</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+
<key>RenderDeferredGI</key>
<map>
<key>Comment</key>
@@ -7341,10 +7297,10 @@
<integer>0</integer>
</map>
- <key>RenderDeferredSun</key>
+ <key>RenderDeferredSunShadow</key>
<map>
<key>Comment</key>
- <string>Execute sunlight shader in deferred renderer.</string>
+ <string>Generate shadows from the sun.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -7353,10 +7309,10 @@
<integer>1</integer>
</map>
- <key>RenderDeferredAtmospheric</key>
+ <key>RenderDeferredSun</key>
<map>
<key>Comment</key>
- <string>Execute atmospheric shader in deferred renderer.</string>
+ <string>Execute sunlight shader in deferred renderer.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -7365,10 +7321,10 @@
<integer>1</integer>
</map>
- <key>RenderDeferredSSAO</key>
+ <key>RenderDeferredAtmospheric</key>
<map>
<key>Comment</key>
- <string>Execute screen space ambient occlusion shader in deferred renderer.</string>
+ <string>Execute atmospheric shader in deferred renderer.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -7627,10 +7583,10 @@
<key>Value</key>
<real>256.0</real>
</map>
- <key>RenderAutoMaskAlphaNonDeferred</key>
+ <key>RenderFastAlpha</key>
<map>
<key>Comment</key>
- <string>Use alpha masks where appropriate, in the non-deferred (non-'Lighting and Shadows') graphics mode</string>
+ <string>Use lossy alpha rendering optimization (opaque/nonexistent small alpha faces).</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -7638,17 +7594,6 @@
<key>Value</key>
<integer>0</integer>
</map>
- <key>RenderAutoMaskAlphaDeferred</key>
- <map>
- <key>Comment</key>
- <string>Use alpha masks where appropriate, in the deferred ('Lighting and Shadows') graphics mode</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
<key>RenderFastUI</key>
<map>
<key>Comment</key>
@@ -7910,6 +7855,17 @@
<key>Value</key>
<integer>0</integer>
</map>
+ <key>RenderLightingDetail</key>
+ <map>
+ <key>Comment</key>
+ <string>Amount of detail for lighting objects/avatars/terrain (0=sun/moon only, 1=enable local lights)</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>S32</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
<key>RenderMaxPartCount</key>
<map>
<key>Comment</key>
@@ -8009,18 +7965,6 @@
<key>Value</key>
<integer>2</integer>
</map>
- <key>RenderShadowDetail</key>
- <map>
- <key>Comment</key>
- <string>Detail of shadows.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>S32</string>
- <key>Value</key>
- <integer>2</integer>
- </map>
-
<key>RenderReflectionRes</key>
<map>
<key>Comment</key>
@@ -8151,7 +8095,7 @@
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
- <integer>1</integer>
+ <integer>0</integer>
</map>
<key>RenderUIBuffer</key>
<map>
@@ -8307,6 +8251,17 @@
<key>Value</key>
<integer>512</integer>
</map>
+ <key>RenderWaterReflections</key>
+ <map>
+ <key>Comment</key>
+ <string>Reflect the environment in the water.</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
<key>RotateRight</key>
<map>
<key>Comment</key>
@@ -8329,6 +8284,17 @@
<key>Value</key>
<real>1.0</real>
</map>
+ <key>RunMultipleThreads</key>
+ <map>
+ <key>Comment</key>
+ <string>If TRUE keep background threads active during render</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
<key>SafeMode</key>
<map>
<key>Comment</key>
@@ -9495,28 +9461,6 @@
<key>Value</key>
<integer>75</integer>
</map>
- <key>SnapshotSharingEnabled</key>
- <map>
- <key>Comment</key>
- <string>Enable uploading of snapshots to a web service.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>SnapshotConfigURL</key>
- <map>
- <key>Comment</key>
- <string>URL to fetch Snapshot Sharing configuration data from.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>String</string>
- <key>Value</key>
- <string>http://photos.apps.staging.avatarsunited.com/viewer_config</string>
- </map>
<key>SnapshotTextureLastResolution</key>
<map>
<key>Comment</key>
diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
index fea2e16090..4fb109d687 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
@@ -24,6 +24,8 @@ varying vec3 vary_fragcoord;
varying vec3 vary_position;
varying vec3 vary_light;
+uniform float alpha_soften;
+
uniform mat4 inv_proj;
vec4 getPosition(vec2 pos_screen)
@@ -55,6 +57,15 @@ void main()
color.rgb = scaleSoftClip(color.rgb);
+ if (samp_pos.z != 0.0 && gl_Color.a < 1.0)
+ {
+ float dist_factor = alpha_soften;
+ float a = gl_Color.a;
+ a *= a;
+ dist_factor *= 1.0/(1.0-a);
+ color.a *= min((pos.z-samp_pos.z)*dist_factor, 1.0);
+ }
+
//gl_FragColor = gl_Color;
gl_FragColor = color;
//gl_FragColor = vec4(1,0,1,1);
diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl
index 04e556c11a..1a7d58b07b 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl
@@ -9,7 +9,7 @@ vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
void calcAtmospherics(vec3 inPositionEye);
float calcDirectionalLight(vec3 n, vec3 l);
-float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float is_pointlight);
+float calcPointLight(vec3 v, vec3 n, vec4 lp, float la);
vec3 atmosAmbient(vec3 light);
vec3 atmosAffectDirectionalLight(float lightIntensity);
@@ -41,22 +41,23 @@ void main()
calcAtmospherics(pos.xyz);
//vec4 color = calcLighting(pos.xyz, norm, gl_Color, vec4(0.));
-
- vec4 col = vec4(0.0, 0.0, 0.0, gl_Color.a);
+ vec4 col;
+ col.a = gl_Color.a;
+
+ // Add windlight lights
+ col.rgb = atmosAmbient(vec3(0.));
+ col.rgb = scaleUpLight(col.rgb);
// Collect normal lights (need to be divided by two, as we later multiply by 2)
- col.rgb += gl_LightSource[2].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[2].position, gl_LightSource[2].spotDirection.xyz, gl_LightSource[2].linearAttenuation, gl_LightSource[2].specular.a);
- col.rgb += gl_LightSource[3].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[3].position, gl_LightSource[3].spotDirection.xyz, gl_LightSource[3].linearAttenuation, gl_LightSource[3].specular.a);
- col.rgb += gl_LightSource[4].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[4].position, gl_LightSource[4].spotDirection.xyz, gl_LightSource[4].linearAttenuation, gl_LightSource[4].specular.a);
- col.rgb += gl_LightSource[5].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[5].position, gl_LightSource[5].spotDirection.xyz, gl_LightSource[5].linearAttenuation, gl_LightSource[5].specular.a);
- col.rgb += gl_LightSource[6].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[6].position, gl_LightSource[6].spotDirection.xyz, gl_LightSource[6].linearAttenuation, gl_LightSource[6].specular.a);
- col.rgb += gl_LightSource[7].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[7].position, gl_LightSource[7].spotDirection.xyz, gl_LightSource[7].linearAttenuation, gl_LightSource[7].specular.a);
+ col.rgb += gl_LightSource[2].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[2].position, gl_LightSource[2].linearAttenuation);
+ col.rgb += gl_LightSource[3].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[3].position, gl_LightSource[3].linearAttenuation);
+ col.rgb += gl_LightSource[4].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[4].position, gl_LightSource[4].linearAttenuation);
+ col.rgb += gl_LightSource[5].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[5].position, gl_LightSource[5].linearAttenuation);
+ col.rgb += gl_LightSource[6].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[6].position, gl_LightSource[6].linearAttenuation);
+ col.rgb += gl_LightSource[7].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[7].position, gl_LightSource[7].linearAttenuation);
col.rgb += gl_LightSource[1].diffuse.rgb*calcDirectionalLight(norm, gl_LightSource[1].position.xyz);
col.rgb = scaleDownLight(col.rgb);
- // Add windlight lights
- col.rgb += atmosAmbient(vec3(0.));
-
vary_light = gl_LightSource[0].position.xyz;
vary_ambient = col.rgb*gl_Color.rgb;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl
index 650fbcc3f5..c1988d3c78 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl
@@ -10,7 +10,7 @@ mat4 getSkinnedTransform();
void calcAtmospherics(vec3 inPositionEye);
float calcDirectionalLight(vec3 n, vec3 l);
-float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float is_pointlight);
+float calcPointLight(vec3 v, vec3 n, vec4 lp, float la);
vec3 atmosAmbient(vec3 light);
vec3 atmosAffectDirectionalLight(float lightIntensity);
@@ -47,22 +47,23 @@ void main()
calcAtmospherics(pos.xyz);
//vec4 color = calcLighting(pos.xyz, norm, gl_Color, vec4(0.));
-
- vec4 col = vec4(0.0, 0.0, 0.0, gl_Color.a);
+ vec4 col;
+ col.a = gl_Color.a;
+
+ // Add windlight lights
+ col.rgb = atmosAmbient(vec3(0.));
+ col.rgb = scaleUpLight(col.rgb);
// Collect normal lights (need to be divided by two, as we later multiply by 2)
- col.rgb += gl_LightSource[2].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[2].position, gl_LightSource[2].spotDirection.xyz, gl_LightSource[2].linearAttenuation, gl_LightSource[2].specular.a);
- col.rgb += gl_LightSource[3].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[3].position, gl_LightSource[3].spotDirection.xyz, gl_LightSource[3].linearAttenuation, gl_LightSource[3].specular.a);
- col.rgb += gl_LightSource[4].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[4].position, gl_LightSource[4].spotDirection.xyz, gl_LightSource[4].linearAttenuation, gl_LightSource[4].specular.a);
- col.rgb += gl_LightSource[5].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[5].position, gl_LightSource[5].spotDirection.xyz, gl_LightSource[5].linearAttenuation, gl_LightSource[5].specular.a);
- col.rgb += gl_LightSource[6].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[6].position, gl_LightSource[6].spotDirection.xyz, gl_LightSource[6].linearAttenuation, gl_LightSource[6].specular.a);
- col.rgb += gl_LightSource[7].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[7].position, gl_LightSource[7].spotDirection.xyz, gl_LightSource[7].linearAttenuation, gl_LightSource[7].specular.a);
+ col.rgb += gl_LightSource[2].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[2].position, gl_LightSource[2].linearAttenuation);
+ col.rgb += gl_LightSource[3].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[3].position, gl_LightSource[3].linearAttenuation);
+ col.rgb += gl_LightSource[4].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[4].position, gl_LightSource[4].linearAttenuation);
+ col.rgb += gl_LightSource[5].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[5].position, gl_LightSource[5].linearAttenuation);
+ col.rgb += gl_LightSource[6].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[6].position, gl_LightSource[6].linearAttenuation);
+ col.rgb += gl_LightSource[7].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[7].position, gl_LightSource[7].linearAttenuation);
col.rgb += gl_LightSource[1].diffuse.rgb*calcDirectionalLight(norm, gl_LightSource[1].position.xyz);
col.rgb = scaleDownLight(col.rgb);
- // Add windlight lights
- col.rgb += atmosAmbient(vec3(0.));
-
vary_ambient = col.rgb*gl_Color.rgb;
vary_directional = gl_Color.rgb*atmosAffectDirectionalLight(max(calcDirectionalLight(norm, gl_LightSource[0].position.xyz), (1.0-gl_Color.a)*(1.0-gl_Color.a)));
diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarF.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarF.glsl
index afbe08a579..75df388941 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/avatarF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/avatarF.glsl
@@ -20,7 +20,6 @@ void main()
gl_FragData[0] = vec4(diff.rgb, 0.0);
gl_FragData[1] = vec4(0,0,0,0);
- vec3 nvn = normalize(vary_normal);
- gl_FragData[2] = vec4(nvn.xy * 0.5 + 0.5, nvn.z, 0.0);
+ gl_FragData[2] = vec4(normalize(vary_normal)*0.5+0.5, 0.0);
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl
index 085ffddeec..00083eb6b3 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl
@@ -10,7 +10,7 @@ uniform sampler2D diffuseMap;
void main()
{
- //gl_FragColor = vec4(1,1,1,gl_Color.a * texture2D(diffuseMap, gl_TexCoord[0].xy).a);
- gl_FragColor = vec4(1,1,1,1);
+ gl_FragColor = vec4(1,1,1,gl_Color.a * texture2D(diffuseMap, gl_TexCoord[0].xy).a);
+ //gl_FragColor = vec4(1,1,1,1);
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl
index d1c5d7cb19..bd5e9dd758 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl
@@ -10,11 +10,13 @@
uniform sampler2DRect depthMap;
uniform sampler2DRect normalMap;
uniform sampler2DRect lightMap;
+uniform sampler2DRect giLightMap;
uniform float dist_factor;
uniform float blur_size;
uniform vec2 delta;
-uniform vec3 kern[4];
+uniform vec3 kern[32];
+uniform int kern_length;
uniform float kern_scale;
varying vec2 vary_fragcoord;
@@ -37,8 +39,7 @@ vec4 getPosition(vec2 pos_screen)
void main()
{
- vec3 norm = texture2DRect(normalMap, vary_fragcoord.xy).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
+ vec3 norm = texture2DRect(normalMap, vary_fragcoord.xy).xyz*2.0-1.0;
vec3 pos = getPosition(vary_fragcoord.xy).xyz;
vec4 ccol = texture2DRect(lightMap, vary_fragcoord.xy).rgba;
@@ -49,7 +50,7 @@ void main()
vec2 defined_weight = kern[0].xy; // special case the first (centre) sample's weight in the blur; we have to sample it anyway so we get it for 'free'
vec4 col = defined_weight.xyxx * ccol;
- for (int i = 1; i < 4; i++)
+ for (int i = 1; i < kern_length; i++)
{
vec2 tc = vary_fragcoord.xy + kern[i].z*dlt;
vec3 samppos = getPosition(tc).xyz;
@@ -60,22 +61,12 @@ void main()
defined_weight += kern[i].xy;
}
}
- for (int i = 1; i < 4; i++)
- {
- vec2 tc = vary_fragcoord.xy - kern[i].z*dlt;
- vec3 samppos = getPosition(tc).xyz;
- float d = dot(norm.xyz, samppos.xyz-pos.xyz);// dist from plane
- if (d*d <= 0.003)
- {
- col += texture2DRect(lightMap, tc)*kern[i].xyxx;
- defined_weight += kern[i].xy;
- }
- }
col /= defined_weight.xyxx;
gl_FragColor = col;
+
+ //gl_FragColor = ccol;
}
-
diff --git a/indra/newview/app_settings/shaders/class1/deferred/bumpF.glsl b/indra/newview/app_settings/shaders/class1/deferred/bumpF.glsl
index 2197744a37..1c29dae5f7 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/bumpF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/bumpF.glsl
@@ -14,16 +14,14 @@ varying vec3 vary_mat2;
void main()
{
- vec3 col = gl_Color.rgb * texture2D(diffuseMap, gl_TexCoord[0].xy).rgb;
+ vec3 col = texture2D(diffuseMap, gl_TexCoord[0].xy).rgb;
vec3 norm = texture2D(bumpMap, gl_TexCoord[0].xy).rgb * 2.0 - 1.0;
vec3 tnorm = vec3(dot(norm,vary_mat0),
- dot(norm,vary_mat1),
- dot(norm,vary_mat2));
+ dot(norm,vary_mat1),
+ dot(norm,vary_mat2));
- gl_FragData[0] = vec4(col, 0.0);
- gl_FragData[1] = gl_Color.aaaa; // spec
- //gl_FragData[1] = vec4(vec3(gl_Color.a), gl_Color.a+(1.0-gl_Color.a)*gl_Color.a); // spec - from former class3 - maybe better, but not so well tested
- vec3 nvn = normalize(tnorm);
- gl_FragData[2] = vec4(nvn.xy * 0.5 + 0.5, nvn.z, 0.0);
+ gl_FragData[0] = vec4(gl_Color.rgb*col, 0.0);
+ gl_FragData[1] = vec4(col*gl_Color.a, gl_Color.a);
+ gl_FragData[2] = vec4(normalize(tnorm)*0.5+0.5, 0.0);
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl
index 3803119cda..5895ebda84 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl
@@ -11,10 +11,8 @@ varying vec3 vary_normal;
void main()
{
- vec3 col = gl_Color.rgb * texture2D(diffuseMap, gl_TexCoord[0].xy).rgb;
- gl_FragData[0] = vec4(col, 0.0);
- gl_FragData[1] = gl_Color.aaaa; // spec
- //gl_FragData[1] = vec4(vec3(gl_Color.a), gl_Color.a+(1.0-gl_Color.a)*gl_Color.a); // spec - from former class3 - maybe better, but not so well tested
- vec3 nvn = normalize(vary_normal);
- gl_FragData[2] = vec4(nvn.xy * 0.5 + 0.5, nvn.z, 0.0);
+ vec3 col = texture2D(diffuseMap, gl_TexCoord[0].xy).rgb;
+ gl_FragData[0] = vec4(gl_Color.rgb*col, 0.0);
+ gl_FragData[1] = vec4(col*(gl_Color.a*1.5), gl_Color.a);
+ gl_FragData[2] = vec4(normalize(vary_normal)*0.5+0.5, 0.0);
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl
index 0db9586a88..e518bddb98 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl
@@ -23,6 +23,8 @@ varying vec4 vary_position;
varying vec3 vary_normal;
varying vec3 vary_fragcoord;
+uniform float alpha_soften;
+
uniform mat4 inv_proj;
vec4 getPosition(vec2 pos_screen)
@@ -54,6 +56,15 @@ void main()
color.rgb = fullbrightScaleSoftClip(color.rgb);
+ if (samp_pos.z != 0.0 && color.a < 1.0)
+ {
+ float dist_factor = alpha_soften;
+ float a = color.a;
+ a *= a;
+ dist_factor *= 1.0/(1.0-a);
+ color.a *= min((pos.z-samp_pos.z)*dist_factor, 1.0);
+ }
+
//gl_FragColor = gl_Color;
gl_FragColor = color;
//gl_FragColor = vec4(1,0,1,1);
diff --git a/indra/newview/app_settings/shaders/class1/deferred/giF.glsl b/indra/newview/app_settings/shaders/class1/deferred/giF.glsl
index d4b153c4af..b351eec6e5 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/giF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/giF.glsl
@@ -159,8 +159,7 @@ void main()
{
vec2 pos_screen = vary_fragcoord.xy;
vec4 pos = getPosition(pos_screen);
- vec3 norm = texture2DRect(normalMap, pos_screen).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
+ vec3 norm = texture2DRect(normalMap, pos_screen).xyz*2.0-1.0;
gl_FragData[0].xyz = giAmbient(pos, norm);
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl b/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl
index 508bbf415e..8c140a7b4f 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl
@@ -11,8 +11,7 @@ uniform sampler2D specularMap;
void main()
{
- vec4 col = texture2D(diffuseMap, gl_TexCoord[0].xy);
- gl_FragData[0] = vec4(col.rgb, col.a <= 0.5 ? 0.0 : 0.005);
+ gl_FragData[0] = texture2D(diffuseMap, gl_TexCoord[0].xy);
gl_FragData[1] = texture2D(specularMap, gl_TexCoord[0].xy);
gl_FragData[2] = vec4(texture2D(normalMap, gl_TexCoord[0].xy).xyz, 0.0);
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl
index b494b521ca..797b9e9f3b 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl
@@ -53,9 +53,7 @@ void main()
discard;
}
- vec3 norm = texture2DRect(normalMap, frag.xy).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
- norm = normalize(norm);
+ vec3 norm = normalize(texture2DRect(normalMap, frag.xy).xyz*2.0-1.0);
vec4 spec = texture2DRect(specularRect, frag.xy);
vec3 diff = texture2DRect(diffuseRect, frag.xy).rgb;
float noise = texture2D(noiseMap, frag.xy/128.0).b;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl
index 82e9450e68..28bcd720c0 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl
@@ -5,9 +5,8 @@
* $License$
*/
-#version 120
-//class 1 -- no shadows
+#version 120
#extension GL_ARB_texture_rectangle : enable
@@ -27,15 +26,12 @@ uniform vec3 proj_n;
uniform float proj_focus; //distance from plane to begin blurring
uniform float proj_lod; //(number of mips in proj map)
uniform float proj_range; //range between near clip and far clip plane of projection
-uniform float proj_ambient_lod;
uniform float proj_ambiance;
uniform float near_clip;
uniform float far_clip;
uniform vec3 proj_origin; //origin of projection to be used for angular attenuation
uniform float sun_wash;
-uniform int proj_shadow_idx;
-uniform float shadow_fade;
varying vec4 vary_light;
@@ -44,52 +40,6 @@ uniform vec2 screen_res;
uniform mat4 inv_proj;
-vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod)
-{
- vec4 ret = texture2DLod(projectionMap, tc, lod);
-
- vec2 dist = tc-vec2(0.5);
-
- float det = max(1.0-lod/(proj_lod*0.5), 0.0);
-
- float d = dot(dist,dist);
-
- ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0)+det, 1.0);
-
- return ret;
-}
-
-vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod)
-{
- vec4 ret = texture2DLod(projectionMap, tc, lod);
-
- vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
-
- float det = min(lod/(proj_lod*0.5), 1.0);
-
- float d = min(dist.x, dist.y);
-
- float edge = 0.25*det;
-
- ret *= clamp(d/edge, 0.0, 1.0);
-
- return ret;
-}
-
-vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod)
-{
- vec4 ret = texture2DLod(projectionMap, tc, lod);
-
- vec2 dist = tc-vec2(0.5);
-
- float d = dot(dist,dist);
-
- ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0), 1.0);
-
- return ret;
-}
-
-
vec4 getPosition(vec2 pos_screen)
{
float depth = texture2DRect(depthMap, pos_screen.xy).a;
@@ -118,7 +68,7 @@ void main()
{
discard;
}
-
+
vec3 norm = texture2DRect(normalMap, frag.xy).xyz*2.0-1.0;
norm = normalize(norm);
@@ -133,11 +83,7 @@ void main()
proj_tc.xyz /= proj_tc.w;
float fa = gl_Color.a+1.0;
- float dist_atten = min(1.0-(dist2-1.0*(1.0-fa))/fa, 1.0);
- if (dist_atten <= 0.0)
- {
- discard;
- }
+ float dist_atten = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0);
lv = proj_origin-pos.xyz;
lv = normalize(lv);
@@ -155,32 +101,32 @@ void main()
proj_tc.y > 0.0)
{
float lit = 0.0;
- float amb_da = proj_ambiance;
-
if (da > 0.0)
{
float diff = clamp((l_dist-proj_focus)/proj_range, 0.0, 1.0);
float lod = diff * proj_lod;
- vec4 plcol = texture2DLodDiffuse(projectionMap, proj_tc.xy, lod);
+ vec4 plcol = texture2DLod(projectionMap, proj_tc.xy, lod);
vec3 lcol = gl_Color.rgb * plcol.rgb * plcol.a;
lit = da * dist_atten * noise;
col = lcol*lit*diff_tex;
- amb_da += (da*0.5)*proj_ambiance;
}
- //float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0);
- vec4 amb_plcol = texture2DLodAmbient(projectionMap, proj_tc.xy, proj_lod);
-
+ float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0);
+ float lod = diff * proj_lod;
+ vec4 amb_plcol = texture2DLod(projectionMap, proj_tc.xy, lod);
+ //float amb_da = mix(proj_ambiance, proj_ambiance*max(-da, 0.0), max(da, 0.0));
+ float amb_da = proj_ambiance;
+
amb_da += (da*da*0.5+0.5)*proj_ambiance;
-
- amb_da *= dist_atten * noise;
+ amb_da *= dist_atten * noise;
+
amb_da = min(amb_da, 1.0-lit);
-
+
col += amb_da*gl_Color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
}
@@ -198,28 +144,35 @@ void main()
{
vec3 pfinal = pos + ref * dot(pdelta, proj_n)/ds;
- vec4 stc = (proj_mat * vec4(pfinal.xyz, 1.0));
+ vec3 stc = (proj_mat * vec4(pfinal.xyz, 1.0)).xyz;
if (stc.z > 0.0)
{
- stc.xy /= stc.w;
-
- float fatten = clamp(spec.a*spec.a+spec.a*0.5, 0.25, 1.0);
-
- stc.xy = (stc.xy - vec2(0.5)) * fatten + vec2(0.5);
-
+ stc.xy /= stc.z+proj_near;
+
if (stc.x < 1.0 &&
stc.y < 1.0 &&
stc.x > 0.0 &&
stc.y > 0.0)
{
- vec4 scol = texture2DLodSpecular(projectionMap, stc.xy, proj_lod-spec.a*proj_lod);
+ vec4 scol = texture2DLod(projectionMap, stc.xy, proj_lod-spec.a*proj_lod);
col += dist_atten*scol.rgb*gl_Color.rgb*scol.a*spec.rgb;
}
}
}
}
+ /*if (spec.a > 0.0)
+ {
+ //vec3 ref = reflect(normalize(pos), norm);
+ float sa = dot(normalize(lv-normalize(pos)),norm);;
+ //sa = max(sa, 0.0);
+ //sa = pow(sa, 128.0 * spec.a*spec.a/dist_atten)*min(dist_atten*4.0, 1.0);
+ sa = texture2D(lightFunc, vec2(sa, spec.a)).a * min(dist_atten*4.0, 1.0);
+ sa *= noise;
+ col += da*sa*lcol*spec.rgb;
+ }*/
+
gl_FragColor.rgb = col;
gl_FragColor.a = 0.0;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl
index 3aecbc5f23..78256e20cc 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl
@@ -55,8 +55,7 @@ void main()
discard;
}
- vec3 norm = texture2DRect(normalMap, frag.xy).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
+ vec3 norm = texture2DRect(normalMap, frag.xy).xyz*2.0-1.0;
float da = dot(norm, lv);
if (da < 0.0)
{
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl
index bd554c2d84..9612aee405 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl
@@ -38,10 +38,10 @@ vec4 getPosition(vec2 pos_screen)
void main()
{
- vec3 norm = texture2DRect(normalMap, vary_fragcoord.xy).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
+ vec3 norm = texture2DRect(normalMap, vary_fragcoord.xy).xyz*2.0-1.0;
vec3 pos = getPosition(vary_fragcoord.xy).xyz;
+
vec3 ccol = texture2DRect(giLightMap, vary_fragcoord.xy).rgb;
vec2 dlt = kern_scale * delta/(1.0+norm.xy*norm.xy);
dlt /= max(-pos.z*dist_factor, 1.0);
@@ -51,10 +51,9 @@ void main()
for (int i = 0; i < kern_length; i++)
{
vec2 tc = vary_fragcoord.xy + kern[i].y*dlt;
- vec3 sampNorm = texture2DRect(normalMap, tc.xy).xyz;
- sampNorm = vec3((sampNorm.xy-0.5)*2.0,sampNorm.z); // unpack norm
+ vec3 sampNorm = texture2DRect(normalMap, tc.xy).xyz*2.0-1.0;
- float d = dot(norm.xyz, sampNorm);
+ float d = dot(norm.xyz, sampNorm);
if (d > 0.8)
{
diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
index bef91e735d..b4b0d0ce9d 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
@@ -11,7 +11,6 @@ uniform sampler2DRect diffuseRect;
uniform sampler2DRect specularRect;
uniform sampler2DRect positionMap;
uniform sampler2DRect normalMap;
-uniform sampler2DRect lightMap;
uniform sampler2DRect depthMap;
uniform sampler2D noiseMap;
uniform samplerCube environmentMap;
@@ -41,7 +40,7 @@ uniform float scene_light_strength;
uniform vec3 env_mat[3];
//uniform mat4 shadow_matrix[3];
//uniform vec4 shadow_clip;
-uniform mat3 ssao_effect_mat;
+//uniform mat3 ssao_effect_mat;
varying vec4 vary_light;
varying vec2 vary_fragcoord;
@@ -56,8 +55,9 @@ vec3 vary_AtmosAttenuation;
uniform mat4 inv_proj;
uniform vec2 screen_res;
-vec4 getPosition_d(vec2 pos_screen, float depth)
-{
+vec4 getPosition(vec2 pos_screen)
+{ //get position in screen space (world units) given window coordinate and depth map
+ float depth = texture2DRect(depthMap, pos_screen.xy).a;
vec2 sc = pos_screen.xy*2.0;
sc /= screen_res;
sc -= vec2(1.0,1.0);
@@ -68,12 +68,6 @@ vec4 getPosition_d(vec2 pos_screen, float depth)
return pos;
}
-vec4 getPosition(vec2 pos_screen)
-{ //get position in screen space (world units) given window coordinate and depth map
- float depth = texture2DRect(depthMap, pos_screen.xy).a;
- return getPosition_d(pos_screen, depth);
-}
-
vec3 getPositionEye()
{
return vary_PositionEye;
@@ -184,17 +178,7 @@ void calcAtmospherics(vec3 inPositionEye, float ambFactor) {
temp2.x += .25;
//increase ambient when there are more clouds
- vec4 tmpAmbient = ambient + (vec4(1.) - ambient) * cloud_shadow.x * 0.5;
-
- /* decrease value and saturation (that in HSV, not HSL) for occluded areas
- * // for HSV color/geometry used here, see http://gimp-savvy.com/BOOK/index.html?node52.html
- * // The following line of code performs the equivalent of:
- * float ambAlpha = tmpAmbient.a;
- * float ambValue = dot(vec3(tmpAmbient), vec3(0.577)); // projection onto <1/rt(3), 1/rt(3), 1/rt(3)>, the neutral white-black axis
- * vec3 ambHueSat = vec3(tmpAmbient) - vec3(ambValue);
- * tmpAmbient = vec4(RenderSSAOEffect.valueFactor * vec3(ambValue) + RenderSSAOEffect.saturationFactor *(1.0 - ambFactor) * ambHueSat, ambAlpha);
- */
- tmpAmbient = vec4(mix(ssao_effect_mat * tmpAmbient.rgb, tmpAmbient.rgb, ambFactor), tmpAmbient.a);
+ vec4 tmpAmbient = ambient + (vec4(1.) - ambient) * cloud_shadow.x * 0.5;
//haze color
setAdditiveColor(
@@ -257,10 +241,8 @@ vec3 scaleSoftClip(vec3 light)
void main()
{
vec2 tc = vary_fragcoord.xy;
- float depth = texture2DRect(depthMap, tc.xy).a;
- vec3 pos = getPosition_d(tc, depth).xyz;
- vec3 norm = texture2DRect(normalMap, tc).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
+ vec3 pos = getPosition(tc).xyz;
+ vec3 norm = texture2DRect(normalMap, tc).xyz*2.0-1.0;
//vec3 nz = texture2D(noiseMap, vary_fragcoord.xy/128.0).xyz;
float da = max(dot(norm.xyz, vary_light.xyz), 0.0);
@@ -268,76 +250,23 @@ void main()
vec4 diffuse = texture2DRect(diffuseRect, tc);
vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy);
- vec2 scol_ambocc = texture2DRect(lightMap, vary_fragcoord.xy).rg;
- float scol = max(scol_ambocc.r, diffuse.a);
- float ambocc = scol_ambocc.g;
-
- calcAtmospherics(pos.xyz, ambocc);
+ calcAtmospherics(pos.xyz, 0.0);
vec3 col = atmosAmbient(vec3(0));
- col += atmosAffectDirectionalLight(max(min(da, scol), diffuse.a));
+ col += atmosAffectDirectionalLight(clamp(da, diffuse.a, 1.0));
col *= diffuse.rgb;
- if (spec.a > 0.0) // specular reflection
+ if (spec.a > 0.0)
{
- // the old infinite-sky shiny reflection
- //
- 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;
- // Offset the guess source a little according to a trivial
- // checkerboard dither function and spec.a.
- // This is meant to be similar to sampling a blurred version
- // of the diffuse map. LOD would be better in that regard.
- // 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
- float checkoffset = (3.0 + (7.0*(1.0-spec.a)))*(checkerboard-0.5);
- ref2d += vec2(checkoffset, checkoffset);
- ref2d += tc.xy; // use as offset from destination
- // 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.
- vec3 refcol = 0.5 * (texture2DRect(diffuseRect, ref2d + vec2(0.0, -checkoffset)).rgb +
- texture2DRect(diffuseRect, ref2d + vec2(-checkoffset, 0.0)).rgb);
- float refdepth = texture2DRect(depthMap, ref2d).a;
- vec3 refpos = getPosition_d(ref2d, refdepth).xyz;
- vec3 refn = texture2DRect(normalMap, ref2d).rgb;
- refn = normalize(vec3((refn.xy-0.5)*2.0,refn.z)); // unpack norm
- // 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.
- // 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
- float refmod = min(refapprop, reflit);
- vec3 refprod = vary_SunlitColor * refcol.rgb * refmod;
- vec3 ssshiny = (refprod * spec.a);
- ssshiny *= 0.3; // dampen it even more
- */
- vec3 ssshiny = vec3(0,0,0);
-
- // add the two types of shiny together
- col += (ssshiny + dumbshiny) * spec.rgb;
+ vec3 ref = normalize(reflect(pos.xyz, norm.xyz));
+ float sa = dot(ref, vary_light.xyz);
+ col.rgb += vary_SunlitColor*spec.rgb*texture2D(lightFunc, vec2(sa, spec.a)).a;
}
col = atmosLighting(col);
col = scaleSoftClip(col);
-
+
gl_FragColor.rgb = col;
gl_FragColor.a = 0.0;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl
index 1b95b253c3..2a7234fd83 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl
@@ -68,8 +68,7 @@ void main()
discard;
}
- vec3 norm = texture2DRect(normalMap, frag.xy).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
+ vec3 norm = texture2DRect(normalMap, frag.xy).xyz*2.0-1.0;
norm = normalize(norm);
float l_dist = -dot(lv, proj_n);
@@ -162,6 +161,17 @@ void main()
}
}
+ /*if (spec.a > 0.0)
+ {
+ //vec3 ref = reflect(normalize(pos), norm);
+ float sa = dot(normalize(lv-normalize(pos)),norm);;
+ //sa = max(sa, 0.0);
+ //sa = pow(sa, 128.0 * spec.a*spec.a/dist_atten)*min(dist_atten*4.0, 1.0);
+ sa = texture2D(lightFunc, vec2(sa, spec.a)).a * min(dist_atten*4.0, 1.0);
+ sa *= noise;
+ col += da*sa*lcol*spec.rgb;
+ }*/
+
gl_FragColor.rgb = col;
gl_FragColor.a = 0.0;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl
index 56e4055c02..22bdd2c7f3 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl
@@ -5,11 +5,196 @@
* $License$
*/
-//class 1, no shadow, no SSAO, should never be called
-
#extension GL_ARB_texture_rectangle : enable
+uniform sampler2DRect depthMap;
+uniform sampler2DRect normalMap;
+uniform sampler2DRectShadow shadowMap0;
+uniform sampler2DRectShadow shadowMap1;
+uniform sampler2DRectShadow shadowMap2;
+uniform sampler2DRectShadow shadowMap3;
+uniform sampler2DRectShadow shadowMap4;
+uniform sampler2DRectShadow shadowMap5;
+uniform sampler2D noiseMap;
+
+uniform sampler2D lightFunc;
+
+
+// Inputs
+uniform mat4 shadow_matrix[6];
+uniform vec4 shadow_clip;
+uniform float ssao_radius;
+uniform float ssao_max_radius;
+uniform float ssao_factor;
+uniform float ssao_factor_inv;
+
+varying vec2 vary_fragcoord;
+varying vec4 vary_light;
+
+uniform mat4 inv_proj;
+uniform vec2 screen_res;
+
+uniform float shadow_bias;
+uniform float shadow_offset;
+
+vec4 getPosition(vec2 pos_screen)
+{
+ float depth = texture2DRect(depthMap, pos_screen.xy).a;
+ vec2 sc = pos_screen.xy*2.0;
+ sc /= screen_res;
+ sc -= vec2(1.0,1.0);
+ vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
+ vec4 pos = inv_proj * ndc;
+ pos /= pos.w;
+ pos.w = 1.0;
+ return pos;
+}
+
+//calculate decreases in ambient lighting when crowded out (SSAO)
+float calcAmbientOcclusion(vec4 pos, vec3 norm)
+{
+ vec2 kern[8];
+ // exponentially (^2) distant occlusion samples spread around origin
+ kern[0] = vec2(-1.0, 0.0) * 0.125*0.125;
+ kern[1] = vec2(1.0, 0.0) * 0.250*0.250;
+ kern[2] = vec2(0.0, 1.0) * 0.375*0.375;
+ kern[3] = vec2(0.0, -1.0) * 0.500*0.500;
+ kern[4] = vec2(0.7071, 0.7071) * 0.625*0.625;
+ kern[5] = vec2(-0.7071, -0.7071) * 0.750*0.750;
+ kern[6] = vec2(-0.7071, 0.7071) * 0.875*0.875;
+ kern[7] = vec2(0.7071, -0.7071) * 1.000*1.000;
+
+ vec2 pos_screen = vary_fragcoord.xy;
+ vec3 pos_world = pos.xyz;
+ vec2 noise_reflect = texture2D(noiseMap, vary_fragcoord.xy/128.0).xy;
+
+ float angle_hidden = 0.0;
+ int points = 0;
+
+ float scale = min(ssao_radius / -pos_world.z, ssao_max_radius);
+
+ // it was found that keeping # of samples a constant was the fastest, probably due to compiler optimizations (unrolling?)
+ for (int i = 0; i < 8; i++)
+ {
+ vec2 samppos_screen = pos_screen + scale * reflect(kern[i], noise_reflect);
+ vec3 samppos_world = getPosition(samppos_screen).xyz;
+
+ vec3 diff = pos_world - samppos_world;
+ float dist2 = dot(diff, diff);
+
+ // assume each sample corresponds to an occluding sphere with constant radius, constant x-sectional area
+ // --> solid angle shrinking by the square of distance
+ //radius is somewhat arbitrary, can approx with just some constant k * 1 / dist^2
+ //(k should vary inversely with # of samples, but this is taken care of later)
+
+ //if (dot((samppos_world - 0.05*norm - pos_world), norm) > 0.0) // -0.05*norm to shift sample point back slightly for flat surfaces
+ // angle_hidden += min(1.0/dist2, ssao_factor_inv); // dist != 0 follows from conditional. max of 1.0 (= ssao_factor_inv * ssao_factor)
+ angle_hidden = angle_hidden + float(dot((samppos_world - 0.05*norm - pos_world), norm) > 0.0) * min(1.0/dist2, ssao_factor_inv);
+
+ // 'blocked' samples (significantly closer to camera relative to pos_world) are "no data", not "no occlusion"
+ points = points + int(diff.z > -1.0);
+ }
+
+ angle_hidden = min(ssao_factor*angle_hidden/float(points), 1.0);
+
+ return (1.0 - (float(points != 0) * angle_hidden));
+}
+
void main()
{
- gl_FragColor = vec4(0,0,0,0);
+ vec2 pos_screen = vary_fragcoord.xy;
+
+ //try doing an unproject here
+
+ vec4 pos = getPosition(pos_screen);
+
+ vec3 norm = texture2DRect(normalMap, pos_screen).xyz*2.0-1.0;
+
+ /*if (pos.z == 0.0) // do nothing for sky *FIX: REMOVE THIS IF/WHEN THE POSITION MAP IS BEING USED AS A STENCIL
+ {
+ gl_FragColor = vec4(0.0); // doesn't matter
+ return;
+ }*/
+
+ float shadow = 1.0;
+ float dp_directional_light = max(0.0, dot(norm, vary_light.xyz));
+
+ vec4 spos = vec4(pos.xyz + norm.xyz * (-pos.z/64.0*shadow_offset+shadow_bias), 1.0);
+
+ //vec3 debug = vec3(0,0,0);
+
+ if (dp_directional_light == 0.0)
+ {
+ // if we know this point is facing away from the sun then we know it's in shadow without having to do a squirrelly shadow-map lookup
+ shadow = 0.0;
+ }
+ else if (spos.z > -shadow_clip.w)
+ {
+ vec4 lpos;
+
+ if (spos.z < -shadow_clip.z)
+ {
+ lpos = shadow_matrix[3]*spos;
+ lpos.xy *= screen_res;
+ shadow = shadow2DRectProj(shadowMap3, lpos).x;
+ shadow += max((pos.z+shadow_clip.z)/(shadow_clip.z-shadow_clip.w)*2.0-1.0, 0.0);
+ }
+ else if (spos.z < -shadow_clip.y)
+ {
+ lpos = shadow_matrix[2]*spos;
+ lpos.xy *= screen_res;
+ shadow = shadow2DRectProj(shadowMap2, lpos).x;
+ }
+ else if (spos.z < -shadow_clip.x)
+ {
+ lpos = shadow_matrix[1]*spos;
+ lpos.xy *= screen_res;
+ shadow = shadow2DRectProj(shadowMap1, lpos).x;
+ }
+ else
+ {
+ lpos = shadow_matrix[0]*spos;
+ lpos.xy *= screen_res;
+ shadow = shadow2DRectProj(shadowMap0, lpos).x;
+ }
+
+ // take the most-shadowed value out of these two:
+ // * the blurred sun shadow in the light (shadow) map
+ // * an unblurred dot product between the sun and this norm
+ // the goal is to err on the side of most-shadow to fill-in shadow holes and reduce artifacting
+ shadow = min(shadow, dp_directional_light);
+
+ /*debug.r = lpos.y / (lpos.w*screen_res.y);
+
+ lpos.xy /= lpos.w*32.0;
+ if (fract(lpos.x) < 0.1 || fract(lpos.y) < 0.1)
+ {
+ debug.gb = vec2(0.5, 0.5);
+ }
+
+ debug += (1.0-shadow)*0.5;*/
+
+ }
+ else
+ {
+ // more distant than the shadow map covers - just use directional shading as shadow
+ shadow = dp_directional_light;
+ }
+
+ gl_FragColor[0] = shadow;
+ gl_FragColor[1] = calcAmbientOcclusion(pos, norm);
+
+ //spotlight shadow 1
+ vec4 lpos = shadow_matrix[4]*spos;
+ lpos.xy *= screen_res;
+ gl_FragColor[2] = shadow2DRectProj(shadowMap4, lpos).x;
+
+ //spotlight shadow 2
+ lpos = shadow_matrix[5]*spos;
+ lpos.xy *= screen_res;
+ gl_FragColor[3] = shadow2DRectProj(shadowMap5, lpos).x;
+
+ //gl_FragColor.rgb = pos.xyz;
+ //gl_FragColor.b = shadow;
+ //gl_FragColor.rgb = debug;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl
deleted file mode 100644
index cdbed4b791..0000000000
--- a/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl
+++ /dev/null
@@ -1,124 +0,0 @@
-/**
- * @file sunLightSSAOF.glsl
- *
- * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc.
- * $License$
- */
-
-#extension GL_ARB_texture_rectangle : enable
-
-//class 1 -- no shadow, SSAO only
-
-uniform sampler2DRect depthMap;
-uniform sampler2DRect normalMap;
-uniform sampler2D noiseMap;
-
-uniform sampler2D lightFunc;
-
-
-// Inputs
-uniform mat4 shadow_matrix[6];
-uniform vec4 shadow_clip;
-uniform float ssao_radius;
-uniform float ssao_max_radius;
-uniform float ssao_factor;
-uniform float ssao_factor_inv;
-
-varying vec2 vary_fragcoord;
-varying vec4 vary_light;
-
-uniform mat4 inv_proj;
-uniform vec2 screen_res;
-
-uniform float shadow_bias;
-uniform float shadow_offset;
-
-vec4 getPosition(vec2 pos_screen)
-{
- float depth = texture2DRect(depthMap, pos_screen.xy).a;
- vec2 sc = pos_screen.xy*2.0;
- sc /= screen_res;
- sc -= vec2(1.0,1.0);
- vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
- vec4 pos = inv_proj * ndc;
- pos /= pos.w;
- pos.w = 1.0;
- return pos;
-}
-
-//calculate decreases in ambient lighting when crowded out (SSAO)
-float calcAmbientOcclusion(vec4 pos, vec3 norm)
-{
- float ret = 1.0;
-
- float dist = dot(pos.xyz,pos.xyz);
-
- if (dist < 64.0*64.0)
- {
- vec2 kern[8];
- // exponentially (^2) distant occlusion samples spread around origin
- kern[0] = vec2(-1.0, 0.0) * 0.125*0.125;
- kern[1] = vec2(1.0, 0.0) * 0.250*0.250;
- kern[2] = vec2(0.0, 1.0) * 0.375*0.375;
- kern[3] = vec2(0.0, -1.0) * 0.500*0.500;
- kern[4] = vec2(0.7071, 0.7071) * 0.625*0.625;
- kern[5] = vec2(-0.7071, -0.7071) * 0.750*0.750;
- kern[6] = vec2(-0.7071, 0.7071) * 0.875*0.875;
- kern[7] = vec2(0.7071, -0.7071) * 1.000*1.000;
-
- vec2 pos_screen = vary_fragcoord.xy;
- vec3 pos_world = pos.xyz;
- vec2 noise_reflect = texture2D(noiseMap, vary_fragcoord.xy/128.0).xy;
-
- float angle_hidden = 0.0;
- int points = 0;
-
- float scale = min(ssao_radius / -pos_world.z, ssao_max_radius);
-
- // it was found that keeping # of samples a constant was the fastest, probably due to compiler optimizations (unrolling?)
- for (int i = 0; i < 8; i++)
- {
- vec2 samppos_screen = pos_screen + scale * reflect(kern[i], noise_reflect);
- vec3 samppos_world = getPosition(samppos_screen).xyz;
-
- vec3 diff = pos_world - samppos_world;
- float dist2 = dot(diff, diff);
-
- // assume each sample corresponds to an occluding sphere with constant radius, constant x-sectional area
- // --> solid angle shrinking by the square of distance
- //radius is somewhat arbitrary, can approx with just some constant k * 1 / dist^2
- //(k should vary inversely with # of samples, but this is taken care of later)
-
- //if (dot((samppos_world - 0.05*norm - pos_world), norm) > 0.0) // -0.05*norm to shift sample point back slightly for flat surfaces
- // angle_hidden += min(1.0/dist2, ssao_factor_inv); // dist != 0 follows from conditional. max of 1.0 (= ssao_factor_inv * ssao_factor)
- angle_hidden = angle_hidden + float(dot((samppos_world - 0.05*norm - pos_world), norm) > 0.0) * min(1.0/dist2, ssao_factor_inv);
-
- // 'blocked' samples (significantly closer to camera relative to pos_world) are "no data", not "no occlusion"
- points = points + int(diff.z > -1.0);
- }
-
- angle_hidden = min(ssao_factor*angle_hidden/float(points), 1.0);
-
- ret = (1.0 - (float(points != 0) * angle_hidden));
- ret += max((dist-32.0*32.0)/(32.0*32.0), 0.0);
- }
-
- return min(ret, 1.0);
-}
-
-void main()
-{
- vec2 pos_screen = vary_fragcoord.xy;
-
- //try doing an unproject here
-
- vec4 pos = getPosition(pos_screen);
-
- vec3 norm = texture2DRect(normalMap, pos_screen).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
-
- gl_FragColor[0] = 1.0;
- gl_FragColor[1] = calcAmbientOcclusion(pos, norm);
- gl_FragColor[2] = 1.0;
- gl_FragColor[3] = 1.0;
-}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl b/indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl
index fa0a60c98d..3cccfb7202 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl
@@ -29,7 +29,6 @@ void main()
gl_FragData[0] = vec4(outColor.rgb, 0.0);
gl_FragData[1] = vec4(outColor.rgb*0.2, 0.2);
- vec3 nvn = normalize(vary_normal);
- gl_FragData[2] = vec4(nvn.xy * 0.5 + 0.5, nvn.z, 0.0);
+ gl_FragData[2] = vec4(normalize(vary_normal)*0.5+0.5, 0.0);
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/treeF.glsl b/indra/newview/app_settings/shaders/class1/deferred/treeF.glsl
index 5b33ea5bfe..258acee08c 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/treeF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/treeF.glsl
@@ -14,6 +14,5 @@ void main()
vec4 col = texture2D(diffuseMap, gl_TexCoord[0].xy);
gl_FragData[0] = vec4(gl_Color.rgb*col.rgb, col.a <= 0.5 ? 0.0 : 0.005);
gl_FragData[1] = vec4(0,0,0,0);
- vec3 nvn = normalize(vary_normal);
- gl_FragData[2] = vec4(nvn.xy * 0.5 + 0.5, nvn.z, 0.0);
+ gl_FragData[2] = vec4(normalize(vary_normal)*0.5+0.5, 0.0);
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl b/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl
index 361ae8dc84..d21575119d 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl
@@ -115,7 +115,7 @@ void main()
vec4 fb = texture2D(screenTex, distort2);
//mix with reflection
- // Note we actually want to use just df1, but multiplying by 0.999999 gets around an nvidia compiler bug
+ // Note we actually want to use just df1, but multiplying by 0.999999 gets around and nvidia compiler bug
color.rgb = mix(fb.rgb, refcol.rgb, df1 * 0.99999);
float shadow = 1.0;
@@ -131,11 +131,11 @@ void main()
//color.rgb = scaleSoftClip(color.rgb);
//color.a = spec * sunAngle2;
- //wavef.z *= 0.1f;
- //wavef = normalize(wavef);
- vec3 screenspacewavef = (norm_mat*vec4(wavef, 1.0)).xyz;
+ //wavef.z = -0.25f;
+ wavef = normalize(wavef);
+ wavef = (norm_mat*vec4(wavef, 1.0)).xyz;
- gl_FragData[0] = vec4(color.rgb, 0.5); // diffuse
- gl_FragData[1] = vec4(0.5,0.5,0.5, 0.95); // speccolor*spec, spec
- gl_FragData[2] = vec4(screenspacewavef.xy*0.5+0.5, screenspacewavef.z, screenspacewavef.z*0.5); // normalxyz, displace
+ gl_FragData[0] = vec4(color.rgb, 0.75);
+ gl_FragData[1] = vec4(1,1,1, 0.8);
+ gl_FragData[2] = vec4(wavef*0.5+0.5, 0.0);
}
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFuncV.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFuncV.glsl
index da49e59b89..3e8fdfb3e4 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightFuncV.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFuncV.glsl
@@ -12,8 +12,7 @@ float calcDirectionalLight(vec3 n, vec3 l)
return a;
}
-
-float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float is_pointlight)
+float calcPointLight(vec3 v, vec3 n, vec4 lp, float la)
{
//get light vector
vec3 lv = lp.xyz-v;
@@ -27,13 +26,9 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa
//distance attenuation
float da = clamp(1.0/(la * d), 0.0, 1.0);
- // spotlight coefficient.
- float spot = max(dot(-ln, lv), is_pointlight);
- da *= spot*spot; // GL_SPOT_EXPONENT=2
-
//angular attenuation
da *= calcDirectionalLight(n, lv);
-
+
return da;
}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
index 665fe16b43..ad16de6d81 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
@@ -29,6 +29,8 @@ varying vec3 vary_fragcoord;
varying vec3 vary_position;
varying vec3 vary_light;
+uniform float alpha_soften;
+
uniform float shadow_bias;
uniform mat4 inv_proj;
@@ -113,6 +115,15 @@ void main()
color.rgb = scaleSoftClip(color.rgb);
+ if (samp_pos.z != 0.0 && gl_Color.a < 1.0)
+ {
+ float dist_factor = alpha_soften;
+ float a = gl_Color.a;
+ a *= a;
+ dist_factor *= 1.0/(1.0-a);
+ color.a *= min((pos.z-samp_pos.z)*dist_factor, 1.0);
+ }
+
//gl_FragColor = gl_Color;
gl_FragColor = color;
//gl_FragColor = vec4(1,0,1,1)*shadow;
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl
index 1fae8c4da3..5991e1f3b5 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl
@@ -9,7 +9,7 @@ vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
void calcAtmospherics(vec3 inPositionEye);
float calcDirectionalLight(vec3 n, vec3 l);
-float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float is_pointlight);
+float calcPointLight(vec3 v, vec3 n, vec4 lp, float la);
vec3 atmosAmbient(vec3 light);
vec3 atmosAffectDirectionalLight(float lightIntensity);
@@ -42,21 +42,23 @@ void main()
calcAtmospherics(pos.xyz);
//vec4 color = calcLighting(pos.xyz, norm, gl_Color, vec4(0.));
- vec4 col = vec4(0.0, 0.0, 0.0, gl_Color.a);
+ vec4 col;
+ col.a = gl_Color.a;
+
+ // Add windlight lights
+ col.rgb = atmosAmbient(vec3(0.));
+ col.rgb = scaleUpLight(col.rgb);
// Collect normal lights (need to be divided by two, as we later multiply by 2)
- col.rgb += gl_LightSource[2].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[2].position, gl_LightSource[2].spotDirection.xyz, gl_LightSource[2].linearAttenuation, gl_LightSource[2].specular.a);
- col.rgb += gl_LightSource[3].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[3].position, gl_LightSource[3].spotDirection.xyz, gl_LightSource[3].linearAttenuation, gl_LightSource[3].specular.a);
- col.rgb += gl_LightSource[4].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[4].position, gl_LightSource[4].spotDirection.xyz, gl_LightSource[4].linearAttenuation, gl_LightSource[4].specular.a);
- col.rgb += gl_LightSource[5].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[5].position, gl_LightSource[5].spotDirection.xyz, gl_LightSource[5].linearAttenuation, gl_LightSource[5].specular.a);
- col.rgb += gl_LightSource[6].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[6].position, gl_LightSource[6].spotDirection.xyz, gl_LightSource[6].linearAttenuation, gl_LightSource[6].specular.a);
- col.rgb += gl_LightSource[7].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[7].position, gl_LightSource[7].spotDirection.xyz, gl_LightSource[7].linearAttenuation, gl_LightSource[7].specular.a);
+ col.rgb += gl_LightSource[2].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[2].position, gl_LightSource[2].linearAttenuation);
+ col.rgb += gl_LightSource[3].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[3].position, gl_LightSource[3].linearAttenuation);
+ col.rgb += gl_LightSource[4].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[4].position, gl_LightSource[4].linearAttenuation);
+ col.rgb += gl_LightSource[5].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[5].position, gl_LightSource[5].linearAttenuation);
+ col.rgb += gl_LightSource[6].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[6].position, gl_LightSource[6].linearAttenuation);
+ col.rgb += gl_LightSource[7].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[7].position, gl_LightSource[7].linearAttenuation);
col.rgb += gl_LightSource[1].diffuse.rgb*calcDirectionalLight(norm, gl_LightSource[1].position.xyz);
col.rgb = scaleDownLight(col.rgb);
- // Add windlight lights
- col.rgb += atmosAmbient(vec3(0.));
-
vary_light = gl_LightSource[0].position.xyz;
vary_ambient = col.rgb*gl_Color.rgb;
diff --git a/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl b/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl
index f8dd1b7431..a939499b17 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl
@@ -10,7 +10,7 @@ mat4 getSkinnedTransform();
void calcAtmospherics(vec3 inPositionEye);
float calcDirectionalLight(vec3 n, vec3 l);
-float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float is_pointlight);
+float calcPointLight(vec3 v, vec3 n, vec4 lp, float la);
vec3 atmosAmbient(vec3 light);
vec3 atmosAffectDirectionalLight(float lightIntensity);
@@ -53,22 +53,23 @@ void main()
calcAtmospherics(pos.xyz);
//vec4 color = calcLighting(pos.xyz, norm, gl_Color, vec4(0.));
-
- vec4 col = vec4(0.0, 0.0, 0.0, gl_Color.a);
+ vec4 col;
+ col.a = gl_Color.a;
+
+ // Add windlight lights
+ col.rgb = atmosAmbient(vec3(0.));
+ col.rgb = scaleUpLight(col.rgb);
// Collect normal lights (need to be divided by two, as we later multiply by 2)
- col.rgb += gl_LightSource[2].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[2].position, gl_LightSource[2].spotDirection.xyz, gl_LightSource[2].linearAttenuation, gl_LightSource[2].specular.a);
- col.rgb += gl_LightSource[3].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[3].position, gl_LightSource[3].spotDirection.xyz, gl_LightSource[3].linearAttenuation, gl_LightSource[3].specular.a);
- col.rgb += gl_LightSource[4].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[4].position, gl_LightSource[4].spotDirection.xyz, gl_LightSource[4].linearAttenuation, gl_LightSource[4].specular.a);
- col.rgb += gl_LightSource[5].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[5].position, gl_LightSource[5].spotDirection.xyz, gl_LightSource[5].linearAttenuation, gl_LightSource[5].specular.a);
- col.rgb += gl_LightSource[6].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[6].position, gl_LightSource[6].spotDirection.xyz, gl_LightSource[6].linearAttenuation, gl_LightSource[6].specular.a);
- col.rgb += gl_LightSource[7].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[7].position, gl_LightSource[7].spotDirection.xyz, gl_LightSource[7].linearAttenuation, gl_LightSource[7].specular.a);
+ col.rgb += gl_LightSource[2].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[2].position, gl_LightSource[2].linearAttenuation);
+ col.rgb += gl_LightSource[3].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[3].position, gl_LightSource[3].linearAttenuation);
+ col.rgb += gl_LightSource[4].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[4].position, gl_LightSource[4].linearAttenuation);
+ col.rgb += gl_LightSource[5].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[5].position, gl_LightSource[5].linearAttenuation);
+ col.rgb += gl_LightSource[6].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[6].position, gl_LightSource[6].linearAttenuation);
+ col.rgb += gl_LightSource[7].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[7].position, gl_LightSource[7].linearAttenuation);
col.rgb += gl_LightSource[1].diffuse.rgb*calcDirectionalLight(norm, gl_LightSource[1].position.xyz);
col.rgb = scaleDownLight(col.rgb);
- // Add windlight lights
- col.rgb += atmosAmbient(vec3(0.));
-
vary_ambient = col.rgb*gl_Color.rgb;
vary_directional = gl_Color.rgb*atmosAffectDirectionalLight(max(calcDirectionalLight(norm, gl_LightSource[0].position.xyz), (1.0-gl_Color.a)*(1.0-gl_Color.a)));
diff --git a/indra/newview/app_settings/shaders/class2/deferred/blurLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/blurLightF.glsl
index d1c5d7cb19..0fad5b4b50 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/blurLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/blurLightF.glsl
@@ -37,8 +37,7 @@ vec4 getPosition(vec2 pos_screen)
void main()
{
- vec3 norm = texture2DRect(normalMap, vary_fragcoord.xy).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
+ vec3 norm = texture2DRect(normalMap, vary_fragcoord.xy).xyz*2.0-1.0;
vec3 pos = getPosition(vary_fragcoord.xy).xyz;
vec4 ccol = texture2DRect(lightMap, vary_fragcoord.xy).rgba;
diff --git a/indra/newview/app_settings/shaders/class2/deferred/edgeF.glsl b/indra/newview/app_settings/shaders/class2/deferred/edgeF.glsl
index e32e9f4b32..02beddd43b 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/edgeF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/edgeF.glsl
@@ -31,8 +31,7 @@ float getDepth(vec2 pos_screen)
void main()
{
- vec3 norm = texture2DRect(normalMap, vary_fragcoord.xy).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
+ vec3 norm = texture2DRect(normalMap, vary_fragcoord.xy).xyz*2.0-1.0;
float depth = getDepth(vary_fragcoord.xy);
vec2 tc = vary_fragcoord.xy;
@@ -47,12 +46,8 @@ void main()
de = step(depth_cutoff, de);
vec2 ne;
- vec3 nexnorm = texture2DRect(normalMap, tc+vec2(-sc,-sc)).rgb;
- nexnorm = vec3((nexnorm.xy-0.5)*2.0,nexnorm.z); // unpack norm
- ne.x = dot(nexnorm, norm);
- vec3 neynorm = texture2DRect(normalMap, tc+vec2(sc,sc)).rgb;
- neynorm = vec3((neynorm.xy-0.5)*2.0,neynorm.z); // unpack norm
- ne.y = dot(neynorm, norm);
+ ne.x = dot(texture2DRect(normalMap, tc+vec2(-sc,-sc)).rgb*2.0-1.0, norm);
+ ne.y = dot(texture2DRect(normalMap, tc+vec2(sc,sc)).rgb*2.0-1.0, norm);
ne = 1.0-ne;
diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl
index 22ffb58c63..651959413c 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl
@@ -43,52 +43,6 @@ uniform vec2 screen_res;
uniform mat4 inv_proj;
-vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod)
-{
- vec4 ret = texture2DLod(projectionMap, tc, lod);
-
- vec2 dist = tc-vec2(0.5);
-
- float det = max(1.0-lod/(proj_lod*0.5), 0.0);
-
- float d = dot(dist,dist);
-
- ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0)+det, 1.0);
-
- return ret;
-}
-
-vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod)
-{
- vec4 ret = texture2DLod(projectionMap, tc, lod);
-
- vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
-
- float det = min(lod/(proj_lod*0.5), 1.0);
-
- float d = min(dist.x, dist.y);
-
- float edge = 0.25*det;
-
- ret *= clamp(d/edge, 0.0, 1.0);
-
- return ret;
-}
-
-vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod)
-{
- vec4 ret = texture2DLod(projectionMap, tc, lod);
-
- vec2 dist = tc-vec2(0.5);
-
- float d = dot(dist,dist);
-
- ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0), 1.0);
-
- return ret;
-}
-
-
vec4 getPosition(vec2 pos_screen)
{
float depth = texture2DRect(depthMap, pos_screen.xy).a;
@@ -129,8 +83,7 @@ void main()
shadow = min(sh[proj_shadow_idx]+shadow_fade, 1.0);
}
- vec3 norm = texture2DRect(normalMap, frag.xy).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
+ vec3 norm = texture2DRect(normalMap, frag.xy).xyz*2.0-1.0;
norm = normalize(norm);
float l_dist = -dot(lv, proj_n);
@@ -173,7 +126,7 @@ void main()
float diff = clamp((l_dist-proj_focus)/proj_range, 0.0, 1.0);
float lod = diff * proj_lod;
- vec4 plcol = texture2DLodDiffuse(projectionMap, proj_tc.xy, lod);
+ vec4 plcol = texture2DLod(projectionMap, proj_tc.xy, lod);
vec3 lcol = gl_Color.rgb * plcol.rgb * plcol.a;
@@ -184,7 +137,7 @@ void main()
}
//float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0);
- vec4 amb_plcol = texture2DLodAmbient(projectionMap, proj_tc.xy, proj_lod);
+ vec4 amb_plcol = texture2DLod(projectionMap, proj_tc.xy, proj_ambient_lod);
amb_da += (da*da*0.5+0.5)*proj_ambiance;
@@ -214,23 +167,22 @@ void main()
if (stc.z > 0.0)
{
stc.xy /= stc.w;
-
- float fatten = clamp(spec.a*spec.a+spec.a*0.5, 0.25, 1.0);
-
- stc.xy = (stc.xy - vec2(0.5)) * fatten + vec2(0.5);
-
+
if (stc.x < 1.0 &&
stc.y < 1.0 &&
stc.x > 0.0 &&
stc.y > 0.0)
{
- vec4 scol = texture2DLodSpecular(projectionMap, stc.xy, proj_lod-spec.a*proj_lod);
+ vec4 scol = texture2DLod(projectionMap, stc.xy, proj_lod-spec.a*proj_lod);
col += dist_atten*scol.rgb*gl_Color.rgb*scol.a*spec.rgb*shadow;
}
}
}
}
+ //attenuate point light contribution by SSAO component
+ col *= texture2DRect(lightMap, frag.xy).g;
+
gl_FragColor.rgb = col;
gl_FragColor.a = 0.0;
}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
index fd6ae2b960..531f7376a3 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
@@ -11,7 +11,6 @@ uniform sampler2DRect diffuseRect;
uniform sampler2DRect specularRect;
uniform sampler2DRect normalMap;
uniform sampler2DRect lightMap;
-uniform sampler2DRect depthMap;
uniform sampler2D noiseMap;
uniform samplerCube environmentMap;
uniform sampler2D lightFunc;
@@ -42,6 +41,7 @@ uniform vec3 env_mat[3];
uniform vec4 shadow_clip;
uniform mat3 ssao_effect_mat;
+uniform sampler2DRect depthMap;
uniform mat4 inv_proj;
uniform vec2 screen_res;
@@ -55,8 +55,9 @@ vec3 vary_AmblitColor;
vec3 vary_AdditiveColor;
vec3 vary_AtmosAttenuation;
-vec4 getPosition_d(vec2 pos_screen, float depth)
-{
+vec4 getPosition(vec2 pos_screen)
+{ //get position in screen space (world units) given window coordinate and depth map
+ float depth = texture2DRect(depthMap, pos_screen.xy).a;
vec2 sc = pos_screen.xy*2.0;
sc /= screen_res;
sc -= vec2(1.0,1.0);
@@ -67,12 +68,6 @@ vec4 getPosition_d(vec2 pos_screen, float depth)
return pos;
}
-vec4 getPosition(vec2 pos_screen)
-{ //get position in screen space (world units) given window coordinate and depth map
- float depth = texture2DRect(depthMap, pos_screen.xy).a;
- return getPosition_d(pos_screen, depth);
-}
-
vec3 getPositionEye()
{
return vary_PositionEye;
@@ -256,10 +251,8 @@ vec3 scaleSoftClip(vec3 light)
void main()
{
vec2 tc = vary_fragcoord.xy;
- float depth = texture2DRect(depthMap, tc.xy).a;
- vec3 pos = getPosition_d(tc, depth).xyz;
- vec3 norm = texture2DRect(normalMap, tc).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
+ vec3 pos = getPosition(tc).xyz;
+ vec3 norm = texture2DRect(normalMap, tc).xyz*2.0-1.0;
//vec3 nz = texture2D(noiseMap, vary_fragcoord.xy/128.0).xyz;
float da = max(dot(norm.xyz, vary_light.xyz), 0.0);
@@ -278,67 +271,24 @@ void main()
col *= diffuse.rgb;
- if (spec.a > 0.0) // specular reflection
+ if (spec.a > 0.0)
{
- // the old infinite-sky shiny reflection
- //
- 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;
- // Offset the guess source a little according to a trivial
- // checkerboard dither function and spec.a.
- // This is meant to be similar to sampling a blurred version
- // of the diffuse map. LOD would be better in that regard.
- // 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
- float checkoffset = (3.0 + (7.0*(1.0-spec.a)))*(checkerboard-0.5);
- ref2d += vec2(checkoffset, checkoffset);
- ref2d += tc.xy; // use as offset from destination
- // 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.
- vec3 refcol = 0.5 * (texture2DRect(diffuseRect, ref2d + vec2(0.0, -checkoffset)).rgb +
- texture2DRect(diffuseRect, ref2d + vec2(-checkoffset, 0.0)).rgb);
- float refdepth = texture2DRect(depthMap, ref2d).a;
- vec3 refpos = getPosition_d(ref2d, refdepth).xyz;
- float refshad = texture2DRect(lightMap, ref2d).r;
- vec3 refn = texture2DRect(normalMap, ref2d).rgb;
- refn = vec3((refn.xy-0.5)*2.0,refn.z); // unpack norm
- refn = normalize(refn);
- // 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
- // 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
- float refmod = min(refapprop, reflit);
- vec3 refprod = vary_SunlitColor * refcol.rgb * refmod;
- vec3 ssshiny = (refprod * spec.a);
- ssshiny *= 0.3; // dampen it even more
- */
- vec3 ssshiny = vec3(0,0,0);
-
- // add the two types of shiny together
- col += (ssshiny + dumbshiny) * spec.rgb;
+ vec3 ref = normalize(reflect(pos.xyz, norm.xyz));
+ float sa = dot(ref, vary_light.xyz);
+ col.rgb += vary_SunlitColor*scol*spec.rgb*texture2D(lightFunc, vec2(sa, spec.a)).a;
}
col = atmosLighting(col);
col = scaleSoftClip(col);
gl_FragColor.rgb = col;
+
+ //gl_FragColor.rgb = gi_col.rgb;
gl_FragColor.a = 0.0;
+
+ //gl_FragColor.rg = scol_ambocc.rg;
+ //gl_FragColor.rgb = texture2DRect(lightMap, vary_fragcoord.xy).rgb;
+ //gl_FragColor.rgb = norm.rgb*0.5+0.5;
+ //gl_FragColor.rgb = vec3(ambocc);
+ //gl_FragColor.rgb = vec3(scol);
}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
index 8a90199b7c..d6534083cf 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
@@ -82,8 +82,7 @@ void main()
discard;
}
- vec3 norm = texture2DRect(normalMap, frag.xy).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
+ vec3 norm = texture2DRect(normalMap, frag.xy).xyz*2.0-1.0;
norm = normalize(norm);
float l_dist = -dot(lv, proj_n);
@@ -180,6 +179,21 @@ void main()
}
}
+ /*if (spec.a > 0.0)
+ {
+ //vec3 ref = reflect(normalize(pos), norm);
+ float sa = dot(normalize(lv-normalize(pos)),norm);;
+ //sa = max(sa, 0.0);
+ //sa = pow(sa, 128.0 * spec.a*spec.a/dist_atten)*min(dist_atten*4.0, 1.0);
+ sa = texture2D(lightFunc, vec2(sa, spec.a)).a * min(dist_atten*4.0, 1.0);
+ sa *= noise;
+ col += da*sa*lcol*spec.rgb;
+ }*/
+
+ //attenuate point light contribution by SSAO component
+ col *= texture2DRect(lightMap, frag.xy).g;
+
+
gl_FragColor.rgb = col;
gl_FragColor.a = 0.0;
}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl
index 7423347346..a0026edcd2 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl
@@ -7,8 +7,6 @@
#extension GL_ARB_texture_rectangle : enable
-//class 2, shadows, no SSAO
-
uniform sampler2DRect depthMap;
uniform sampler2DRect normalMap;
uniform sampler2DRectShadow shadowMap0;
@@ -41,9 +39,6 @@ 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;
@@ -57,6 +52,56 @@ vec4 getPosition(vec2 pos_screen)
return pos;
}
+//calculate decreases in ambient lighting when crowded out (SSAO)
+float calcAmbientOcclusion(vec4 pos, vec3 norm)
+{
+ vec2 kern[8];
+ // exponentially (^2) distant occlusion samples spread around origin
+ kern[0] = vec2(-1.0, 0.0) * 0.125*0.125;
+ kern[1] = vec2(1.0, 0.0) * 0.250*0.250;
+ kern[2] = vec2(0.0, 1.0) * 0.375*0.375;
+ kern[3] = vec2(0.0, -1.0) * 0.500*0.500;
+ kern[4] = vec2(0.7071, 0.7071) * 0.625*0.625;
+ kern[5] = vec2(-0.7071, -0.7071) * 0.750*0.750;
+ kern[6] = vec2(-0.7071, 0.7071) * 0.875*0.875;
+ kern[7] = vec2(0.7071, -0.7071) * 1.000*1.000;
+
+ vec2 pos_screen = vary_fragcoord.xy;
+ vec3 pos_world = pos.xyz;
+ vec2 noise_reflect = texture2D(noiseMap, vary_fragcoord.xy/128.0).xy;
+
+ float angle_hidden = 0.0;
+ int points = 0;
+
+ float scale = min(ssao_radius / -pos_world.z, ssao_max_radius);
+
+ // it was found that keeping # of samples a constant was the fastest, probably due to compiler optimizations (unrolling?)
+ for (int i = 0; i < 8; i++)
+ {
+ vec2 samppos_screen = pos_screen + scale * reflect(kern[i], noise_reflect);
+ vec3 samppos_world = getPosition(samppos_screen).xyz;
+
+ vec3 diff = pos_world - samppos_world;
+ float dist2 = dot(diff, diff);
+
+ // assume each sample corresponds to an occluding sphere with constant radius, constant x-sectional area
+ // --> solid angle shrinking by the square of distance
+ //radius is somewhat arbitrary, can approx with just some constant k * 1 / dist^2
+ //(k should vary inversely with # of samples, but this is taken care of later)
+
+ //if (dot((samppos_world - 0.05*norm - pos_world), norm) > 0.0) // -0.05*norm to shift sample point back slightly for flat surfaces
+ // angle_hidden += min(1.0/dist2, ssao_factor_inv); // dist != 0 follows from conditional. max of 1.0 (= ssao_factor_inv * ssao_factor)
+ angle_hidden = angle_hidden + float(dot((samppos_world - 0.05*norm - pos_world), norm) > 0.0) * min(1.0/dist2, ssao_factor_inv);
+
+ // 'blocked' samples (significantly closer to camera relative to pos_world) are "no data", not "no occlusion"
+ points = points + int(diff.z > -1.0);
+ }
+
+ angle_hidden = min(ssao_factor*angle_hidden/float(points), 1.0);
+
+ return (1.0 - (float(points != 0) * angle_hidden));
+}
+
float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc, float scl)
{
stc.xyz /= stc.w;
@@ -78,7 +123,7 @@ float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc, float scl)
float pcfShadow(sampler2DShadow shadowMap, vec4 stc, float scl)
{
stc.xyz /= stc.w;
- stc.z += spot_shadow_bias*scl;
+ stc.z += shadow_bias*scl;
float cs = shadow2D(shadowMap, stc.xyz).x;
float shadow = cs;
@@ -89,7 +134,8 @@ 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;
@@ -103,10 +149,7 @@ void main()
vec4 pos = getPosition(pos_screen);
- vec4 nmap4 = texture2DRect(normalMap, pos_screen);
- nmap4 = vec4((nmap4.xy-0.5)*2.0,nmap4.z,nmap4.w); // unpack norm
- float displace = nmap4.w;
- vec3 norm = nmap4.xyz;
+ vec3 norm = texture2DRect(normalMap, pos_screen).xyz*2.0-1.0;
/*if (pos.z == 0.0) // do nothing for sky *FIX: REMOVE THIS IF/WHEN THE POSITION MAP IS BEING USED AS A STENCIL
{
@@ -115,12 +158,9 @@ void main()
}*/
float shadow = 1.0;
- float dp_directional_light = max(0.0, dot(norm, vary_light.xyz));
+ float dp_directional_light = max(0.0, dot(norm, vary_light.xyz));
- 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);
+ vec4 spos = vec4(pos.xyz + vary_light.xyz * (1.0-dp_directional_light)*shadow_offset, 1.0);
if (spos.z > -shadow_clip.w)
{
@@ -180,17 +220,15 @@ void main()
}
gl_FragColor[0] = shadow;
- gl_FragColor[1] = 1.0;
-
- spos = vec4(shadow_pos+norm*spot_shadow_offset, 1.0);
+ gl_FragColor[1] = calcAmbientOcclusion(pos, norm);
//spotlight shadow 1
vec4 lpos = shadow_matrix[4]*spos;
- gl_FragColor[2] = pcfShadow(shadowMap4, lpos, 0.8);
+ gl_FragColor[2] = pcfShadow(shadowMap4, lpos, 0.1).x;
//spotlight shadow 2
lpos = shadow_matrix[5]*spos;
- gl_FragColor[3] = pcfShadow(shadowMap5, lpos, 0.8);
+ gl_FragColor[3] = pcfShadow(shadowMap5, lpos, 0.1).x;
//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
deleted file mode 100644
index 4e33a1af45..0000000000
--- a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl
+++ /dev/null
@@ -1,257 +0,0 @@
-/**
- * @file sunLightSSAOF.glsl
- *
- * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc.
- * $License$
- */
-
-#extension GL_ARB_texture_rectangle : enable
-
-//class 2 -- shadows and SSAO
-
-uniform sampler2DRect depthMap;
-uniform sampler2DRect normalMap;
-uniform sampler2DRectShadow shadowMap0;
-uniform sampler2DRectShadow shadowMap1;
-uniform sampler2DRectShadow shadowMap2;
-uniform sampler2DRectShadow shadowMap3;
-uniform sampler2DShadow shadowMap4;
-uniform sampler2DShadow shadowMap5;
-uniform sampler2D noiseMap;
-
-uniform sampler2D lightFunc;
-
-// Inputs
-uniform mat4 shadow_matrix[6];
-uniform vec4 shadow_clip;
-uniform float ssao_radius;
-uniform float ssao_max_radius;
-uniform float ssao_factor;
-uniform float ssao_factor_inv;
-
-varying vec2 vary_fragcoord;
-varying vec4 vary_light;
-
-uniform mat4 inv_proj;
-uniform vec2 screen_res;
-uniform vec2 shadow_res;
-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;
- vec2 sc = pos_screen.xy*2.0;
- sc /= screen_res;
- sc -= vec2(1.0,1.0);
- vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
- vec4 pos = inv_proj * ndc;
- pos /= pos.w;
- pos.w = 1.0;
- return pos;
-}
-
-//calculate decreases in ambient lighting when crowded out (SSAO)
-float calcAmbientOcclusion(vec4 pos, vec3 norm)
-{
- float ret = 1.0;
-
- float dist = dot(pos.xyz,pos.xyz);
-
- if (dist < 64.0*64.0)
- {
- vec2 kern[8];
- // exponentially (^2) distant occlusion samples spread around origin
- kern[0] = vec2(-1.0, 0.0) * 0.125*0.125;
- kern[1] = vec2(1.0, 0.0) * 0.250*0.250;
- kern[2] = vec2(0.0, 1.0) * 0.375*0.375;
- kern[3] = vec2(0.0, -1.0) * 0.500*0.500;
- kern[4] = vec2(0.7071, 0.7071) * 0.625*0.625;
- kern[5] = vec2(-0.7071, -0.7071) * 0.750*0.750;
- kern[6] = vec2(-0.7071, 0.7071) * 0.875*0.875;
- kern[7] = vec2(0.7071, -0.7071) * 1.000*1.000;
-
- vec2 pos_screen = vary_fragcoord.xy;
- vec3 pos_world = pos.xyz;
- vec2 noise_reflect = texture2D(noiseMap, vary_fragcoord.xy/128.0).xy;
-
- float angle_hidden = 0.0;
- int points = 0;
-
- float scale = min(ssao_radius / -pos_world.z, ssao_max_radius);
-
- // it was found that keeping # of samples a constant was the fastest, probably due to compiler optimizations (unrolling?)
- for (int i = 0; i < 8; i++)
- {
- vec2 samppos_screen = pos_screen + scale * reflect(kern[i], noise_reflect);
- vec3 samppos_world = getPosition(samppos_screen).xyz;
-
- vec3 diff = pos_world - samppos_world;
- float dist2 = dot(diff, diff);
-
- // assume each sample corresponds to an occluding sphere with constant radius, constant x-sectional area
- // --> solid angle shrinking by the square of distance
- //radius is somewhat arbitrary, can approx with just some constant k * 1 / dist^2
- //(k should vary inversely with # of samples, but this is taken care of later)
-
- //if (dot((samppos_world - 0.05*norm - pos_world), norm) > 0.0) // -0.05*norm to shift sample point back slightly for flat surfaces
- // angle_hidden += min(1.0/dist2, ssao_factor_inv); // dist != 0 follows from conditional. max of 1.0 (= ssao_factor_inv * ssao_factor)
- angle_hidden = angle_hidden + float(dot((samppos_world - 0.05*norm - pos_world), norm) > 0.0) * min(1.0/dist2, ssao_factor_inv);
-
- // 'blocked' samples (significantly closer to camera relative to pos_world) are "no data", not "no occlusion"
- points = points + int(diff.z > -1.0);
- }
-
- angle_hidden = min(ssao_factor*angle_hidden/float(points), 1.0);
-
- ret = (1.0 - (float(points != 0) * angle_hidden));
- ret += max((dist-32.0*32.0)/(32.0*32.0), 0.0);
- }
-
- return min(ret, 1.0);
-}
-
-float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc, float scl)
-{
- stc.xyz /= stc.w;
- stc.z += shadow_bias*scl;
-
- float cs = shadow2DRect(shadowMap, stc.xyz).x;
- float shadow = cs;
-
- shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(1.5, 1.5, 0.0)).x, cs);
- shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(1.5, -1.5, 0.0)).x, cs);
- shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(-1.5, 1.5, 0.0)).x, cs);
- shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(-1.5, -1.5, 0.0)).x, cs);
-
- return shadow/5.0;
-
- //return shadow;
-}
-
-float pcfShadow(sampler2DShadow shadowMap, vec4 stc, float scl)
-{
- stc.xyz /= stc.w;
- stc.z += spot_shadow_bias*scl;
-
- float cs = shadow2D(shadowMap, stc.xyz).x;
- float shadow = cs;
-
- vec2 off = 1.5/proj_shadow_res;
-
- 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);
- shadow += max(shadow2D(shadowMap, stc.xyz+vec3(-off.x, -off.y, 0.0)).x, cs);
-
-
- return shadow/5.0;
-
- //return shadow;
-}
-
-void main()
-{
- vec2 pos_screen = vary_fragcoord.xy;
-
- //try doing an unproject here
-
- vec4 pos = getPosition(pos_screen);
-
- vec4 nmap4 = texture2DRect(normalMap, pos_screen);
- nmap4 = vec4((nmap4.xy-0.5)*2.0,nmap4.z,nmap4.w); // unpack norm
- float displace = nmap4.w;
- vec3 norm = nmap4.xyz;
-
- /*if (pos.z == 0.0) // do nothing for sky *FIX: REMOVE THIS IF/WHEN THE POSITION MAP IS BEING USED AS A STENCIL
- {
- gl_FragColor = vec4(0.0); // doesn't matter
- return;
- }*/
-
- float shadow = 1.0;
- float dp_directional_light = max(0.0, dot(norm, vary_light.xyz));
-
- 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)
- {
- if (dp_directional_light == 0.0)
- {
- // if we know this point is facing away from the sun then we know it's in shadow without having to do a squirrelly shadow-map lookup
- shadow = 0.0;
- }
- else
- {
- vec4 lpos;
-
- if (spos.z < -shadow_clip.z)
- {
- lpos = shadow_matrix[3]*spos;
- lpos.xy *= shadow_res;
- shadow = pcfShadow(shadowMap3, lpos, 0.25);
- shadow += max((pos.z+shadow_clip.z)/(shadow_clip.z-shadow_clip.w)*2.0-1.0, 0.0);
- }
- else if (spos.z < -shadow_clip.y)
- {
- lpos = shadow_matrix[2]*spos;
- lpos.xy *= shadow_res;
- shadow = pcfShadow(shadowMap2, lpos, 0.5);
- }
- else if (spos.z < -shadow_clip.x)
- {
- lpos = shadow_matrix[1]*spos;
- lpos.xy *= shadow_res;
- shadow = pcfShadow(shadowMap1, lpos, 0.75);
- }
- else
- {
- lpos = shadow_matrix[0]*spos;
- lpos.xy *= shadow_res;
- shadow = pcfShadow(shadowMap0, lpos, 1.0);
- }
-
- // take the most-shadowed value out of these two:
- // * the blurred sun shadow in the light (shadow) map
- // * an unblurred dot product between the sun and this norm
- // the goal is to err on the side of most-shadow to fill-in shadow holes and reduce artifacting
- shadow = min(shadow, dp_directional_light);
-
- //lpos.xy /= lpos.w*32.0;
- //if (fract(lpos.x) < 0.1 || fract(lpos.y) < 0.1)
- //{
- // shadow = 0.0;
- //}
-
- }
- }
- else
- {
- // more distant than the shadow map covers
- shadow = 1.0;
- }
-
- 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);
-
- //spotlight shadow 2
- lpos = shadow_matrix[5]*spos;
- 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/lighting/sumLightsV.glsl b/indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl
index 19800d96dc..f4c59734a4 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl
+++ b/indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl
@@ -6,7 +6,7 @@
*/
float calcDirectionalLight(vec3 n, vec3 l);
-float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float is_pointlight);
+float calcPointLight(vec3 v, vec3 n, vec4 lp, float la);
vec3 atmosAmbient(vec3 light);
vec3 atmosAffectDirectionalLight(float lightIntensity);
@@ -18,10 +18,9 @@ vec4 sumLights(vec3 pos, vec3 norm, vec4 color, vec4 baseLight)
// Collect normal lights (need to be divided by two, as we later multiply by 2)
col.rgb += gl_LightSource[1].diffuse.rgb * calcDirectionalLight(norm, gl_LightSource[1].position.xyz);
-
- col.rgb += gl_LightSource[2].diffuse.rgb * calcPointLightOrSpotLight(pos, norm, gl_LightSource[2].position, gl_LightSource[2].spotDirection.xyz, gl_LightSource[2].linearAttenuation, gl_LightSource[2].specular.a);
- col.rgb += gl_LightSource[3].diffuse.rgb * calcPointLightOrSpotLight(pos, norm, gl_LightSource[3].position, gl_LightSource[3].spotDirection.xyz, gl_LightSource[3].linearAttenuation, gl_LightSource[3].specular.a);
- //col.rgb += gl_LightSource[4].diffuse.rgb * calcPointLightOrSpotLight(pos, norm, gl_LightSource[4].position, gl_LightSource[4].spotDirection.xyz, gl_LightSource[4].linearAttenuation, gl_LightSource[4].specular.a);
+ col.rgb += gl_LightSource[2].diffuse.rgb * calcPointLight(pos, norm, gl_LightSource[2].position, gl_LightSource[2].linearAttenuation);
+ col.rgb += gl_LightSource[3].diffuse.rgb * calcPointLight(pos, norm, gl_LightSource[3].position, gl_LightSource[3].linearAttenuation);
+ //col.rgb += gl_LightSource[4].diffuse.rgb * calcPointLight(pos, norm, gl_LightSource[4].position, gl_LightSource[4].linearAttenuation);
col.rgb = scaleDownLight(col.rgb);
// Add windlight lights
diff --git a/indra/newview/app_settings/shaders/class3/deferred/giDownsampleF.glsl b/indra/newview/app_settings/shaders/class3/deferred/giDownsampleF.glsl
index 66606233cd..7325825d6d 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/giDownsampleF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/giDownsampleF.glsl
@@ -44,8 +44,7 @@ float getDepth(vec2 pos_screen)
void main()
{
- vec3 norm = texture2DRect(normalMap, vary_fragcoord.xy).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
+ vec3 norm = texture2DRect(normalMap, vary_fragcoord.xy).xyz*2.0-1.0;
float depth = getDepth(vary_fragcoord.xy);
vec3 ccol = texture2DRect(giLightMap, vary_fragcoord.xy).rgb;
@@ -57,10 +56,9 @@ void main()
for (int i = 0; i < kern_length; i++)
{
vec2 tc = vary_fragcoord.xy + kern[i].y*dlt;
- vec3 sampNorm = texture2DRect(normalMap, tc.xy).xyz;
- sampNorm = vec3((sampNorm.xy-0.5)*2.0,sampNorm.z); // unpack norm
-
- float d = dot(norm.xyz, sampNorm);
+ vec3 sampNorm = texture2DRect(normalMap, tc.xy).xyz*2.0-1.0;
+
+ float d = dot(norm.xyz, sampNorm);
if (d > 0.5)
{
diff --git a/indra/newview/app_settings/shaders/class3/deferred/giF.glsl b/indra/newview/app_settings/shaders/class3/deferred/giF.glsl
index 1b8354dbd1..939710cb56 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/giF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/giF.glsl
@@ -178,8 +178,7 @@ void main()
float rad = gi_range*0.5;
- vec3 norm = texture2DRect(normalMap, pos_screen).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
+ vec3 norm = texture2DRect(normalMap, pos_screen).xyz*2.0-1.0;
float dist = max(length(pos.xyz)-rad, 0.0);
float da = clamp(1.0-dist/rad, 0.0, 1.0);
diff --git a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
index c88edd0a60..96a083b522 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
@@ -56,8 +56,9 @@ vec3 vary_AdditiveColor;
vec3 vary_AtmosAttenuation;
uniform float gi_ambiance;
-vec4 getPosition_d(vec2 pos_screen, float depth)
-{
+vec4 getPosition(vec2 pos_screen)
+{ //get position in screen space (world units) given window coordinate and depth map
+ float depth = texture2DRect(depthMap, pos_screen.xy).a;
vec2 sc = pos_screen.xy*2.0;
sc /= screen_res;
sc -= vec2(1.0,1.0);
@@ -68,12 +69,6 @@ vec4 getPosition_d(vec2 pos_screen, float depth)
return pos;
}
-vec4 getPosition(vec2 pos_screen)
-{ //get position in screen space (world units) given window coordinate and depth map
- float depth = texture2DRect(depthMap, pos_screen.xy).a;
- return getPosition_d(pos_screen, depth);
-}
-
vec3 getPositionEye()
{
return vary_PositionEye;
@@ -257,10 +252,8 @@ vec3 scaleSoftClip(vec3 light)
void main()
{
vec2 tc = vary_fragcoord.xy;
- float depth = texture2DRect(depthMap, tc.xy).a;
- vec3 pos = getPosition_d(tc, depth).xyz;
- vec3 norm = texture2DRect(normalMap, tc).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
+ vec3 pos = getPosition(tc).xyz;
+ vec3 norm = texture2DRect(normalMap, tc).xyz*2.0-1.0;
//vec3 nz = texture2D(noiseMap, vary_fragcoord.xy/128.0).xyz;
float da = max(dot(norm.xyz, vary_light.xyz), 0.0);
@@ -281,63 +274,11 @@ void main()
col *= diffuse.rgb;
- if (spec.a > 0.0) // specular reflection
+ if (spec.a > 0.0)
{
- // the old infinite-sky shiny reflection
- //
- 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;
- // Offset the guess source a little according to a trivial
- // checkerboard dither function and spec.a.
- // This is meant to be similar to sampling a blurred version
- // of the diffuse map. LOD would be better in that regard.
- // 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
- float checkoffset = (3.0 + (7.0*(1.0-spec.a)))*(checkerboard-0.5);
-
- ref2d += vec2(checkoffset, checkoffset);
- ref2d += tc.xy; // use as offset from destination
- // 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.
- vec3 refcol = 0.5 * (texture2DRect(diffuseRect, ref2d + vec2(0.0, -checkoffset)).rgb +
- texture2DRect(diffuseRect, ref2d + vec2(-checkoffset, 0.0)).rgb);
- float refdepth = texture2DRect(depthMap, ref2d).a;
- vec3 refpos = getPosition_d(ref2d, refdepth).xyz;
- float refshad = texture2DRect(lightMap, ref2d).r;
- vec3 refn = texture2DRect(normalMap, ref2d).rgb;
- refn = vec3((refn.xy-0.5)*2.0,refn.z); // unpack norm
- refn = normalize(refn);
- // 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.
- // 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
- float refmod = min(refapprop, reflit);
- vec3 refprod = vary_SunlitColor * refcol.rgb * refmod;
- vec3 ssshiny = (refprod * spec.a);
- ssshiny *= 0.3; // dampen it even more
- */
- vec3 ssshiny = vec3(0,0,0);
-
- // add the two types of shiny together
- col += (ssshiny + dumbshiny) * spec.rgb;
+ vec3 ref = normalize(reflect(pos.xyz, norm.xyz));
+ float sa = dot(ref, vary_light.xyz);
+ col.rgb += vary_SunlitColor*scol*spec.rgb*texture2D(lightFunc, vec2(sa, spec.a)).a;
}
col = atmosLighting(col);
diff --git a/indra/newview/app_settings/shaders/class3/deferred/treeF.glsl b/indra/newview/app_settings/shaders/class3/deferred/treeF.glsl
index 5b33ea5bfe..258acee08c 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/treeF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/treeF.glsl
@@ -14,6 +14,5 @@ void main()
vec4 col = texture2D(diffuseMap, gl_TexCoord[0].xy);
gl_FragData[0] = vec4(gl_Color.rgb*col.rgb, col.a <= 0.5 ? 0.0 : 0.005);
gl_FragData[1] = vec4(0,0,0,0);
- vec3 nvn = normalize(vary_normal);
- gl_FragData[2] = vec4(nvn.xy * 0.5 + 0.5, nvn.z, 0.0);
+ gl_FragData[2] = vec4(normalize(vary_normal)*0.5+0.5, 0.0);
}
diff --git a/indra/newview/app_settings/shaders/class3/lighting/sumLightsV.glsl b/indra/newview/app_settings/shaders/class3/lighting/sumLightsV.glsl
index f129a1517b..1c5234c450 100644
--- a/indra/newview/app_settings/shaders/class3/lighting/sumLightsV.glsl
+++ b/indra/newview/app_settings/shaders/class3/lighting/sumLightsV.glsl
@@ -6,7 +6,7 @@
*/
float calcDirectionalLight(vec3 n, vec3 l);
-float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float is_pointlight);
+float calcPointLight(vec3 v, vec3 n, vec4 lp, float la);
vec3 atmosAmbient(vec3 light);
vec3 atmosAffectDirectionalLight(float lightIntensity);
@@ -15,21 +15,24 @@ vec3 scaleUpLight(vec3 light);
vec4 sumLights(vec3 pos, vec3 norm, vec4 color, vec4 baseLight)
{
- vec4 col = vec4(0.0, 0.0, 0.0, color.a);
+ vec4 col;
+ col.a = color.a;
+ // Add windlight lights
+ col.rgb = atmosAffectDirectionalLight(calcDirectionalLight(norm, gl_LightSource[0].position.xyz));
+ col.rgb += atmosAmbient(baseLight.rgb);
+ col.rgb = scaleUpLight(col.rgb);
+
// Collect normal lights (need to be divided by two, as we later multiply by 2)
- col.rgb += gl_LightSource[2].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[2].position, gl_LightSource[2].spotDirection.xyz, gl_LightSource[2].linearAttenuation, gl_LightSource[2].specular.a);
- col.rgb += gl_LightSource[3].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[3].position, gl_LightSource[3].spotDirection.xyz, gl_LightSource[3].linearAttenuation, gl_LightSource[3].specular.a);
- col.rgb += gl_LightSource[4].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[4].position, gl_LightSource[4].spotDirection.xyz, gl_LightSource[4].linearAttenuation, gl_LightSource[4].specular.a);
- col.rgb += gl_LightSource[5].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[5].position, gl_LightSource[5].spotDirection.xyz, gl_LightSource[5].linearAttenuation, gl_LightSource[5].specular.a);
- col.rgb += gl_LightSource[6].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[6].position, gl_LightSource[6].spotDirection.xyz, gl_LightSource[6].linearAttenuation, gl_LightSource[6].specular.a);
- col.rgb += gl_LightSource[7].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[7].position, gl_LightSource[7].spotDirection.xyz, gl_LightSource[7].linearAttenuation, gl_LightSource[7].specular.a);
+ col.rgb += gl_LightSource[2].diffuse.rgb*calcPointLight(pos, norm, gl_LightSource[2].position, gl_LightSource[2].linearAttenuation);
+ col.rgb += gl_LightSource[3].diffuse.rgb*calcPointLight(pos, norm, gl_LightSource[3].position, gl_LightSource[3].linearAttenuation);
+ col.rgb += gl_LightSource[4].diffuse.rgb*calcPointLight(pos, norm, gl_LightSource[4].position, gl_LightSource[4].linearAttenuation);
+ col.rgb += gl_LightSource[5].diffuse.rgb*calcPointLight(pos, norm, gl_LightSource[5].position, gl_LightSource[5].linearAttenuation);
+ col.rgb += gl_LightSource[6].diffuse.rgb*calcPointLight(pos, norm, gl_LightSource[6].position, gl_LightSource[6].linearAttenuation);
+ col.rgb += gl_LightSource[7].diffuse.rgb*calcPointLight(pos, norm, gl_LightSource[7].position, gl_LightSource[7].linearAttenuation);
col.rgb += gl_LightSource[1].diffuse.rgb*calcDirectionalLight(norm, gl_LightSource[1].position.xyz);
col.rgb = scaleDownLight(col.rgb);
-
- // Add windlight lights
- col.rgb += atmosAffectDirectionalLight(calcDirectionalLight(norm, gl_LightSource[0].position.xyz));
- col.rgb += atmosAmbient(baseLight.rgb);
+
col.rgb = min(col.rgb*color.rgb, 1.0);
diff --git a/indra/newview/app_settings/ultra_graphics.xml b/indra/newview/app_settings/ultra_graphics.xml
index f741089ca2..f16ec6c30f 100644
--- a/indra/newview/app_settings/ultra_graphics.xml
+++ b/indra/newview/app_settings/ultra_graphics.xml
@@ -12,12 +12,14 @@
<RenderFlexTimeFactor value="1"/>
<!--256... but they don't use this-->
<RenderGlowResolutionPow value="9"/>
+ <!--Sun/Moon only-->
+ <RenderLightingDetail value="1"/>
<!--Low number-->
<RenderMaxPartCount value="4096"/>
<!--bump okay-->
<RenderObjectBump value="TRUE"/>
<!--NO SHADERS-->
- <RenderReflectionDetail value="4"/>
+ <RenderReflectionDetail value="3"/>
<!--Simple-->
<RenderTerrainDetail value="1"/>
<!--Default for now-->
@@ -29,14 +31,9 @@
<!--Default for now-->
<RenderVolumeLODFactor value="2.0"/>
<!--NO SHADERS-->
+ <RenderWaterReflections value="TRUE"/>
+ <!--NO SHADERS-->
<VertexShaderEnable value="TRUE"/>
<!--NO SHADERS-->
<WindLightUseAtmosShaders value="TRUE"/>
- <!--Deferred Shading-->
- <RenderDeferred value="TRUE"/>
- <!--SSAO Enabled-->
- <RenderDeferredSSAO value="TRUE"/>
- <!--Full Shadows-->
- <RenderShadowDetail value="2"/>
-
</settings>
diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt
index 9440e877df..ccdb109d95 100644
--- a/indra/newview/featuretable.txt
+++ b/indra/newview/featuretable.txt
@@ -23,7 +23,7 @@ version 22
// NOTE: All settings are set to the MIN of applied values, including 'all'!
//
list all
-RenderAnisotropic 1 1
+RenderAnisotropic 1 0
RenderAvatarCloth 1 1
RenderAvatarLODFactor 1 1.0
RenderAvatarMaxVisible 1 12
@@ -36,16 +36,18 @@ RenderFogRatio 1 4.0
RenderGamma 1 0
RenderGlowResolutionPow 1 9
RenderGround 1 1
+RenderLightingDetail 1 1
RenderMaxPartCount 1 8192
RenderNightBrightness 1 1.0
RenderObjectBump 1 1
-RenderReflectionDetail 1 4
+RenderReflectionDetail 1 3
RenderTerrainDetail 1 1
RenderTerrainLODFactor 1 2.0
RenderTreeLODFactor 1 1.0
RenderUseImpostors 1 1
RenderVBOEnable 1 1
RenderVolumeLODFactor 1 2.0
+RenderWaterReflections 1 1
UseStartScreen 1 1
UseOcclusion 1 1
VertexShaderEnable 1 1
@@ -56,12 +58,10 @@ Disregard96DefaultDrawDistance 1 1
RenderTextureMemoryMultiple 1 1.0
RenderShaderLightingMaxLevel 1 3
SkyUseClassicClouds 1 1
-RenderDeferred 1 0
-RenderDeferredSSAO 1 0
-RenderShadowDetail 1 0
WatchdogDisabled 1 1
RenderUseStreamVBO 1 1
+
//
// Low Graphics Settings
//
@@ -74,6 +74,7 @@ RenderAvatarVP 1 0
RenderFarClip 1 64
RenderFlexTimeFactor 1 0
RenderGlowResolutionPow 1 8
+RenderLightingDetail 1 0
RenderMaxPartCount 1 0
RenderObjectBump 1 0
RenderReflectionDetail 1 0
@@ -82,14 +83,11 @@ RenderTerrainLODFactor 1 1
RenderTreeLODFactor 1 0
RenderUseImpostors 1 1
RenderVolumeLODFactor 1 0
+RenderWaterReflections 1 0
VertexShaderEnable 1 0
WindLightUseAtmosShaders 1 0
WLSkyDetail 1 48
SkyUseClassicClouds 1 0
-RenderDeferred 1 0
-RenderDeferredSSAO 1 0
-RenderShadowDetail 1 0
-
//
// Mid Graphics Settings
@@ -102,6 +100,7 @@ RenderAvatarVP 1 1
RenderFarClip 1 96
RenderFlexTimeFactor 1 1.0
RenderGlowResolutionPow 1 8
+RenderLightingDetail 1 1
RenderMaxPartCount 1 2048
RenderObjectBump 1 1
RenderReflectionDetail 1 0
@@ -110,13 +109,10 @@ RenderTerrainLODFactor 1 1.0
RenderTreeLODFactor 1 0.5
RenderUseImpostors 1 1
RenderVolumeLODFactor 1 1.125
+RenderWaterReflections 1 0
VertexShaderEnable 1 1
WindLightUseAtmosShaders 1 0
WLSkyDetail 1 48
-RenderDeferred 1 0
-RenderDeferredSSAO 1 0
-RenderShadowDetail 1 0
-
//
// High Graphics Settings (purty)
@@ -129,6 +125,7 @@ RenderAvatarVP 1 1
RenderFarClip 1 128
RenderFlexTimeFactor 1 1.0
RenderGlowResolutionPow 1 9
+RenderLightingDetail 1 1
RenderMaxPartCount 1 4096
RenderObjectBump 1 1
RenderReflectionDetail 1 2
@@ -137,13 +134,10 @@ RenderTerrainLODFactor 1 2.0
RenderTreeLODFactor 1 0.5
RenderUseImpostors 1 1
RenderVolumeLODFactor 1 1.125
+RenderWaterReflections 1 0
VertexShaderEnable 1 1
WindLightUseAtmosShaders 1 1
WLSkyDetail 1 48
-RenderDeferred 1 0
-RenderDeferredSSAO 1 0
-RenderShadowDetail 1 0
-
//
// Ultra graphics (REALLY PURTY!)
@@ -156,20 +150,19 @@ RenderAvatarVP 1 1
RenderFarClip 1 256
RenderFlexTimeFactor 1 1.0
RenderGlowResolutionPow 1 9
+RenderLightingDetail 1 1
RenderMaxPartCount 1 8192
RenderObjectBump 1 1
-RenderReflectionDetail 1 4
+RenderReflectionDetail 1 3
RenderTerrainDetail 1 1
RenderTerrainLODFactor 1 2.0
RenderTreeLODFactor 1 1.0
RenderUseImpostors 1 1
RenderVolumeLODFactor 1 2.0
+RenderWaterReflections 1 1
VertexShaderEnable 1 1
WindLightUseAtmosShaders 1 1
WLSkyDetail 1 128
-RenderDeferred 1 0
-RenderDeferredSSAO 1 0
-RenderShadowDetail 1 0
//
// Class Unknown Hardware (unknown)
@@ -207,12 +200,9 @@ RenderVBOEnable 1 1
list NoPixelShaders
RenderAvatarVP 0 0
RenderAvatarCloth 0 0
-RenderReflectionDetail 0 0
+RenderWaterReflections 0 0
VertexShaderEnable 0 0
WindLightUseAtmosShaders 0 0
-RenderDeferred 0 0
-RenderDeferredSSAO 0 0
-RenderShadowDetail 0 0
//
// No Vertex Shaders available
@@ -220,30 +210,24 @@ RenderShadowDetail 0 0
list NoVertexShaders
RenderAvatarVP 0 0
RenderAvatarCloth 0 0
-RenderReflectionDetail 0 0
+RenderWaterReflections 0 0
VertexShaderEnable 0 0
WindLightUseAtmosShaders 0 0
-RenderDeferred 0 0
-RenderDeferredSSAO 0 0
-RenderShadowDetail 0 0
-//
// "Default" setups for safe, low, medium, high
//
list safe
RenderAnisotropic 1 0
RenderAvatarCloth 0 0
RenderAvatarVP 0 0
+RenderLightingDetail 1 0
RenderObjectBump 0 0
RenderMaxPartCount 1 1024
RenderTerrainDetail 1 0
RenderUseImpostors 0 0
RenderVBOEnable 1 0
-RenderReflectionDetail 0 0
+RenderWaterReflections 0 0
WindLightUseAtmosShaders 0 0
-RenderDeferred 0 0
-RenderDeferredSSAO 0 0
-RenderShadowDetail 0 0
//
// CPU based feature masks
@@ -267,9 +251,11 @@ RenderVBOEnable 1 0
list Intel
RenderAnisotropic 1 0
+RenderLightingDetail 1 0
list GeForce2
RenderAnisotropic 1 0
+RenderLightingDetail 1 0
RenderMaxPartCount 1 2048
RenderTerrainDetail 1 0
RenderVBOEnable 1 1
diff --git a/indra/newview/featuretable_linux.txt b/indra/newview/featuretable_linux.txt
index 85b8564138..45de51f3cf 100644
--- a/indra/newview/featuretable_linux.txt
+++ b/indra/newview/featuretable_linux.txt
@@ -23,7 +23,7 @@ version 21
// NOTE: All settings are set to the MIN of applied values, including 'all'!
//
list all
-RenderAnisotropic 1 1
+RenderAnisotropic 1 0
RenderAvatarCloth 1 1
RenderAvatarLODFactor 1 1.0
RenderAvatarMaxVisible 1 12
@@ -36,16 +36,18 @@ RenderFogRatio 1 4.0
RenderGamma 1 0
RenderGlowResolutionPow 1 9
RenderGround 1 1
+RenderLightingDetail 1 1
RenderMaxPartCount 1 8192
RenderNightBrightness 1 1.0
RenderObjectBump 1 1
-RenderReflectionDetail 1 4
+RenderReflectionDetail 1 3
RenderTerrainDetail 1 1
RenderTerrainLODFactor 1 2.0
RenderTreeLODFactor 1 1.0
RenderUseImpostors 1 1
RenderVBOEnable 1 1
RenderVolumeLODFactor 1 2.0
+RenderWaterReflections 1 1
UseStartScreen 1 1
UseOcclusion 1 1
VertexShaderEnable 1 1
@@ -55,10 +57,6 @@ Disregard128DefaultDrawDistance 1 1
Disregard96DefaultDrawDistance 1 1
RenderTextureMemoryMultiple 1 1.0
SkyUseClassicClouds 1 1
-RenderShaderLightingMaxLevel 1 3
-RenderDeferred 1 0
-RenderDeferredSSAO 1 0
-RenderShadowDetail 1 0
WatchdogDisabled 1 1
//
@@ -73,6 +71,7 @@ RenderAvatarVP 1 0
RenderFarClip 1 64
RenderFlexTimeFactor 1 0
RenderGlowResolutionPow 1 8
+RenderLightingDetail 1 0
RenderMaxPartCount 1 0
RenderObjectBump 1 0
RenderReflectionDetail 1 0
@@ -81,14 +80,11 @@ RenderTerrainLODFactor 1 1
RenderTreeLODFactor 1 0
RenderUseImpostors 1 1
RenderVolumeLODFactor 1 0
+RenderWaterReflections 1 0
VertexShaderEnable 1 0
WindLightUseAtmosShaders 1 0
WLSkyDetail 1 48
SkyUseClassicClouds 1 0
-RenderDeferred 1 0
-RenderDeferredSSAO 1 0
-RenderShadowDetail 1 0
-
//
// Mid Graphics Settings
@@ -101,6 +97,7 @@ RenderAvatarVP 1 1
RenderFarClip 1 96
RenderFlexTimeFactor 1 1.0
RenderGlowResolutionPow 1 8
+RenderLightingDetail 1 1
RenderMaxPartCount 1 2048
RenderObjectBump 1 1
RenderReflectionDetail 1 0
@@ -109,13 +106,10 @@ RenderTerrainLODFactor 1 1.0
RenderTreeLODFactor 1 0.5
RenderUseImpostors 1 1
RenderVolumeLODFactor 1 1.125
+RenderWaterReflections 1 0
VertexShaderEnable 1 1
WindLightUseAtmosShaders 1 0
WLSkyDetail 1 48
-RenderDeferred 1 0
-RenderDeferredSSAO 1 0
-RenderShadowDetail 1 0
-
//
// High Graphics Settings (purty)
@@ -128,6 +122,7 @@ RenderAvatarVP 1 1
RenderFarClip 1 128
RenderFlexTimeFactor 1 1.0
RenderGlowResolutionPow 1 9
+RenderLightingDetail 1 1
RenderMaxPartCount 1 4096
RenderObjectBump 1 1
RenderReflectionDetail 1 2
@@ -136,13 +131,10 @@ RenderTerrainLODFactor 1 2.0
RenderTreeLODFactor 1 0.5
RenderUseImpostors 1 1
RenderVolumeLODFactor 1 1.125
+RenderWaterReflections 1 0
VertexShaderEnable 1 1
WindLightUseAtmosShaders 1 1
WLSkyDetail 1 48
-RenderDeferred 1 0
-RenderDeferredSSAO 1 0
-RenderShadowDetail 1 0
-
//
// Ultra graphics (REALLY PURTY!)
@@ -155,21 +147,19 @@ RenderAvatarVP 1 1
RenderFarClip 1 256
RenderFlexTimeFactor 1 1.0
RenderGlowResolutionPow 1 9
+RenderLightingDetail 1 1
RenderMaxPartCount 1 8192
RenderObjectBump 1 1
-RenderReflectionDetail 1 4
+RenderReflectionDetail 1 3
RenderTerrainDetail 1 1
RenderTerrainLODFactor 1 2.0
RenderTreeLODFactor 1 1.0
RenderUseImpostors 1 1
RenderVolumeLODFactor 1 2.0
+RenderWaterReflections 1 1
VertexShaderEnable 1 1
WindLightUseAtmosShaders 1 1
WLSkyDetail 1 128
-RenderDeferred 1 0
-RenderDeferredSSAO 1 0
-RenderShadowDetail 1 0
-
//
// Class Unknown Hardware (unknown)
@@ -207,12 +197,9 @@ RenderVBOEnable 1 1
list NoPixelShaders
RenderAvatarVP 0 0
RenderAvatarCloth 0 0
-RenderReflectionDetail 0 0
+RenderWaterReflections 0 0
VertexShaderEnable 0 0
WindLightUseAtmosShaders 0 0
-RenderDeferred 0 0
-RenderDeferredSSAO 0 0
-RenderShadowDetail 0 0
//
// No Vertex Shaders available
@@ -220,13 +207,9 @@ RenderShadowDetail 0 0
list NoVertexShaders
RenderAvatarVP 0 0
RenderAvatarCloth 0 0
-RenderReflectionDetail 0 0
+RenderWaterReflections 0 0
VertexShaderEnable 0 0
WindLightUseAtmosShaders 0 0
-RenderDeferred 0 0
-RenderDeferredSSAO 0 0
-RenderShadowDetail 0 0
-
// "Default" setups for safe, low, medium, high
//
@@ -234,17 +217,14 @@ list safe
RenderAnisotropic 1 0
RenderAvatarCloth 0 0
RenderAvatarVP 0 0
+RenderLightingDetail 1 0
RenderObjectBump 0 0
RenderMaxPartCount 1 1024
RenderTerrainDetail 1 0
RenderUseImpostors 0 0
RenderVBOEnable 1 0
-RenderReflectionDetail 0 0
+RenderWaterReflections 0 0
WindLightUseAtmosShaders 0 0
-RenderDeferred 0 0
-RenderDeferredSSAO 0 0
-RenderShadowDetail 0 0
-
//
// CPU based feature masks
@@ -268,11 +248,13 @@ RenderVBOEnable 1 0
list Intel
RenderAnisotropic 1 0
+RenderLightingDetail 1 0
// Avoid some Intel crashes on Linux
RenderCubeMap 0 0
list GeForce2
RenderAnisotropic 1 0
+RenderLightingDetail 1 0
RenderMaxPartCount 1 2048
RenderTerrainDetail 1 0
RenderVBOEnable 1 1
@@ -484,47 +466,17 @@ list NVIDIA_GeForce_Go_6
RenderVBOEnable 1 0
Disregard128DefaultDrawDistance 1 0
-list NVIDIA_GeForce_7000
-RenderShaderLightingMaxLevel 1 2
-list NVIDIA_GeForce_7100
-RenderShaderLightingMaxLevel 1 2
list NVIDIA_GeForce_7200
Disregard128DefaultDrawDistance 1 0
-RenderShaderLightingMaxLevel 1 2
list NVIDIA_GeForce_7300
Disregard128DefaultDrawDistance 1 0
-RenderShaderLightingMaxLevel 1 2
list NVIDIA_GeForce_7400
Disregard128DefaultDrawDistance 1 0
-RenderShaderLightingMaxLevel 1 2
-list NVIDIA_GeForce_7500
-RenderShaderLightingMaxLevel 1 2
-list NVIDIA_GeForce_7600
-RenderShaderLightingMaxLevel 1 2
-list NVIDIA_GeForce_7700
-RenderShaderLightingMaxLevel 1 2
-list NVIDIA_GeForce_7800
-RenderShaderLightingMaxLevel 1 2
-list NVIDIA_GeForce_7900
-RenderShaderLightingMaxLevel 1 2
list NVIDIA_GeForce_Go_7200
Disregard128DefaultDrawDistance 1 0
-RenderShaderLightingMaxLevel 1 2
list NVIDIA_GeForce_Go_7300
Disregard128DefaultDrawDistance 1 0
-RenderShaderLightingMaxLevel 1 2
-list NVIDIA_GeForce_Go_7300_LE
-RenderShaderLightingMaxLevel 1 2
list NVIDIA_GeForce_Go_7400
Disregard128DefaultDrawDistance 1 0
-RenderShaderLightingMaxLevel 1 2
-list NVIDIA_GeForce_Go_7600
-RenderShaderLightingMaxLevel 1 2
-list NVIDIA_GeForce_Go_7700
-RenderShaderLightingMaxLevel 1 2
-list NVIDIA_GeForce_Go_7800
-RenderShaderLightingMaxLevel 1 2
-list NVIDIA_GeForce_Go_7900
-RenderShaderLightingMaxLevel 1 2
diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt
index 2095f3a81d..e89b0cc49d 100644
--- a/indra/newview/featuretable_mac.txt
+++ b/indra/newview/featuretable_mac.txt
@@ -371,7 +371,6 @@ list ATI_Radeon_X1500
Disregard128DefaultDrawDistance 1 0
list ATI_Radeon_X1600
Disregard128DefaultDrawDistance 1 0
-RenderUseFBO 0 0
list ATI_Radeon_X1700
Disregard128DefaultDrawDistance 1 0
list ATI_Mobility_Radeon_X1xxx
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 37cd289b1b..42b78a84af 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -1779,8 +1779,6 @@ void LLAgent::endAnimationUpdateUI()
}
gAgentCamera.setLookAt(LOOKAT_TARGET_CLEAR);
-
- LLFloaterCamera::onAvatarEditingAppearance(false);
}
//---------------------------------------------------------------------
@@ -1887,8 +1885,6 @@ void LLAgent::endAnimationUpdateUI()
{
mPauseRequest = gAgentAvatarp->requestPause();
}
-
- LLFloaterCamera::onAvatarEditingAppearance(true);
}
if (isAgentAvatarValid())
diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp
index 68e408d3e4..6c050a1309 100644
--- a/indra/newview/llagentcamera.cpp
+++ b/indra/newview/llagentcamera.cpp
@@ -1143,9 +1143,10 @@ void LLAgentCamera::updateCamera()
static LLFastTimer::DeclareTimer ftm("Camera");
LLFastTimer t(ftm);
- // - changed camera_skyward to the new global "mCameraUpVector"
+ //Ventrella - changed camera_skyward to the new global "mCameraUpVector"
mCameraUpVector = LLVector3::z_axis;
//LLVector3 camera_skyward(0.f, 0.f, 1.f);
+ //end Ventrella
U32 camera_mode = mCameraAnimating ? mLastCameraMode : mCameraMode;
@@ -1155,8 +1156,10 @@ void LLAgentCamera::updateCamera()
gAgentAvatarp->isSitting() &&
camera_mode == CAMERA_MODE_MOUSELOOK)
{
+ //Ventrella
//changed camera_skyward to the new global "mCameraUpVector"
mCameraUpVector = mCameraUpVector * gAgentAvatarp->getRenderRotation();
+ //end Ventrella
}
if (cameraThirdPerson() && mFocusOnAvatar && LLFollowCamMgr::getActiveFollowCamParams())
@@ -1164,11 +1167,13 @@ void LLAgentCamera::updateCamera()
changeCameraToFollow();
}
+ //Ventrella
//NOTE - this needs to be integrated into a general upVector system here within llAgent.
if ( camera_mode == CAMERA_MODE_FOLLOW && mFocusOnAvatar )
{
mCameraUpVector = mFollowCam.getUpVector();
}
+ //end Ventrella
if (mSitCameraEnabled)
{
@@ -1245,6 +1250,7 @@ void LLAgentCamera::updateCamera()
// lerp camera focus offset
mCameraFocusOffset = lerp(mCameraFocusOffset, mCameraFocusOffsetTarget, LLCriticalDamp::getInterpolant(CAMERA_FOCUS_HALF_LIFE));
+ //Ventrella
if ( mCameraMode == CAMERA_MODE_FOLLOW )
{
if (isAgentAvatarValid())
@@ -1271,6 +1277,7 @@ void LLAgentCamera::updateCamera()
}
}
}
+ // end Ventrella
BOOL hit_limit;
LLVector3d camera_pos_global;
@@ -1401,8 +1408,10 @@ void LLAgentCamera::updateCamera()
// Move the camera
+ //Ventrella
LLViewerCamera::getInstance()->updateCameraLocation(mCameraPositionAgent, mCameraUpVector, focus_agent);
//LLViewerCamera::getInstance()->updateCameraLocation(mCameraPositionAgent, camera_skyward, focus_agent);
+ //end Ventrella
// Change FOV
LLViewerCamera::getInstance()->setView(LLViewerCamera::getInstance()->getDefaultFOV() / (1.f + mCameraCurrentFOVZoomFactor));
@@ -1517,11 +1526,12 @@ LLVector3d LLAgentCamera::calcFocusPositionTargetGlobal()
clearFocusObject();
}
+ // Ventrella
if (mCameraMode == CAMERA_MODE_FOLLOW && mFocusOnAvatar)
{
mFocusTargetGlobal = gAgent.getPosGlobalFromAgent(mFollowCam.getSimulatedFocus());
return mFocusTargetGlobal;
- }
+ }// End Ventrella
else if (mCameraMode == CAMERA_MODE_MOUSELOOK)
{
LLVector3d at_axis(1.0, 0.0, 0.0);
@@ -1690,10 +1700,11 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)
LLVector3d camera_position_global;
+ // Ventrella
if (mCameraMode == CAMERA_MODE_FOLLOW && mFocusOnAvatar)
{
camera_position_global = gAgent.getPosGlobalFromAgent(mFollowCam.getSimulatedPosition());
- }
+ }// End Ventrella
else if (mCameraMode == CAMERA_MODE_MOUSELOOK)
{
if (!isAgentAvatarValid() || gAgentAvatarp->mDrawable.isNull())
@@ -2113,6 +2124,7 @@ void LLAgentCamera::changeCameraToDefault()
}
+// Ventrella
//-----------------------------------------------------------------------------
// changeCameraToFollow()
//-----------------------------------------------------------------------------
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index 4c2caae2c6..a1ce556458 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -382,9 +382,7 @@ void LLAgentWearables::saveWearable(const LLWearableType::EType type, const U32
const std::string new_name)
{
LLWearable* old_wearable = getWearable(type, index);
- if(!old_wearable) return;
- bool name_changed = !new_name.empty() && (new_name != old_wearable->getName());
- if (name_changed || old_wearable->isDirty() || old_wearable->isOldVersion())
+ if (old_wearable && (old_wearable->isDirty() || old_wearable->isOldVersion()))
{
LLUUID old_item_id = old_wearable->getItemID();
LLWearable* new_wearable = LLWearableList::instance().createCopy(old_wearable);
@@ -400,10 +398,12 @@ void LLAgentWearables::saveWearable(const LLWearableType::EType type, const U32
if (item)
{
std::string item_name = item->getName();
- if (name_changed)
+ bool name_changed = false;
+ if (!new_name.empty() && (new_name != item->getName()))
{
llinfos << "saveWearable changing name from " << item->getName() << " to " << new_name << llendl;
item_name = new_name;
+ name_changed = true;
}
// Update existing inventory item
LLPointer<LLViewerInventoryItem> template_item =
@@ -1750,7 +1750,7 @@ void LLAgentWearables::userUpdateAttachments(LLInventoryModel::item_array_t& obj
LLViewerObject *objectp = (*attachment_iter);
if (objectp)
{
- LLUUID object_item_id = objectp->getAttachmentItemID();
+ LLUUID object_item_id = objectp->getItemID();
if (requested_item_ids.find(object_item_id) != requested_item_ids.end())
{
// Object currently worn, was requested.
@@ -1879,7 +1879,10 @@ void LLAgentWearables::userAttachMultipleAttachments(LLInventoryModel::item_arra
msg->nextBlockFast(_PREHASH_ObjectData );
msg->addUUIDFast(_PREHASH_ItemID, item->getLinkedUUID());
msg->addUUIDFast(_PREHASH_OwnerID, item->getPermissions().getOwner());
- msg->addU8Fast(_PREHASH_AttachmentPt, 0 ); // Wear at the previous or default attachment point
+ if (gSavedSettings.getBOOL("MultipleAttachments"))
+ msg->addU8Fast(_PREHASH_AttachmentPt, 0 | ATTACHMENT_ADD );
+ else
+ msg->addU8Fast(_PREHASH_AttachmentPt, 0 ); // Wear at the previous or default attachment point
pack_permissions_slam(msg, item->getFlags(), item->getPermissions());
msg->addStringFast(_PREHASH_Name, item->getName());
msg->addStringFast(_PREHASH_Description, item->getDescription());
diff --git a/indra/newview/llagentwearablesfetch.cpp b/indra/newview/llagentwearablesfetch.cpp
index f7ae320a6f..9e15f24bea 100644
--- a/indra/newview/llagentwearablesfetch.cpp
+++ b/indra/newview/llagentwearablesfetch.cpp
@@ -209,7 +209,7 @@ void LLInitialWearablesFetch::processWearablesMessage()
{
LLViewerObject* attached_object = (*attachment_iter);
if (!attached_object) continue;
- const LLUUID& item_id = attached_object->getAttachmentItemID();
+ const LLUUID& item_id = attached_object->getItemID();
if (item_id.isNull()) continue;
ids.push_back(item_id);
}
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 94286fd799..04a5bcc256 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -1006,7 +1006,7 @@ bool LLAppearanceMgr::wearItemOnAvatar(const LLUUID& item_id_to_wear, bool do_up
addCOFItemLink(item_to_wear, do_update, cb);
break;
case LLAssetType::AT_OBJECT:
- rez_attachment(item_to_wear, NULL, replace);
+ rez_attachment(item_to_wear, NULL);
break;
default: return false;;
}
@@ -1299,8 +1299,16 @@ bool LLAppearanceMgr::getCanReplaceCOF(const LLUUID& outfit_cat_id)
return false;
}
- // Check whether the outfit contains the full set of body parts (shape+skin+hair+eyes).
- return getCanMakeFolderIntoOutfit(outfit_cat_id);
+ // Check whether the outfit contains any non-worn wearables.
+ LLInventoryModel::cat_array_t cats;
+ LLInventoryModel::item_array_t items;
+ LLFindWearablesEx not_worn(/*is_worn=*/ false, /*include_body_parts=*/ true);
+ gInventory.collectDescendentsIf(outfit_cat_id,
+ cats,
+ items,
+ LLInventoryModel::EXCLUDE_TRASH,
+ not_worn);
+ return items.size() > 0;
}
void LLAppearanceMgr::purgeBaseOutfitLink(const LLUUID& category)
@@ -1594,56 +1602,46 @@ void item_array_diff(LLInventoryModel::item_array_t& full_list,
}
}
-S32 LLAppearanceMgr::findExcessOrDuplicateItems(const LLUUID& cat_id,
- LLAssetType::EType type,
- S32 max_items,
- LLInventoryModel::item_array_t& items_to_kill)
+void LLAppearanceMgr::enforceItemCountLimits()
{
- S32 to_kill_count = 0;
-
- LLInventoryModel::item_array_t items;
- getDescendentsOfAssetType(cat_id, items, type, false);
- LLInventoryModel::item_array_t curr_items = items;
- removeDuplicateItems(items);
- if (max_items > 0)
+ S32 purge_count = 0;
+
+ LLInventoryModel::item_array_t body_items;
+ getDescendentsOfAssetType(getCOF(), body_items, LLAssetType::AT_BODYPART, false);
+ LLInventoryModel::item_array_t curr_body_items = body_items;
+ removeDuplicateItems(body_items);
+ filterWearableItems(body_items, 1);
+ LLInventoryModel::item_array_t kill_body_items;
+ item_array_diff(curr_body_items,body_items,kill_body_items);
+ for (LLInventoryModel::item_array_t::iterator it = kill_body_items.begin();
+ it != kill_body_items.end();
+ ++it)
{
- filterWearableItems(items, max_items);
+ LLViewerInventoryItem *item = *it;
+ llinfos << "purging dup body part " << item->getName() << llendl;
+ gInventory.purgeObject(item->getUUID());
+ purge_count++;
}
- LLInventoryModel::item_array_t kill_items;
- item_array_diff(curr_items,items,kill_items);
- for (LLInventoryModel::item_array_t::iterator it = kill_items.begin();
- it != kill_items.end();
+
+ LLInventoryModel::item_array_t wear_items;
+ getDescendentsOfAssetType(getCOF(), wear_items, LLAssetType::AT_CLOTHING, false);
+ LLInventoryModel::item_array_t curr_wear_items = wear_items;
+ removeDuplicateItems(wear_items);
+ filterWearableItems(wear_items, LLAgentWearables::MAX_CLOTHING_PER_TYPE);
+ LLInventoryModel::item_array_t kill_wear_items;
+ item_array_diff(curr_wear_items,wear_items,kill_wear_items);
+ for (LLInventoryModel::item_array_t::iterator it = kill_wear_items.begin();
+ it != kill_wear_items.end();
++it)
{
- items_to_kill.push_back(*it);
- to_kill_count++;
+ LLViewerInventoryItem *item = *it;
+ llinfos << "purging excess clothing item " << item->getName() << llendl;
+ gInventory.purgeObject(item->getUUID());
+ purge_count++;
}
- return to_kill_count;
-}
-
-
-void LLAppearanceMgr::enforceItemRestrictions()
-{
- S32 purge_count = 0;
- LLInventoryModel::item_array_t items_to_kill;
- purge_count += findExcessOrDuplicateItems(getCOF(),LLAssetType::AT_BODYPART,
- 1, items_to_kill);
- purge_count += findExcessOrDuplicateItems(getCOF(),LLAssetType::AT_CLOTHING,
- LLAgentWearables::MAX_CLOTHING_PER_TYPE, items_to_kill);
- purge_count += findExcessOrDuplicateItems(getCOF(),LLAssetType::AT_OBJECT,
- -1, items_to_kill);
-
- if (items_to_kill.size()>0)
+ if (purge_count>0)
{
- for (LLInventoryModel::item_array_t::iterator it = items_to_kill.begin();
- it != items_to_kill.end();
- ++it)
- {
- LLViewerInventoryItem *item = *it;
- llinfos << "purging duplicate or excess item " << item->getName() << llendl;
- gInventory.purgeObject(item->getUUID());
- }
gInventory.notifyObservers();
}
}
@@ -1666,7 +1664,7 @@ void LLAppearanceMgr::updateAppearanceFromCOF(bool update_base_outfit_ordering)
// Remove duplicate or excess wearables. Should normally be enforced at the UI level, but
// this should catch anything that gets through.
- enforceItemRestrictions();
+ enforceItemCountLimits();
// update dirty flag to see if the state of the COF matches
// the saved outfit stored as a folder link
@@ -1832,9 +1830,9 @@ void LLAppearanceMgr::wearInventoryCategory(LLInventoryCategory* category, bool
llinfos << "wearInventoryCategory( " << category->getName()
<< " )" << llendl;
- callAfterCategoryFetch(category->getUUID(),boost::bind(&LLAppearanceMgr::wearCategoryFinal,
- &LLAppearanceMgr::instance(),
- category->getUUID(), copy, append));
+ callAfterCategoryFetch(category->getUUID(), boost::bind(&LLAppearanceMgr::wearCategoryFinal,
+ &LLAppearanceMgr::instance(),
+ category->getUUID(), copy, append));
}
void LLAppearanceMgr::wearCategoryFinal(LLUUID& cat_id, bool copy_items, bool append)
@@ -2500,17 +2498,29 @@ void LLAppearanceMgr::removeItemFromAvatar(const LLUUID& id_to_remove)
switch (item_to_remove->getType())
{
- case LLAssetType::AT_CLOTHING:
- if (get_is_item_worn(id_to_remove))
+ case LLAssetType::AT_CLOTHING:
+ if (get_is_item_worn(id_to_remove))
+ {
+ //*TODO move here the exact removing code from LLWearableBridge::removeItemFromAvatar in the future
+ LLWearableBridge::removeItemFromAvatar(item_to_remove);
+ }
+ break;
+ case LLAssetType::AT_OBJECT:
+ gMessageSystem->newMessageFast(_PREHASH_DetachAttachmentIntoInv);
+ gMessageSystem->nextBlockFast(_PREHASH_ObjectData);
+ gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
+ gMessageSystem->addUUIDFast(_PREHASH_ItemID, item_to_remove->getLinkedUUID());
+ gMessageSystem->sendReliable( gAgent.getRegion()->getHost());
+
+ {
+ // this object might have been selected, so let the selection manager know it's gone now
+ LLViewerObject *found_obj = gObjectList.findObject(item_to_remove->getLinkedUUID());
+ if (found_obj)
{
- //*TODO move here the exact removing code from LLWearableBridge::removeItemFromAvatar in the future
- LLWearableBridge::removeItemFromAvatar(item_to_remove);
- }
- break;
- case LLAssetType::AT_OBJECT:
- LLVOAvatarSelf::detachAttachmentIntoInventory(item_to_remove->getLinkedUUID());
- default:
- break;
+ LLSelectMgr::getInstance()->remove(found_obj);
+ };
+ }
+ default: break;
}
// *HACK: Force to remove garbage from COF.
@@ -2650,6 +2660,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;
@@ -2669,6 +2680,7 @@ void dumpAttachmentSet(const std::set<LLUUID>& atts, const std::string& msg)
void LLAppearanceMgr::registerAttachment(const LLUUID& item_id)
{
+ mRegisteredAttachments.insert(item_id);
gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id);
if (mAttachmentInvLinkEnabled)
@@ -2686,6 +2698,7 @@ void LLAppearanceMgr::registerAttachment(const LLUUID& item_id)
void LLAppearanceMgr::unregisterAttachment(const LLUUID& item_id)
{
+ mRegisteredAttachments.erase(item_id);
gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id);
if (mAttachmentInvLinkEnabled)
@@ -2698,6 +2711,18 @@ void LLAppearanceMgr::unregisterAttachment(const LLUUID& item_id)
}
}
+void LLAppearanceMgr::linkRegisteredAttachments()
+{
+ for (std::set<LLUUID>::iterator it = mRegisteredAttachments.begin();
+ it != mRegisteredAttachments.end();
+ ++it)
+ {
+ LLUUID item_id = *it;
+ addCOFItemLink(item_id, false);
+ }
+ mRegisteredAttachments.clear();
+}
+
BOOL LLAppearanceMgr::getIsInCOF(const LLUUID& obj_id) const
{
return gInventory.isObjectDescendentOf(obj_id, getCOF());
@@ -2710,8 +2735,8 @@ bool LLAppearanceMgr::isLinkInCOF(const LLUUID& obj_id)
LLInventoryModel::item_array_t items;
LLLinkedItemIDMatches find_links(gInventory.getLinkedItemID(obj_id));
gInventory.collectDescendentsIf(LLAppearanceMgr::instance().getCOF(),
- cats,
- items,
+ cats,
+ items,
LLInventoryModel::EXCLUDE_TRASH,
find_links);
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index 78c2142ea5..e7442537d2 100644
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -60,11 +60,7 @@ public:
void renameOutfit(const LLUUID& outfit_id);
void takeOffOutfit(const LLUUID& cat_id);
void addCategoryToCurrentOutfit(const LLUUID& cat_id);
- S32 findExcessOrDuplicateItems(const LLUUID& cat_id,
- LLAssetType::EType type,
- S32 max_items,
- LLInventoryModel::item_array_t& items_to_kill);
- void enforceItemRestrictions();
+ void enforceItemCountLimits();
// Copy all items and the src category itself.
void shallowCopyCategory(const LLUUID& src_id, const LLUUID& dst_id,
@@ -117,6 +113,7 @@ public:
void unregisterAttachment(const LLUUID& item_id);
void registerAttachment(const LLUUID& item_id);
void setAttachmentInvLinkEnable(bool val);
+ void linkRegisteredAttachments();
// utility function for bulk linking.
void linkAll(const LLUUID& category,
@@ -203,6 +200,7 @@ private:
void setOutfitLocked(bool locked);
+ std::set<LLUUID> mRegisteredAttachments;
bool mAttachmentInvLinkEnabled;
bool mOutfitIsDirty;
bool mIsInUpdateAppearanceFromCOF; // to detect recursive calls.
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index bfe3e52657..7f4ba2f2d2 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -955,11 +955,6 @@ static LLFastTimer::DeclareTimer FTM_LFS("LFS Thread");
static LLFastTimer::DeclareTimer FTM_PAUSE_THREADS("Pause Threads");
static LLFastTimer::DeclareTimer FTM_IDLE("Idle");
static LLFastTimer::DeclareTimer FTM_PUMP("Pump");
-static LLFastTimer::DeclareTimer FTM_PUMP_ARES("Ares");
-static LLFastTimer::DeclareTimer FTM_PUMP_SERVICE("Service");
-static LLFastTimer::DeclareTimer FTM_SERVICE_CALLBACK("Callback");
-static LLFastTimer::DeclareTimer FTM_AGENT_AUTOPILOT("Autopilot");
-static LLFastTimer::DeclareTimer FTM_AGENT_UPDATE("Update");
bool LLAppViewer::mainLoop()
{
@@ -1069,20 +1064,10 @@ bool LLAppViewer::mainLoop()
LLMemType mt_ip(LLMemType::MTYPE_IDLE_PUMP);
pingMainloopTimeout("Main:ServicePump");
LLFastTimer t4(FTM_PUMP);
- {
- LLFastTimer t(FTM_PUMP_ARES);
- gAres->process();
- }
- {
- LLFastTimer t(FTM_PUMP_SERVICE);
- // this pump is necessary to make the login screen show up
- gServicePump->pump();
-
- {
- LLFastTimer t(FTM_SERVICE_CALLBACK);
- gServicePump->callback();
- }
- }
+ gAres->process();
+ // this pump is necessary to make the login screen show up
+ gServicePump->pump();
+ gServicePump->callback();
}
resumeMainloopTimeout();
@@ -1117,7 +1102,8 @@ bool LLAppViewer::mainLoop()
{
LLMemType mt_sleep(LLMemType::MTYPE_SLEEP);
LLFastTimer t2(FTM_SLEEP);
-
+ bool run_multiple_threads = gSavedSettings.getBOOL("RunMultipleThreads");
+
// yield some time to the os based on command line option
if(mYieldTime >= 0)
{
@@ -1155,7 +1141,9 @@ bool LLAppViewer::mainLoop()
}
static const F64 FRAME_SLOW_THRESHOLD = 0.5; //2 frames per seconds
- const F64 max_idle_time = llmin(.005*10.0*gFrameTimeSeconds, 0.005); // 5 ms a second
+ const F64 min_frame_time = 0.0; //(.0333 - .0010); // max video frame rate = 30 fps
+ const F64 min_idle_time = 0.0; //(.0010); // min idle time = 1 ms
+ const F64 max_idle_time = run_multiple_threads ? min_idle_time : llmin(.005*10.0*gFrameTimeSeconds, 0.005); // 5 ms a second
idleTimer.reset();
bool is_slow = (frameTimer.getElapsedTimeF64() > FRAME_SLOW_THRESHOLD) ;
S32 total_work_pending = 0;
@@ -1193,24 +1181,34 @@ bool LLAppViewer::mainLoop()
total_work_pending += work_pending ;
total_io_pending += io_pending ;
-
- if (!work_pending || idleTimer.getElapsedTimeF64() >= max_idle_time)
+ F64 frame_time = frameTimer.getElapsedTimeF64();
+ F64 idle_time = idleTimer.getElapsedTimeF64();
+ if (frame_time >= min_frame_time &&
+ idle_time >= min_idle_time &&
+ (!work_pending || idle_time >= max_idle_time))
{
break;
}
}
- if(!total_work_pending) //pause texture fetching threads if nothing to process.
+ // Prevent the worker threads from running while rendering.
+ // if (LLThread::processorCount()==1) //pause() should only be required when on a single processor client...
+ if (run_multiple_threads == FALSE)
{
- LLAppViewer::getTextureCache()->pause();
- LLAppViewer::getImageDecodeThread()->pause();
- LLAppViewer::getTextureFetch()->pause();
- }
- if(!total_io_pending) //pause file threads if nothing to process.
- {
- LLVFSThread::sLocal->pause();
- LLLFSThread::sLocal->pause();
- }
+ //LLFastTimer ftm(FTM_PAUSE_THREADS); //not necessary.
+
+ if(!total_work_pending) //pause texture fetching threads if nothing to process.
+ {
+ LLAppViewer::getTextureCache()->pause();
+ LLAppViewer::getImageDecodeThread()->pause();
+ LLAppViewer::getTextureFetch()->pause();
+ }
+ if(!total_io_pending) //pause file threads if nothing to process.
+ {
+ LLVFSThread::sLocal->pause();
+ LLLFSThread::sLocal->pause();
+ }
+ }
if ((LLStartUp::getStartupState() >= STATE_CLEANUP) &&
(frameTimer.getElapsedTimeF64() > FRAME_STALL_THRESHOLD))
@@ -3562,12 +3560,9 @@ void LLAppViewer::idle()
gAgent.moveYaw(-1.f);
}
- {
- LLFastTimer t(FTM_AGENT_AUTOPILOT);
- // Handle automatic walking towards points
- gAgentPilot.updateTarget();
- gAgent.autoPilot(&yaw);
- }
+ // Handle automatic walking towards points
+ gAgentPilot.updateTarget();
+ gAgent.autoPilot(&yaw);
static LLFrameTimer agent_update_timer;
static U32 last_control_flags;
@@ -3578,7 +3573,6 @@ void LLAppViewer::idle()
if (flags_changed || (agent_update_time > (1.0f / (F32) AGENT_UPDATES_PER_SECOND)))
{
- LLFastTimer t(FTM_AGENT_UPDATE);
// Send avatar and camera info
last_control_flags = gAgent.getControlFlags();
send_agent_update(TRUE);
diff --git a/indra/newview/llavatarlist.cpp b/indra/newview/llavatarlist.cpp
index 1cd705c2f9..76ad9b4afb 100644
--- a/indra/newview/llavatarlist.cpp
+++ b/indra/newview/llavatarlist.cpp
@@ -378,7 +378,7 @@ void LLAvatarList::addNewItem(const LLUUID& id, const std::string& name, BOOL is
item->setShowProfileBtn(mShowProfileBtn);
item->showSpeakingIndicator(mShowSpeakingIndicator);
- item->setDoubleClickCallback(boost::bind(&LLAvatarList::onItemDoubleClicked, this, _1, _2, _3, _4));
+ item->setDoubleClickCallback(boost::bind(&LLAvatarList::onItemDoucleClicked, this, _1, _2, _3, _4));
addItem(item, id, pos);
}
@@ -441,7 +441,7 @@ void LLAvatarList::updateLastInteractionTimes()
}
}
-void LLAvatarList::onItemDoubleClicked(LLUICtrl* ctrl, S32 x, S32 y, MASK mask)
+void LLAvatarList::onItemDoucleClicked(LLUICtrl* ctrl, S32 x, S32 y, MASK mask)
{
mItemDoubleClickSignal(ctrl, x, y, mask);
}
diff --git a/indra/newview/llavatarlist.h b/indra/newview/llavatarlist.h
index 83faa53c28..84800842e9 100644
--- a/indra/newview/llavatarlist.h
+++ b/indra/newview/llavatarlist.h
@@ -104,7 +104,7 @@ protected:
uuid_vec_t& vadded,
uuid_vec_t& vremoved);
void updateLastInteractionTimes();
- void onItemDoubleClicked(LLUICtrl* ctrl, S32 x, S32 y, MASK mask);
+ void onItemDoucleClicked(LLUICtrl* ctrl, S32 x, S32 y, MASK mask);
private:
diff --git a/indra/newview/llavatarlistitem.cpp b/indra/newview/llavatarlistitem.cpp
index 341913edf7..706f20404d 100644
--- a/indra/newview/llavatarlistitem.cpp
+++ b/indra/newview/llavatarlistitem.cpp
@@ -121,7 +121,7 @@ S32 LLAvatarListItem::notifyParent(const LLSD& info)
void LLAvatarListItem::onMouseEnter(S32 x, S32 y, MASK mask)
{
- getChildView("hovered_icon")->setVisible( true);
+ childSetVisible("hovered_icon", true);
mInfoBtn->setVisible(mShowInfoBtn);
mProfileBtn->setVisible(mShowProfileBtn);
@@ -132,7 +132,7 @@ void LLAvatarListItem::onMouseEnter(S32 x, S32 y, MASK mask)
void LLAvatarListItem::onMouseLeave(S32 x, S32 y, MASK mask)
{
- getChildView("hovered_icon")->setVisible( false);
+ childSetVisible("hovered_icon", false);
mInfoBtn->setVisible(false);
mProfileBtn->setVisible(false);
@@ -309,7 +309,7 @@ void LLAvatarListItem::setValue( const LLSD& value )
{
if (!value.isMap()) return;;
if (!value.has("selected")) return;
- getChildView("selected_icon")->setVisible( value["selected"]);
+ childSetVisible("selected_icon", value["selected"]);
}
const LLUUID& LLAvatarListItem::getAvatarId() const
diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index 6ee4387236..c4177a420b 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -53,7 +53,7 @@ static void update_build_button_enable_state()
{
bool can_edit = LLToolMgr::getInstance()->canEdit();
- LLBottomTray::getInstance()->getChildView("build_btn")->setEnabled(can_edit);
+ LLBottomTray::getInstance()->childSetEnabled("build_btn", can_edit);
}
// Build time optimization, generate extern template once in .cpp file
diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp
index c78f73c3b8..f0e231e3d7 100644
--- a/indra/newview/llcallfloater.cpp
+++ b/indra/newview/llcallfloater.cpp
@@ -290,7 +290,7 @@ void LLCallFloater::updateSession()
// Hide "Leave Call" button for nearby chat
bool is_local_chat = mVoiceType == VC_LOCAL_CHAT;
- getChildView("leave_call_btn_panel")->setVisible( !is_local_chat);
+ childSetVisible("leave_call_btn_panel", !is_local_chat);
refreshParticipantList();
updateAgentModeratorState();
@@ -413,11 +413,11 @@ void LLCallFloater::initAgentData()
if ( mAgentPanel )
{
- mAgentPanel->getChild<LLUICtrl>("user_icon")->setValue(gAgentID);
+ mAgentPanel->childSetValue("user_icon", gAgentID);
std::string name;
gCacheName->getFullName(gAgentID, name);
- mAgentPanel->getChild<LLUICtrl>("user_text")->setValue(name);
+ mAgentPanel->childSetValue("user_text", name);
mSpeakingIndicator = mAgentPanel->getChild<LLOutputMonitorCtrl>("speaking_indicator");
mSpeakingIndicator->setSpeakerId(gAgentID);
@@ -455,7 +455,7 @@ void LLCallFloater::updateAgentModeratorState()
}
}
}
- mAgentPanel->getChild<LLUICtrl>("user_text")->setValue(name);
+ mAgentPanel->childSetValue("user_text", name);
}
static void get_voice_participants_uuids(uuid_vec_t& speakers_uuids)
@@ -760,7 +760,7 @@ void LLCallFloater::reset(const LLVoiceChannel::EState& new_state)
{
// hides "Leave Call" when call is ended in parcel with disabled voice- hiding usually happens in
// updateSession() which won't be called here because connect to nearby voice never happens
- getChildView("leave_call_btn_panel")->setVisible( false);
+ childSetVisible("leave_call_btn_panel", false);
// setting title to nearby chat an "no one near..." text- because in region with disabled
// voice we won't have chance to really connect to nearby, so VCP is changed here manually
setTitle(getString("title_nearby"));
diff --git a/indra/newview/llchatbar.cpp b/indra/newview/llchatbar.cpp
index 967db21244..577b26a211 100644
--- a/indra/newview/llchatbar.cpp
+++ b/indra/newview/llchatbar.cpp
@@ -185,7 +185,7 @@ void LLChatBar::refresh()
gAgent.stopTyping();
}
- getChildView("Say")->setEnabled(mInputEditor->getText().size() > 0);
+ childSetEnabled("Say", mInputEditor->getText().size() > 0);
}
@@ -387,7 +387,7 @@ void LLChatBar::sendChat( EChatType type )
}
}
- getChild<LLUICtrl>("Chat Editor")->setValue(LLStringUtil::null);
+ childSetValue("Chat Editor", LLStringUtil::null);
gAgent.stopTyping();
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index 1f67a659bd..0fdef20f4a 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -693,9 +693,8 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
{
LLStyle::Params link_params(style_params);
link_params.overwriteFrom(LLStyleMap::instance().lookupAgent(chat.mFromID));
- // Add link to avatar's inspector and delimiter to message.
- mEditor->appendText(link_params.link_href, false, style_params);
- mEditor->appendText(delimiter, false, style_params);
+ // Convert the name to a hotlink and add to message.
+ mEditor->appendText(chat.mFromName + delimiter, false, link_params);
}
else
{
diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp
index 194d461f94..04623c03be 100644
--- a/indra/newview/llcofwearables.cpp
+++ b/indra/newview/llcofwearables.cpp
@@ -514,10 +514,10 @@ LLPanelClothingListItem* LLCOFWearables::buildClothingListItem(LLViewerInventory
//setting callbacks
//*TODO move that item panel's inner structure disclosing stuff into the panels
- item_panel->childSetAction("btn_delete", boost::bind(mCOFCallbacks.mDeleteWearable));
- item_panel->childSetAction("btn_move_up", boost::bind(mCOFCallbacks.mMoveWearableFurther));
- item_panel->childSetAction("btn_move_down", boost::bind(mCOFCallbacks.mMoveWearableCloser));
- item_panel->childSetAction("btn_edit", boost::bind(mCOFCallbacks.mEditWearable));
+ item_panel->childSetAction("btn_delete", mCOFCallbacks.mDeleteWearable);
+ item_panel->childSetAction("btn_move_up", mCOFCallbacks.mMoveWearableFurther);
+ item_panel->childSetAction("btn_move_down", mCOFCallbacks.mMoveWearableCloser);
+ item_panel->childSetAction("btn_edit", mCOFCallbacks.mEditWearable);
//turning on gray separator line for the last item in the items group of the same wearable type
item_panel->setSeparatorVisible(last);
@@ -543,8 +543,8 @@ LLPanelBodyPartsListItem* LLCOFWearables::buildBodypartListItem(LLViewerInventor
//setting callbacks
//*TODO move that item panel's inner structure disclosing stuff into the panels
- item_panel->childSetAction("btn_delete", boost::bind(mCOFCallbacks.mDeleteWearable));
- item_panel->childSetAction("btn_edit", boost::bind(mCOFCallbacks.mEditWearable));
+ item_panel->childSetAction("btn_delete", mCOFCallbacks.mDeleteWearable);
+ item_panel->childSetAction("btn_edit", mCOFCallbacks.mEditWearable);
return item_panel;
}
@@ -559,7 +559,7 @@ LLPanelDeletableWearableListItem* LLCOFWearables::buildAttachemntListItem(LLView
//setting callbacks
//*TODO move that item panel's inner structure disclosing stuff into the panels
- item_panel->childSetAction("btn_delete", boost::bind(mCOFCallbacks.mDeleteWearable));
+ item_panel->childSetAction("btn_delete", mCOFCallbacks.mDeleteWearable);
return item_panel;
}
@@ -605,7 +605,7 @@ void LLCOFWearables::addClothingTypesDummies(const LLAppearanceMgr::wearables_by
LLWearableType::EType w_type = static_cast<LLWearableType::EType>(type);
LLPanelInventoryListItemBase* item_panel = LLPanelDummyClothingListItem::create(w_type);
if(!item_panel) continue;
- item_panel->childSetAction("btn_add", boost::bind(mCOFCallbacks.mAddWearable));
+ item_panel->childSetAction("btn_add", mCOFCallbacks.mAddWearable);
mClothing->addItem(item_panel, LLUUID::null, ADD_BOTTOM, false);
}
}
@@ -657,20 +657,20 @@ LLAssetType::EType LLCOFWearables::getExpandedAccordionAssetType()
{
const LLAccordionCtrlTab* expanded_tab = mAccordionCtrl->getExpandedTab();
- return get_if_there(mTab2AssetType, expanded_tab, LLAssetType::AT_NONE);
+ return get_if_there(mTab2AssetType, expanded_tab, LLAssetType::AT_NONE);
}
return LLAssetType::AT_NONE;
}
LLAssetType::EType LLCOFWearables::getSelectedAccordionAssetType()
- {
+{
if (mAccordionCtrl != NULL)
{
const LLAccordionCtrlTab* selected_tab = mAccordionCtrl->getSelectedTab();
- return get_if_there(mTab2AssetType, selected_tab, LLAssetType::AT_NONE);
-}
+ return get_if_there(mTab2AssetType, selected_tab, LLAssetType::AT_NONE);
+ }
return LLAssetType::AT_NONE;
}
diff --git a/indra/newview/llcofwearables.h b/indra/newview/llcofwearables.h
index d981fa4196..e426b10810 100644
--- a/indra/newview/llcofwearables.h
+++ b/indra/newview/llcofwearables.h
@@ -54,7 +54,7 @@ public:
LLCOFCallbacks() {};
virtual ~LLCOFCallbacks() {};
- typedef boost::function<void ()> cof_callback_t;
+ typedef boost::function<void (void*)> cof_callback_t;
cof_callback_t mAddWearable;
cof_callback_t mMoveWearableCloser;
diff --git a/indra/newview/llcompilequeue.cpp b/indra/newview/llcompilequeue.cpp
index 268d9958d1..117a0bb568 100644
--- a/indra/newview/llcompilequeue.cpp
+++ b/indra/newview/llcompilequeue.cpp
@@ -100,7 +100,7 @@ LLFloaterScriptQueue::~LLFloaterScriptQueue()
BOOL LLFloaterScriptQueue::postBuild()
{
childSetAction("close",onCloseBtn,this);
- getChildView("close")->setEnabled(FALSE);
+ childSetEnabled("close",FALSE);
return TRUE;
}
@@ -213,7 +213,7 @@ BOOL LLFloaterScriptQueue::nextObject()
{
mDone = true;
getChild<LLScrollListCtrl>("queue output")->setCommentText(getString("Done"));
- getChildView("close")->setEnabled(TRUE);
+ childSetEnabled("close",TRUE);
}
return successful_start;
}
diff --git a/indra/newview/llcurrencyuimanager.cpp b/indra/newview/llcurrencyuimanager.cpp
index 654daa770e..adb291ede8 100644
--- a/indra/newview/llcurrencyuimanager.cpp
+++ b/indra/newview/llcurrencyuimanager.cpp
@@ -406,8 +406,8 @@ void LLCurrencyUIManager::Impl::currencyKey(S32 value)
//cannot just simply refresh the whole UI, as the edit field will
// get reset and the cursor will change...
- mPanel.getChildView("currency_est")->setVisible(FALSE);
- mPanel.getChildView("getting_data")->setVisible(TRUE);
+ mPanel.childHide("currency_est");
+ mPanel.childSetVisible("getting_data",TRUE);
}
mCurrencyChanged = true;
@@ -436,13 +436,13 @@ void LLCurrencyUIManager::Impl::updateUI()
{
if (mHidden)
{
- mPanel.getChildView("currency_action")->setVisible(FALSE);
- mPanel.getChildView("currency_amt")->setVisible(FALSE);
- mPanel.getChildView("currency_est")->setVisible(FALSE);
+ mPanel.childHide("currency_action");
+ mPanel.childHide("currency_amt");
+ mPanel.childHide("currency_est");
return;
}
- mPanel.getChildView("currency_action")->setVisible(TRUE);
+ mPanel.childShow("currency_action");
LLLineEditor* lindenAmount = mPanel.getChild<LLLineEditor>("currency_amt");
if (lindenAmount)
@@ -465,17 +465,17 @@ void LLCurrencyUIManager::Impl::updateUI()
}
}
- mPanel.getChild<LLUICtrl>("currency_est")->setTextArg("[LOCALAMOUNT]", getLocalEstimate());
- mPanel.getChildView("currency_est")->setVisible( hasEstimate() && mUserCurrencyBuy > 0);
+ mPanel.childSetTextArg("currency_est", "[LOCALAMOUNT]", getLocalEstimate());
+ mPanel.childSetVisible("currency_est", hasEstimate() && mUserCurrencyBuy > 0);
- mPanel.getChildView("currency_links")->setVisible( mSupportsInternationalBilling);
- mPanel.getChildView("exchange_rate_note")->setVisible( mSupportsInternationalBilling);
+ mPanel.childSetVisible("currency_links", mSupportsInternationalBilling);
+ mPanel.childSetVisible("exchange_rate_note", mSupportsInternationalBilling);
- if (mPanel.getChildView("buy_btn")->getEnabled()
- ||mPanel.getChildView("currency_est")->getVisible()
- || mPanel.getChildView("error_web")->getVisible())
+ if (mPanel.childIsEnabled("buy_btn")
+ ||mPanel.childIsVisible("currency_est")
+ || mPanel.childIsVisible("error_web"))
{
- mPanel.getChildView("getting_data")->setVisible(FALSE);
+ mPanel.childSetVisible("getting_data",FALSE);
}
}
diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp
index 583bb54160..0447b06fcc 100644
--- a/indra/newview/lldrawable.cpp
+++ b/indra/newview/lldrawable.cpp
@@ -517,7 +517,7 @@ F32 LLDrawable::updateXform(BOOL undamped)
{
// snap to final position
dist_squared = 0.0f;
- if (getVOVolume() && !isRoot())
+ if (!isRoot())
{ //child prim snapping to some position, needs a rebuild
gPipeline.markRebuild(this, LLDrawable::REBUILD_POSITION, TRUE);
}
diff --git a/indra/newview/lldrawpool.cpp b/indra/newview/lldrawpool.cpp
index cb651f9d3a..6d8344f4e8 100644
--- a/indra/newview/lldrawpool.cpp
+++ b/indra/newview/lldrawpool.cpp
@@ -468,7 +468,6 @@ void LLRenderPass::pushBatch(LLDrawInfo& params, U32 mask, BOOL texture)
{
if (params.mTexture.notNull())
{
- params.mTexture->addTextureStats(params.mVSize);
gGL.getTexUnit(0)->bind(params.mTexture, TRUE) ;
if (params.mTextureMatrix)
{
diff --git a/indra/newview/lldrawpool.h b/indra/newview/lldrawpool.h
index 221f81ec25..4a728bc8a5 100644
--- a/indra/newview/lldrawpool.h
+++ b/indra/newview/lldrawpool.h
@@ -127,7 +127,6 @@ public:
PASS_FULLBRIGHT_SHINY,
PASS_SHINY,
PASS_BUMP,
- PASS_POST_BUMP,
PASS_GLOW,
PASS_ALPHA,
PASS_ALPHA_MASK,
diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp
index a2428d2de0..5d1a0ee9de 100644
--- a/indra/newview/lldrawpoolalpha.cpp
+++ b/indra/newview/lldrawpoolalpha.cpp
@@ -54,9 +54,7 @@ static BOOL deferred_render = FALSE;
LLDrawPoolAlpha::LLDrawPoolAlpha(U32 type) :
LLRenderPass(type), current_shader(NULL), target_shader(NULL),
- simple_shader(NULL), fullbright_shader(NULL),
- mColorSFactor(LLRender::BF_UNDEF), mColorDFactor(LLRender::BF_UNDEF),
- mAlphaSFactor(LLRender::BF_UNDEF), mAlphaDFactor(LLRender::BF_UNDEF)
+ simple_shader(NULL), fullbright_shader(NULL)
{
}
@@ -174,16 +172,9 @@ void LLDrawPoolAlpha::render(S32 pass)
LLGLSPipelineAlpha gls_pipeline_alpha;
- gGL.setColorMask(true, true);
-
- if (LLPipeline::sAutoMaskAlphaNonDeferred && !deferred_render)
+ if (LLPipeline::sFastAlpha && !deferred_render)
{
- mColorSFactor = LLRender::BF_ONE; // }
- mColorDFactor = LLRender::BF_ZERO; // } these are like disabling blend on the color channels, but we're still blending on the alpha channel so that we can suppress glow
- mAlphaSFactor = LLRender::BF_ZERO;
- mAlphaDFactor = LLRender::BF_ZERO; // block (zero-out) glow where the alpha test succeeds
- gGL.blendFunc(mColorSFactor, mColorDFactor, mAlphaSFactor, mAlphaDFactor);
-
+ LLGLDisable blend_disable(GL_BLEND);
gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.33f);
if (mVertexShaderLevel > 0)
{
@@ -207,17 +198,8 @@ void LLDrawPoolAlpha::render(S32 pass)
}
LLGLDepthTest depth(GL_TRUE, LLDrawPoolWater::sSkipScreenCopy ? GL_TRUE : GL_FALSE);
-
- mColorSFactor = LLRender::BF_SOURCE_ALPHA; // } regular alpha blend
- mColorDFactor = LLRender::BF_ONE_MINUS_SOURCE_ALPHA; // }
- mAlphaSFactor = LLRender::BF_ZERO; // } glow suppression
- mAlphaDFactor = LLRender::BF_ONE_MINUS_SOURCE_ALPHA; // }
- gGL.blendFunc(mColorSFactor, mColorDFactor, mAlphaSFactor, mAlphaDFactor);
-
renderAlpha(getVertexDataMask());
- gGL.setColorMask(true, false);
-
if (deferred_render && current_shader != NULL)
{
gPipeline.unbindDeferredShader(*current_shader);
@@ -295,18 +277,9 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask)
for (LLCullResult::sg_list_t::iterator i = gPipeline.beginAlphaGroups(); i != gPipeline.endAlphaGroups(); ++i)
{
LLSpatialGroup* group = *i;
- llassert(group);
- llassert(group->mSpatialPartition);
-
if (group->mSpatialPartition->mRenderByGroup &&
- !group->isDead())
+ !group->isDead())
{
- bool draw_glow_for_this_partition = mVertexShaderLevel > 0 && // no shaders = no glow.
- // All particle systems seem to come off the wire with texture entries which claim that they glow. This is probably a bug in the data. Suppress.
- group->mSpatialPartition->mPartitionType != LLViewerRegion::PARTITION_PARTICLE &&
- group->mSpatialPartition->mPartitionType != LLViewerRegion::PARTITION_CLOUD &&
- group->mSpatialPartition->mPartitionType != LLViewerRegion::PARTITION_HUD_PARTICLE;
-
LLSpatialGroup::drawmap_elem_t& draw_info = group->mDrawMap[LLRenderPass::PASS_ALPHA];
for (LLSpatialGroup::drawmap_elem_t::iterator k = draw_info.begin(); k != draw_info.end(); ++k)
@@ -315,118 +288,96 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask)
LLRenderPass::applyModelMatrix(params);
+ if (params.mFullbright)
{
- if (params.mFullbright)
- {
- // Turn off lighting if it hasn't already been so.
- if (light_enabled || !initialized_lighting)
- {
- initialized_lighting = TRUE;
- if (use_shaders)
- {
- target_shader = fullbright_shader;
- }
- else
- {
- gPipeline.enableLightsFullbright(LLColor4(1,1,1,1));
- }
- light_enabled = FALSE;
- }
- }
- // Turn on lighting if it isn't already.
- else if (!light_enabled || !initialized_lighting)
+ // Turn off lighting if it hasn't already been so.
+ if (light_enabled || !initialized_lighting)
{
initialized_lighting = TRUE;
if (use_shaders)
{
- target_shader = simple_shader;
+ target_shader = fullbright_shader;
}
else
{
- gPipeline.enableLightsDynamic();
+ gPipeline.enableLightsFullbright(LLColor4(1,1,1,1));
}
- light_enabled = TRUE;
+ light_enabled = FALSE;
}
-
- // If we need shaders, and we're not ALREADY using the proper shader, then bind it
- // (this way we won't rebind shaders unnecessarily).
- if(use_shaders && (current_shader != target_shader))
+ }
+ // Turn on lighting if it isn't already.
+ else if (!light_enabled || !initialized_lighting)
+ {
+ initialized_lighting = TRUE;
+ if (use_shaders)
{
- llassert(target_shader != NULL);
- if (deferred_render && current_shader != NULL)
- {
- gPipeline.unbindDeferredShader(*current_shader);
- diffuse_channel = 0;
- }
- current_shader = target_shader;
- if (deferred_render)
- {
- gPipeline.bindDeferredShader(*current_shader);
- diffuse_channel = current_shader->enableTexture(LLViewerShaderMgr::DIFFUSE_MAP);
- }
- else
- {
- current_shader->bind();
- }
+ target_shader = simple_shader;
}
- else if (!use_shaders && current_shader != NULL)
+ else
{
- if (deferred_render)
- {
- gPipeline.unbindDeferredShader(*current_shader);
- diffuse_channel = 0;
- }
- LLGLSLShader::bindNoShader();
- current_shader = NULL;
+ gPipeline.enableLightsDynamic();
}
+ light_enabled = TRUE;
+ }
- if (params.mGroup)
+ // If we need shaders, and we're not ALREADY using the proper shader, then bind it
+ // (this way we won't rebind shaders unnecessarily).
+ if(use_shaders && (current_shader != target_shader))
+ {
+ llassert(target_shader != NULL);
+ if (deferred_render && current_shader != NULL)
{
- params.mGroup->rebuildMesh();
+ gPipeline.unbindDeferredShader(*current_shader);
+ diffuse_channel = 0;
}
+ current_shader = target_shader;
+ if (deferred_render)
+ {
+ gPipeline.bindDeferredShader(*current_shader);
+ diffuse_channel = current_shader->enableTexture(LLViewerShaderMgr::DIFFUSE_MAP);
+ }
+ else
+ {
+ current_shader->bind();
+ }
+ }
+ else if (!use_shaders && current_shader != NULL)
+ {
+ if (deferred_render)
+ {
+ gPipeline.unbindDeferredShader(*current_shader);
+ diffuse_channel = 0;
+ }
+ LLGLSLShader::bindNoShader();
+ current_shader = NULL;
+ }
+
+ if (params.mGroup)
+ {
+ params.mGroup->rebuildMesh();
+ }
-
- if (params.mTexture.notNull())
+
+ if (params.mTexture.notNull())
+ {
+ gGL.getTexUnit(diffuse_channel)->bind(params.mTexture.get());
+ if(params.mTexture.notNull())
{
- gGL.getTexUnit(diffuse_channel)->bind(params.mTexture.get());
- if(params.mTexture.notNull())
- {
- params.mTexture->addTextureStats(params.mVSize);
- }
- if (params.mTextureMatrix)
- {
- gGL.getTexUnit(0)->activate();
- glMatrixMode(GL_TEXTURE);
- glLoadMatrixf((GLfloat*) params.mTextureMatrix->mMatrix);
- gPipeline.mTextureMatrixOps++;
- }
+ params.mTexture->addTextureStats(params.mVSize);
+ }
+ if (params.mTextureMatrix)
+ {
+ gGL.getTexUnit(0)->activate();
+ glMatrixMode(GL_TEXTURE);
+ glLoadMatrixf((GLfloat*) params.mTextureMatrix->mMatrix);
+ gPipeline.mTextureMatrixOps++;
}
}
params.mVertexBuffer->setBuffer(mask);
params.mVertexBuffer->drawRange(params.mDrawMode, params.mStart, params.mEnd, params.mCount, params.mOffset);
gPipeline.addTrianglesDrawn(params.mCount, params.mDrawMode);
-
- // If this alpha mesh has glow, then draw it a second time to add the destination-alpha (=glow). Interleaving these state-changing calls could be expensive, but glow must be drawn Z-sorted with alpha.
- if (draw_glow_for_this_partition &&
- params.mGlowColor.mV[3] > 0)
- {
- // install glow-accumulating blend mode
- gGL.blendFunc(LLRender::BF_ZERO, LLRender::BF_ONE, // don't touch color
- LLRender::BF_ONE, LLRender::BF_ONE); // add to alpha (glow)
- // glow doesn't use vertex colors from the mesh data
- params.mVertexBuffer->setBuffer(mask & ~LLVertexBuffer::MAP_COLOR);
- glColor4ubv(params.mGlowColor.mV);
-
- // do the actual drawing, again
- params.mVertexBuffer->drawRange(params.mDrawMode, params.mStart, params.mEnd, params.mCount, params.mOffset);
- gPipeline.addTrianglesDrawn(params.mCount, params.mDrawMode);
-
- // restore our alpha blend mode
- gGL.blendFunc(mColorSFactor, mColorDFactor, mAlphaSFactor, mAlphaDFactor);
- }
-
if (params.mTextureMatrix && params.mTexture.notNull())
{
gGL.getTexUnit(0)->activate();
diff --git a/indra/newview/lldrawpoolalpha.h b/indra/newview/lldrawpoolalpha.h
index 12a7ae92b1..0477093afa 100644
--- a/indra/newview/lldrawpoolalpha.h
+++ b/indra/newview/lldrawpoolalpha.h
@@ -28,7 +28,6 @@
#define LL_LLDRAWPOOLALPHA_H
#include "lldrawpool.h"
-#include "llrender.h"
#include "llframetimer.h"
class LLFace;
@@ -78,12 +77,6 @@ private:
LLGLSLShader* target_shader;
LLGLSLShader* simple_shader;
LLGLSLShader* fullbright_shader;
-
- // our 'normal' alpha blend function for this pass
- LLRender::eBlendFactor mColorSFactor;
- LLRender::eBlendFactor mColorDFactor;
- LLRender::eBlendFactor mAlphaSFactor;
- LLRender::eBlendFactor mAlphaDFactor;
};
class LLDrawPoolAlphaPostWater : public LLDrawPoolAlpha
diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp
index 8cf4dc1b95..600ffa492e 100644
--- a/indra/newview/lldrawpoolavatar.cpp
+++ b/indra/newview/lldrawpoolavatar.cpp
@@ -117,7 +117,7 @@ void LLDrawPoolAvatar::prerender()
if (sShaderLevel > 0)
{
- sBufferUsage = GL_DYNAMIC_DRAW_ARB;
+ sBufferUsage = GL_STATIC_DRAW_ARB;
}
else
{
@@ -151,8 +151,6 @@ void LLDrawPoolAvatar::beginDeferredPass(S32 pass)
{
LLFastTimer t(FTM_RENDER_CHARACTERS);
- sSkipTransparent = TRUE;
-
if (LLPipeline::sImpostorRender)
{
beginDeferredSkinned();
@@ -177,8 +175,6 @@ void LLDrawPoolAvatar::endDeferredPass(S32 pass)
{
LLFastTimer t(FTM_RENDER_CHARACTERS);
- sSkipTransparent = FALSE;
-
if (LLPipeline::sImpostorRender)
{
endDeferredSkinned();
@@ -248,6 +244,7 @@ S32 LLDrawPoolAvatar::getNumShadowPasses()
void LLDrawPoolAvatar::beginShadowPass(S32 pass)
{
LLFastTimer t(FTM_SHADOW_AVATAR);
+
sVertexProgram = &gDeferredAvatarShadowProgram;
if (sShaderLevel > 0)
{
@@ -269,6 +266,7 @@ void LLDrawPoolAvatar::beginShadowPass(S32 pass)
void LLDrawPoolAvatar::endShadowPass(S32 pass)
{
LLFastTimer t(FTM_SHADOW_AVATAR);
+
if (sShaderLevel > 0)
{
sRenderingSkinned = FALSE;
@@ -306,11 +304,6 @@ void LLDrawPoolAvatar::renderShadow(S32 pass)
return;
}
- if (sShaderLevel > 0)
- {
- gAvatarMatrixParam = sVertexProgram->mUniform[LLViewerShaderMgr::AVATAR_MATRIX];
- }
-
avatarp->renderSkinned(AVATAR_RENDER_PASS_SINGLE);
}
@@ -347,7 +340,7 @@ void LLDrawPoolAvatar::beginRenderPass(S32 pass)
switch (pass)
{
case 0:
- beginImpostor();
+ beginFootShadow();
break;
case 1:
beginRigid();
@@ -371,7 +364,7 @@ void LLDrawPoolAvatar::endRenderPass(S32 pass)
switch (pass)
{
case 0:
- endImpostor();
+ endFootShadow();
break;
case 1:
endRigid();
@@ -381,7 +374,7 @@ void LLDrawPoolAvatar::endRenderPass(S32 pass)
}
}
-void LLDrawPoolAvatar::beginImpostor()
+void LLDrawPoolAvatar::beginFootShadow()
{
if (!LLPipeline::sReflectionRender)
{
@@ -393,7 +386,7 @@ void LLDrawPoolAvatar::beginImpostor()
diffuse_channel = 0;
}
-void LLDrawPoolAvatar::endImpostor()
+void LLDrawPoolAvatar::endFootShadow()
{
gPipeline.enableLightsDynamic();
}
@@ -565,6 +558,7 @@ void LLDrawPoolAvatar::endSkinned()
void LLDrawPoolAvatar::beginDeferredSkinned()
{
+ sSkipTransparent = TRUE;
sShaderLevel = mVertexShaderLevel;
sVertexProgram = &gDeferredAvatarProgram;
@@ -579,6 +573,7 @@ void LLDrawPoolAvatar::beginDeferredSkinned()
void LLDrawPoolAvatar::endDeferredSkinned()
{
+ sSkipTransparent = FALSE;
// if we're in software-blending, remember to set the fence _after_ we draw so we wait till this rendering is done
sRenderingSkinned = FALSE;
disable_vertex_weighting(sVertexProgram->mAttribute[LLViewerShaderMgr::AVATAR_WEIGHT]);
@@ -692,6 +687,10 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass)
}
avatarp->renderImpostor(LLColor4U(255,255,255,255), diffuse_channel);
}
+ else if (gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_FOOT_SHADOWS) && !LLPipeline::sRenderDeferred)
+ {
+ avatarp->renderFootShadows();
+ }
return;
}
@@ -845,7 +844,9 @@ LLColor3 LLDrawPoolAvatar::getDebugColor() const
LLVertexBufferAvatar::LLVertexBufferAvatar()
: LLVertexBuffer(sDataMask,
- GL_STREAM_DRAW_ARB) //avatars are always stream draw due to morph targets
+ LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_AVATAR) > 0 ?
+ GL_DYNAMIC_DRAW_ARB :
+ GL_STREAM_DRAW_ARB)
{
}
diff --git a/indra/newview/lldrawpoolavatar.h b/indra/newview/lldrawpoolavatar.h
index c46fed824e..171152b72d 100644
--- a/indra/newview/lldrawpoolavatar.h
+++ b/indra/newview/lldrawpoolavatar.h
@@ -82,11 +82,11 @@ public:
/*virtual*/ void renderShadow(S32 pass);
void beginRigid();
- void beginImpostor();
+ void beginFootShadow();
void beginSkinned();
void endRigid();
- void endImpostor();
+ void endFootShadow();
void endSkinned();
void beginDeferredImpostor();
diff --git a/indra/newview/lldrawpoolbump.cpp b/indra/newview/lldrawpoolbump.cpp
index 223e4a438c..7c09826c9d 100644
--- a/indra/newview/lldrawpoolbump.cpp
+++ b/indra/newview/lldrawpoolbump.cpp
@@ -88,16 +88,7 @@ void LLStandardBumpmap::shutdown()
// static
void LLStandardBumpmap::restoreGL()
{
- addstandard();
-}
-
-// static
-void LLStandardBumpmap::addstandard()
-{
- // can't assert; we destroyGL and restoreGL a lot during *first* startup, which populates this list already, THEN we explicitly init the list as part of *normal* startup. Sigh. So clear the list every time before we (re-)add the standard bumpmaps.
- //llassert( LLStandardBumpmap::sStandardBumpmapCount == 0 );
- clear();
- llinfos << "Adding standard bumpmaps." << llendl;
+ llassert( LLStandardBumpmap::sStandardBumpmapCount == 0 );
gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount++] = LLStandardBumpmap("None"); // BE_NO_BUMP
gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount++] = LLStandardBumpmap("Brightness"); // BE_BRIGHTNESS
gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount++] = LLStandardBumpmap("Darkness"); // BE_DARKNESS
@@ -160,9 +151,8 @@ void LLStandardBumpmap::addstandard()
}
// static
-void LLStandardBumpmap::clear()
+void LLStandardBumpmap::destroyGL()
{
- llinfos << "Clearing standard bumpmaps." << llendl;
for( U32 i = 0; i < LLStandardBumpmap::sStandardBumpmapCount; i++ )
{
gStandardBumpmapList[i].mLabel.assign("");
@@ -171,12 +161,6 @@ void LLStandardBumpmap::clear()
sStandardBumpmapCount = 0;
}
-// static
-void LLStandardBumpmap::destroyGL()
-{
- clear();
-}
-
////////////////////////////////////////////////////////////////
@@ -629,9 +613,9 @@ BOOL LLDrawPoolBump::bindBumpMap(LLDrawInfo& params, S32 channel)
}
//static
-void LLDrawPoolBump::beginBump(U32 pass)
+void LLDrawPoolBump::beginBump()
{
- if (!gPipeline.hasRenderBatches(pass))
+ if (!gPipeline.hasRenderBatches(LLRenderPass::PASS_BUMP))
{
return;
}
@@ -674,9 +658,9 @@ void LLDrawPoolBump::beginBump(U32 pass)
}
//static
-void LLDrawPoolBump::renderBump(U32 pass)
+void LLDrawPoolBump::renderBump()
{
- if (!gPipeline.hasRenderBatches(pass))
+ if (!gPipeline.hasRenderBatches(LLRenderPass::PASS_BUMP))
{
return;
}
@@ -689,13 +673,13 @@ void LLDrawPoolBump::renderBump(U32 pass)
/// Get rid of z-fighting with non-bump pass.
LLGLEnable polyOffset(GL_POLYGON_OFFSET_FILL);
glPolygonOffset(-1.0f, -1.0f);
- renderBump(pass, sVertexMask);
+ renderBump(LLRenderPass::PASS_BUMP, sVertexMask);
}
//static
-void LLDrawPoolBump::endBump(U32 pass)
+void LLDrawPoolBump::endBump()
{
- if (!gPipeline.hasRenderBatches(pass))
+ if (!gPipeline.hasRenderBatches(LLRenderPass::PASS_BUMP))
{
return;
}
@@ -712,18 +696,6 @@ void LLDrawPoolBump::endBump(U32 pass)
gGL.setSceneBlendType(LLRender::BT_ALPHA);
}
-S32 LLDrawPoolBump::getNumDeferredPasses()
-{
- if (gSavedSettings.getBOOL("RenderObjectBump"))
- {
- return 1;
- }
- else
- {
- return 0;
- }
-}
-
void LLDrawPoolBump::beginDeferredPass(S32 pass)
{
if (!gPipeline.hasRenderBatches(LLRenderPass::PASS_BUMP))
@@ -778,45 +750,21 @@ void LLDrawPoolBump::renderDeferred(S32 pass)
void LLDrawPoolBump::beginPostDeferredPass(S32 pass)
{
- switch (pass)
- {
- case 0:
- beginFullbrightShiny();
- break;
- case 1:
- beginBump(LLRenderPass::PASS_POST_BUMP);
- break;
- }
+ beginFullbrightShiny();
}
void LLDrawPoolBump::endPostDeferredPass(S32 pass)
{
- switch (pass)
- {
- case 0:
- endFullbrightShiny();
- break;
- case 1:
- endBump(LLRenderPass::PASS_POST_BUMP);
- break;
- }
+ endFullbrightShiny();
}
void LLDrawPoolBump::renderPostDeferred(S32 pass)
{
- switch (pass)
- {
- case 0:
- renderFullbrightShiny();
- break;
- case 1:
- renderBump(LLRenderPass::PASS_POST_BUMP);
- break;
- }
+ renderFullbrightShiny();
}
////////////////////////////////////////////////////////////////
-// List of bump-maps created from other textures.
+// List of one-component bump-maps created from other texures.
//const LLUUID TEST_BUMP_ID("3d33eaf2-459c-6f97-fd76-5fce3fc29447");
@@ -829,32 +777,24 @@ void LLBumpImageList::init()
LLStandardBumpmap::init();
}
-void LLBumpImageList::clear()
+void LLBumpImageList::shutdown()
{
- llinfos << "Clearing dynamic bumpmaps." << llendl;
- // these will be re-populated on-demand
mBrightnessEntries.clear();
mDarknessEntries.clear();
-
- LLStandardBumpmap::clear();
-}
-
-void LLBumpImageList::shutdown()
-{
- clear();
LLStandardBumpmap::shutdown();
}
void LLBumpImageList::destroyGL()
{
- clear();
+ mBrightnessEntries.clear();
+ mDarknessEntries.clear();
LLStandardBumpmap::destroyGL();
}
void LLBumpImageList::restoreGL()
{
- LLStandardBumpmap::restoreGL();
// Images will be recreated as they are needed.
+ LLStandardBumpmap::restoreGL();
}
@@ -906,7 +846,6 @@ void LLBumpImageList::updateImages()
}
}
}
-
for (bump_image_map_t::iterator iter = mDarknessEntries.begin(); iter != mDarknessEntries.end(); )
{
bump_image_map_t::iterator curiter = iter++;
@@ -1059,8 +998,8 @@ void LLBumpImageList::generateNormalMapFromAlpha(LLImageRaw* src, LLImageRaw* nr
LLVector3 right = LLVector3(norm_scale, 0, (F32) src_data[(j*resX+rX)*src_cmp+src_cmp-1]-cH);
LLVector3 left = LLVector3(-norm_scale, 0, (F32) src_data[(j*resX+lX)*src_cmp+src_cmp-1]-cH);
- LLVector3 up = LLVector3(0, -norm_scale, (F32) src_data[(lY*resX+i)*src_cmp+src_cmp-1]-cH);
- LLVector3 down = LLVector3(0, norm_scale, (F32) src_data[(rY*resX+i)*src_cmp+src_cmp-1]-cH);
+ LLVector3 up = LLVector3(0, -norm_scale, (F32) src_data[(rY*resX+i)*src_cmp+src_cmp-1]-cH);
+ LLVector3 down = LLVector3(0, norm_scale, (F32) src_data[(lY*resX+i)*src_cmp+src_cmp-1]-cH);
LLVector3 norm = right%down + down%left + left%up + up%right;
@@ -1085,7 +1024,7 @@ void LLBumpImageList::onSourceLoaded( BOOL success, LLViewerTexture *src_vi, LLI
{
bump_image_map_t& entries_list(bump_code == BE_BRIGHTNESS ? gBumpImageList.mBrightnessEntries : gBumpImageList.mDarknessEntries );
bump_image_map_t::iterator iter = entries_list.find(source_asset_id);
- if (iter != entries_list.end()) // bump not cached yet
+ if (iter != entries_list.end())
{
LLPointer<LLImageRaw> dst_image = new LLImageRaw(src->getWidth(), src->getHeight(), 1);
U8* dst_data = dst_image->getData();
@@ -1170,8 +1109,8 @@ void LLBumpImageList::onSourceLoaded( BOOL success, LLViewerTexture *src_vi, LLI
F32 twice_one_over_range = 2.f / (maximum - minimum);
S32 i;
- const F32 ARTIFICIAL_SCALE = 2.f; // Advantage: exaggerates the effect in midrange. Disadvantage: clamps at the extremes.
- if (BE_DARKNESS == bump_code)
+ const F32 ARTIFICIAL_SCALE = 2.f; // Advantage: exagerates the effect in midrange. Disadvantage: clamps at the extremes.
+ if( BE_DARKNESS == bump_code )
{
for( i = minimum; i <= maximum; i++ )
{
@@ -1181,6 +1120,7 @@ void LLBumpImageList::onSourceLoaded( BOOL success, LLViewerTexture *src_vi, LLI
}
else
{
+ // BE_LIGHTNESS
for( i = minimum; i <= maximum; i++ )
{
F32 minus_one_to_one = F32(i - minimum) * twice_one_over_range - 1.f;
@@ -1195,9 +1135,9 @@ void LLBumpImageList::onSourceLoaded( BOOL success, LLViewerTexture *src_vi, LLI
}
//---------------------------------------------------
- // immediately assign bump to a global smart pointer in case some local smart pointer
- // accidentally releases it.
- LLPointer<LLViewerTexture> bump = LLViewerTextureManager::getLocalTexture( TRUE );
+ //immediately assign bump to a global smart pointer in case some local smart pointer
+ //accidently releases it.
+ LLPointer<LLViewerTexture> bump = LLViewerTextureManager::getLocalTexture( TRUE);
if (!LLPipeline::sRenderDeferred)
{
@@ -1206,8 +1146,8 @@ void LLBumpImageList::onSourceLoaded( BOOL success, LLViewerTexture *src_vi, LLI
}
else
{
- LLPointer<LLImageRaw> nrm_image = new LLImageRaw(dst_image->getWidth(), dst_image->getHeight(), 4);
- generateNormalMapFromAlpha(dst_image, nrm_image);
+ LLPointer<LLImageRaw> nrm_image = new LLImageRaw(src->getWidth(), src->getHeight(), 4);
+ generateNormalMapFromAlpha(src, nrm_image);
bump->setExplicitFormat(GL_RGBA, GL_RGBA);
bump->createGLTexture(0, nrm_image);
}
diff --git a/indra/newview/lldrawpoolbump.h b/indra/newview/lldrawpoolbump.h
index 65a813ab94..d9c5e6ce87 100644
--- a/indra/newview/lldrawpoolbump.h
+++ b/indra/newview/lldrawpoolbump.h
@@ -69,16 +69,16 @@ public:
void renderFullbrightShiny();
void endFullbrightShiny();
- void beginBump(U32 pass = LLRenderPass::PASS_BUMP);
- void renderBump(U32 pass = LLRenderPass::PASS_BUMP);
- void endBump(U32 pass = LLRenderPass::PASS_BUMP);
+ void beginBump();
+ void renderBump();
+ void endBump();
- virtual S32 getNumDeferredPasses();
+ virtual S32 getNumDeferredPasses() { return 1; }
/*virtual*/ void beginDeferredPass(S32 pass);
/*virtual*/ void endDeferredPass(S32 pass);
/*virtual*/ void renderDeferred(S32 pass);
- virtual S32 getNumPostDeferredPasses() { return 2; }
+ virtual S32 getNumPostDeferredPasses() { return 1; }
/*virtual*/ void beginPostDeferredPass(S32 pass);
/*virtual*/ void endPostDeferredPass(S32 pass);
/*virtual*/ void renderPostDeferred(S32 pass);
@@ -109,12 +109,9 @@ public:
static U32 sStandardBumpmapCount; // Number of valid values in gStandardBumpmapList[]
- static void clear();
- static void addstandard();
-
static void init();
static void shutdown();
- static void restoreGL();
+ static void restoreGL();
static void destroyGL();
};
@@ -133,7 +130,6 @@ public:
void init();
void shutdown();
- void clear();
void destroyGL();
void restoreGL();
void updateImages();
diff --git a/indra/newview/lldrawpoolsimple.cpp b/indra/newview/lldrawpoolsimple.cpp
index 2e83167851..2c1430b834 100644
--- a/indra/newview/lldrawpoolsimple.cpp
+++ b/indra/newview/lldrawpoolsimple.cpp
@@ -49,10 +49,6 @@ void LLDrawPoolGlow::render(S32 pass)
LLFastTimer t(FTM_RENDER_GLOW);
LLGLEnable blend(GL_BLEND);
LLGLDisable test(GL_ALPHA_TEST);
- gGL.flush();
- /// Get rid of z-fighting with non-glow pass.
- LLGLEnable polyOffset(GL_POLYGON_OFFSET_FILL);
- glPolygonOffset(-1.0f, -1.0f);
gGL.setSceneBlendType(LLRender::BT_ADD);
U32 shader_level = LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_OBJECT);
@@ -145,8 +141,7 @@ void LLDrawPoolSimple::render(S32 pass)
renderTexture(LLRenderPass::PASS_SIMPLE, getVertexDataMask());
if (LLPipeline::sRenderDeferred)
- { //if deferred rendering is enabled, bump faces aren't registered as simple
- //render bump faces here as simple so bump faces will appear under water
+ {
renderTexture(LLRenderPass::PASS_BUMP, getVertexDataMask());
}
}
diff --git a/indra/newview/lldynamictexture.cpp b/indra/newview/lldynamictexture.cpp
index ed35546ca3..466cb4709e 100644
--- a/indra/newview/lldynamictexture.cpp
+++ b/indra/newview/lldynamictexture.cpp
@@ -161,19 +161,12 @@ void LLViewerDynamicTexture::postRender(BOOL success)
{
generateGLTexture() ;
}
- else if(!mGLTexturep->getHasGLTexture())
- {
- generateGLTexture() ;
- }
- else if(mGLTexturep->getDiscardLevel() != 0)//do not know how it happens, but regenerate one if it does.
+ if(!mGLTexturep->getHasGLTexture())
{
generateGLTexture() ;
}
+ llcallstacks << "class type: " << (S32)getType() << llcallstacksendl ;
- if(gGLManager.mDebugGPU)
- {
- LLGLState::dumpStates() ;
- }
success = mGLTexturep->setSubImageFromFrameBuffer(0, 0, mOrigin.mX, mOrigin.mY, mFullWidth, mFullHeight);
}
}
@@ -212,16 +205,11 @@ BOOL LLViewerDynamicTexture::updateAllInstances()
{
LLViewerDynamicTexture *dynamicTexture = *iter;
if (dynamicTexture->needsRender())
- {
- if(gGLManager.mDebugGPU)
- {
- llinfos << "class type: " << (S32)dynamicTexture->getType() << llendl;
- LLGLState::dumpStates() ;
- }
-
+ {
glClear(GL_DEPTH_BUFFER_BIT);
gDepthDirty = TRUE;
-
+
+
gGL.color4f(1,1,1,1);
dynamicTexture->preRender(); // Must be called outside of startRender()
result = FALSE;
diff --git a/indra/newview/llexpandabletextbox.cpp b/indra/newview/llexpandabletextbox.cpp
index f0c2469977..80cf99fc43 100644
--- a/indra/newview/llexpandabletextbox.cpp
+++ b/indra/newview/llexpandabletextbox.cpp
@@ -28,7 +28,6 @@
#include "llexpandabletextbox.h"
#include "llscrollcontainer.h"
-#include "lltrans.h"
#include "llwindow.h"
#include "llviewerwindow.h"
@@ -112,7 +111,7 @@ LLExpandableTextBox::LLTextBoxEx::Params::Params()
LLExpandableTextBox::LLTextBoxEx::LLTextBoxEx(const Params& p)
: LLTextEditor(p),
- mExpanderLabel(p.label.isProvided() ? p.label : LLTrans::getString("More")),
+ mExpanderLabel(p.label),
mExpanderVisible(false)
{
setIsChrome(TRUE);
@@ -135,7 +134,13 @@ void LLExpandableTextBox::LLTextBoxEx::setText(const LLStringExplicit& text,cons
// LLTextBox::setText will obliterate the expander segment, so make sure
// we generate it again by clearing mExpanderVisible
mExpanderVisible = false;
- LLTextEditor::setText(text, input_params);
+
+ // Workaround for EXT-8259: trim text before rendering it.
+ {
+ std::string trimmed_text(text);
+ LLStringUtil::trim(trimmed_text);
+ LLTextEditor::setText(trimmed_text, input_params);
+ }
// text contents have changed, segments are cleared out
// so hide the expander and determine if we need it
diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp
index defd882fe4..e0e7fb4647 100644
--- a/indra/newview/llface.cpp
+++ b/indra/newview/llface.cpp
@@ -856,26 +856,6 @@ void LLFace::updateRebuildFlags()
}
}
-
-bool LLFace::canRenderAsMask()
-{
- const LLTextureEntry* te = getTextureEntry();
- return (
- (
- (LLPipeline::sRenderDeferred && LLPipeline::sAutoMaskAlphaDeferred) ||
-
- (!LLPipeline::sRenderDeferred && LLPipeline::sAutoMaskAlphaNonDeferred)
- ) // do we want masks at all?
- &&
- (te->getColor().mV[3] == 1.0f) && // can't treat as mask if we have face alpha
- !(LLPipeline::sRenderDeferred && te->getFullbright()) && // hack: alpha masking renders fullbright faces invisible in deferred rendering mode, need to figure out why - for now, avoid
- (te->getGlow() == 0.f) && // glowing masks are hard to implement - don't mask
-
- getTexture()->getIsAlphaMask() // texture actually qualifies for masking (lazily recalculated but expensive)
- );
-}
-
-
static LLFastTimer::DeclareTimer FTM_FACE_GET_GEOM("Face Geom");
BOOL LLFace::getGeometryVolume(const LLVolume& volume,
@@ -1406,13 +1386,24 @@ F32 LLFace::getTextureVirtualSize()
face_area = mPixelArea / llclamp(texel_area, 0.015625f, 128.f);
}
- face_area = LLFace::adjustPixelArea(mImportanceToCamera, face_area) ;
- if(face_area > LLViewerTexture::sMinLargeImageSize) //if is large image, shrink face_area by considering the partial overlapping.
+ if(face_area > LLViewerTexture::sMaxSmallImageSize)
{
- if(mImportanceToCamera > LEAST_IMPORTANCE_FOR_LARGE_IMAGE && mTexture.notNull() && mTexture->isLargeImage())
- {
- face_area *= adjustPartialOverlapPixelArea(cos_angle_to_view_dir, radius );
- }
+ if(mImportanceToCamera < LEAST_IMPORTANCE) //if the face is not important, do not load hi-res.
+ {
+ static const F32 MAX_LEAST_IMPORTANCE_IMAGE_SIZE = 128.0f * 128.0f ;
+ face_area = llmin(face_area * 0.5f, MAX_LEAST_IMPORTANCE_IMAGE_SIZE) ;
+ }
+ else if(face_area > LLViewerTexture::sMinLargeImageSize) //if is large image, shrink face_area by considering the partial overlapping.
+ {
+ if(mImportanceToCamera < LEAST_IMPORTANCE_FOR_LARGE_IMAGE)//if the face is not important, do not load hi-res.
+ {
+ face_area = LLViewerTexture::sMinLargeImageSize ;
+ }
+ else if(mTexture.notNull() && mTexture->isLargeImage())
+ {
+ face_area *= adjustPartialOverlapPixelArea(cos_angle_to_view_dir, radius );
+ }
+ }
}
setVirtualSize(face_area) ;
@@ -1539,28 +1530,6 @@ F32 LLFace::calcImportanceToCamera(F32 cos_angle_to_view_dir, F32 dist)
return importance ;
}
-//static
-F32 LLFace::adjustPixelArea(F32 importance, F32 pixel_area)
-{
- if(pixel_area > LLViewerTexture::sMaxSmallImageSize)
- {
- if(importance < LEAST_IMPORTANCE) //if the face is not important, do not load hi-res.
- {
- static const F32 MAX_LEAST_IMPORTANCE_IMAGE_SIZE = 128.0f * 128.0f ;
- pixel_area = llmin(pixel_area * 0.5f, MAX_LEAST_IMPORTANCE_IMAGE_SIZE) ;
- }
- else if(pixel_area > LLViewerTexture::sMinLargeImageSize) //if is large image, shrink face_area by considering the partial overlapping.
- {
- if(importance < LEAST_IMPORTANCE_FOR_LARGE_IMAGE)//if the face is not important, do not load hi-res.
- {
- pixel_area = LLViewerTexture::sMinLargeImageSize ;
- }
- }
- }
-
- return pixel_area ;
-}
-
BOOL LLFace::verify(const U32* indices_array) const
{
BOOL ok = TRUE;
diff --git a/indra/newview/llface.h b/indra/newview/llface.h
index d95057f3ef..351d48a671 100644
--- a/indra/newview/llface.h
+++ b/indra/newview/llface.h
@@ -132,10 +132,10 @@ public:
void unsetFaceColor(); // switch back to material color
const LLColor4& getFaceColor() const { return mFaceColor; }
const LLColor4& getRenderColor() const;
+
//for volumes
void updateRebuildFlags();
- bool canRenderAsMask(); // logic helper
BOOL getGeometryVolume(const LLVolume& volume,
const S32 &f,
const LLMatrix4& mat_vert, const LLMatrix3& mat_normal,
@@ -207,8 +207,7 @@ private:
F32 adjustPartialOverlapPixelArea(F32 cos_angle_to_view_dir, F32 radius );
BOOL calcPixelArea(F32& cos_angle_to_view_dir, F32& radius) ;
public:
- static F32 calcImportanceToCamera(F32 to_view_dir, F32 dist);
- static F32 adjustPixelArea(F32 importance, F32 pixel_area) ;
+ static F32 calcImportanceToCamera(F32 to_view_dir, F32 dist);
public:
diff --git a/indra/newview/llfloateranimpreview.cpp b/indra/newview/llfloateranimpreview.cpp
index deebd69ec1..8e0b348037 100644
--- a/indra/newview/llfloateranimpreview.cpp
+++ b/indra/newview/llfloateranimpreview.cpp
@@ -155,27 +155,27 @@ LLFloaterAnimPreview::LLFloaterAnimPreview(const std::string& filename) :
//-----------------------------------------------------------------------------
void LLFloaterAnimPreview::setAnimCallbacks()
{
- getChild<LLUICtrl>("playback_slider")->setCommitCallback(boost::bind(&LLFloaterAnimPreview::onSliderMove, this));
+ childSetCommitCallback("playback_slider", onSliderMove, this);
- getChild<LLUICtrl>("preview_base_anim")->setCommitCallback(boost::bind(&LLFloaterAnimPreview::onCommitBaseAnim, this));
- getChild<LLUICtrl>("preview_base_anim")->setValue("Standing");
+ childSetCommitCallback("preview_base_anim", onCommitBaseAnim, this);
+ childSetValue("preview_base_anim", "Standing");
- getChild<LLUICtrl>("priority")->setCommitCallback(boost::bind(&LLFloaterAnimPreview::onCommitPriority, this));
- getChild<LLUICtrl>("loop_check")->setCommitCallback(boost::bind(&LLFloaterAnimPreview::onCommitLoop, this));
- getChild<LLUICtrl>("loop_in_point")->setCommitCallback(boost::bind(&LLFloaterAnimPreview::onCommitLoopIn, this));
- getChild<LLUICtrl>("loop_in_point")->setValidateBeforeCommit( boost::bind(&LLFloaterAnimPreview::validateLoopIn, this, _1));
- getChild<LLUICtrl>("loop_out_point")->setCommitCallback(boost::bind(&LLFloaterAnimPreview::onCommitLoopOut, this));
- getChild<LLUICtrl>("loop_out_point")->setValidateBeforeCommit( boost::bind(&LLFloaterAnimPreview::validateLoopOut, this, _1));
+ childSetCommitCallback("priority", onCommitPriority, this);
+ childSetCommitCallback("loop_check", onCommitLoop, this);
+ childSetCommitCallback("loop_in_point", onCommitLoopIn, this);
+ childSetValidate("loop_in_point", boost::bind(&LLFloaterAnimPreview::validateLoopIn, this, _1));
+ childSetCommitCallback("loop_out_point", onCommitLoopOut, this);
+ childSetValidate("loop_out_point", boost::bind(&LLFloaterAnimPreview::validateLoopOut, this, _1));
- getChild<LLUICtrl>("hand_pose_combo")->setCommitCallback(boost::bind(&LLFloaterAnimPreview::onCommitHandPose, this));
+ childSetCommitCallback("hand_pose_combo", onCommitHandPose, this);
- getChild<LLUICtrl>("emote_combo")->setCommitCallback(boost::bind(&LLFloaterAnimPreview::onCommitEmote, this));
- getChild<LLUICtrl>("emote_combo")->setValue("[None]");
+ childSetCommitCallback("emote_combo", onCommitEmote, this);
+ childSetValue("emote_combo", "[None]");
- getChild<LLUICtrl>("ease_in_time")->setCommitCallback(boost::bind(&LLFloaterAnimPreview::onCommitEaseIn, this));
- getChild<LLUICtrl>("ease_in_time")->setValidateBeforeCommit( boost::bind(&LLFloaterAnimPreview::validateEaseIn, this, _1));
- getChild<LLUICtrl>("ease_out_time")->setCommitCallback(boost::bind(&LLFloaterAnimPreview::onCommitEaseOut, this));
- getChild<LLUICtrl>("ease_out_time")->setValidateBeforeCommit( boost::bind(&LLFloaterAnimPreview::validateEaseOut, this, _1));
+ childSetCommitCallback("ease_in_time", onCommitEaseIn, this);
+ childSetValidate("ease_in_time", boost::bind(&LLFloaterAnimPreview::validateEaseIn, this, _1));
+ childSetCommitCallback("ease_out_time", onCommitEaseOut, this);
+ childSetValidate("ease_out_time", boost::bind(&LLFloaterAnimPreview::validateEaseOut, this, _1));
}
//-----------------------------------------------------------------------------
@@ -191,7 +191,7 @@ BOOL LLFloaterAnimPreview::postBuild()
return FALSE;
}
- getChild<LLUICtrl>("name_form")->setCommitCallback(boost::bind(&LLFloaterAnimPreview::onCommitName, this));
+ childSetCommitCallback("name_form", onCommitName, this);
childSetAction("ok_btn", onBtnOK, this);
setDefaultBtn();
@@ -203,17 +203,17 @@ BOOL LLFloaterAnimPreview::postBuild()
mPreviewImageRect.set(0.f, 1.f, 1.f, 0.f);
mPlayButton = getChild<LLButton>( "play_btn");
- mPlayButton->setClickedCallback(boost::bind(&LLFloaterAnimPreview::onBtnPlay, this));
+ mPlayButton->setClickedCallback(onBtnPlay, this);
mPlayButton->setVisible(true);
mPauseButton = getChild<LLButton>( "pause_btn");
- mPauseButton->setClickedCallback(boost::bind(&LLFloaterAnimPreview::onBtnPause, this));
+ mPauseButton->setClickedCallback(onBtnPause, this);
mPauseButton->setVisible(false);
mStopButton = getChild<LLButton>( "stop_btn");
- mStopButton->setClickedCallback(boost::bind(&LLFloaterAnimPreview::onBtnStop, this));
+ mStopButton->setClickedCallback(onBtnStop, this);
- getChildView("bad_animation_text")->setVisible(FALSE);
+ childHide("bad_animation_text");
std::string exten = gDirUtilp->getExtension(mFilename);
if (exten == "bvh")
@@ -305,19 +305,19 @@ BOOL LLFloaterAnimPreview::postBuild()
mAnimPreview->setZoom(camera_zoom);
- motionp->setName(getChild<LLUICtrl>("name_form")->getValue().asString());
+ motionp->setName(childGetValue("name_form").asString());
mAnimPreview->getDummyAvatar()->startMotion(mMotionID);
getChild<LLSlider>("playback_slider")->setMinValue(0.0);
getChild<LLSlider>("playback_slider")->setMaxValue(1.0);
- getChild<LLUICtrl>("loop_check")->setValue(LLSD(motionp->getLoop()));
- getChild<LLUICtrl>("loop_in_point")->setValue(LLSD(motionp->getLoopIn() / motionp->getDuration() * 100.f));
- getChild<LLUICtrl>("loop_out_point")->setValue(LLSD(motionp->getLoopOut() / motionp->getDuration() * 100.f));
- getChild<LLUICtrl>("priority")->setValue(LLSD((F32)motionp->getPriority()));
- getChild<LLUICtrl>("hand_pose_combo")->setValue(LLHandMotion::getHandPoseName(motionp->getHandPose()));
- getChild<LLUICtrl>("ease_in_time")->setValue(LLSD(motionp->getEaseInDuration()));
- getChild<LLUICtrl>("ease_out_time")->setValue(LLSD(motionp->getEaseOutDuration()));
+ childSetValue("loop_check", LLSD(motionp->getLoop()));
+ childSetValue("loop_in_point", LLSD(motionp->getLoopIn() / motionp->getDuration() * 100.f));
+ childSetValue("loop_out_point", LLSD(motionp->getLoopOut() / motionp->getDuration() * 100.f));
+ childSetValue("priority", LLSD((F32)motionp->getPriority()));
+ childSetValue("hand_pose_combo", LLHandMotion::getHandPoseName(motionp->getHandPose()));
+ childSetValue("ease_in_time", LLSD(motionp->getEaseInDuration()));
+ childSetValue("ease_out_time", LLSD(motionp->getEaseOutDuration()));
setEnabled(TRUE);
std::string seconds_string;
seconds_string = llformat(" - %.2f seconds", motionp->getDuration());
@@ -328,7 +328,7 @@ BOOL LLFloaterAnimPreview::postBuild()
{
mAnimPreview = NULL;
mMotionID.setNull();
- getChild<LLUICtrl>("bad_animation_text")->setValue(getString("failed_to_initialize"));
+ childSetValue("bad_animation_text", getString("failed_to_initialize"));
}
}
else
@@ -340,13 +340,13 @@ BOOL LLFloaterAnimPreview::postBuild()
LLUIString out_str = getString("anim_too_long");
out_str.setArg("[LENGTH]", llformat("%.1f", loaderp->getDuration()));
out_str.setArg("[MAX_LENGTH]", llformat("%.1f", MAX_ANIM_DURATION));
- getChild<LLUICtrl>("bad_animation_text")->setValue(out_str.getString());
+ childSetValue("bad_animation_text", out_str.getString());
}
else
{
LLUIString out_str = getString("failed_file_read");
out_str.setArg("[STATUS]", getString(STATUS[loaderp->getStatus()]));
- getChild<LLUICtrl>("bad_animation_text")->setValue(out_str.getString());
+ childSetValue("bad_animation_text", out_str.getString());
}
}
@@ -423,17 +423,17 @@ void LLFloaterAnimPreview::resetMotion()
LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(mMotionID);
// Set emotion
- std::string emote = getChild<LLUICtrl>("emote_combo")->getValue().asString();
+ std::string emote = childGetValue("emote_combo").asString();
motionp->setEmote(mIDList[emote]);
- LLUUID base_id = mIDList[getChild<LLUICtrl>("preview_base_anim")->getValue().asString()];
+ LLUUID base_id = mIDList[childGetValue("preview_base_anim").asString()];
avatarp->deactivateAllMotions();
avatarp->startMotion(mMotionID, 0.0f);
avatarp->startMotion(base_id, BASE_ANIM_TIME_OFFSET);
- getChild<LLUICtrl>("playback_slider")->setValue(0.0f);
+ childSetValue("playback_slider", 0.0f);
// Set pose
- std::string handpose = getChild<LLUICtrl>("hand_pose_combo")->getValue().asString();
+ std::string handpose = childGetValue("hand_pose_combo").asString();
avatarp->startMotion( ANIM_AGENT_HAND_MOTION, 0.0f );
motionp->setHandPose(LLHandMotion::getHandPose(handpose));
@@ -552,23 +552,24 @@ void LLFloaterAnimPreview::onMouseCaptureLost()
//-----------------------------------------------------------------------------
// onBtnPlay()
//-----------------------------------------------------------------------------
-void LLFloaterAnimPreview::onBtnPlay()
+void LLFloaterAnimPreview::onBtnPlay(void* user_data)
{
- if (!getEnabled())
+ LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)user_data;
+ if (!previewp->getEnabled())
return;
- if (mMotionID.notNull() && mAnimPreview)
+ if (previewp->mMotionID.notNull() && previewp->mAnimPreview)
{
- LLVOAvatar* avatarp = mAnimPreview->getDummyAvatar();
+ LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar();
- if (!avatarp->isMotionActive(mMotionID))
+ if (!avatarp->isMotionActive(previewp->mMotionID))
{
- resetMotion();
- mPauseRequest = NULL;
+ previewp->resetMotion();
+ previewp->mPauseRequest = NULL;
}
else if (avatarp->areAnimationsPaused())
{
- mPauseRequest = NULL;
+ previewp->mPauseRequest = NULL;
}
}
}
@@ -576,20 +577,21 @@ void LLFloaterAnimPreview::onBtnPlay()
//-----------------------------------------------------------------------------
// onBtnPause()
//-----------------------------------------------------------------------------
-void LLFloaterAnimPreview::onBtnPause()
+void LLFloaterAnimPreview::onBtnPause(void* user_data)
{
- if (!getEnabled())
+ LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)user_data;
+ if (!previewp->getEnabled())
return;
- if (mMotionID.notNull() && mAnimPreview)
+ if (previewp->mMotionID.notNull() && previewp->mAnimPreview)
{
- LLVOAvatar* avatarp = mAnimPreview->getDummyAvatar();
+ LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar();
- if (avatarp->isMotionActive(mMotionID))
+ if (avatarp->isMotionActive(previewp->mMotionID))
{
if (!avatarp->areAnimationsPaused())
{
- mPauseRequest = avatarp->requestPause();
+ previewp->mPauseRequest = avatarp->requestPause();
}
}
}
@@ -598,40 +600,42 @@ void LLFloaterAnimPreview::onBtnPause()
//-----------------------------------------------------------------------------
// onBtnStop()
//-----------------------------------------------------------------------------
-void LLFloaterAnimPreview::onBtnStop()
+void LLFloaterAnimPreview::onBtnStop(void* user_data)
{
- if (!getEnabled())
+ LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)user_data;
+ if (!previewp->getEnabled())
return;
- if (mMotionID.notNull() && mAnimPreview)
+ if (previewp->mMotionID.notNull() && previewp->mAnimPreview)
{
- LLVOAvatar* avatarp = mAnimPreview->getDummyAvatar();
- resetMotion();
- mPauseRequest = avatarp->requestPause();
+ LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar();
+ previewp->resetMotion();
+ previewp->mPauseRequest = avatarp->requestPause();
}
}
//-----------------------------------------------------------------------------
// onSliderMove()
//-----------------------------------------------------------------------------
-void LLFloaterAnimPreview::onSliderMove()
+void LLFloaterAnimPreview::onSliderMove(LLUICtrl* ctrl, void*user_data)
{
- if (!getEnabled())
+ LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)user_data;
+ if (!previewp->getEnabled())
return;
- if (mAnimPreview)
+ if (previewp->mAnimPreview)
{
- LLVOAvatar* avatarp = mAnimPreview->getDummyAvatar();
- F32 slider_value = (F32)getChild<LLUICtrl>("playback_slider")->getValue().asReal();
- LLUUID base_id = mIDList[getChild<LLUICtrl>("preview_base_anim")->getValue().asString()];
- LLMotion* motionp = avatarp->findMotion(mMotionID);
+ LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar();
+ F32 slider_value = (F32)previewp->childGetValue("playback_slider").asReal();
+ LLUUID base_id = previewp->mIDList[previewp->childGetValue("preview_base_anim").asString()];
+ LLMotion* motionp = avatarp->findMotion(previewp->mMotionID);
F32 duration = motionp->getDuration();// + motionp->getEaseOutDuration();
F32 delta_time = duration * slider_value;
avatarp->deactivateAllMotions();
avatarp->startMotion(base_id, delta_time + BASE_ANIM_TIME_OFFSET);
- avatarp->startMotion(mMotionID, delta_time);
- mPauseRequest = avatarp->requestPause();
- refresh();
+ avatarp->startMotion(previewp->mMotionID, delta_time);
+ previewp->mPauseRequest = avatarp->requestPause();
+ previewp->refresh();
}
}
@@ -639,28 +643,29 @@ void LLFloaterAnimPreview::onSliderMove()
//-----------------------------------------------------------------------------
// onCommitBaseAnim()
//-----------------------------------------------------------------------------
-void LLFloaterAnimPreview::onCommitBaseAnim()
+void LLFloaterAnimPreview::onCommitBaseAnim(LLUICtrl* ctrl, void* data)
{
- if (!getEnabled())
+ LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data;
+ if (!previewp->getEnabled())
return;
- if (mAnimPreview)
+ if (previewp->mAnimPreview)
{
- LLVOAvatar* avatarp = mAnimPreview->getDummyAvatar();
+ LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar();
BOOL paused = avatarp->areAnimationsPaused();
// stop all other possible base motions
- avatarp->stopMotion(mIDList["Standing"], TRUE);
- avatarp->stopMotion(mIDList["Walking"], TRUE);
- avatarp->stopMotion(mIDList["Sitting"], TRUE);
- avatarp->stopMotion(mIDList["Flying"], TRUE);
+ avatarp->stopMotion(previewp->mIDList["Standing"], TRUE);
+ avatarp->stopMotion(previewp->mIDList["Walking"], TRUE);
+ avatarp->stopMotion(previewp->mIDList["Sitting"], TRUE);
+ avatarp->stopMotion(previewp->mIDList["Flying"], TRUE);
- resetMotion();
+ previewp->resetMotion();
if (!paused)
{
- mPauseRequest = NULL;
+ previewp->mPauseRequest = NULL;
}
}
}
@@ -668,145 +673,154 @@ void LLFloaterAnimPreview::onCommitBaseAnim()
//-----------------------------------------------------------------------------
// onCommitLoop()
//-----------------------------------------------------------------------------
-void LLFloaterAnimPreview::onCommitLoop()
+void LLFloaterAnimPreview::onCommitLoop(LLUICtrl* ctrl, void* data)
{
- if (!getEnabled())
+ LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data;
+ if (!previewp->getEnabled())
return;
- LLVOAvatar* avatarp = mAnimPreview->getDummyAvatar();
- LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(mMotionID);
+ LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar();
+ LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(previewp->mMotionID);
if (motionp)
{
- motionp->setLoop(getChild<LLUICtrl>("loop_check")->getValue().asBoolean());
- motionp->setLoopIn((F32)getChild<LLUICtrl>("loop_in_point")->getValue().asReal() * 0.01f * motionp->getDuration());
- motionp->setLoopOut((F32)getChild<LLUICtrl>("loop_out_point")->getValue().asReal() * 0.01f * motionp->getDuration());
+ motionp->setLoop(previewp->childGetValue("loop_check").asBoolean());
+ motionp->setLoopIn((F32)previewp->childGetValue("loop_in_point").asReal() * 0.01f * motionp->getDuration());
+ motionp->setLoopOut((F32)previewp->childGetValue("loop_out_point").asReal() * 0.01f * motionp->getDuration());
}
}
//-----------------------------------------------------------------------------
// onCommitLoopIn()
//-----------------------------------------------------------------------------
-void LLFloaterAnimPreview::onCommitLoopIn()
+void LLFloaterAnimPreview::onCommitLoopIn(LLUICtrl* ctrl, void* data)
{
- if (!getEnabled())
+ LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data;
+ if (!previewp->getEnabled())
return;
- LLVOAvatar* avatarp = mAnimPreview->getDummyAvatar();
- LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(mMotionID);
+ LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar();
+ LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(previewp->mMotionID);
if (motionp)
{
- motionp->setLoopIn((F32)getChild<LLUICtrl>("loop_in_point")->getValue().asReal() / 100.f);
- resetMotion();
- getChild<LLUICtrl>("loop_check")->setValue(LLSD(TRUE));
- onCommitLoop();
+ motionp->setLoopIn((F32)previewp->childGetValue("loop_in_point").asReal() / 100.f);
+ previewp->resetMotion();
+ previewp->childSetValue("loop_check", LLSD(TRUE));
+ onCommitLoop(ctrl, data);
}
}
//-----------------------------------------------------------------------------
// onCommitLoopOut()
//-----------------------------------------------------------------------------
-void LLFloaterAnimPreview::onCommitLoopOut()
+void LLFloaterAnimPreview::onCommitLoopOut(LLUICtrl* ctrl, void* data)
{
- if (!getEnabled())
+ LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data;
+ if (!previewp->getEnabled())
return;
- LLVOAvatar* avatarp = mAnimPreview->getDummyAvatar();
- LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(mMotionID);
+ LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar();
+ LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(previewp->mMotionID);
if (motionp)
{
- motionp->setLoopOut((F32)getChild<LLUICtrl>("loop_out_point")->getValue().asReal() * 0.01f * motionp->getDuration());
- resetMotion();
- getChild<LLUICtrl>("loop_check")->setValue(LLSD(TRUE));
- onCommitLoop();
+ motionp->setLoopOut((F32)previewp->childGetValue("loop_out_point").asReal() * 0.01f * motionp->getDuration());
+ previewp->resetMotion();
+ previewp->childSetValue("loop_check", LLSD(TRUE));
+ onCommitLoop(ctrl, data);
}
}
//-----------------------------------------------------------------------------
// onCommitName()
//-----------------------------------------------------------------------------
-void LLFloaterAnimPreview::onCommitName()
+void LLFloaterAnimPreview::onCommitName(LLUICtrl* ctrl, void* data)
{
- if (!getEnabled())
+ LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data;
+ if (!previewp->getEnabled())
return;
- LLVOAvatar* avatarp = mAnimPreview->getDummyAvatar();
- LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(mMotionID);
+ LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar();
+ LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(previewp->mMotionID);
if (motionp)
{
- motionp->setName(getChild<LLUICtrl>("name_form")->getValue().asString());
+ motionp->setName(previewp->childGetValue("name_form").asString());
}
- doCommit();
+ previewp->doCommit();
}
//-----------------------------------------------------------------------------
// onCommitHandPose()
//-----------------------------------------------------------------------------
-void LLFloaterAnimPreview::onCommitHandPose()
+void LLFloaterAnimPreview::onCommitHandPose(LLUICtrl* ctrl, void* data)
{
- if (!getEnabled())
+ LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data;
+ if (!previewp->getEnabled())
return;
- resetMotion(); // sets hand pose
+ previewp->resetMotion(); // sets hand pose
}
//-----------------------------------------------------------------------------
// onCommitEmote()
//-----------------------------------------------------------------------------
-void LLFloaterAnimPreview::onCommitEmote()
+void LLFloaterAnimPreview::onCommitEmote(LLUICtrl* ctrl, void* data)
{
- if (!getEnabled())
+ LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data;
+ if (!previewp->getEnabled())
return;
- resetMotion(); // ssts emote
+ previewp->resetMotion(); // ssts emote
}
//-----------------------------------------------------------------------------
// onCommitPriority()
//-----------------------------------------------------------------------------
-void LLFloaterAnimPreview::onCommitPriority()
+void LLFloaterAnimPreview::onCommitPriority(LLUICtrl* ctrl, void* data)
{
- if (!getEnabled())
+ LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data;
+ if (!previewp->getEnabled())
return;
- LLVOAvatar* avatarp = mAnimPreview->getDummyAvatar();
- LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(mMotionID);
+ LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar();
+ LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(previewp->mMotionID);
- motionp->setPriority(llfloor((F32)getChild<LLUICtrl>("priority")->getValue().asReal()));
+ motionp->setPriority(llfloor((F32)previewp->childGetValue("priority").asReal()));
}
//-----------------------------------------------------------------------------
// onCommitEaseIn()
//-----------------------------------------------------------------------------
-void LLFloaterAnimPreview::onCommitEaseIn()
+void LLFloaterAnimPreview::onCommitEaseIn(LLUICtrl* ctrl, void* data)
{
- if (!getEnabled())
+ LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data;
+ if (!previewp->getEnabled())
return;
- LLVOAvatar* avatarp = mAnimPreview->getDummyAvatar();
- LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(mMotionID);
+ LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar();
+ LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(previewp->mMotionID);
- motionp->setEaseIn((F32)getChild<LLUICtrl>("ease_in_time")->getValue().asReal());
- resetMotion();
+ motionp->setEaseIn((F32)previewp->childGetValue("ease_in_time").asReal());
+ previewp->resetMotion();
}
//-----------------------------------------------------------------------------
// onCommitEaseOut()
//-----------------------------------------------------------------------------
-void LLFloaterAnimPreview::onCommitEaseOut()
+void LLFloaterAnimPreview::onCommitEaseOut(LLUICtrl* ctrl, void* data)
{
- if (!getEnabled())
+ LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data;
+ if (!previewp->getEnabled())
return;
- LLVOAvatar* avatarp = mAnimPreview->getDummyAvatar();
- LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(mMotionID);
+ LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar();
+ LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(previewp->mMotionID);
- motionp->setEaseOut((F32)getChild<LLUICtrl>("ease_out_time")->getValue().asReal());
- resetMotion();
+ motionp->setEaseOut((F32)previewp->childGetValue("ease_out_time").asReal());
+ previewp->resetMotion();
}
//-----------------------------------------------------------------------------
@@ -822,8 +836,8 @@ bool LLFloaterAnimPreview::validateEaseIn(const LLSD& data)
if (!motionp->getLoop())
{
- F32 new_ease_in = llclamp((F32)getChild<LLUICtrl>("ease_in_time")->getValue().asReal(), 0.f, motionp->getDuration() - motionp->getEaseOutDuration());
- getChild<LLUICtrl>("ease_in_time")->setValue(LLSD(new_ease_in));
+ F32 new_ease_in = llclamp((F32)childGetValue("ease_in_time").asReal(), 0.f, motionp->getDuration() - motionp->getEaseOutDuration());
+ childSetValue("ease_in_time", LLSD(new_ease_in));
}
return true;
@@ -842,8 +856,8 @@ bool LLFloaterAnimPreview::validateEaseOut(const LLSD& data)
if (!motionp->getLoop())
{
- F32 new_ease_out = llclamp((F32)getChild<LLUICtrl>("ease_out_time")->getValue().asReal(), 0.f, motionp->getDuration() - motionp->getEaseInDuration());
- getChild<LLUICtrl>("ease_out_time")->setValue(LLSD(new_ease_out));
+ F32 new_ease_out = llclamp((F32)childGetValue("ease_out_time").asReal(), 0.f, motionp->getDuration() - motionp->getEaseInDuration());
+ childSetValue("ease_out_time", LLSD(new_ease_out));
}
return true;
@@ -857,8 +871,8 @@ bool LLFloaterAnimPreview::validateLoopIn(const LLSD& data)
if (!getEnabled())
return false;
- F32 loop_in_value = (F32)getChild<LLUICtrl>("loop_in_point")->getValue().asReal();
- F32 loop_out_value = (F32)getChild<LLUICtrl>("loop_out_point")->getValue().asReal();
+ F32 loop_in_value = (F32)childGetValue("loop_in_point").asReal();
+ F32 loop_out_value = (F32)childGetValue("loop_out_point").asReal();
if (loop_in_value < 0.f)
{
@@ -873,7 +887,7 @@ bool LLFloaterAnimPreview::validateLoopIn(const LLSD& data)
loop_in_value = loop_out_value;
}
- getChild<LLUICtrl>("loop_in_point")->setValue(LLSD(loop_in_value));
+ childSetValue("loop_in_point", LLSD(loop_in_value));
return true;
}
@@ -885,8 +899,8 @@ bool LLFloaterAnimPreview::validateLoopOut(const LLSD& data)
if (!getEnabled())
return false;
- F32 loop_out_value = (F32)getChild<LLUICtrl>("loop_out_point")->getValue().asReal();
- F32 loop_in_value = (F32)getChild<LLUICtrl>("loop_in_point")->getValue().asReal();
+ F32 loop_out_value = (F32)childGetValue("loop_out_point").asReal();
+ F32 loop_in_value = (F32)childGetValue("loop_in_point").asReal();
if (loop_out_value < 0.f)
{
@@ -901,7 +915,7 @@ bool LLFloaterAnimPreview::validateLoopOut(const LLSD& data)
loop_out_value = loop_in_value;
}
- getChild<LLUICtrl>("loop_out_point")->setValue(LLSD(loop_out_value));
+ childSetValue("loop_out_point", LLSD(loop_out_value));
return true;
}
@@ -915,15 +929,15 @@ void LLFloaterAnimPreview::refresh()
bool show_play = true;
if (!mAnimPreview)
{
- getChildView("bad_animation_text")->setVisible(TRUE);
+ childShow("bad_animation_text");
// play button visible but disabled
mPlayButton->setEnabled(FALSE);
mStopButton->setEnabled(FALSE);
- getChildView("ok_btn")->setEnabled(FALSE);
+ childDisable("ok_btn");
}
else
{
- getChildView("bad_animation_text")->setVisible(FALSE);
+ childHide("bad_animation_text");
// re-enabled in case previous animation was bad
mPlayButton->setEnabled(TRUE);
mStopButton->setEnabled(TRUE);
@@ -938,7 +952,7 @@ void LLFloaterAnimPreview::refresh()
if (motionp)
{
F32 fraction_complete = motionp->getLastUpdateTime() / motionp->getDuration();
- getChild<LLUICtrl>("playback_slider")->setValue(fraction_complete);
+ childSetValue("playback_slider", fraction_complete);
}
show_play = false;
}
@@ -948,7 +962,7 @@ void LLFloaterAnimPreview::refresh()
// Motion just finished playing
mPauseRequest = avatarp->requestPause();
}
- getChildView("ok_btn")->setEnabled(TRUE);
+ childEnable("ok_btn");
mAnimPreview->requestUpdate();
}
mPlayButton->setVisible(show_play);
@@ -979,8 +993,8 @@ void LLFloaterAnimPreview::onBtnOK(void* userdata)
file.setMaxSize(size);
if (file.write((U8*)buffer, size))
{
- std::string name = floaterp->getChild<LLUICtrl>("name_form")->getValue().asString();
- std::string desc = floaterp->getChild<LLUICtrl>("description_form")->getValue().asString();
+ std::string name = floaterp->childGetValue("name_form").asString();
+ std::string desc = floaterp->childGetValue("description_form").asString();
LLAssetStorage::LLStoreAssetCallback callback = NULL;
S32 expected_upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload();
void *userdata = NULL;
diff --git a/indra/newview/llfloateranimpreview.h b/indra/newview/llfloateranimpreview.h
index f1ffb6547f..80d4716ff2 100644
--- a/indra/newview/llfloateranimpreview.h
+++ b/indra/newview/llfloateranimpreview.h
@@ -83,22 +83,22 @@ public:
void refresh();
- void onBtnPlay();
- void onBtnPause();
- void onBtnStop();
- void onSliderMove();
- void onCommitBaseAnim();
- void onCommitLoop();
- void onCommitLoopIn();
- void onCommitLoopOut();
+ static void onBtnPlay(void*);
+ static void onBtnPause(void*);
+ static void onBtnStop(void*);
+ static void onSliderMove(LLUICtrl*, void*);
+ static void onCommitBaseAnim(LLUICtrl*, void*);
+ static void onCommitLoop(LLUICtrl*, void*);
+ static void onCommitLoopIn(LLUICtrl*, void*);
+ static void onCommitLoopOut(LLUICtrl*, void*);
bool validateLoopIn(const LLSD& data);
bool validateLoopOut(const LLSD& data);
- void onCommitName();
- void onCommitHandPose();
- void onCommitEmote();
- void onCommitPriority();
- void onCommitEaseIn();
- void onCommitEaseOut();
+ static void onCommitName(LLUICtrl*, void*);
+ static void onCommitHandPose(LLUICtrl*, void*);
+ static void onCommitEmote(LLUICtrl*, void*);
+ static void onCommitPriority(LLUICtrl*, void*);
+ static void onCommitEaseIn(LLUICtrl*, void*);
+ static void onCommitEaseOut(LLUICtrl*, void*);
bool validateEaseIn(const LLSD& data);
bool validateEaseOut(const LLSD& data);
static void onBtnOK(void*);
diff --git a/indra/newview/llfloaterauction.cpp b/indra/newview/llfloaterauction.cpp
index 5cab770c42..04611a33c0 100644
--- a/indra/newview/llfloaterauction.cpp
+++ b/indra/newview/llfloaterauction.cpp
@@ -109,20 +109,20 @@ void LLFloaterAuction::initialize()
mParcelID = parcelp->getLocalID();
mParcelUpdateCapUrl = region->getCapability("ParcelPropertiesUpdate");
- getChild<LLUICtrl>("parcel_text")->setValue(parcelp->getName());
- getChildView("snapshot_btn")->setEnabled(TRUE);
- getChildView("reset_parcel_btn")->setEnabled(TRUE);
- getChildView("start_auction_btn")->setEnabled(TRUE);
+ childSetText("parcel_text", parcelp->getName());
+ childEnable("snapshot_btn");
+ childEnable("reset_parcel_btn");
+ childEnable("start_auction_btn");
LLPanelEstateInfo* panel = LLFloaterRegionInfo::getPanelEstate();
if (panel)
{ // Only enable "Sell to Anyone" on Teen grid or if we don't know the ID yet
U32 estate_id = panel->getEstateID();
- getChildView("sell_to_anyone_btn")->setEnabled((estate_id == ESTATE_TEEN || estate_id == 0));
+ childSetEnabled("sell_to_anyone_btn", (estate_id == ESTATE_TEEN || estate_id == 0));
}
else
{ // Don't have the panel up, so don't know if we're on the teen grid or not. Default to enabling it
- getChildView("sell_to_anyone_btn")->setEnabled(TRUE);
+ childEnable("sell_to_anyone_btn");
}
}
else
@@ -130,17 +130,17 @@ void LLFloaterAuction::initialize()
mParcelHost.invalidate();
if(parcelp && parcelp->getForSale())
{
- getChild<LLUICtrl>("parcel_text")->setValue(getString("already for sale"));
+ childSetText("parcel_text", getString("already for sale"));
}
else
{
- getChild<LLUICtrl>("parcel_text")->setValue(LLStringUtil::null);
+ childSetText("parcel_text", LLStringUtil::null);
}
mParcelID = -1;
- getChildView("snapshot_btn")->setEnabled(false);
- getChildView("reset_parcel_btn")->setEnabled(false);
- getChildView("sell_to_anyone_btn")->setEnabled(false);
- getChildView("start_auction_btn")->setEnabled(false);
+ childSetEnabled("snapshot_btn", false);
+ childSetEnabled("reset_parcel_btn", false);
+ childSetEnabled("sell_to_anyone_btn", false);
+ childSetEnabled("start_auction_btn", false);
}
mImageID.setNull();
@@ -153,10 +153,9 @@ void LLFloaterAuction::draw()
if(!isMinimized() && mImage.notNull())
{
- LLView* snapshot_icon = findChildView("snapshot_icon");
- if (snapshot_icon)
+ LLRect rect;
+ if (childGetRect("snapshot_icon", rect))
{
- LLRect rect = snapshot_icon->getRect();
{
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
gl_rect_2d(rect, LLColor4(0.f, 0.f, 0.f, 1.f));
@@ -183,7 +182,7 @@ void LLFloaterAuction::onClickSnapshot(void* data)
LLPointer<LLImageRaw> raw = new LLImageRaw;
- gForceRenderLandFence = self->getChild<LLUICtrl>("fence_check")->getValue().asBoolean();
+ gForceRenderLandFence = self->childGetValue("fence_check").asBoolean();
BOOL success = gViewerWindow->rawSnapshot(raw,
gViewerWindow->getWindowWidthScaled(),
gViewerWindow->getWindowHeightScaled(),
@@ -231,7 +230,7 @@ void LLFloaterAuction::onClickStartAuction(void* data)
if(self->mImageID.notNull())
{
- LLSD parcel_name = self->getChild<LLUICtrl>("parcel_text")->getValue();
+ LLSD parcel_name = self->childGetValue("parcel_text");
// create the asset
std::string* name = new std::string(parcel_name.asString());
@@ -340,7 +339,7 @@ void LLFloaterAuction::doResetParcel()
std::string new_name(parcel_name.str().c_str());
body["name"] = new_name;
- getChild<LLUICtrl>("parcel_text")->setValue(new_name); // Set name in dialog as well, since it won't get updated otherwise
+ childSetText("parcel_text", new_name); // Set name in dialog as well, since it won't get updated otherwise
body["sale_price"] = (S32) 0;
body["description"] = empty;
diff --git a/indra/newview/llfloateravatarpicker.cpp b/indra/newview/llfloateravatarpicker.cpp
index 9391c761b7..501cf4ce99 100644
--- a/indra/newview/llfloateravatarpicker.cpp
+++ b/indra/newview/llfloateravatarpicker.cpp
@@ -88,14 +88,14 @@ BOOL LLFloaterAvatarPicker::postBuild()
getChild<LLLineEditor>("Edit")->setKeystrokeCallback( boost::bind(&LLFloaterAvatarPicker::editKeystroke, this, _1, _2),NULL);
childSetAction("Find", boost::bind(&LLFloaterAvatarPicker::onBtnFind, this));
- getChildView("Find")->setEnabled(FALSE);
+ childDisable("Find");
childSetAction("Refresh", boost::bind(&LLFloaterAvatarPicker::onBtnRefresh, this));
getChild<LLUICtrl>("near_me_range")->setCommitCallback(boost::bind(&LLFloaterAvatarPicker::onRangeAdjust, this));
LLScrollListCtrl* searchresults = getChild<LLScrollListCtrl>("SearchResults");
searchresults->setDoubleClickCallback( boost::bind(&LLFloaterAvatarPicker::onBtnSelect, this));
searchresults->setCommitCallback(boost::bind(&LLFloaterAvatarPicker::onList, this));
- getChildView("SearchResults")->setEnabled(FALSE);
+ childDisable("SearchResults");
LLScrollListCtrl* nearme = getChild<LLScrollListCtrl>("NearMe");
nearme->setDoubleClickCallback(boost::bind(&LLFloaterAvatarPicker::onBtnSelect, this));
@@ -106,10 +106,10 @@ BOOL LLFloaterAvatarPicker::postBuild()
getChild<LLUICtrl>("Friends")->setCommitCallback(boost::bind(&LLFloaterAvatarPicker::onList, this));
childSetAction("ok_btn", boost::bind(&LLFloaterAvatarPicker::onBtnSelect, this));
- getChildView("ok_btn")->setEnabled(FALSE);
+ childDisable("ok_btn");
childSetAction("cancel_btn", boost::bind(&LLFloaterAvatarPicker::onBtnClose, this));
- getChild<LLUICtrl>("Edit")->setFocus(TRUE);
+ childSetFocus("Edit");
LLPanel* search_panel = getChild<LLPanel>("SearchPanel");
if (search_panel)
@@ -139,7 +139,7 @@ void LLFloaterAvatarPicker::setOkBtnEnableCb(validate_callback_t cb)
void LLFloaterAvatarPicker::onTabChanged()
{
- getChildView("ok_btn")->setEnabled(isSelectBtnEnabled());
+ childSetEnabled("ok_btn", isSelectBtnEnabled());
}
// Destroys the object
@@ -178,7 +178,7 @@ void LLFloaterAvatarPicker::onBtnSelect()
{
std::string acvtive_panel_name;
LLScrollListCtrl* list = NULL;
- LLPanel* active_panel = getChild<LLTabContainer>("ResidentChooserTabs")->getCurrentPanel();
+ LLPanel* active_panel = childGetVisibleTab("ResidentChooserTabs");
if(active_panel)
{
acvtive_panel_name = active_panel->getName();
@@ -233,7 +233,7 @@ void LLFloaterAvatarPicker::onRangeAdjust()
void LLFloaterAvatarPicker::onList()
{
- getChildView("ok_btn")->setEnabled(isSelectBtnEnabled());
+ childSetEnabled("ok_btn", isSelectBtnEnabled());
}
void LLFloaterAvatarPicker::populateNearMe()
@@ -267,14 +267,14 @@ void LLFloaterAvatarPicker::populateNearMe()
if (empty)
{
- getChildView("NearMe")->setEnabled(FALSE);
- getChildView("ok_btn")->setEnabled(FALSE);
+ childDisable("NearMe");
+ childDisable("ok_btn");
near_me_scroller->setCommentText(getString("no_one_near"));
}
else
{
- getChildView("NearMe")->setEnabled(TRUE);
- getChildView("ok_btn")->setEnabled(TRUE);
+ childEnable("NearMe");
+ childEnable("ok_btn");
near_me_scroller->selectFirstItem();
onList();
near_me_scroller->setFocus(TRUE);
@@ -321,7 +321,7 @@ void LLFloaterAvatarPicker::draw()
}
LLFloater::draw();
- if (!mNearMeListComplete && getChild<LLTabContainer>("ResidentChooserTabs")->getCurrentPanel() == getChild<LLPanel>("NearMePanel"))
+ if (!mNearMeListComplete && childGetVisibleTab("ResidentChooserTabs") == getChild<LLPanel>("NearMePanel"))
{
populateNearMe();
}
@@ -329,7 +329,7 @@ void LLFloaterAvatarPicker::draw()
BOOL LLFloaterAvatarPicker::visibleItemsSelected() const
{
- LLPanel* active_panel = getChild<LLTabContainer>("ResidentChooserTabs")->getCurrentPanel();
+ LLPanel* active_panel = childGetVisibleTab("ResidentChooserTabs");
if(active_panel == getChild<LLPanel>("SearchPanel"))
{
@@ -348,7 +348,7 @@ BOOL LLFloaterAvatarPicker::visibleItemsSelected() const
void LLFloaterAvatarPicker::find()
{
- std::string text = getChild<LLUICtrl>("Edit")->getValue().asString();
+ std::string text = childGetValue("Edit").asString();
mQueryID.generate();
@@ -367,7 +367,7 @@ void LLFloaterAvatarPicker::find()
getChild<LLScrollListCtrl>("SearchResults")->deleteAllItems();
getChild<LLScrollListCtrl>("SearchResults")->setCommentText(getString("searching"));
- getChildView("ok_btn")->setEnabled(FALSE);
+ childSetEnabled("ok_btn", FALSE);
mNumResultsReturned = 0;
}
@@ -382,7 +382,7 @@ LLScrollListCtrl* LLFloaterAvatarPicker::getActiveList()
{
std::string acvtive_panel_name;
LLScrollListCtrl* list = NULL;
- LLPanel* active_panel = getChild<LLTabContainer>("ResidentChooserTabs")->getCurrentPanel();
+ LLPanel* active_panel = childGetVisibleTab("ResidentChooserTabs");
if(active_panel)
{
acvtive_panel_name = active_panel->getName();
@@ -496,10 +496,10 @@ void LLFloaterAvatarPicker::processAvatarPickerReply(LLMessageSystem* msg, void*
if (avatar_id.isNull())
{
LLStringUtil::format_map_t map;
- map["[TEXT]"] = floater->getChild<LLUICtrl>("Edit")->getValue().asString();
+ map["[TEXT]"] = floater->childGetText("Edit");
avatar_name = floater->getString("not_found", map);
search_results->setEnabled(FALSE);
- floater->getChildView("ok_btn")->setEnabled(FALSE);
+ floater->childDisable("ok_btn");
}
else
{
@@ -515,7 +515,7 @@ void LLFloaterAvatarPicker::processAvatarPickerReply(LLMessageSystem* msg, void*
if (found_one)
{
- floater->getChildView("ok_btn")->setEnabled(TRUE);
+ floater->childEnable("ok_btn");
search_results->selectFirstItem();
floater->onList();
search_results->setFocus(TRUE);
@@ -525,7 +525,7 @@ void LLFloaterAvatarPicker::processAvatarPickerReply(LLMessageSystem* msg, void*
//static
void LLFloaterAvatarPicker::editKeystroke(LLLineEditor* caller, void* user_data)
{
- getChildView("Find")->setEnabled(caller->getText().size() >= 3);
+ childSetEnabled("Find", caller->getText().size() >= 3);
}
// virtual
@@ -533,7 +533,7 @@ BOOL LLFloaterAvatarPicker::handleKeyHere(KEY key, MASK mask)
{
if (key == KEY_RETURN && mask == MASK_NONE)
{
- if (getChild<LLUICtrl>("Edit")->hasFocus())
+ if (childHasFocus("Edit"))
{
onBtnFind();
}
@@ -560,7 +560,7 @@ bool LLFloaterAvatarPicker::isSelectBtnEnabled()
{
std::string acvtive_panel_name;
LLScrollListCtrl* list = NULL;
- LLPanel* active_panel = getChild<LLTabContainer>("ResidentChooserTabs")->getCurrentPanel();
+ LLPanel* active_panel = childGetVisibleTab("ResidentChooserTabs");
if(active_panel)
{
diff --git a/indra/newview/llfloaterbuy.cpp b/indra/newview/llfloaterbuy.cpp
index 32add57737..616383f1a5 100644
--- a/indra/newview/llfloaterbuy.cpp
+++ b/indra/newview/llfloaterbuy.cpp
@@ -56,8 +56,8 @@ LLFloaterBuy::LLFloaterBuy(const LLSD& key)
BOOL LLFloaterBuy::postBuild()
{
- getChildView("object_list")->setEnabled(FALSE);
- getChildView("item_list")->setEnabled(FALSE);
+ childDisable("object_list");
+ childDisable("item_list");
getChild<LLUICtrl>("cancel_btn")->setCommitCallback( boost::bind(&LLFloaterBuy::onClickCancel, this));
getChild<LLUICtrl>("buy_btn")->setCommitCallback( boost::bind(&LLFloaterBuy::onClickBuy, this));
@@ -177,8 +177,8 @@ void LLFloaterBuy::show(const LLSaleInfo& sale_info)
// Add after columns added so appropriate heights are correct.
object_list->addElement(row);
- floater->getChild<LLUICtrl>("buy_text")->setTextArg("[AMOUNT]", llformat("%d", sale_info.getSalePrice()));
- floater->getChild<LLUICtrl>("buy_text")->setTextArg("[NAME]", owner_name);
+ floater->childSetTextArg("buy_text", "[AMOUNT]", llformat("%d", sale_info.getSalePrice()));
+ floater->childSetTextArg("buy_text", "[NAME]", owner_name);
// Must do this after the floater is created, because
// sometimes the inventory is already there and
diff --git a/indra/newview/llfloaterbuycontents.cpp b/indra/newview/llfloaterbuycontents.cpp
index 77fb5590df..405d318720 100644
--- a/indra/newview/llfloaterbuycontents.cpp
+++ b/indra/newview/llfloaterbuycontents.cpp
@@ -63,9 +63,9 @@ BOOL LLFloaterBuyContents::postBuild()
getChild<LLUICtrl>("cancel_btn")->setCommitCallback( boost::bind(&LLFloaterBuyContents::onClickCancel, this));
getChild<LLUICtrl>("buy_btn")->setCommitCallback( boost::bind(&LLFloaterBuyContents::onClickBuy, this));
- getChildView("item_list")->setEnabled(FALSE);
- getChildView("buy_btn")->setEnabled(FALSE);
- getChildView("wear_check")->setEnabled(FALSE);
+ childDisable("item_list");
+ childDisable("buy_btn");
+ childDisable("wear_check");
setDefaultBtn("cancel_btn"); // to avoid accidental buy (SL-43130)
@@ -123,9 +123,9 @@ void LLFloaterBuyContents::show(const LLSaleInfo& sale_info)
gCacheName->getGroupName(owner_id, owner_name);
}
- floater->getChild<LLUICtrl>("contains_text")->setTextArg("[NAME]", node->mName);
- floater->getChild<LLUICtrl>("buy_text")->setTextArg("[AMOUNT]", llformat("%d", sale_info.getSalePrice()));
- floater->getChild<LLUICtrl>("buy_text")->setTextArg("[NAME]", owner_name);
+ floater->childSetTextArg("contains_text", "[NAME]", node->mName);
+ floater->childSetTextArg("buy_text", "[AMOUNT]", llformat("%d", sale_info.getSalePrice()));
+ floater->childSetTextArg("buy_text", "[NAME]", owner_name);
// Must do this after the floater is created, because
// sometimes the inventory is already there and
@@ -163,7 +163,7 @@ void LLFloaterBuyContents::inventoryChanged(LLViewerObject* obj,
}
// default to turning off the buy button.
- getChildView("buy_btn")->setEnabled(FALSE);
+ childDisable("buy_btn");
LLUUID owner_id;
BOOL is_group_owned;
@@ -204,7 +204,7 @@ void LLFloaterBuyContents::inventoryChanged(LLViewerObject* obj,
// There will be at least one item shown in the display, so go
// ahead and enable the buy button.
- getChildView("buy_btn")->setEnabled(TRUE);
+ childEnable("buy_btn");
// Create the line in the list
LLSD row;
@@ -250,8 +250,8 @@ void LLFloaterBuyContents::inventoryChanged(LLViewerObject* obj,
if (wearable_count > 0)
{
- getChildView("wear_check")->setEnabled(TRUE);
- getChild<LLUICtrl>("wear_check")->setValue(LLSD(false) );
+ childEnable("wear_check");
+ childSetValue("wear_check", LLSD(false) );
}
removeVOInventoryListener();
@@ -262,7 +262,7 @@ void LLFloaterBuyContents::onClickBuy()
{
// Make sure this wasn't selected through other mechanisms
// (ie, being the default button and pressing enter.
- if(!getChildView("buy_btn")->getEnabled())
+ if(!childIsEnabled("buy_btn"))
{
// We shouldn't be enabled. Just close.
closeFloater();
@@ -270,7 +270,7 @@ void LLFloaterBuyContents::onClickBuy()
}
// We may want to wear this item
- if (getChild<LLUICtrl>("wear_check")->getValue())
+ if (childGetValue("wear_check"))
{
LLInventoryState::sWearNewClothing = TRUE;
}
diff --git a/indra/newview/llfloaterbuycurrency.cpp b/indra/newview/llfloaterbuycurrency.cpp
index 58c79fdf15..35020d84e2 100644
--- a/indra/newview/llfloaterbuycurrency.cpp
+++ b/indra/newview/llfloaterbuycurrency.cpp
@@ -156,7 +156,7 @@ void LLFloaterBuyCurrencyUI::draw()
}
// disable the Buy button when we are not able to buy
- getChildView("buy_btn")->setEnabled(mManager.canBuy());
+ childSetEnabled("buy_btn", mManager.canBuy());
LLFloater::draw();
}
@@ -172,27 +172,27 @@ void LLFloaterBuyCurrencyUI::updateUI()
mManager.updateUI(!hasError && !mManager.buying());
// hide most widgets - we'll turn them on as needed next
- getChildView("info_buying")->setVisible(FALSE);
- getChildView("info_cannot_buy")->setVisible(FALSE);
- getChildView("info_need_more")->setVisible(FALSE);
- getChildView("purchase_warning_repurchase")->setVisible(FALSE);
- getChildView("purchase_warning_notenough")->setVisible(FALSE);
- getChildView("contacting")->setVisible(FALSE);
- getChildView("buy_action")->setVisible(FALSE);
+ childHide("info_buying");
+ childHide("info_cannot_buy");
+ childHide("info_need_more");
+ childHide("purchase_warning_repurchase");
+ childHide("purchase_warning_notenough");
+ childHide("contacting");
+ childHide("buy_action");
if (hasError)
{
// display an error from the server
- getChildView("normal_background")->setVisible(FALSE);
- getChildView("error_background")->setVisible(TRUE);
- getChildView("info_cannot_buy")->setVisible(TRUE);
- getChildView("cannot_buy_message")->setVisible(TRUE);
- getChildView("balance_label")->setVisible(FALSE);
- getChildView("balance_amount")->setVisible(FALSE);
- getChildView("buying_label")->setVisible(FALSE);
- getChildView("buying_amount")->setVisible(FALSE);
- getChildView("total_label")->setVisible(FALSE);
- getChildView("total_amount")->setVisible(FALSE);
+ childHide("normal_background");
+ childShow("error_background");
+ childShow("info_cannot_buy");
+ childShow("cannot_buy_message");
+ childHide("balance_label");
+ childHide("balance_amount");
+ childHide("buying_label");
+ childHide("buying_amount");
+ childHide("total_label");
+ childHide("total_amount");
LLTextBox* message = getChild<LLTextBox>("cannot_buy_message");
if (message)
@@ -200,67 +200,67 @@ void LLFloaterBuyCurrencyUI::updateUI()
message->setText(mManager.errorMessage());
}
- getChildView("error_web")->setVisible( !mManager.errorURI().empty());
+ childSetVisible("error_web", !mManager.errorURI().empty());
}
else
{
// display the main Buy L$ interface
- getChildView("normal_background")->setVisible(TRUE);
- getChildView("error_background")->setVisible(FALSE);
- getChildView("cannot_buy_message")->setVisible(FALSE);
- getChildView("error_web")->setVisible(FALSE);
+ childShow("normal_background");
+ childHide("error_background");
+ childHide("cannot_buy_message");
+ childHide("error_web");
if (mHasTarget)
{
- getChildView("info_need_more")->setVisible(TRUE);
+ childShow("info_need_more");
}
else
{
- getChildView("info_buying")->setVisible(TRUE);
+ childShow("info_buying");
}
if (mManager.buying())
{
- getChildView("contacting")->setVisible( true);
+ childSetVisible("contacting", true);
}
else
{
if (mHasTarget)
{
- getChildView("buy_action")->setVisible( true);
- getChild<LLUICtrl>("buy_action")->setTextArg("[ACTION]", mTargetName);
+ childSetVisible("buy_action", true);
+ childSetTextArg("buy_action", "[ACTION]", mTargetName);
}
}
S32 balance = gStatusBar->getBalance();
- getChildView("balance_label")->setVisible(TRUE);
- getChildView("balance_amount")->setVisible(TRUE);
- getChild<LLUICtrl>("balance_amount")->setTextArg("[AMT]", llformat("%d", balance));
+ childShow("balance_label");
+ childShow("balance_amount");
+ childSetTextArg("balance_amount", "[AMT]", llformat("%d", balance));
S32 buying = mManager.getAmount();
- getChildView("buying_label")->setVisible(TRUE);
- getChildView("buying_amount")->setVisible(TRUE);
- getChild<LLUICtrl>("buying_amount")->setTextArg("[AMT]", llformat("%d", buying));
+ childShow("buying_label");
+ childShow("buying_amount");
+ childSetTextArg("buying_amount", "[AMT]", llformat("%d", buying));
S32 total = balance + buying;
- getChildView("total_label")->setVisible(TRUE);
- getChildView("total_amount")->setVisible(TRUE);
- getChild<LLUICtrl>("total_amount")->setTextArg("[AMT]", llformat("%d", total));
+ childShow("total_label");
+ childShow("total_amount");
+ childSetTextArg("total_amount", "[AMT]", llformat("%d", total));
if (mHasTarget)
{
if (total >= mTargetPrice)
{
- getChildView("purchase_warning_repurchase")->setVisible( true);
+ childSetVisible("purchase_warning_repurchase", true);
}
else
{
- getChildView("purchase_warning_notenough")->setVisible( true);
+ childSetVisible("purchase_warning_notenough", true);
}
}
}
- getChildView("getting_data")->setVisible( !mManager.canBuy() && !hasError);
+ childSetVisible("getting_data", !mManager.canBuy() && !hasError);
}
void LLFloaterBuyCurrencyUI::onClickBuy()
diff --git a/indra/newview/llfloaterbuyland.cpp b/indra/newview/llfloaterbuyland.cpp
index 69824b3843..3f9d1dc8e8 100644
--- a/indra/newview/llfloaterbuyland.cpp
+++ b/indra/newview/llfloaterbuyland.cpp
@@ -726,7 +726,7 @@ void LLFloaterBuyLandUI::runWebSitePrep(const std::string& password)
return;
}
- BOOL remove_contribution = getChild<LLUICtrl>("remove_contribution")->getValue().asBoolean();
+ BOOL remove_contribution = childGetValue("remove_contribution").asBoolean();
mParcelBuyInfo = LLViewerParcelMgr::getInstance()->setupParcelBuy(gAgent.getID(), gAgent.getSessionID(),
gAgent.getGroupID(), mIsForGroup, mIsClaim, remove_contribution);
@@ -1020,13 +1020,13 @@ void LLFloaterBuyLandUI::refreshUI()
if (mParcelValid)
{
- getChild<LLUICtrl>("info_parcel")->setValue(mParcelLocation);
+ childSetText("info_parcel", mParcelLocation);
LLStringUtil::format_map_t string_args;
string_args["[AMOUNT]"] = llformat("%d", mParcelActualArea);
string_args["[AMOUNT2]"] = llformat("%d", mParcelSupportedObjects);
- getChild<LLUICtrl>("info_size")->setValue(getString("meters_supports_object", string_args));
+ childSetText("info_size", getString("meters_supports_object", string_args));
F32 cost_per_sqm = 0.0f;
if (mParcelActualArea > 0)
@@ -1045,17 +1045,17 @@ void LLFloaterBuyLandUI::refreshUI()
{
info_price_args["[SOLD_WITH_OBJECTS]"] = getString("sold_without_objects");
}
- getChild<LLUICtrl>("info_price")->setValue(getString("info_price_string", info_price_args));
- getChildView("info_price")->setVisible( mParcelIsForSale);
+ childSetText("info_price", getString("info_price_string", info_price_args));
+ childSetVisible("info_price", mParcelIsForSale);
}
else
{
- getChild<LLUICtrl>("info_parcel")->setValue(getString("no_parcel_selected"));
- getChild<LLUICtrl>("info_size")->setValue(LLStringUtil::null);
- getChild<LLUICtrl>("info_price")->setValue(LLStringUtil::null);
+ childSetText("info_parcel", getString("no_parcel_selected"));
+ childSetText("info_size", LLStringUtil::null);
+ childSetText("info_price", LLStringUtil::null);
}
- getChild<LLUICtrl>("info_action")->setValue(
+ childSetText("info_action",
mCanBuy
?
mIsForGroup
@@ -1086,13 +1086,14 @@ void LLFloaterBuyLandUI::refreshUI()
message->setValue(LLSD(!mCanBuy ? mCannotBuyReason : "(waiting for data)"));
}
- getChildView("error_web")->setVisible(mCannotBuyIsError && !mCannotBuyURI.empty());
+ childSetVisible("error_web",
+ mCannotBuyIsError && !mCannotBuyURI.empty());
}
else
{
- getChildView("step_error")->setVisible(FALSE);
- getChildView("error_message")->setVisible(FALSE);
- getChildView("error_web")->setVisible(FALSE);
+ childHide("step_error");
+ childHide("error_message");
+ childHide("error_web");
}
@@ -1103,8 +1104,8 @@ void LLFloaterBuyLandUI::refreshUI()
mSiteMembershipUpgrade
? LLViewChildren::BADGE_NOTE
: LLViewChildren::BADGE_OK);
- getChild<LLUICtrl>("account_action")->setValue(mSiteMembershipAction);
- getChild<LLUICtrl>("account_reason")->setValue(
+ childSetText("account_action", mSiteMembershipAction);
+ childSetText("account_reason",
mSiteMembershipUpgrade
? getString("must_upgrade")
: getString("cant_own_land")
@@ -1127,16 +1128,16 @@ void LLFloaterBuyLandUI::refreshUI()
levels->setCurrentByIndex(mUserPlanChoice);
}
- getChildView("step_1")->setVisible(TRUE);
- getChildView("account_action")->setVisible(TRUE);
- getChildView("account_reason")->setVisible(TRUE);
+ childShow("step_1");
+ childShow("account_action");
+ childShow("account_reason");
}
else
{
- getChildView("step_1")->setVisible(FALSE);
- getChildView("account_action")->setVisible(FALSE);
- getChildView("account_reason")->setVisible(FALSE);
- getChildView("account_level")->setVisible(FALSE);
+ childHide("step_1");
+ childHide("account_action");
+ childHide("account_reason");
+ childHide("account_level");
}
// section two: land use fees
@@ -1146,7 +1147,7 @@ void LLFloaterBuyLandUI::refreshUI()
mSiteLandUseUpgrade
? LLViewChildren::BADGE_NOTE
: LLViewChildren::BADGE_OK);
- getChild<LLUICtrl>("land_use_action")->setValue(mSiteLandUseAction);
+ childSetText("land_use_action", mSiteLandUseAction);
std::string message;
@@ -1192,17 +1193,17 @@ void LLFloaterBuyLandUI::refreshUI()
}
}
- getChild<LLUICtrl>("land_use_reason")->setValue(message);
+ childSetValue("land_use_reason", message);
- getChildView("step_2")->setVisible(TRUE);
- getChildView("land_use_action")->setVisible(TRUE);
- getChildView("land_use_reason")->setVisible(TRUE);
+ childShow("step_2");
+ childShow("land_use_action");
+ childShow("land_use_reason");
}
else
{
- getChildView("step_2")->setVisible(FALSE);
- getChildView("land_use_action")->setVisible(FALSE);
- getChildView("land_use_reason")->setVisible(FALSE);
+ childHide("step_2");
+ childHide("land_use_action");
+ childHide("land_use_reason");
}
// section three: purchase & currency
@@ -1226,8 +1227,8 @@ void LLFloaterBuyLandUI::refreshUI()
LLStringUtil::format_map_t string_args;
string_args["[AMOUNT]"] = llformat("%d", mParcelPrice);
string_args["[SELLER]"] = mParcelSellerName;
- getChild<LLUICtrl>("purchase_action")->setValue(getString("pay_to_for_land", string_args));
- getChildView("purchase_action")->setVisible( mParcelValid);
+ childSetText("purchase_action", getString("pay_to_for_land", string_args));
+ childSetVisible("purchase_action", mParcelValid);
std::string reasonString;
@@ -1236,7 +1237,7 @@ void LLFloaterBuyLandUI::refreshUI()
LLStringUtil::format_map_t string_args;
string_args["[AMOUNT]"] = llformat("%d", mAgentCashBalance);
- getChild<LLUICtrl>("currency_reason")->setValue(getString("have_enough_lindens", string_args));
+ childSetText("currency_reason", getString("have_enough_lindens", string_args));
}
else
{
@@ -1244,9 +1245,9 @@ void LLFloaterBuyLandUI::refreshUI()
string_args["[AMOUNT]"] = llformat("%d", mAgentCashBalance);
string_args["[AMOUNT2]"] = llformat("%d", mParcelPrice - mAgentCashBalance);
- getChild<LLUICtrl>("currency_reason")->setValue(getString("not_enough_lindens", string_args));
+ childSetText("currency_reason", getString("not_enough_lindens", string_args));
- getChild<LLUICtrl>("currency_est")->setTextArg("[LOCAL_AMOUNT]", mCurrency.getLocalEstimate());
+ childSetTextArg("currency_est", "[LOCAL_AMOUNT]", mCurrency.getLocalEstimate());
}
if (willHaveEnough)
@@ -1254,7 +1255,7 @@ void LLFloaterBuyLandUI::refreshUI()
LLStringUtil::format_map_t string_args;
string_args["[AMOUNT]"] = llformat("%d", finalBalance);
- getChild<LLUICtrl>("currency_balance")->setValue(getString("balance_left", string_args));
+ childSetText("currency_balance", getString("balance_left", string_args));
}
else
@@ -1262,30 +1263,30 @@ void LLFloaterBuyLandUI::refreshUI()
LLStringUtil::format_map_t string_args;
string_args["[AMOUNT]"] = llformat("%d", mParcelPrice - mAgentCashBalance);
- getChild<LLUICtrl>("currency_balance")->setValue(getString("balance_needed", string_args));
+ childSetText("currency_balance", getString("balance_needed", string_args));
}
- getChild<LLUICtrl>("remove_contribution")->setValue(LLSD(groupContributionEnough));
- getChildView("remove_contribution")->setEnabled(groupContributionEnough);
+ childSetValue("remove_contribution", LLSD(groupContributionEnough));
+ childSetEnabled("remove_contribution", groupContributionEnough);
bool showRemoveContribution = mParcelIsGroupLand
&& (mParcelGroupContribution > 0);
- getChildView("remove_contribution")->setLabelArg("[AMOUNT]",
+ childSetLabelArg("remove_contribution", "[AMOUNT]",
llformat("%d", minContribution));
- getChildView("remove_contribution")->setVisible( showRemoveContribution);
+ childSetVisible("remove_contribution", showRemoveContribution);
- getChildView("step_3")->setVisible(TRUE);
- getChildView("purchase_action")->setVisible(TRUE);
- getChildView("currency_reason")->setVisible(TRUE);
- getChildView("currency_balance")->setVisible(TRUE);
+ childShow("step_3");
+ childShow("purchase_action");
+ childShow("currency_reason");
+ childShow("currency_balance");
}
else
{
- getChildView("step_3")->setVisible(FALSE);
- getChildView("purchase_action")->setVisible(FALSE);
- getChildView("currency_reason")->setVisible(FALSE);
- getChildView("currency_balance")->setVisible(FALSE);
- getChildView("remove_group_donation")->setVisible(FALSE);
+ childHide("step_3");
+ childHide("purchase_action");
+ childHide("currency_reason");
+ childHide("currency_balance");
+ childHide("remove_group_donation");
}
@@ -1296,7 +1297,8 @@ void LLFloaterBuyLandUI::refreshUI()
agrees_to_covenant = check->get();
}
- getChildView("buy_btn")->setEnabled(mCanBuy && mSiteValid && willHaveEnough && !mTransaction && agrees_to_covenant);
+ childSetEnabled("buy_btn",
+ mCanBuy && mSiteValid && willHaveEnough && !mTransaction && agrees_to_covenant);
}
void LLFloaterBuyLandUI::startBuyPreConfirm()
diff --git a/indra/newview/llfloatercamera.cpp b/indra/newview/llfloatercamera.cpp
index d4067452b0..24fba61315 100644
--- a/indra/newview/llfloatercamera.cpp
+++ b/indra/newview/llfloatercamera.cpp
@@ -56,7 +56,6 @@ const F32 CAMERA_BUTTON_DELAY = 0.0f;
#define CONTROLS "controls"
bool LLFloaterCamera::sFreeCamera = false;
-bool LLFloaterCamera::sAppearanceEditing = false;
// Zoom the camera in and out
class LLPanelCameraZoom
@@ -120,15 +119,10 @@ LLPanelCameraItem::LLPanelCameraItem(const LLPanelCameraItem::Params& p)
}
}
-void set_view_visible(LLView* parent, const std::string& name, bool visible)
-{
- parent->getChildView(name)->setVisible(visible);
-}
-
BOOL LLPanelCameraItem::postBuild()
{
- setMouseEnterCallback(boost::bind(set_view_visible, this, "hovered_icon", true));
- setMouseLeaveCallback(boost::bind(set_view_visible, this, "hovered_icon", false));
+ setMouseEnterCallback(boost::bind(&LLPanelCameraItem::childSetVisible, this, "hovered_icon", true));
+ setMouseLeaveCallback(boost::bind(&LLPanelCameraItem::childSetVisible, this, "hovered_icon", false));
setMouseDownCallback(boost::bind(&LLPanelCameraItem::onAnyMouseClick, this));
setRightMouseDownCallback(boost::bind(&LLPanelCameraItem::onAnyMouseClick, this));
return TRUE;
@@ -143,9 +137,9 @@ void LLPanelCameraItem::setValue(const LLSD& value)
{
if (!value.isMap()) return;;
if (!value.has("selected")) return;
- getChildView("selected_icon")->setVisible( value["selected"]);
- getChildView("picture")->setVisible( !value["selected"]);
- getChildView("selected_picture")->setVisible( value["selected"]);
+ childSetVisible("selected_icon", value["selected"]);
+ childSetVisible("picture", !value["selected"]);
+ childSetVisible("selected_picture", value["selected"]);
}
static LLRegisterPanelClassWrapper<LLPanelCameraZoom> t_camera_zoom_panel("camera_zoom_panel");
@@ -243,25 +237,6 @@ void LLFloaterCamera::resetCameraMode()
floater_camera->switchMode(CAMERA_CTRL_MODE_PAN);
}
-void LLFloaterCamera::onAvatarEditingAppearance(bool editing)
-{
- sAppearanceEditing = editing;
- LLFloaterCamera* floater_camera = LLFloaterCamera::findInstance();
- if (!floater_camera) return;
- floater_camera->handleAvatarEditingAppearance(editing);
-}
-
-void LLFloaterCamera::handleAvatarEditingAppearance(bool editing)
-{
- //camera presets (rear, front, etc.)
- getChildView("preset_views_list")->setEnabled(!editing);
- getChildView("presets_btn")->setEnabled(!editing);
-
- //camera modes (object view, mouselook view)
- getChildView("camera_modes_list")->setEnabled(!editing);
- getChildView("avatarview_btn")->setEnabled(!editing);
-}
-
void LLFloaterCamera::update()
{
ECameraControlMode mode = determineMode();
@@ -354,9 +329,6 @@ BOOL LLFloaterCamera::postBuild()
update();
- // ensure that appearance mode is handled while building. See EXT-7796.
- handleAvatarEditingAppearance(sAppearanceEditing);
-
return LLDockableFloater::postBuild();
}
@@ -379,12 +351,6 @@ void LLFloaterCamera::fillFlatlistFromPanel (LLFlatListView* list, LLPanel* pane
ECameraControlMode LLFloaterCamera::determineMode()
{
- if (sAppearanceEditing)
- {
- // this is the only enabled camera mode while editing agent appearance.
- return CAMERA_CTRL_MODE_PAN;
- }
-
LLTool* curr_tool = LLToolMgr::getInstance()->getCurrentTool();
if (curr_tool == LLToolCamera::getInstance())
{
@@ -498,15 +464,15 @@ void LLFloaterCamera::assignButton2Mode(ECameraControlMode mode, const std::stri
void LLFloaterCamera::updateState()
{
- getChildView(ZOOM)->setVisible(CAMERA_CTRL_MODE_PAN == mCurrMode);
+ childSetVisible(ZOOM, CAMERA_CTRL_MODE_PAN == mCurrMode);
bool show_presets = (CAMERA_CTRL_MODE_PRESETS == mCurrMode) || (CAMERA_CTRL_MODE_FREE_CAMERA == mCurrMode
&& CAMERA_CTRL_MODE_PRESETS == mPrevMode);
- getChildView(PRESETS)->setVisible(show_presets);
+ childSetVisible(PRESETS, show_presets);
bool show_camera_modes = CAMERA_CTRL_MODE_MODES == mCurrMode || (CAMERA_CTRL_MODE_FREE_CAMERA == mCurrMode
&& CAMERA_CTRL_MODE_MODES == mPrevMode);
- getChildView("camera_modes_list")->setVisible( show_camera_modes);
+ childSetVisible("camera_modes_list", show_camera_modes);
updateItemsSelection();
diff --git a/indra/newview/llfloatercamera.h b/indra/newview/llfloatercamera.h
index 424191ef26..a76e2f75de 100644
--- a/indra/newview/llfloatercamera.h
+++ b/indra/newview/llfloatercamera.h
@@ -62,9 +62,6 @@ public:
/** resets current camera mode to orbit mode */
static void resetCameraMode();
- /** Called when Avatar is entered/exited editing appearance mode */
- static void onAvatarEditingAppearance(bool editing);
-
/* determines actual mode and updates ui */
void update();
@@ -118,12 +115,9 @@ private:
// fills flatlist with items from given panel
void fillFlatlistFromPanel (LLFlatListView* list, LLPanel* panel);
- void handleAvatarEditingAppearance(bool editing);
-
// set to true when free camera mode is selected in modes list
// remains true until preset camera mode is chosen, or pan button is clicked, or escape pressed
static bool sFreeCamera;
- static bool sAppearanceEditing;
BOOL mClosed;
ECameraControlMode mPrevMode;
ECameraControlMode mCurrMode;
diff --git a/indra/newview/llfloatercolorpicker.cpp b/indra/newview/llfloatercolorpicker.cpp
index 89e745f651..7b86d62c81 100644
--- a/indra/newview/llfloatercolorpicker.cpp
+++ b/indra/newview/llfloatercolorpicker.cpp
@@ -686,12 +686,12 @@ void LLFloaterColorPicker::drawPalette ()
void LLFloaterColorPicker::updateTextEntry ()
{
// set values in spinners
- getChild<LLUICtrl>("rspin")->setValue(( getCurR () * 255.0f ) );
- getChild<LLUICtrl>("gspin")->setValue(( getCurG () * 255.0f ) );
- getChild<LLUICtrl>("bspin")->setValue(( getCurB () * 255.0f ) );
- getChild<LLUICtrl>("hspin")->setValue(( getCurH () * 360.0f ) );
- getChild<LLUICtrl>("sspin")->setValue(( getCurS () * 100.0f ) );
- getChild<LLUICtrl>("lspin")->setValue(( getCurL () * 100.0f ) );
+ childSetValue("rspin", ( getCurR () * 255.0f ) );
+ childSetValue("gspin", ( getCurG () * 255.0f ) );
+ childSetValue("bspin", ( getCurB () * 255.0f ) );
+ childSetValue("hspin", ( getCurH () * 360.0f ) );
+ childSetValue("sspin", ( getCurS () * 100.0f ) );
+ childSetValue("lspin", ( getCurL () * 100.0f ) );
}
//////////////////////////////////////////////////////////////////////////////
diff --git a/indra/newview/llfloaterdaycycle.cpp b/indra/newview/llfloaterdaycycle.cpp
index aacb543267..8135fb85d1 100644
--- a/indra/newview/llfloaterdaycycle.cpp
+++ b/indra/newview/llfloaterdaycycle.cpp
@@ -152,11 +152,11 @@ void LLFloaterDayCycle::syncMenu()
// turn off Use Estate Time button if it's already being used
if( LLWLParamManager::instance()->mAnimator.mUseLindenTime == true)
{
- getChildView("WLUseLindenTime")->setEnabled(FALSE);
+ childDisable("WLUseLindenTime");
}
else
{
- getChildView("WLUseLindenTime")->setEnabled(TRUE);
+ childEnable("WLUseLindenTime");
}
}
diff --git a/indra/newview/llfloaterenvsettings.cpp b/indra/newview/llfloaterenvsettings.cpp
index 337d4934e1..2e0e7600d8 100644
--- a/indra/newview/llfloaterenvsettings.cpp
+++ b/indra/newview/llfloaterenvsettings.cpp
@@ -107,7 +107,7 @@ void LLFloaterEnvSettings::syncMenu()
// sync cloud coverage
bool err;
- getChild<LLUICtrl>("EnvCloudSlider")->setValue(LLWLParamManager::instance()->mCurParams.getFloat("cloud_shadow", err));
+ childSetValue("EnvCloudSlider", LLWLParamManager::instance()->mCurParams.getFloat("cloud_shadow", err));
LLWaterParamManager * param_mgr = LLWaterParamManager::instance();
// sync water params
@@ -116,43 +116,43 @@ void LLFloaterEnvSettings::syncMenu()
col.mV[3] = 1.0f;
colCtrl->set(col);
- getChild<LLUICtrl>("EnvWaterFogSlider")->setValue(param_mgr->mFogDensity.mExp);
+ childSetValue("EnvWaterFogSlider", param_mgr->mFogDensity.mExp);
param_mgr->setDensitySliderValue(param_mgr->mFogDensity.mExp);
// turn off Use Estate Time button if it's already being used
if(LLWLParamManager::instance()->mAnimator.mUseLindenTime)
{
- getChildView("EnvUseEstateTimeButton")->setEnabled(FALSE);
+ childDisable("EnvUseEstateTimeButton");
} else {
- getChildView("EnvUseEstateTimeButton")->setEnabled(TRUE);
+ childEnable("EnvUseEstateTimeButton");
}
if(!gPipeline.canUseVertexShaders())
{
- getChildView("EnvWaterColor")->setEnabled(FALSE);
- getChildView("EnvWaterColorText")->setEnabled(FALSE);
- //getChildView("EnvAdvancedWaterButton")->setEnabled(FALSE);
+ childDisable("EnvWaterColor");
+ childDisable("EnvWaterColorText");
+ //childDisable("EnvAdvancedWaterButton");
}
else
{
- getChildView("EnvWaterColor")->setEnabled(TRUE);
- getChildView("EnvWaterColorText")->setEnabled(TRUE);
- //getChildView("EnvAdvancedWaterButton")->setEnabled(TRUE);
+ childEnable("EnvWaterColor");
+ childEnable("EnvWaterColorText");
+ //childEnable("EnvAdvancedWaterButton");
}
// only allow access to these if they are using windlight
if(!gPipeline.canUseWindLightShaders())
{
- getChildView("EnvCloudSlider")->setEnabled(FALSE);
- getChildView("EnvCloudText")->setEnabled(FALSE);
- //getChildView("EnvAdvancedSkyButton")->setEnabled(FALSE);
+ childDisable("EnvCloudSlider");
+ childDisable("EnvCloudText");
+ //childDisable("EnvAdvancedSkyButton");
}
else
{
- getChildView("EnvCloudSlider")->setEnabled(TRUE);
- getChildView("EnvCloudText")->setEnabled(TRUE);
- //getChildView("EnvAdvancedSkyButton")->setEnabled(TRUE);
+ childEnable("EnvCloudSlider");
+ childEnable("EnvCloudText");
+ //childEnable("EnvAdvancedSkyButton");
}
}
diff --git a/indra/newview/llfloaterevent.cpp b/indra/newview/llfloaterevent.cpp
index ee2ba2ba54..ade4492174 100644
--- a/indra/newview/llfloaterevent.cpp
+++ b/indra/newview/llfloaterevent.cpp
@@ -209,10 +209,10 @@ void LLFloaterEvent::processEventInfoReply(LLMessageSystem *msg, void **)
std::string desc = floater->mEventInfo.mSimName + llformat(" (%d, %d, %d)", region_x, region_y, region_z);
floater->mTBLocation->setText(desc);
- floater->getChildView("rating_icon_m")->setVisible( FALSE);
- floater->getChildView("rating_icon_r")->setVisible( FALSE);
- floater->getChildView("rating_icon_pg")->setVisible( FALSE);
- floater->getChild<LLUICtrl>("rating_value")->setValue(floater->getString("unknown"));
+ floater->childSetVisible("rating_icon_m", FALSE);
+ floater->childSetVisible("rating_icon_r", FALSE);
+ floater->childSetVisible("rating_icon_pg", FALSE);
+ floater->childSetValue("rating_value", floater->getString("unknown"));
//for some reason there's not adult flags for now, so see if region is adult and then
//set flags
@@ -253,25 +253,25 @@ void LLFloaterEvent::regionInfoCallback(U32 event_id, U64 region_handle)
// update the event with the maturity info
if (sim_info->isAdult())
{
- floater->getChildView("rating_icon_m")->setVisible( FALSE);
- floater->getChildView("rating_icon_r")->setVisible( TRUE);
- floater->getChildView("rating_icon_pg")->setVisible( FALSE);
- floater->getChild<LLUICtrl>("rating_value")->setValue(floater->getString("adult"));
+ floater->childSetVisible("rating_icon_m", FALSE);
+ floater->childSetVisible("rating_icon_r", TRUE);
+ floater->childSetVisible("rating_icon_pg", FALSE);
+ floater->childSetValue("rating_value", floater->getString("adult"));
}
else if (floater->mEventInfo.mEventFlags & EVENT_FLAG_MATURE)
{
- floater->getChildView("rating_icon_m")->setVisible( TRUE);
- floater->getChildView("rating_icon_r")->setVisible( FALSE);
- floater->getChildView("rating_icon_pg")->setVisible( FALSE);
- floater->getChild<LLUICtrl>("rating_value")->setValue(floater->getString("moderate"));
+ floater->childSetVisible("rating_icon_m", TRUE);
+ floater->childSetVisible("rating_icon_r", FALSE);
+ floater->childSetVisible("rating_icon_pg", FALSE);
+ floater->childSetValue("rating_value", floater->getString("moderate"));
}
else
{
- floater->getChildView("rating_icon_m")->setVisible( FALSE);
- floater->getChildView("rating_icon_r")->setVisible( FALSE);
- floater->getChildView("rating_icon_pg")->setVisible( TRUE);
- floater->getChild<LLUICtrl>("rating_value")->setValue(floater->getString("general"));
+ floater->childSetVisible("rating_icon_m", FALSE);
+ floater->childSetVisible("rating_icon_r", FALSE);
+ floater->childSetVisible("rating_icon_pg", TRUE);
+ floater->childSetValue("rating_value", floater->getString("general"));
}
}
}
diff --git a/indra/newview/llfloatergesture.cpp b/indra/newview/llfloatergesture.cpp
index ef3c8b764e..989f32c7c1 100644
--- a/indra/newview/llfloatergesture.cpp
+++ b/indra/newview/llfloatergesture.cpp
@@ -188,8 +188,8 @@ BOOL LLFloaterGesture::postBuild()
getChild<LLUICtrl>("new_gesture_btn")->setCommitCallback(boost::bind(&LLFloaterGesture::onClickNew, this));
getChild<LLButton>("del_btn")->setClickedCallback(boost::bind(&LLFloaterGesture::onDeleteSelected, this));
- getChildView("play_btn")->setVisible( true);
- getChildView("stop_btn")->setVisible( false);
+ childSetVisible("play_btn", true);
+ childSetVisible("stop_btn", false);
setDefaultBtn("play_btn");
mGestureFolderID = gInventory.findCategoryUUIDForType(LLFolderType::FT_GESTURE, false);
@@ -557,13 +557,13 @@ void LLFloaterGesture::onCommitList()
mSelectedID = item_id;
if (LLGestureMgr::instance().isGesturePlaying(item_id))
{
- getChildView("play_btn")->setVisible( false);
- getChildView("stop_btn")->setVisible( true);
+ childSetVisible("play_btn", false);
+ childSetVisible("stop_btn", true);
}
else
{
- getChildView("play_btn")->setVisible( true);
- getChildView("stop_btn")->setVisible( false);
+ childSetVisible("play_btn", true);
+ childSetVisible("stop_btn", false);
}
}
diff --git a/indra/newview/llfloatergodtools.cpp b/indra/newview/llfloatergodtools.cpp
index f95112a8ab..fa8d7a57d5 100644
--- a/indra/newview/llfloatergodtools.cpp
+++ b/indra/newview/llfloatergodtools.cpp
@@ -82,7 +82,7 @@ void LLFloaterGodTools::onOpen(const LLSD& key)
{
center();
setFocus(TRUE);
-// LLPanel *panel = getChild<LLTabContainer>("GodTools Tabs")->getCurrentPanel();
+// LLPanel *panel = childGetVisibleTab("GodTools Tabs");
// if (panel)
// panel->setFocus(TRUE);
if (mPanelObjectTools)
@@ -128,7 +128,7 @@ LLFloaterGodTools::LLFloaterGodTools(const LLSD& key)
BOOL LLFloaterGodTools::postBuild()
{
sendRegionInfoRequest();
- getChild<LLTabContainer>("GodTools Tabs")->selectTabByName("region");
+ childShowTab("GodTools Tabs", "region");
return TRUE;
}
// static
@@ -197,9 +197,9 @@ void LLFloaterGodTools::draw()
void LLFloaterGodTools::showPanel(const std::string& panel_name)
{
- getChild<LLTabContainer>("GodTools Tabs")->selectTabByName(panel_name);
+ childShowTab("GodTools Tabs", panel_name);
openFloater();
- LLPanel *panel = getChild<LLTabContainer>("GodTools Tabs")->getCurrentPanel();
+ LLPanel *panel = childGetVisibleTab("GodTools Tabs");
if (panel)
panel->setFocus(TRUE);
}
@@ -410,17 +410,17 @@ LLPanelRegionTools::LLPanelRegionTools()
BOOL LLPanelRegionTools::postBuild()
{
getChild<LLLineEditor>("region name")->setKeystrokeCallback(onChangeSimName, this);
- getChild<LLLineEditor>("region name")->setPrevalidate(&LLTextValidate::validateASCIIPrintableNoPipe);
- getChild<LLLineEditor>("estate")->setPrevalidate(&LLTextValidate::validatePositiveS32);
- getChild<LLLineEditor>("parentestate")->setPrevalidate(&LLTextValidate::validatePositiveS32);
- getChildView("parentestate")->setEnabled(FALSE);
- getChild<LLLineEditor>("gridposx")->setPrevalidate(&LLTextValidate::validatePositiveS32);
- getChildView("gridposx")->setEnabled(FALSE);
- getChild<LLLineEditor>("gridposy")->setPrevalidate(&LLTextValidate::validatePositiveS32);
- getChildView("gridposy")->setEnabled(FALSE);
+ childSetPrevalidate("region name", &LLTextValidate::validateASCIIPrintableNoPipe);
+ childSetPrevalidate("estate", &LLTextValidate::validatePositiveS32);
+ childSetPrevalidate("parentestate", &LLTextValidate::validatePositiveS32);
+ childDisable("parentestate");
+ childSetPrevalidate("gridposx", &LLTextValidate::validatePositiveS32);
+ childDisable("gridposx");
+ childSetPrevalidate("gridposy", &LLTextValidate::validatePositiveS32);
+ childDisable("gridposy");
- getChild<LLLineEditor>("redirectx")->setPrevalidate(&LLTextValidate::validatePositiveS32);
- getChild<LLLineEditor>("redirecty")->setPrevalidate(&LLTextValidate::validatePositiveS32);
+ childSetPrevalidate("redirectx", &LLTextValidate::validatePositiveS32);
+ childSetPrevalidate("redirecty", &LLTextValidate::validatePositiveS32);
return TRUE;
}
@@ -447,42 +447,42 @@ void LLPanelRegionTools::refresh()
void LLPanelRegionTools::clearAllWidgets()
{
// clear all widgets
- getChild<LLUICtrl>("region name")->setValue("unknown");
- getChild<LLUICtrl>("region name")->setFocus( FALSE);
+ childSetValue("region name", "unknown");
+ childSetFocus("region name", FALSE);
- getChild<LLUICtrl>("check prelude")->setValue(FALSE);
- getChildView("check prelude")->setEnabled(FALSE);
+ childSetValue("check prelude", FALSE);
+ childDisable("check prelude");
- getChild<LLUICtrl>("check fixed sun")->setValue(FALSE);
- getChildView("check fixed sun")->setEnabled(FALSE);
+ childSetValue("check fixed sun", FALSE);
+ childDisable("check fixed sun");
- getChild<LLUICtrl>("check reset home")->setValue(FALSE);
- getChildView("check reset home")->setEnabled(FALSE);
+ childSetValue("check reset home", FALSE);
+ childDisable("check reset home");
- getChild<LLUICtrl>("check damage")->setValue(FALSE);
- getChildView("check damage")->setEnabled(FALSE);
+ childSetValue("check damage", FALSE);
+ childDisable("check damage");
- getChild<LLUICtrl>("check visible")->setValue(FALSE);
- getChildView("check visible")->setEnabled(FALSE);
+ childSetValue("check visible", FALSE);
+ childDisable("check visible");
- getChild<LLUICtrl>("block terraform")->setValue(FALSE);
- getChildView("block terraform")->setEnabled(FALSE);
+ childSetValue("block terraform", FALSE);
+ childDisable("block terraform");
- getChild<LLUICtrl>("block dwell")->setValue(FALSE);
- getChildView("block dwell")->setEnabled(FALSE);
+ childSetValue("block dwell", FALSE);
+ childDisable("block dwell");
- getChild<LLUICtrl>("is sandbox")->setValue(FALSE);
- getChildView("is sandbox")->setEnabled(FALSE);
+ childSetValue("is sandbox", FALSE);
+ childDisable("is sandbox");
- getChild<LLUICtrl>("billable factor")->setValue(BILLABLE_FACTOR_DEFAULT);
- getChildView("billable factor")->setEnabled(FALSE);
+ childSetValue("billable factor", BILLABLE_FACTOR_DEFAULT);
+ childDisable("billable factor");
- getChild<LLUICtrl>("land cost")->setValue(PRICE_PER_METER_DEFAULT);
- getChildView("land cost")->setEnabled(FALSE);
+ childSetValue("land cost", PRICE_PER_METER_DEFAULT);
+ childDisable("land cost");
- getChildView("Apply")->setEnabled(FALSE);
- getChildView("Bake Terrain")->setEnabled(FALSE);
- getChildView("Autosave now")->setEnabled(FALSE);
+ childDisable("Apply");
+ childDisable("Bake Terrain");
+ childDisable("Autosave now");
}
@@ -490,21 +490,21 @@ void LLPanelRegionTools::enableAllWidgets()
{
// enable all of the widgets
- getChildView("check prelude")->setEnabled(TRUE);
- getChildView("check fixed sun")->setEnabled(TRUE);
- getChildView("check reset home")->setEnabled(TRUE);
- getChildView("check damage")->setEnabled(TRUE);
- getChildView("check visible")->setEnabled(FALSE); // use estates to update...
- getChildView("block terraform")->setEnabled(TRUE);
- getChildView("block dwell")->setEnabled(TRUE);
- getChildView("is sandbox")->setEnabled(TRUE);
+ childEnable("check prelude");
+ childEnable("check fixed sun");
+ childEnable("check reset home");
+ childEnable("check damage");
+ childDisable("check visible"); // use estates to update...
+ childEnable("block terraform");
+ childEnable("block dwell");
+ childEnable("is sandbox");
- getChildView("billable factor")->setEnabled(TRUE);
- getChildView("land cost")->setEnabled(TRUE);
+ childEnable("billable factor");
+ childEnable("land cost");
- getChildView("Apply")->setEnabled(FALSE); // don't enable this one
- getChildView("Bake Terrain")->setEnabled(TRUE);
- getChildView("Autosave now")->setEnabled(TRUE);
+ childDisable("Apply"); // don't enable this one
+ childEnable("Bake Terrain");
+ childEnable("Autosave now");
}
void LLPanelRegionTools::onSaveState(void* userdata)
@@ -524,74 +524,74 @@ void LLPanelRegionTools::onSaveState(void* userdata)
const std::string LLPanelRegionTools::getSimName() const
{
- return getChild<LLUICtrl>("region name")->getValue();
+ return childGetValue("region name");
}
U32 LLPanelRegionTools::getEstateID() const
{
- U32 id = (U32)getChild<LLUICtrl>("estate")->getValue().asInteger();
+ U32 id = (U32)childGetValue("estate").asInteger();
return id;
}
U32 LLPanelRegionTools::getParentEstateID() const
{
- U32 id = (U32)getChild<LLUICtrl>("parentestate")->getValue().asInteger();
+ U32 id = (U32)childGetValue("parentestate").asInteger();
return id;
}
S32 LLPanelRegionTools::getRedirectGridX() const
{
- return getChild<LLUICtrl>("redirectx")->getValue().asInteger();
+ return childGetValue("redirectx").asInteger();
}
S32 LLPanelRegionTools::getRedirectGridY() const
{
- return getChild<LLUICtrl>("redirecty")->getValue().asInteger();
+ return childGetValue("redirecty").asInteger();
}
S32 LLPanelRegionTools::getGridPosX() const
{
- return getChild<LLUICtrl>("gridposx")->getValue().asInteger();
+ return childGetValue("gridposx").asInteger();
}
S32 LLPanelRegionTools::getGridPosY() const
{
- return getChild<LLUICtrl>("gridposy")->getValue().asInteger();
+ return childGetValue("gridposy").asInteger();
}
U32 LLPanelRegionTools::getRegionFlags() const
{
U32 flags = 0x0;
- flags = getChild<LLUICtrl>("check prelude")->getValue().asBoolean()
+ flags = childGetValue("check prelude").asBoolean()
? set_prelude_flags(flags)
: unset_prelude_flags(flags);
// override prelude
- if (getChild<LLUICtrl>("check fixed sun")->getValue().asBoolean())
+ if (childGetValue("check fixed sun").asBoolean())
{
flags |= REGION_FLAGS_SUN_FIXED;
}
- if (getChild<LLUICtrl>("check reset home")->getValue().asBoolean())
+ if (childGetValue("check reset home").asBoolean())
{
flags |= REGION_FLAGS_RESET_HOME_ON_TELEPORT;
}
- if (getChild<LLUICtrl>("check visible")->getValue().asBoolean())
+ if (childGetValue("check visible").asBoolean())
{
flags |= REGION_FLAGS_EXTERNALLY_VISIBLE;
}
- if (getChild<LLUICtrl>("check damage")->getValue().asBoolean())
+ if (childGetValue("check damage").asBoolean())
{
flags |= REGION_FLAGS_ALLOW_DAMAGE;
}
- if (getChild<LLUICtrl>("block terraform")->getValue().asBoolean())
+ if (childGetValue("block terraform").asBoolean())
{
flags |= REGION_FLAGS_BLOCK_TERRAFORM;
}
- if (getChild<LLUICtrl>("block dwell")->getValue().asBoolean())
+ if (childGetValue("block dwell").asBoolean())
{
flags |= REGION_FLAGS_BLOCK_DWELL;
}
- if (getChild<LLUICtrl>("is sandbox")->getValue().asBoolean())
+ if (childGetValue("is sandbox").asBoolean())
{
flags |= REGION_FLAGS_SANDBOX;
}
@@ -601,35 +601,35 @@ U32 LLPanelRegionTools::getRegionFlags() const
U32 LLPanelRegionTools::getRegionFlagsMask() const
{
U32 flags = 0xffffffff;
- flags = getChild<LLUICtrl>("check prelude")->getValue().asBoolean()
+ flags = childGetValue("check prelude").asBoolean()
? set_prelude_flags(flags)
: unset_prelude_flags(flags);
- if (!getChild<LLUICtrl>("check fixed sun")->getValue().asBoolean())
+ if (!childGetValue("check fixed sun").asBoolean())
{
flags &= ~REGION_FLAGS_SUN_FIXED;
}
- if (!getChild<LLUICtrl>("check reset home")->getValue().asBoolean())
+ if (!childGetValue("check reset home").asBoolean())
{
flags &= ~REGION_FLAGS_RESET_HOME_ON_TELEPORT;
}
- if (!getChild<LLUICtrl>("check visible")->getValue().asBoolean())
+ if (!childGetValue("check visible").asBoolean())
{
flags &= ~REGION_FLAGS_EXTERNALLY_VISIBLE;
}
- if (!getChild<LLUICtrl>("check damage")->getValue().asBoolean())
+ if (!childGetValue("check damage").asBoolean())
{
flags &= ~REGION_FLAGS_ALLOW_DAMAGE;
}
- if (!getChild<LLUICtrl>("block terraform")->getValue().asBoolean())
+ if (!childGetValue("block terraform").asBoolean())
{
flags &= ~REGION_FLAGS_BLOCK_TERRAFORM;
}
- if (!getChild<LLUICtrl>("block dwell")->getValue().asBoolean())
+ if (!childGetValue("block dwell").asBoolean())
{
flags &= ~REGION_FLAGS_BLOCK_DWELL;
}
- if (!getChild<LLUICtrl>("is sandbox")->getValue().asBoolean())
+ if (!childGetValue("is sandbox").asBoolean())
{
flags &= ~REGION_FLAGS_SANDBOX;
}
@@ -638,86 +638,86 @@ U32 LLPanelRegionTools::getRegionFlagsMask() const
F32 LLPanelRegionTools::getBillableFactor() const
{
- return (F32)getChild<LLUICtrl>("billable factor")->getValue().asReal();
+ return (F32)childGetValue("billable factor").asReal();
}
S32 LLPanelRegionTools::getPricePerMeter() const
{
- return getChild<LLUICtrl>("land cost")->getValue();
+ return childGetValue("land cost");
}
void LLPanelRegionTools::setSimName(const std::string& name)
{
- getChild<LLUICtrl>("region name")->setValue(name);
+ childSetValue("region name", name);
}
void LLPanelRegionTools::setEstateID(U32 id)
{
- getChild<LLUICtrl>("estate")->setValue((S32)id);
+ childSetValue("estate", (S32)id);
}
void LLPanelRegionTools::setGridPosX(S32 pos)
{
- getChild<LLUICtrl>("gridposx")->setValue(pos);
+ childSetValue("gridposx", pos);
}
void LLPanelRegionTools::setGridPosY(S32 pos)
{
- getChild<LLUICtrl>("gridposy")->setValue(pos);
+ childSetValue("gridposy", pos);
}
void LLPanelRegionTools::setRedirectGridX(S32 pos)
{
- getChild<LLUICtrl>("redirectx")->setValue(pos);
+ childSetValue("redirectx", pos);
}
void LLPanelRegionTools::setRedirectGridY(S32 pos)
{
- getChild<LLUICtrl>("redirecty")->setValue(pos);
+ childSetValue("redirecty", pos);
}
void LLPanelRegionTools::setParentEstateID(U32 id)
{
- getChild<LLUICtrl>("parentestate")->setValue((S32)id);
+ childSetValue("parentestate", (S32)id);
}
void LLPanelRegionTools::setCheckFlags(U32 flags)
{
- getChild<LLUICtrl>("check prelude")->setValue(is_prelude(flags) ? TRUE : FALSE);
- getChild<LLUICtrl>("check fixed sun")->setValue(flags & REGION_FLAGS_SUN_FIXED ? TRUE : FALSE);
- getChild<LLUICtrl>("check reset home")->setValue(flags & REGION_FLAGS_RESET_HOME_ON_TELEPORT ? TRUE : FALSE);
- getChild<LLUICtrl>("check damage")->setValue(flags & REGION_FLAGS_ALLOW_DAMAGE ? TRUE : FALSE);
- getChild<LLUICtrl>("check visible")->setValue(flags & REGION_FLAGS_EXTERNALLY_VISIBLE ? TRUE : FALSE);
- getChild<LLUICtrl>("block terraform")->setValue(flags & REGION_FLAGS_BLOCK_TERRAFORM ? TRUE : FALSE);
- getChild<LLUICtrl>("block dwell")->setValue(flags & REGION_FLAGS_BLOCK_DWELL ? TRUE : FALSE);
- getChild<LLUICtrl>("is sandbox")->setValue(flags & REGION_FLAGS_SANDBOX ? TRUE : FALSE );
+ childSetValue("check prelude", is_prelude(flags) ? TRUE : FALSE);
+ childSetValue("check fixed sun", flags & REGION_FLAGS_SUN_FIXED ? TRUE : FALSE);
+ childSetValue("check reset home", flags & REGION_FLAGS_RESET_HOME_ON_TELEPORT ? TRUE : FALSE);
+ childSetValue("check damage", flags & REGION_FLAGS_ALLOW_DAMAGE ? TRUE : FALSE);
+ childSetValue("check visible", flags & REGION_FLAGS_EXTERNALLY_VISIBLE ? TRUE : FALSE);
+ childSetValue("block terraform", flags & REGION_FLAGS_BLOCK_TERRAFORM ? TRUE : FALSE);
+ childSetValue("block dwell", flags & REGION_FLAGS_BLOCK_DWELL ? TRUE : FALSE);
+ childSetValue("is sandbox", flags & REGION_FLAGS_SANDBOX ? TRUE : FALSE );
}
void LLPanelRegionTools::setBillableFactor(F32 billable_factor)
{
- getChild<LLUICtrl>("billable factor")->setValue(billable_factor);
+ childSetValue("billable factor", billable_factor);
}
void LLPanelRegionTools::setPricePerMeter(S32 price)
{
- getChild<LLUICtrl>("land cost")->setValue(price);
+ childSetValue("land cost", price);
}
void LLPanelRegionTools::onChangeAnything()
{
if (gAgent.isGodlike())
{
- getChildView("Apply")->setEnabled(TRUE);
+ childEnable("Apply");
}
}
void LLPanelRegionTools::onChangePrelude()
{
// checking prelude auto-checks fixed sun
- if (getChild<LLUICtrl>("check prelude")->getValue().asBoolean())
+ if (childGetValue("check prelude").asBoolean())
{
- getChild<LLUICtrl>("check fixed sun")->setValue(TRUE);
- getChild<LLUICtrl>("check reset home")->setValue(TRUE);
+ childSetValue("check fixed sun", TRUE);
+ childSetValue("check reset home", TRUE);
onChangeAnything();
}
// pass on to default onChange handler
@@ -730,7 +730,7 @@ void LLPanelRegionTools::onChangeSimName(LLLineEditor* caller, void* userdata )
if (userdata && gAgent.isGodlike())
{
LLPanelRegionTools* region_tools = (LLPanelRegionTools*) userdata;
- region_tools->getChildView("Apply")->setEnabled(TRUE);
+ region_tools->childEnable("Apply");
}
}
@@ -755,7 +755,7 @@ void LLPanelRegionTools::onApplyChanges()
LLViewerRegion *region = gAgent.getRegion();
if (region && gAgent.isGodlike())
{
- getChildView("Apply")->setEnabled(FALSE);
+ childDisable("Apply");
god_tools->sendGodUpdateRegionInfo();
//LLFloaterReg::getTypedInstance<LLFloaterGodTools>("god_tools")->sendGodUpdateRegionInfo();
}
@@ -925,7 +925,7 @@ void LLPanelObjectTools::setTargetAvatar(const LLUUID &target_id)
mTargetAvatar = target_id;
if (target_id.isNull())
{
- getChild<LLUICtrl>("target_avatar_name")->setValue(getString("no_target"));
+ childSetValue("target_avatar_name", getString("no_target"));
}
}
@@ -935,14 +935,14 @@ void LLPanelObjectTools::refresh()
LLViewerRegion *regionp = gAgent.getRegion();
if (regionp)
{
- getChild<LLUICtrl>("region name")->setValue(regionp->getName());
+ childSetText("region name", regionp->getName());
}
}
U32 LLPanelObjectTools::computeRegionFlags(U32 flags) const
{
- if (getChild<LLUICtrl>("disable scripts")->getValue().asBoolean())
+ if (childGetValue("disable scripts").asBoolean())
{
flags |= REGION_FLAGS_SKIP_SCRIPTS;
}
@@ -950,7 +950,7 @@ U32 LLPanelObjectTools::computeRegionFlags(U32 flags) const
{
flags &= ~REGION_FLAGS_SKIP_SCRIPTS;
}
- if (getChild<LLUICtrl>("disable collisions")->getValue().asBoolean())
+ if (childGetValue("disable collisions").asBoolean())
{
flags |= REGION_FLAGS_SKIP_COLLISIONS;
}
@@ -958,7 +958,7 @@ U32 LLPanelObjectTools::computeRegionFlags(U32 flags) const
{
flags &= ~REGION_FLAGS_SKIP_COLLISIONS;
}
- if (getChild<LLUICtrl>("disable physics")->getValue().asBoolean())
+ if (childGetValue("disable physics").asBoolean())
{
flags |= REGION_FLAGS_SKIP_PHYSICS;
}
@@ -972,36 +972,36 @@ U32 LLPanelObjectTools::computeRegionFlags(U32 flags) const
void LLPanelObjectTools::setCheckFlags(U32 flags)
{
- getChild<LLUICtrl>("disable scripts")->setValue(flags & REGION_FLAGS_SKIP_SCRIPTS ? TRUE : FALSE);
- getChild<LLUICtrl>("disable collisions")->setValue(flags & REGION_FLAGS_SKIP_COLLISIONS ? TRUE : FALSE);
- getChild<LLUICtrl>("disable physics")->setValue(flags & REGION_FLAGS_SKIP_PHYSICS ? TRUE : FALSE);
+ childSetValue("disable scripts", flags & REGION_FLAGS_SKIP_SCRIPTS ? TRUE : FALSE);
+ childSetValue("disable collisions", flags & REGION_FLAGS_SKIP_COLLISIONS ? TRUE : FALSE);
+ childSetValue("disable physics", flags & REGION_FLAGS_SKIP_PHYSICS ? TRUE : FALSE);
}
void LLPanelObjectTools::clearAllWidgets()
{
- getChild<LLUICtrl>("disable scripts")->setValue(FALSE);
- getChildView("disable scripts")->setEnabled(FALSE);
+ childSetValue("disable scripts", FALSE);
+ childDisable("disable scripts");
- getChildView("Apply")->setEnabled(FALSE);
- getChildView("Set Target")->setEnabled(FALSE);
- getChildView("Delete Target's Scripted Objects On Others Land")->setEnabled(FALSE);
- getChildView("Delete Target's Scripted Objects On *Any* Land")->setEnabled(FALSE);
- getChildView("Delete *ALL* Of Target's Objects")->setEnabled(FALSE);
+ childDisable("Apply");
+ childDisable("Set Target");
+ childDisable("Delete Target's Scripted Objects On Others Land");
+ childDisable("Delete Target's Scripted Objects On *Any* Land");
+ childDisable("Delete *ALL* Of Target's Objects");
}
void LLPanelObjectTools::enableAllWidgets()
{
- getChildView("disable scripts")->setEnabled(TRUE);
+ childEnable("disable scripts");
- getChildView("Apply")->setEnabled(FALSE); // don't enable this one
- getChildView("Set Target")->setEnabled(TRUE);
- getChildView("Delete Target's Scripted Objects On Others Land")->setEnabled(TRUE);
- getChildView("Delete Target's Scripted Objects On *Any* Land")->setEnabled(TRUE);
- getChildView("Delete *ALL* Of Target's Objects")->setEnabled(TRUE);
- getChildView("Get Top Colliders")->setEnabled(TRUE);
- getChildView("Get Top Scripts")->setEnabled(TRUE);
+ childDisable("Apply"); // don't enable this one
+ childEnable("Set Target");
+ childEnable("Delete Target's Scripted Objects On Others Land");
+ childEnable("Delete Target's Scripted Objects On *Any* Land");
+ childEnable("Delete *ALL* Of Target's Objects");
+ childEnable("Get Top Colliders");
+ childEnable("Get Top Scripts");
}
@@ -1051,7 +1051,7 @@ void LLPanelObjectTools::onClickDeletePublicOwnedBy()
SWD_SCRIPTED_ONLY | SWD_OTHERS_LAND_ONLY;
LLSD args;
- args["AVATAR_NAME"] = getChild<LLUICtrl>("target_avatar_name")->getValue().asString();
+ args["AVATAR_NAME"] = childGetValue("target_avatar_name").asString();
LLSD payload;
payload["avatar_id"] = mTargetAvatar;
payload["flags"] = (S32)mSimWideDeletesFlags;
@@ -1071,7 +1071,7 @@ void LLPanelObjectTools::onClickDeleteAllScriptedOwnedBy()
mSimWideDeletesFlags = SWD_SCRIPTED_ONLY;
LLSD args;
- args["AVATAR_NAME"] = getChild<LLUICtrl>("target_avatar_name")->getValue().asString();
+ args["AVATAR_NAME"] = childGetValue("target_avatar_name").asString();
LLSD payload;
payload["avatar_id"] = mTargetAvatar;
payload["flags"] = (S32)mSimWideDeletesFlags;
@@ -1091,7 +1091,7 @@ void LLPanelObjectTools::onClickDeleteAllOwnedBy()
mSimWideDeletesFlags = 0;
LLSD args;
- args["AVATAR_NAME"] = getChild<LLUICtrl>("target_avatar_name")->getValue().asString();
+ args["AVATAR_NAME"] = childGetValue("target_avatar_name").asString();
LLSD payload;
payload["avatar_id"] = mTargetAvatar;
payload["flags"] = (S32)mSimWideDeletesFlags;
@@ -1142,14 +1142,14 @@ void LLPanelObjectTools::onClickSetBySelection(void* data)
args["[OBJECT]"] = node->mName;
args["[OWNER]"] = owner_name;
std::string name = LLTrans::getString("GodToolsObjectOwnedBy", args);
- panelp->getChild<LLUICtrl>("target_avatar_name")->setValue(name);
+ panelp->childSetValue("target_avatar_name", name);
}
void LLPanelObjectTools::callbackAvatarID(const std::vector<std::string>& names, const uuid_vec_t& ids)
{
if (ids.empty() || names.empty()) return;
mTargetAvatar = ids[0];
- getChild<LLUICtrl>("target_avatar_name")->setValue(names[0]);
+ childSetValue("target_avatar_name", names[0]);
refresh();
}
@@ -1157,7 +1157,7 @@ void LLPanelObjectTools::onChangeAnything()
{
if (gAgent.isGodlike())
{
- getChildView("Apply")->setEnabled(TRUE);
+ childEnable("Apply");
}
}
@@ -1169,7 +1169,7 @@ void LLPanelObjectTools::onApplyChanges()
if (region && gAgent.isGodlike())
{
// TODO -- implement this
- getChildView("Apply")->setEnabled(FALSE);
+ childDisable("Apply");
god_tools->sendGodUpdateRegionInfo();
//LLFloaterReg::getTypedInstance<LLFloaterGodTools>("god_tools")->sendGodUpdateRegionInfo();
}
@@ -1202,7 +1202,7 @@ BOOL LLPanelRequestTools::postBuild()
void LLPanelRequestTools::refresh()
{
- std::string buffer = getChild<LLUICtrl>("destination")->getValue();
+ std::string buffer = childGetValue("destination");
LLCtrlListInterface *list = childGetListInterface("destination");
if (!list) return;
@@ -1257,12 +1257,12 @@ void LLPanelRequestTools::sendRequest(const std::string& request,
void LLPanelRequestTools::onClickRequest()
{
- const std::string dest = getChild<LLUICtrl>("destination")->getValue().asString();
+ const std::string dest = childGetValue("destination").asString();
if(dest == SELECTION)
{
- std::string req =getChild<LLUICtrl>("request")->getValue();
+ std::string req =childGetValue("request");
req = req.substr(0, req.find_first_of(" "));
- std::string param = getChild<LLUICtrl>("parameter")->getValue();
+ std::string param = childGetValue("parameter");
LLSelectMgr::getInstance()->sendGodlikeRequest(req, param);
}
else if(dest == AGENT_REGION)
@@ -1301,7 +1301,7 @@ void LLPanelRequestTools::sendRequest(const LLHost& host)
{
// intercept viewer local actions here
- std::string req = getChild<LLUICtrl>("request")->getValue();
+ std::string req = childGetValue("request");
if (req == "terrain download")
{
gXferManager->requestFile(std::string("terrain.raw"), std::string("terrain.raw"), LL_PATH_NONE,
@@ -1313,7 +1313,7 @@ void LLPanelRequestTools::sendRequest(const LLHost& host)
else
{
req = req.substr(0, req.find_first_of(" "));
- sendRequest(req, getChild<LLUICtrl>("parameter")->getValue().asString(), host);
+ sendRequest(req, childGetValue("parameter").asString(), host);
}
}
diff --git a/indra/newview/llfloatergroups.cpp b/indra/newview/llfloatergroups.cpp
index 3cd2154531..f3a3a3c41a 100644
--- a/indra/newview/llfloatergroups.cpp
+++ b/indra/newview/llfloatergroups.cpp
@@ -41,6 +41,7 @@
#include "llbutton.h"
#include "llgroupactions.h"
#include "llscrolllistctrl.h"
+#include "llselectmgr.h"
#include "lltextbox.h"
#include "lluictrlfactory.h"
#include "lltrans.h"
@@ -83,13 +84,15 @@ BOOL LLFloaterGroupPicker::postBuild()
list_ctrl->setContextMenu(LLScrollListCtrl::MENU_GROUP);
}
+ LLSelectMgr::getInstance()->mUpdateSignal.connect(boost::bind(&LLFloaterGroupPicker::onBtnCancel, this));
+
childSetAction("OK", onBtnOK, this);
childSetAction("Cancel", onBtnCancel, this);
setDefaultBtn("OK");
- getChildView("OK")->setEnabled(TRUE);
+ childEnable("OK");
return TRUE;
}
@@ -170,8 +173,8 @@ void LLPanelGroups::reset()
{
group_list->operateOnAll(LLCtrlListInterface::OP_DELETE);
}
- getChild<LLUICtrl>("groupcount")->setTextArg("[COUNT]", llformat("%d",gAgent.mGroups.count()));
- getChild<LLUICtrl>("groupcount")->setTextArg("[MAX]", llformat("%d",MAX_AGENT_GROUPS));
+ childSetTextArg("groupcount", "[COUNT]", llformat("%d",gAgent.mGroups.count()));
+ childSetTextArg("groupcount", "[MAX]", llformat("%d",MAX_AGENT_GROUPS));
init_group_list(getChild<LLScrollListCtrl>("group list"), gAgent.getGroupID());
enableButtons();
@@ -181,8 +184,8 @@ BOOL LLPanelGroups::postBuild()
{
childSetCommitCallback("group list", onGroupList, this);
- getChild<LLUICtrl>("groupcount")->setTextArg("[COUNT]", llformat("%d",gAgent.mGroups.count()));
- getChild<LLUICtrl>("groupcount")->setTextArg("[MAX]", llformat("%d",MAX_AGENT_GROUPS));
+ childSetTextArg("groupcount", "[COUNT]", llformat("%d",gAgent.mGroups.count()));
+ childSetTextArg("groupcount", "[MAX]", llformat("%d",MAX_AGENT_GROUPS));
LLScrollListCtrl *list = getChild<LLScrollListCtrl>("group list");
if (list)
@@ -222,25 +225,25 @@ void LLPanelGroups::enableButtons()
if(group_id != gAgent.getGroupID())
{
- getChildView("Activate")->setEnabled(TRUE);
+ childEnable("Activate");
}
else
{
- getChildView("Activate")->setEnabled(FALSE);
+ childDisable("Activate");
}
if (group_id.notNull())
{
- getChildView("Info")->setEnabled(TRUE);
- getChildView("IM")->setEnabled(TRUE);
- getChildView("Leave")->setEnabled(TRUE);
+ childEnable("Info");
+ childEnable("IM");
+ childEnable("Leave");
}
else
{
- getChildView("Info")->setEnabled(FALSE);
- getChildView("IM")->setEnabled(FALSE);
- getChildView("Leave")->setEnabled(FALSE);
+ childDisable("Info");
+ childDisable("IM");
+ childDisable("Leave");
}
- getChildView("Create")->setEnabled(gAgent.canJoinGroups());
+ childSetEnabled("Create", gAgent.canJoinGroups());
}
diff --git a/indra/newview/llfloaterhardwaresettings.cpp b/indra/newview/llfloaterhardwaresettings.cpp
index 2985626bd7..af761010c1 100644
--- a/indra/newview/llfloaterhardwaresettings.cpp
+++ b/indra/newview/llfloaterhardwaresettings.cpp
@@ -81,7 +81,7 @@ void LLFloaterHardwareSettings::refresh()
mFogRatio = gSavedSettings.getF32("RenderFogRatio");
mProbeHardwareOnStartup = gSavedSettings.getBOOL("ProbeHardwareOnStartup");
- getChild<LLUICtrl>("fsaa")->setValue((LLSD::Integer) mFSAASamples);
+ childSetValue("fsaa", (LLSD::Integer) mFSAASamples);
refreshEnabledState();
}
@@ -95,13 +95,13 @@ void LLFloaterHardwareSettings::refreshEnabledState()
if (!LLFeatureManager::getInstance()->isFeatureAvailable("RenderVBOEnable") ||
!gGLManager.mHasVertexBufferObject)
{
- getChildView("vbo")->setEnabled(FALSE);
+ childSetEnabled("vbo", FALSE);
}
// if no windlight shaders, turn off nighttime brightness, gamma, and fog distance
- getChildView("gamma")->setEnabled(!gPipeline.canUseWindLightShaders());
- getChildView("(brightness, lower is brighter)")->setEnabled(!gPipeline.canUseWindLightShaders());
- getChildView("fog")->setEnabled(!gPipeline.canUseWindLightShaders());
+ childSetEnabled("gamma", !gPipeline.canUseWindLightShaders());
+ childSetEnabled("(brightness, lower is brighter)", !gPipeline.canUseWindLightShaders());
+ childSetEnabled("fog", !gPipeline.canUseWindLightShaders());
}
@@ -124,9 +124,9 @@ void LLFloaterHardwareSettings::apply()
{
// Anisotropic rendering
BOOL old_anisotropic = LLImageGL::sGlobalUseAnisotropic;
- LLImageGL::sGlobalUseAnisotropic = getChild<LLUICtrl>("ani")->getValue();
+ LLImageGL::sGlobalUseAnisotropic = childGetValue("ani");
- U32 fsaa = (U32) getChild<LLUICtrl>("fsaa")->getValue().asInteger();
+ U32 fsaa = (U32) childGetValue("fsaa").asInteger();
U32 old_fsaa = gSavedSettings.getU32("RenderFSAASamples");
BOOL logged_in = (LLStartUp::getStartupState() >= STATE_STARTED);
diff --git a/indra/newview/llfloaterhelpbrowser.cpp b/indra/newview/llfloaterhelpbrowser.cpp
index cec98e9992..86e373cff6 100644
--- a/indra/newview/llfloaterhelpbrowser.cpp
+++ b/indra/newview/llfloaterhelpbrowser.cpp
@@ -86,11 +86,11 @@ void LLFloaterHelpBrowser::handleMediaEvent(LLPluginClassMedia* self, EMediaEven
break;
case MEDIA_EVENT_NAVIGATE_BEGIN:
- getChild<LLUICtrl>("status_text")->setValue(getString("loading_text"));
+ childSetText("status_text", getString("loading_text"));
break;
case MEDIA_EVENT_NAVIGATE_COMPLETE:
- getChild<LLUICtrl>("status_text")->setValue(getString("done_text"));
+ childSetText("status_text", getString("done_text"));
break;
default:
diff --git a/indra/newview/llfloaterimagepreview.cpp b/indra/newview/llfloaterimagepreview.cpp
index c7fbdd5745..c6f03e7308 100644
--- a/indra/newview/llfloaterimagepreview.cpp
+++ b/indra/newview/llfloaterimagepreview.cpp
@@ -103,7 +103,7 @@ BOOL LLFloaterImagePreview::postBuild()
PREVIEW_HPAD + PREF_BUTTON_HEIGHT + PREVIEW_HPAD);
mPreviewImageRect.set(0.f, 1.f, 1.f, 0.f);
- getChildView("bad_image_text")->setVisible(FALSE);
+ childHide("bad_image_text");
if (mRawImagep.notNull() && gAgent.getRegion() != NULL)
{
@@ -114,19 +114,19 @@ BOOL LLFloaterImagePreview::postBuild()
mSculptedPreview->setPreviewTarget(mRawImagep, 2.0f);
if (mRawImagep->getWidth() * mRawImagep->getHeight () <= LL_IMAGE_REZ_LOSSLESS_CUTOFF * LL_IMAGE_REZ_LOSSLESS_CUTOFF)
- getChildView("lossless_check")->setEnabled(TRUE);
+ childEnable("lossless_check");
}
else
{
mAvatarPreview = NULL;
mSculptedPreview = NULL;
- getChildView("bad_image_text")->setVisible(TRUE);
- getChildView("clothing_type_combo")->setEnabled(FALSE);
- getChildView("ok_btn")->setEnabled(FALSE);
+ childShow("bad_image_text");
+ childDisable("clothing_type_combo");
+ childDisable("ok_btn");
if(!mImageLoadError.empty())
{
- getChild<LLUICtrl>("bad_image_text")->setValue(mImageLoadError.c_str());
+ childSetValue("bad_image_text",mImageLoadError.c_str());
}
}
diff --git a/indra/newview/llfloaterinspect.cpp b/indra/newview/llfloaterinspect.cpp
index 8e7f7e083c..a24048374d 100644
--- a/indra/newview/llfloaterinspect.cpp
+++ b/indra/newview/llfloaterinspect.cpp
@@ -148,8 +148,8 @@ void LLFloaterInspect::onSelectObject()
{
if(LLFloaterInspect::getSelectedUUID() != LLUUID::null)
{
- getChildView("button owner")->setEnabled(true);
- getChildView("button creator")->setEnabled(true);
+ childSetEnabled("button owner", true);
+ childSetEnabled("button creator", true);
}
}
@@ -172,8 +172,8 @@ void LLFloaterInspect::refresh()
LLUUID creator_id;
std::string creator_name;
S32 pos = mObjectList->getScrollPos();
- getChildView("button owner")->setEnabled(false);
- getChildView("button creator")->setEnabled(false);
+ childSetEnabled("button owner", false);
+ childSetEnabled("button creator", false);
LLUUID selected_uuid;
S32 selected_index = mObjectList->getFirstSelectedIndex();
if(selected_index > -1)
diff --git a/indra/newview/llfloaterjoystick.cpp b/indra/newview/llfloaterjoystick.cpp
index e1994bb8bc..cc1958b396 100644
--- a/indra/newview/llfloaterjoystick.cpp
+++ b/indra/newview/llfloaterjoystick.cpp
@@ -52,11 +52,11 @@ LLFloaterJoystick::LLFloaterJoystick(const LLSD& data)
void LLFloaterJoystick::draw()
{
bool joystick_inited = LLViewerJoystick::getInstance()->isJoystickInitialized();
- getChildView("enable_joystick")->setEnabled(joystick_inited);
- getChildView("joystick_type")->setEnabled(joystick_inited);
+ childSetEnabled("enable_joystick", joystick_inited);
+ childSetEnabled("joystick_type", joystick_inited);
std::string desc = LLViewerJoystick::getInstance()->getDescription();
if (desc.empty()) desc = getString("NoDevice");
- getChild<LLUICtrl>("joystick_type")->setValue(desc);
+ childSetText("joystick_type", desc);
LLViewerJoystick* joystick(LLViewerJoystick::getInstance());
for (U32 i = 0; i < 6; i++)
diff --git a/indra/newview/llfloaterlagmeter.cpp b/indra/newview/llfloaterlagmeter.cpp
index a92273521f..dda4e81242 100644
--- a/indra/newview/llfloaterlagmeter.cpp
+++ b/indra/newview/llfloaterlagmeter.cpp
@@ -323,9 +323,9 @@ void LLFloaterLagMeter::updateControls(bool shrink)
setRect(r);
reshape(mMaxWidth, getRect().getHeight());
- getChild<LLUICtrl>("client")->setValue(getString("client_text_msg", mStringArgs) + ":");
- getChild<LLUICtrl>("network")->setValue(getString("network_text_msg",mStringArgs) + ":");
- getChild<LLUICtrl>("server")->setValue(getString("server_text_msg", mStringArgs) + ":");
+ childSetText("client", getString("client_text_msg", mStringArgs) + ":");
+ childSetText("network", getString("network_text_msg",mStringArgs) + ":");
+ childSetText("server", getString("server_text_msg", mStringArgs) + ":");
// usually "<<"
button->setLabel( getString("smaller_label", mStringArgs) );
@@ -338,9 +338,9 @@ void LLFloaterLagMeter::updateControls(bool shrink)
setRect(r);
reshape(mMinWidth, getRect().getHeight());
- getChild<LLUICtrl>("client")->setValue(getString("client_text_msg", mStringArgs) );
- getChild<LLUICtrl>("network")->setValue(getString("network_text_msg",mStringArgs) );
- getChild<LLUICtrl>("server")->setValue(getString("server_text_msg", mStringArgs) );
+ childSetText("client", getString("client_text_msg", mStringArgs) );
+ childSetText("network",getString("network_text_msg",mStringArgs) );
+ childSetText("server", getString("server_text_msg", mStringArgs) );
// usually ">>"
button->setLabel( getString("bigger_label", mStringArgs) );
@@ -350,15 +350,15 @@ void LLFloaterLagMeter::updateControls(bool shrink)
// self->mClientText->setVisible(self->mShrunk);
// self->mClientCause->setVisible(self->mShrunk);
-// self->getChildView("client_help")->setVisible( self->mShrunk);
+// self->childSetVisible("client_help", self->mShrunk);
// self->mNetworkText->setVisible(self->mShrunk);
// self->mNetworkCause->setVisible(self->mShrunk);
-// self->getChildView("network_help")->setVisible( self->mShrunk);
+// self->childSetVisible("network_help", self->mShrunk);
// self->mServerText->setVisible(self->mShrunk);
// self->mServerCause->setVisible(self->mShrunk);
-// self->getChildView("server_help")->setVisible( self->mShrunk);
+// self->childSetVisible("server_help", self->mShrunk);
// self->mShrunk = !self->mShrunk;
}
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index 2f080ab334..027a32c832 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -365,7 +365,7 @@ BOOL LLPanelLandGeneral::postBuild()
{
mEditName = getChild<LLLineEditor>("Name");
mEditName->setCommitCallback(onCommitAny, this);
- getChild<LLLineEditor>("Name")->setPrevalidate(LLTextValidate::validateASCIIPrintableNoPipe);
+ childSetPrevalidate("Name", LLTextValidate::validateASCIIPrintableNoPipe);
mEditDesc = getChild<LLTextEditor>("Description");
mEditDesc->setCommitOnFocusLost(TRUE);
@@ -382,7 +382,7 @@ BOOL LLPanelLandGeneral::postBuild()
mLandType = getChild<LLTextBox>("LandTypeText");
mBtnProfile = getChild<LLButton>("Profile...");
- mBtnProfile->setClickedCallback(boost::bind(&LLPanelLandGeneral::onClickProfile, this));
+ mBtnProfile->setClickedCallback(onClickProfile, this);
mTextGroupLabel = getChild<LLTextBox>("Group:");
@@ -859,9 +859,11 @@ void LLPanelLandGeneral::onClickSetGroup()
}
}
-void LLPanelLandGeneral::onClickProfile()
+// static
+void LLPanelLandGeneral::onClickProfile(void* data)
{
- LLParcel* parcel = mParcel->getParcel();
+ LLPanelLandGeneral* panelp = (LLPanelLandGeneral*)data;
+ LLParcel* parcel = panelp->mParcel->getParcel();
if (!parcel) return;
if (parcel->getIsGroupOwned())
@@ -912,6 +914,13 @@ void LLPanelLandGeneral::onClickScriptLimits(void* data)
}
}
+BOOL LLPanelLandGeneral::enableDeedToGroup(void* data)
+{
+ LLPanelLandGeneral* panelp = (LLPanelLandGeneral*)data;
+ LLParcel* parcel = panelp->mParcel->getParcel();
+ return (parcel != NULL) && (parcel->getParcelFlag(PF_ALLOW_DEED_TO_GROUP));
+}
+
// static
void LLPanelLandGeneral::onClickDeed(void*)
{
@@ -1125,7 +1134,7 @@ BOOL LLPanelLandObjects::postBuild()
mCleanOtherObjectsTime->setFocusLostCallback(boost::bind(onLostFocus, _1, this));
mCleanOtherObjectsTime->setCommitCallback(onCommitClean, this);
- getChild<LLLineEditor>("clean other time")->setPrevalidate(LLTextValidate::validateNonNegativeS32);
+ childSetPrevalidate("clean other time", LLTextValidate::validateNonNegativeS32);
mBtnRefresh = getChild<LLButton>("Refresh List");
mBtnRefresh->setClickedCallback(onClickRefresh, this);
@@ -2390,18 +2399,18 @@ void LLPanelLandAccess::refresh()
BOOL use_group = parcel->getParcelFlag(PF_USE_ACCESS_GROUP);
BOOL public_access = !use_access_list && !use_group;
- getChild<LLUICtrl>("public_access")->setValue(public_access );
- getChild<LLUICtrl>("GroupCheck")->setValue(use_group );
+ childSetValue("public_access", public_access );
+ childSetValue("GroupCheck", use_group );
std::string group_name;
gCacheName->getGroupName(parcel->getGroupID(), group_name);
- getChild<LLUICtrl>("GroupCheck")->setLabelArg("[GROUP]", group_name );
+ childSetLabelArg("GroupCheck", "[GROUP]", group_name );
// Allow list
{
S32 count = parcel->mAccessList.size();
- getChild<LLUICtrl>("AccessList")->setToolTipArg(LLStringExplicit("[LISTED]"), llformat("%d",count));
- getChild<LLUICtrl>("AccessList")->setToolTipArg(LLStringExplicit("[MAX]"), llformat("%d",PARCEL_MAX_ACCESS_LIST));
+ childSetToolTipArg("AccessList", "[LISTED]", llformat("%d",count));
+ childSetToolTipArg("AccessList", "[MAX]", llformat("%d",PARCEL_MAX_ACCESS_LIST));
for (access_map_const_iterator cit = parcel->mAccessList.begin();
cit != parcel->mAccessList.end(); ++cit)
@@ -2442,8 +2451,8 @@ void LLPanelLandAccess::refresh()
{
S32 count = parcel->mBanList.size();
- getChild<LLUICtrl>("BannedList")->setToolTipArg(LLStringExplicit("[LISTED]"), llformat("%d",count));
- getChild<LLUICtrl>("BannedList")->setToolTipArg(LLStringExplicit("[MAX]"), llformat("%d",PARCEL_MAX_ACCESS_LIST));
+ childSetToolTipArg("BannedList", "[LISTED]", llformat("%d",count));
+ childSetToolTipArg("BannedList", "[MAX]", llformat("%d",PARCEL_MAX_ACCESS_LIST));
for (access_map_const_iterator cit = parcel->mBanList.begin();
cit != parcel->mBanList.end(); ++cit)
@@ -2502,27 +2511,27 @@ void LLPanelLandAccess::refresh()
if(parcel->getRegionDenyAnonymousOverride())
{
- getChild<LLUICtrl>("limit_payment")->setValue(TRUE);
- getChild<LLUICtrl>("limit_payment")->setLabelArg("[ESTATE_PAYMENT_LIMIT]", getString("access_estate_defined") );
+ childSetValue("limit_payment", TRUE);
+ childSetLabelArg( "limit_payment", "[ESTATE_PAYMENT_LIMIT]", getString("access_estate_defined") );
}
else
{
- getChild<LLUICtrl>("limit_payment")->setValue((parcel->getParcelFlag(PF_DENY_ANONYMOUS)));
- getChild<LLUICtrl>("limit_payment")->setLabelArg("[ESTATE_PAYMENT_LIMIT]", std::string() );
+ childSetValue("limit_payment", (parcel->getParcelFlag(PF_DENY_ANONYMOUS)));
+ childSetLabelArg( "limit_payment", "[ESTATE_PAYMENT_LIMIT]", std::string() );
}
if(parcel->getRegionDenyAgeUnverifiedOverride())
{
- getChild<LLUICtrl>("limit_age_verified")->setValue(TRUE);
- getChild<LLUICtrl>("limit_age_verified")->setLabelArg("[ESTATE_AGE_LIMIT]", getString("access_estate_defined") );
+ childSetValue("limit_age_verified", TRUE);
+ childSetLabelArg( "limit_age_verified", "[ESTATE_AGE_LIMIT]", getString("access_estate_defined") );
}
else
{
- getChild<LLUICtrl>("limit_age_verified")->setValue((parcel->getParcelFlag(PF_DENY_AGEUNVERIFIED)));
- getChild<LLUICtrl>("limit_age_verified")->setLabelArg("[ESTATE_AGE_LIMIT]", std::string() );
+ childSetValue("limit_age_verified", (parcel->getParcelFlag(PF_DENY_AGEUNVERIFIED)));
+ childSetLabelArg( "limit_age_verified", "[ESTATE_AGE_LIMIT]", std::string() );
}
BOOL use_pass = parcel->getParcelFlag(PF_USE_PASS_LIST);
- getChild<LLUICtrl>("PassCheck")->setValue(use_pass );
+ childSetValue("PassCheck", use_pass );
LLCtrlSelectionInterface* passcombo = childGetSelectionInterface("pass_combo");
if (passcombo)
{
@@ -2533,40 +2542,40 @@ void LLPanelLandAccess::refresh()
}
S32 pass_price = parcel->getPassPrice();
- getChild<LLUICtrl>("PriceSpin")->setValue((F32)pass_price );
+ childSetValue( "PriceSpin", (F32)pass_price );
F32 pass_hours = parcel->getPassHours();
- getChild<LLUICtrl>("HoursSpin")->setValue(pass_hours );
+ childSetValue( "HoursSpin", pass_hours );
}
else
{
- getChild<LLUICtrl>("public_access")->setValue(FALSE);
- getChild<LLUICtrl>("limit_payment")->setValue(FALSE);
- getChild<LLUICtrl>("limit_age_verified")->setValue(FALSE);
- getChild<LLUICtrl>("GroupCheck")->setValue(FALSE);
- getChild<LLUICtrl>("GroupCheck")->setLabelArg("[GROUP]", LLStringUtil::null );
- getChild<LLUICtrl>("PassCheck")->setValue(FALSE);
- getChild<LLUICtrl>("PriceSpin")->setValue((F32)PARCEL_PASS_PRICE_DEFAULT);
- getChild<LLUICtrl>("HoursSpin")->setValue(PARCEL_PASS_HOURS_DEFAULT );
- getChild<LLUICtrl>("AccessList")->setToolTipArg(LLStringExplicit("[LISTED]"), llformat("%d",0));
- getChild<LLUICtrl>("AccessList")->setToolTipArg(LLStringExplicit("[MAX]"), llformat("%d",0));
- getChild<LLUICtrl>("BannedList")->setToolTipArg(LLStringExplicit("[LISTED]"), llformat("%d",0));
- getChild<LLUICtrl>("BannedList")->setToolTipArg(LLStringExplicit("[MAX]"), llformat("%d",0));
+ childSetValue("public_access", FALSE);
+ childSetValue("limit_payment", FALSE);
+ childSetValue("limit_age_verified", FALSE);
+ childSetValue("GroupCheck", FALSE);
+ childSetLabelArg("GroupCheck", "[GROUP]", LLStringUtil::null );
+ childSetValue("PassCheck", FALSE);
+ childSetValue("PriceSpin", (F32)PARCEL_PASS_PRICE_DEFAULT);
+ childSetValue( "HoursSpin", PARCEL_PASS_HOURS_DEFAULT );
+ childSetToolTipArg("AccessList", "[LISTED]", llformat("%d",0));
+ childSetToolTipArg("AccessList", "[MAX]", llformat("%d",0));
+ childSetToolTipArg("BannedList", "[LISTED]", llformat("%d",0));
+ childSetToolTipArg("BannedList", "[MAX]", llformat("%d",0));
}
}
void LLPanelLandAccess::refresh_ui()
{
- getChildView("public_access")->setEnabled(FALSE);
- getChildView("limit_payment")->setEnabled(FALSE);
- getChildView("limit_age_verified")->setEnabled(FALSE);
- getChildView("GroupCheck")->setEnabled(FALSE);
- getChildView("PassCheck")->setEnabled(FALSE);
- getChildView("pass_combo")->setEnabled(FALSE);
- getChildView("PriceSpin")->setEnabled(FALSE);
- getChildView("HoursSpin")->setEnabled(FALSE);
- getChildView("AccessList")->setEnabled(FALSE);
- getChildView("BannedList")->setEnabled(FALSE);
+ childSetEnabled("public_access", FALSE);
+ childSetEnabled("limit_payment", FALSE);
+ childSetEnabled("limit_age_verified", FALSE);
+ childSetEnabled("GroupCheck", FALSE);
+ childSetEnabled("PassCheck", FALSE);
+ childSetEnabled("pass_combo", FALSE);
+ childSetEnabled("PriceSpin", FALSE);
+ childSetEnabled("HoursSpin", FALSE);
+ childSetEnabled("AccessList", FALSE);
+ childSetEnabled("BannedList", FALSE);
LLParcel *parcel = mParcel->getParcel();
if (parcel)
@@ -2574,73 +2583,73 @@ void LLPanelLandAccess::refresh_ui()
BOOL can_manage_allowed = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_MANAGE_ALLOWED);
BOOL can_manage_banned = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_MANAGE_BANNED);
- getChildView("public_access")->setEnabled(can_manage_allowed);
- BOOL public_access = getChild<LLUICtrl>("public_access")->getValue().asBoolean();
+ childSetEnabled("public_access", can_manage_allowed);
+ BOOL public_access = childGetValue("public_access").asBoolean();
if (public_access)
{
bool override = false;
if(parcel->getRegionDenyAnonymousOverride())
{
override = true;
- getChildView("limit_payment")->setEnabled(FALSE);
+ childSetEnabled("limit_payment", FALSE);
}
else
{
- getChildView("limit_payment")->setEnabled(can_manage_allowed);
+ childSetEnabled("limit_payment", can_manage_allowed);
}
if(parcel->getRegionDenyAgeUnverifiedOverride())
{
override = true;
- getChildView("limit_age_verified")->setEnabled(FALSE);
+ childSetEnabled("limit_age_verified", FALSE);
}
else
{
- getChildView("limit_age_verified")->setEnabled(can_manage_allowed);
+ childSetEnabled("limit_age_verified", can_manage_allowed);
}
if (override)
{
- getChildView("Only Allow")->setToolTip(getString("estate_override"));
+ childSetToolTip("Only Allow", getString("estate_override"));
}
else
{
- getChildView("Only Allow")->setToolTip(std::string());
+ childSetToolTip("Only Allow", std::string());
}
- getChildView("GroupCheck")->setEnabled(FALSE);
- getChildView("PassCheck")->setEnabled(FALSE);
- getChildView("pass_combo")->setEnabled(FALSE);
- getChildView("AccessList")->setEnabled(FALSE);
+ childSetEnabled("GroupCheck", FALSE);
+ childSetEnabled("PassCheck", FALSE);
+ childSetEnabled("pass_combo", FALSE);
+ childSetEnabled("AccessList", FALSE);
}
else
{
- getChildView("limit_payment")->setEnabled(FALSE);
- getChildView("limit_age_verified")->setEnabled(FALSE);
+ childSetEnabled("limit_payment", FALSE);
+ childSetEnabled("limit_age_verified", FALSE);
std::string group_name;
if (gCacheName->getGroupName(parcel->getGroupID(), group_name))
{
- getChildView("GroupCheck")->setEnabled(can_manage_allowed);
+ childSetEnabled("GroupCheck", can_manage_allowed);
}
- BOOL group_access = getChild<LLUICtrl>("GroupCheck")->getValue().asBoolean();
- BOOL sell_passes = getChild<LLUICtrl>("PassCheck")->getValue().asBoolean();
- getChildView("PassCheck")->setEnabled(can_manage_allowed);
+ BOOL group_access = childGetValue("GroupCheck").asBoolean();
+ BOOL sell_passes = childGetValue("PassCheck").asBoolean();
+ childSetEnabled("PassCheck", can_manage_allowed);
if (sell_passes)
{
- getChildView("pass_combo")->setEnabled(group_access && can_manage_allowed);
- getChildView("PriceSpin")->setEnabled(can_manage_allowed);
- getChildView("HoursSpin")->setEnabled(can_manage_allowed);
+ childSetEnabled("pass_combo", group_access && can_manage_allowed);
+ childSetEnabled("PriceSpin", can_manage_allowed);
+ childSetEnabled("HoursSpin", can_manage_allowed);
}
}
- getChildView("AccessList")->setEnabled(can_manage_allowed);
+ childSetEnabled("AccessList", can_manage_allowed);
S32 allowed_list_count = parcel->mAccessList.size();
- getChildView("add_allowed")->setEnabled(can_manage_allowed && allowed_list_count < PARCEL_MAX_ACCESS_LIST);
+ childSetEnabled("add_allowed", can_manage_allowed && allowed_list_count < PARCEL_MAX_ACCESS_LIST);
BOOL has_selected = mListAccess->getSelectionInterface()->getFirstSelectedIndex() >= 0;
- getChildView("remove_allowed")->setEnabled(can_manage_allowed && has_selected);
+ childSetEnabled("remove_allowed", can_manage_allowed && has_selected);
- getChildView("BannedList")->setEnabled(can_manage_banned);
+ childSetEnabled("BannedList", can_manage_banned);
S32 banned_list_count = parcel->mBanList.size();
- getChildView("add_banned")->setEnabled(can_manage_banned && banned_list_count < PARCEL_MAX_ACCESS_LIST);
+ childSetEnabled("add_banned", can_manage_banned && banned_list_count < PARCEL_MAX_ACCESS_LIST);
has_selected = mListBanned->getSelectionInterface()->getFirstSelectedIndex() >= 0;
- getChildView("remove_banned")->setEnabled(can_manage_banned && has_selected);
+ childSetEnabled("remove_banned", can_manage_banned && has_selected);
}
}
@@ -2654,7 +2663,7 @@ void LLPanelLandAccess::refreshNames()
{
gCacheName->getGroupName(parcel->getGroupID(), group_name);
}
- getChild<LLUICtrl>("GroupCheck")->setLabelArg("[GROUP]", group_name);
+ childSetLabelArg("GroupCheck", "[GROUP]", group_name);
}
@@ -2677,13 +2686,13 @@ void LLPanelLandAccess::onCommitPublicAccess(LLUICtrl *ctrl, void *userdata)
}
// If we disabled public access, enable group access by default (if applicable)
- BOOL public_access = self->getChild<LLUICtrl>("public_access")->getValue().asBoolean();
+ BOOL public_access = self->childGetValue("public_access").asBoolean();
if (public_access == FALSE)
{
std::string group_name;
if (gCacheName->getGroupName(parcel->getGroupID(), group_name))
{
- self->getChild<LLUICtrl>("GroupCheck")->setValue(public_access ? FALSE : TRUE);
+ self->childSetValue("GroupCheck", public_access ? FALSE : TRUE);
}
}
@@ -2702,8 +2711,8 @@ void LLPanelLandAccess::onCommitAny(LLUICtrl *ctrl, void *userdata)
}
// Extract data from UI
- BOOL public_access = self->getChild<LLUICtrl>("public_access")->getValue().asBoolean();
- BOOL use_access_group = self->getChild<LLUICtrl>("GroupCheck")->getValue().asBoolean();
+ BOOL public_access = self->childGetValue("public_access").asBoolean();
+ BOOL use_access_group = self->childGetValue("GroupCheck").asBoolean();
if (use_access_group)
{
std::string group_name;
@@ -2721,13 +2730,13 @@ void LLPanelLandAccess::onCommitAny(LLUICtrl *ctrl, void *userdata)
{
use_access_list = FALSE;
use_access_group = FALSE;
- limit_payment = self->getChild<LLUICtrl>("limit_payment")->getValue().asBoolean();
- limit_age_verified = self->getChild<LLUICtrl>("limit_age_verified")->getValue().asBoolean();
+ limit_payment = self->childGetValue("limit_payment").asBoolean();
+ limit_age_verified = self->childGetValue("limit_age_verified").asBoolean();
}
else
{
use_access_list = TRUE;
- use_pass_list = self->getChild<LLUICtrl>("PassCheck")->getValue().asBoolean();
+ use_pass_list = self->childGetValue("PassCheck").asBoolean();
if (use_access_group && use_pass_list)
{
LLCtrlSelectionInterface* passcombo = self->childGetSelectionInterface("pass_combo");
@@ -2741,8 +2750,8 @@ void LLPanelLandAccess::onCommitAny(LLUICtrl *ctrl, void *userdata)
}
}
- S32 pass_price = llfloor((F32)self->getChild<LLUICtrl>("PriceSpin")->getValue().asReal());
- F32 pass_hours = (F32)self->getChild<LLUICtrl>("HoursSpin")->getValue().asReal();
+ S32 pass_price = llfloor((F32)self->childGetValue("PriceSpin").asReal());
+ F32 pass_hours = (F32)self->childGetValue("HoursSpin").asReal();
// Push data into current parcel
parcel->setParcelFlag(PF_USE_ACCESS_GROUP, use_access_group);
diff --git a/indra/newview/llfloaterland.h b/indra/newview/llfloaterland.h
index 309e0ee4e1..868b4cf29b 100644
--- a/indra/newview/llfloaterland.h
+++ b/indra/newview/llfloaterland.h
@@ -138,8 +138,9 @@ public:
virtual void draw();
void setGroup(const LLUUID& group_id);
- void onClickProfile();
- void onClickSetGroup();
+ static void onClickProfile(void*);
+ void onClickSetGroup();
+ static BOOL enableDeedToGroup(void*);
static void onClickDeed(void*);
static void onClickBuyLand(void* data);
static void onClickScriptLimits(void* data);
diff --git a/indra/newview/llfloaterlandholdings.cpp b/indra/newview/llfloaterlandholdings.cpp
index 31f20fbd29..0ffb3492e0 100644
--- a/indra/newview/llfloaterlandholdings.cpp
+++ b/indra/newview/llfloaterlandholdings.cpp
@@ -139,8 +139,8 @@ void LLFloaterLandHoldings::refresh()
enable_btns = TRUE;
}
- getChildView("Teleport")->setEnabled(enable_btns);
- getChildView("Show on Map")->setEnabled(enable_btns);
+ childSetEnabled("Teleport", enable_btns);
+ childSetEnabled("Show on Map", enable_btns);
refreshAggregates();
}
@@ -328,7 +328,7 @@ void LLFloaterLandHoldings::refreshAggregates()
S32 current_area = gStatusBar->getSquareMetersCommitted();
S32 available_area = gStatusBar->getSquareMetersLeft();
- getChild<LLUICtrl>("allowed_text")->setTextArg("[AREA]", llformat("%d",allowed_area));
- getChild<LLUICtrl>("current_text")->setTextArg("[AREA]", llformat("%d",current_area));
- getChild<LLUICtrl>("available_text")->setTextArg("[AREA]", llformat("%d",available_area));
+ childSetTextArg("allowed_text", "[AREA]", llformat("%d",allowed_area));
+ childSetTextArg("current_text", "[AREA]", llformat("%d",current_area));
+ childSetTextArg("available_text", "[AREA]", llformat("%d",available_area));
}
diff --git a/indra/newview/llfloatermediabrowser.cpp b/indra/newview/llfloatermediabrowser.cpp
index 434d0681ab..08307d11a7 100644
--- a/indra/newview/llfloatermediabrowser.cpp
+++ b/indra/newview/llfloatermediabrowser.cpp
@@ -59,12 +59,12 @@ LLFloaterMediaBrowser::LLFloaterMediaBrowser(const LLSD& key)
void LLFloaterMediaBrowser::draw()
{
- getChildView("go")->setEnabled(!mAddressCombo->getValue().asString().empty());
+ childSetEnabled("go", !mAddressCombo->getValue().asString().empty());
LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
if(parcel)
{
- getChildView("parcel_owner_controls")->setVisible( LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_CHANGE_MEDIA));
- getChildView("assign")->setEnabled(!mAddressCombo->getValue().asString().empty());
+ childSetVisible("parcel_owner_controls", LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_CHANGE_MEDIA));
+ childSetEnabled("assign", !mAddressCombo->getValue().asString().empty());
}
bool show_time_controls = false;
bool media_playing = false;
@@ -77,17 +77,17 @@ void LLFloaterMediaBrowser::draw()
media_playing = media_plugin->getStatus() == LLPluginClassMediaOwner::MEDIA_PLAYING;
}
}
- getChildView("rewind")->setVisible( show_time_controls);
- getChildView("play")->setVisible( show_time_controls && ! media_playing);
- getChildView("pause")->setVisible( show_time_controls && media_playing);
- getChildView("stop")->setVisible( show_time_controls);
- getChildView("seek")->setVisible( show_time_controls);
+ childSetVisible("rewind", show_time_controls);
+ childSetVisible("play", show_time_controls && ! media_playing);
+ childSetVisible("pause", show_time_controls && media_playing);
+ childSetVisible("stop", show_time_controls);
+ childSetVisible("seek", show_time_controls);
- getChildView("play")->setEnabled(! media_playing);
- getChildView("stop")->setEnabled(media_playing);
+ childSetEnabled("play", ! media_playing);
+ childSetEnabled("stop", media_playing);
- getChildView("back")->setEnabled(mBrowser->canNavigateBack());
- getChildView("forward")->setEnabled(mBrowser->canNavigateForward());
+ childSetEnabled("back", mBrowser->canNavigateBack());
+ childSetEnabled("forward", mBrowser->canNavigateForward());
LLFloater::draw();
}
@@ -167,8 +167,8 @@ void LLFloaterMediaBrowser::handleMediaEvent(LLPluginClassMedia* self, EMediaEve
else if(event == MEDIA_EVENT_NAVIGATE_COMPLETE)
{
// This is the event these flags are sent with.
- getChildView("back")->setEnabled(self->getHistoryBackAvailable());
- getChildView("forward")->setEnabled(self->getHistoryForwardAvailable());
+ childSetEnabled("back", self->getHistoryBackAvailable());
+ childSetEnabled("forward", self->getHistoryForwardAvailable());
}
}
void LLFloaterMediaBrowser::setCurrentURL(const std::string& url)
@@ -186,9 +186,9 @@ void LLFloaterMediaBrowser::setCurrentURL(const std::string& url)
LLURLHistory::removeURL("browser", mCurrentURL);
LLURLHistory::addURL("browser", mCurrentURL);
}
- getChildView("back")->setEnabled(mBrowser->canNavigateBack());
- getChildView("forward")->setEnabled(mBrowser->canNavigateForward());
- getChildView("reload")->setEnabled(TRUE);
+ childSetEnabled("back", mBrowser->canNavigateBack());
+ childSetEnabled("forward", mBrowser->canNavigateForward());
+ childSetEnabled("reload", TRUE);
}
void LLFloaterMediaBrowser::onOpen(const LLSD& media_url)
diff --git a/indra/newview/llfloatermemleak.cpp b/indra/newview/llfloatermemleak.cpp
index 58931d112e..c0ffa59883 100644
--- a/indra/newview/llfloatermemleak.cpp
+++ b/indra/newview/llfloatermemleak.cpp
@@ -58,7 +58,7 @@ LLFloaterMemLeak::LLFloaterMemLeak(const LLSD& key)
BOOL LLFloaterMemLeak::postBuild(void)
{
F32 a, b ;
- a = getChild<LLUICtrl>("leak_speed")->getValue().asReal();
+ a = childGetValue("leak_speed").asReal();
if(a > (F32)(0xFFFFFFFF))
{
sMemLeakingSpeed = 0xFFFFFFFF ;
@@ -67,7 +67,7 @@ BOOL LLFloaterMemLeak::postBuild(void)
{
sMemLeakingSpeed = (U32)a ;
}
- b = getChild<LLUICtrl>("max_leak")->getValue().asReal();
+ b = childGetValue("max_leak").asReal();
if(b > (F32)0xFFF)
{
sMaxLeakedMem = 0xFFFFFFFF ;
@@ -144,7 +144,7 @@ void LLFloaterMemLeak::idle()
void LLFloaterMemLeak::onChangeLeakingSpeed()
{
F32 tmp ;
- tmp =getChild<LLUICtrl>("leak_speed")->getValue().asReal();
+ tmp =childGetValue("leak_speed").asReal();
if(tmp > (F32)0xFFFFFFFF)
{
@@ -161,7 +161,7 @@ void LLFloaterMemLeak::onChangeMaxMemLeaking()
{
F32 tmp ;
- tmp =getChild<LLUICtrl>("max_leak")->getValue().asReal();
+ tmp =childGetValue("max_leak").asReal();
if(tmp > (F32)0xFFF)
{
sMaxLeakedMem = 0xFFFFFFFF ;
@@ -200,22 +200,22 @@ void LLFloaterMemLeak::draw()
{
std::string bytes_string;
LLResMgr::getInstance()->getIntegerString(bytes_string, sTotalLeaked >> 10 );
- getChild<LLUICtrl>("total_leaked_label")->setTextArg("[SIZE]", bytes_string);
+ childSetTextArg("total_leaked_label", "[SIZE]", bytes_string);
}
else
{
- getChild<LLUICtrl>("total_leaked_label")->setTextArg("[SIZE]", LLStringExplicit("0"));
+ childSetTextArg("total_leaked_label", "[SIZE]", LLStringExplicit("0"));
}
if(sbAllocationFailed)
{
- getChild<LLUICtrl>("note_label_1")->setTextArg("[NOTE1]", LLStringExplicit("Memory leaking simulation stops. Reduce leaking speed or"));
- getChild<LLUICtrl>("note_label_2")->setTextArg("[NOTE2]", LLStringExplicit("increase max leaked memory, then press Start to continue."));
+ childSetTextArg("note_label_1", "[NOTE1]", LLStringExplicit("Memory leaking simulation stops. Reduce leaking speed or"));
+ childSetTextArg("note_label_2", "[NOTE2]", LLStringExplicit("increase max leaked memory, then press Start to continue."));
}
else
{
- getChild<LLUICtrl>("note_label_1")->setTextArg("[NOTE1]", LLStringExplicit(""));
- getChild<LLUICtrl>("note_label_2")->setTextArg("[NOTE2]", LLStringExplicit(""));
+ childSetTextArg("note_label_1", "[NOTE1]", LLStringExplicit(""));
+ childSetTextArg("note_label_2", "[NOTE2]", LLStringExplicit(""));
}
LLFloater::draw();
diff --git a/indra/newview/llfloaternamedesc.cpp b/indra/newview/llfloaternamedesc.cpp
index ae95d4392a..956b387518 100644
--- a/indra/newview/llfloaternamedesc.cpp
+++ b/indra/newview/llfloaternamedesc.cpp
@@ -99,7 +99,7 @@ BOOL LLFloaterNameDesc::postBuild()
r.setLeftTopAndSize( PREVIEW_HPAD, y, line_width, PREVIEW_LINE_HEIGHT );
getChild<LLUICtrl>("name_form")->setCommitCallback(boost::bind(&LLFloaterNameDesc::doCommit, this));
- getChild<LLUICtrl>("name_form")->setValue(LLSD(asset_name));
+ childSetValue("name_form", LLSD(asset_name));
LLLineEditor *NameEditor = getChild<LLLineEditor>("name_form");
if (NameEditor)
@@ -125,7 +125,7 @@ BOOL LLFloaterNameDesc::postBuild()
// Cancel button
getChild<LLUICtrl>("cancel_btn")->setCommitCallback(boost::bind(&LLFloaterNameDesc::onBtnCancel, this));
- getChild<LLUICtrl>("ok_btn")->setLabelArg("[AMOUNT]", llformat("%d", LLGlobalEconomy::Singleton::getInstance()->getPriceUpload() ));
+ childSetLabelArg("ok_btn", "[AMOUNT]", llformat("%d", LLGlobalEconomy::Singleton::getInstance()->getPriceUpload() ));
setDefaultBtn("ok_btn");
@@ -161,15 +161,15 @@ void LLFloaterNameDesc::doCommit()
//-----------------------------------------------------------------------------
void LLFloaterNameDesc::onBtnOK( )
{
- getChildView("ok_btn")->setEnabled(FALSE); // don't allow inadvertent extra uploads
+ childDisable("ok_btn"); // don't allow inadvertent extra uploads
LLAssetStorage::LLStoreAssetCallback callback = NULL;
S32 expected_upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload(); // kinda hack - assumes that unsubclassed LLFloaterNameDesc is only used for uploading chargeable assets, which it is right now (it's only used unsubclassed for the sound upload dialog, and THAT should be a subclass).
void *nruserdata = NULL;
std::string display_name = LLStringUtil::null;
upload_new_resource(mFilenameAndPath, // file
- getChild<LLUICtrl>("name_form")->getValue().asString(),
- getChild<LLUICtrl>("description_form")->getValue().asString(),
+ childGetValue("name_form").asString(),
+ childGetValue("description_form").asString(),
0, LLFolderType::FT_NONE, LLInventoryType::IT_NONE,
LLFloaterPerms::getNextOwnerPerms(), LLFloaterPerms::getGroupPerms(), LLFloaterPerms::getEveryonePerms(),
display_name, callback, expected_upload_cost, nruserdata);
diff --git a/indra/newview/llfloateropenobject.cpp b/indra/newview/llfloateropenobject.cpp
index d6f6ba9e5b..8e92a20bc1 100644
--- a/indra/newview/llfloateropenobject.cpp
+++ b/indra/newview/llfloateropenobject.cpp
@@ -69,7 +69,7 @@ LLFloaterOpenObject::~LLFloaterOpenObject()
// virtual
BOOL LLFloaterOpenObject::postBuild()
{
- getChild<LLUICtrl>("object_name")->setTextArg("[DESC]", std::string("Object") ); // *Note: probably do not want to translate this
+ childSetTextArg("object_name", "[DESC]", std::string("Object") ); // *Note: probably do not want to translate this
mPanelInventoryObject = getChild<LLPanelObjectInventory>("object_contents");
refresh();
@@ -113,9 +113,9 @@ void LLFloaterOpenObject::refresh()
enabled = FALSE;
}
- getChild<LLUICtrl>("object_name")->setTextArg("[DESC]", name);
- getChildView("copy_to_inventory_button")->setEnabled(enabled);
- getChildView("copy_and_wear_button")->setEnabled(enabled);
+ childSetTextArg("object_name", "[DESC]", name);
+ childSetEnabled("copy_to_inventory_button", enabled);
+ childSetEnabled("copy_and_wear_button", enabled);
}
diff --git a/indra/newview/llfloaterparcel.cpp b/indra/newview/llfloaterparcel.cpp
new file mode 100644
index 0000000000..c4a51e8e7f
--- /dev/null
+++ b/indra/newview/llfloaterparcel.cpp
@@ -0,0 +1,122 @@
+/**
+ * @file llfloaterparcel.cpp
+ * @brief LLFloaterParcel class implementation
+ * Parcel information as shown in a floating window from secondlife:// command
+ * handler.
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+#include "llviewerprecompiledheaders.h"
+
+#include "llfloaterparcel.h"
+
+#include "llfloaterreg.h"
+
+// viewer project includes
+#include "llcommandhandler.h"
+#include "llpanelplace.h"
+#include "llsidetray.h"
+
+// linden library includes
+#include "lluuid.h"
+#include "lluictrlfactory.h"
+
+//-----------------------------------------------------------------------------
+// Globals
+//-----------------------------------------------------------------------------
+
+class LLParcelHandler : public LLCommandHandler
+{
+public:
+ // requires trusted browser to trigger
+ LLParcelHandler() : LLCommandHandler("parcel", UNTRUSTED_THROTTLE) { }
+ bool handle(const LLSD& params, const LLSD& query_map,
+ LLMediaCtrl* web)
+ {
+ if (params.size() < 2)
+ {
+ return false;
+ }
+ LLUUID parcel_id;
+ if (!parcel_id.set(params[0], FALSE))
+ {
+ return false;
+ }
+ if (params[1].asString() == "about")
+ {
+ if (parcel_id.notNull())
+ {
+ LLSD key;
+ key["type"] = "remote_place";
+ key["id"] = parcel_id;
+ LLSideTray::getInstance()->showPanel("panel_places", key);
+ return true;
+ }
+ }
+ return false;
+ }
+};
+LLParcelHandler gParcelHandler;
+
+//-----------------------------------------------------------------------------
+// Member functions
+//-----------------------------------------------------------------------------
+
+//----------------------------------------------------------------------------
+
+void* LLFloaterParcelInfo::createPanelPlace(void* data)
+{
+ LLFloaterParcelInfo* self = (LLFloaterParcelInfo*)data;
+ self->mPanelParcelp = new LLPanelPlace(); // allow edit self
+ LLUICtrlFactory::getInstance()->buildPanel(self->mPanelParcelp, "panel_place.xml");
+ return self->mPanelParcelp;
+}
+
+//----------------------------------------------------------------------------
+
+
+LLFloaterParcelInfo::LLFloaterParcelInfo(const LLSD& parcel_id)
+: LLFloater(parcel_id),
+ mParcelID( parcel_id.asUUID() ),
+ mPanelParcelp(NULL)
+{
+ mFactoryMap["place_details_panel"] = LLCallbackMap(LLFloaterParcelInfo::createPanelPlace, this);
+// LLUICtrlFactory::getInstance()->buildFloater(this, "floater_preview_url.xml");
+}
+
+// virtual
+LLFloaterParcelInfo::~LLFloaterParcelInfo()
+{
+
+}
+
+BOOL LLFloaterParcelInfo::postBuild()
+{
+ if (mPanelParcelp)
+ {
+ mPanelParcelp->setParcelID(mParcelID);
+ }
+ center();
+ return LLFloater::postBuild();
+}
+
+
diff --git a/indra/newview/llfloaterparcel.h b/indra/newview/llfloaterparcel.h
new file mode 100644
index 0000000000..7463edcb90
--- /dev/null
+++ b/indra/newview/llfloaterparcel.h
@@ -0,0 +1,53 @@
+/**
+ * @file llfloaterparcel.h
+ * @brief Parcel information as shown in a floating window from a sl-url.
+ * Just a wrapper for LLPanelPlace, shared with the Find directory.
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+#ifndef LL_FLOATERPARCELINFO_H
+#define LL_FLOATERPARCELINFO_H
+
+#include "llfloater.h"
+
+class LLPanelPlace;
+
+class LLFloaterParcelInfo
+: public LLFloater
+{
+public:
+ static void* createPanelPlace(void* data);
+
+ LLFloaterParcelInfo( const LLSD& parcel_id );
+ /*virtual*/ ~LLFloaterParcelInfo();
+
+ /*virtual*/ BOOL postBuild();
+
+ void displayParcelInfo(const LLUUID& parcel_id);
+
+private:
+ LLUUID mParcelID; // for which parcel is this window?
+ LLPanelPlace* mPanelParcelp;
+};
+
+
+#endif
diff --git a/indra/newview/llfloaterpay.cpp b/indra/newview/llfloaterpay.cpp
index 151a76285b..ebc0b90fa9 100644
--- a/indra/newview/llfloaterpay.cpp
+++ b/indra/newview/llfloaterpay.cpp
@@ -152,7 +152,7 @@ BOOL LLFloaterPay::postBuild()
mCallbackData.push_back(info);
childSetAction("fastpay 1",&LLFloaterPay::onGive,info);
- getChildView("fastpay 1")->setVisible( FALSE);
+ childSetVisible("fastpay 1", FALSE);
mQuickPayButton[i] = getChild<LLButton>("fastpay 1");
mQuickPayInfo[i] = info;
@@ -162,7 +162,7 @@ BOOL LLFloaterPay::postBuild()
mCallbackData.push_back(info);
childSetAction("fastpay 5",&LLFloaterPay::onGive,info);
- getChildView("fastpay 5")->setVisible( FALSE);
+ childSetVisible("fastpay 5", FALSE);
mQuickPayButton[i] = getChild<LLButton>("fastpay 5");
mQuickPayInfo[i] = info;
@@ -172,7 +172,7 @@ BOOL LLFloaterPay::postBuild()
mCallbackData.push_back(info);
childSetAction("fastpay 10",&LLFloaterPay::onGive,info);
- getChildView("fastpay 10")->setVisible( FALSE);
+ childSetVisible("fastpay 10", FALSE);
mQuickPayButton[i] = getChild<LLButton>("fastpay 10");
mQuickPayInfo[i] = info;
@@ -182,14 +182,14 @@ BOOL LLFloaterPay::postBuild()
mCallbackData.push_back(info);
childSetAction("fastpay 20",&LLFloaterPay::onGive,info);
- getChildView("fastpay 20")->setVisible( FALSE);
+ childSetVisible("fastpay 20", FALSE);
mQuickPayButton[i] = getChild<LLButton>("fastpay 20");
mQuickPayInfo[i] = info;
++i;
- getChildView("amount text")->setVisible( FALSE);
+ childSetVisible("amount text", FALSE);
std::string last_amount;
if(sLastAmount > 0)
@@ -197,19 +197,19 @@ BOOL LLFloaterPay::postBuild()
last_amount = llformat("%d", sLastAmount);
}
- getChildView("amount")->setVisible( FALSE);
+ childSetVisible("amount", FALSE);
getChild<LLLineEditor>("amount")->setKeystrokeCallback(&LLFloaterPay::onKeystroke, this);
- getChild<LLUICtrl>("amount")->setValue(last_amount);
- getChild<LLLineEditor>("amount")->setPrevalidate(LLTextValidate::validateNonNegativeS32);
+ childSetText("amount", last_amount);
+ childSetPrevalidate("amount", LLTextValidate::validateNonNegativeS32);
info = new LLGiveMoneyInfo(this, 0);
mCallbackData.push_back(info);
childSetAction("pay btn",&LLFloaterPay::onGive,info);
setDefaultBtn("pay btn");
- getChildView("pay btn")->setVisible( FALSE);
- getChildView("pay btn")->setEnabled((sLastAmount > 0));
+ childSetVisible("pay btn", FALSE);
+ childSetEnabled("pay btn", (sLastAmount > 0));
childSetAction("cancel btn",&LLFloaterPay::onCancel,this);
@@ -243,27 +243,27 @@ void LLFloaterPay::processPayPriceReply(LLMessageSystem* msg, void **userdata)
if (PAY_PRICE_HIDE == price)
{
- self->getChildView("amount")->setVisible( FALSE);
- self->getChildView("pay btn")->setVisible( FALSE);
- self->getChildView("amount text")->setVisible( FALSE);
+ self->childSetVisible("amount", FALSE);
+ self->childSetVisible("pay btn", FALSE);
+ self->childSetVisible("amount text", FALSE);
}
else if (PAY_PRICE_DEFAULT == price)
{
- self->getChildView("amount")->setVisible( TRUE);
- self->getChildView("pay btn")->setVisible( TRUE);
- self->getChildView("amount text")->setVisible( TRUE);
+ self->childSetVisible("amount", TRUE);
+ self->childSetVisible("pay btn", TRUE);
+ self->childSetVisible("amount text", TRUE);
}
else
{
// PAY_PRICE_HIDE and PAY_PRICE_DEFAULT are negative values
// So we take the absolute value here after we have checked for those cases
- self->getChildView("amount")->setVisible( TRUE);
- self->getChildView("pay btn")->setVisible( TRUE);
- self->getChildView("pay btn")->setEnabled(TRUE);
- self->getChildView("amount text")->setVisible( TRUE);
+ self->childSetVisible("amount", TRUE);
+ self->childSetVisible("pay btn", TRUE);
+ self->childSetEnabled("pay btn", TRUE);
+ self->childSetVisible("amount text", TRUE);
- self->getChild<LLUICtrl>("amount")->setValue(llformat("%d", llabs(price)));
+ self->childSetText("amount", llformat("%d", llabs(price)));
}
S32 num_blocks = msg->getNumberOfBlocksFast(_PREHASH_ButtonData);
@@ -286,7 +286,7 @@ void LLFloaterPay::processPayPriceReply(LLMessageSystem* msg, void **userdata)
self->mQuickPayButton[i]->setLabelUnselected(button_str);
self->mQuickPayButton[i]->setVisible(TRUE);
self->mQuickPayInfo[i]->mAmount = pay_button;
- self->getChildView("fastpay text")->setVisible(TRUE);
+ self->childSetVisible("fastpay text",TRUE);
if ( pay_button > max_pay_amount )
{
@@ -393,7 +393,7 @@ void LLFloaterPay::payViaObject(money_callback callback, LLSafeHandle<LLObjectSe
BOOL is_group = FALSE;
node->mPermissions->getOwnership(owner_id, is_group);
- floater->getChild<LLUICtrl>("object_name_text")->setValue(node->mName);
+ floater->childSetText("object_name_text",node->mName);
floater->finishPayUI(owner_id, is_group);
}
@@ -409,11 +409,11 @@ void LLFloaterPay::payDirectly(money_callback callback,
floater->setCallback(callback);
floater->mObjectSelection = NULL;
- floater->getChildView("amount")->setVisible( TRUE);
- floater->getChildView("pay btn")->setVisible( TRUE);
- floater->getChildView("amount text")->setVisible( TRUE);
+ floater->childSetVisible("amount", TRUE);
+ floater->childSetVisible("pay btn", TRUE);
+ floater->childSetVisible("amount text", TRUE);
- floater->getChildView("fastpay text")->setVisible(TRUE);
+ floater->childSetVisible("fastpay text",TRUE);
for(S32 i=0;i<MAX_PAY_BUTTONS;++i)
{
floater->mQuickPayButton[i]->setVisible(TRUE);
@@ -428,7 +428,7 @@ void LLFloaterPay::finishPayUI(const LLUUID& target_id, BOOL is_group)
// Make sure the amount field has focus
- getChild<LLUICtrl>("amount")->setFocus( TRUE);
+ childSetFocus("amount", TRUE);
LLLineEditor* amount = getChild<LLLineEditor>("amount");
amount->selectAll();
@@ -449,8 +449,8 @@ void LLFloaterPay::onCacheOwnerName(const LLUUID& owner_id,
setTitle(getString("payee_resident"));
}
- getChild<LLUICtrl>("payee_name")->setTextArg("[FIRST]", firstname);
- getChild<LLUICtrl>("payee_name")->setTextArg("[LAST]", lastname);
+ childSetTextArg("payee_name", "[FIRST]", firstname);
+ childSetTextArg("payee_name", "[LAST]", lastname);
}
// static
@@ -470,8 +470,8 @@ void LLFloaterPay::onKeystroke(LLLineEditor*, void* data)
if(self)
{
// enable the Pay button when amount is non-empty and positive, disable otherwise
- std::string amtstr = self->getChild<LLUICtrl>("amount")->getValue().asString();
- self->getChildView("pay btn")->setEnabled(!amtstr.empty() && atoi(amtstr.c_str()) > 0);
+ std::string amtstr = self->childGetText("amount");
+ self->childSetEnabled("pay btn", !amtstr.empty() && atoi(amtstr.c_str()) > 0);
}
}
@@ -494,7 +494,7 @@ void LLFloaterPay::give(S32 amount)
// text field.
if(amount == 0)
{
- amount = atoi(getChild<LLUICtrl>("amount")->getValue().asString().c_str());
+ amount = atoi(childGetText("amount").c_str());
}
sLastAmount = amount;
diff --git a/indra/newview/llfloaterpostcard.cpp b/indra/newview/llfloaterpostcard.cpp
index bcdcd50288..0a321b999f 100644
--- a/indra/newview/llfloaterpostcard.cpp
+++ b/indra/newview/llfloaterpostcard.cpp
@@ -93,16 +93,16 @@ BOOL LLFloaterPostcard::postBuild()
childSetAction("cancel_btn", onClickCancel, this);
childSetAction("send_btn", onClickSend, this);
- getChildView("from_form")->setEnabled(FALSE);
+ childDisable("from_form");
std::string name_string;
LLAgentUI::buildFullname(name_string);
- getChild<LLUICtrl>("name_form")->setValue(LLSD(name_string));
+ childSetValue("name_form", LLSD(name_string));
// For the first time a user focusess to .the msg box, all text will be selected.
getChild<LLUICtrl>("msg_form")->setFocusChangedCallback(boost::bind(onMsgFormFocusRecieved, _1, this));
- getChild<LLUICtrl>("to_form")->setFocus(TRUE);
+ childSetFocus("to_form", TRUE);
return TRUE;
}
@@ -209,8 +209,8 @@ void LLFloaterPostcard::onClickSend(void* data)
{
LLFloaterPostcard *self = (LLFloaterPostcard *)data;
- std::string from(self->getChild<LLUICtrl>("from_form")->getValue().asString());
- std::string to(self->getChild<LLUICtrl>("to_form")->getValue().asString());
+ std::string from(self->childGetValue("from_form").asString());
+ std::string to(self->childGetValue("to_form").asString());
boost::regex emailFormat("[A-Za-z0-9.%+-_]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}(,[ \t]*[A-Za-z0-9.%+-_]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,})*");
@@ -226,7 +226,7 @@ void LLFloaterPostcard::onClickSend(void* data)
return;
}
- std::string subject(self->getChild<LLUICtrl>("subject_form")->getValue().asString());
+ std::string subject(self->childGetValue("subject_form").asString());
if(subject.empty() || !self->mHasFirstMsgFocus)
{
LLNotificationsUtil::add("PromptMissingSubjMsg", LLSD(), LLSD(), boost::bind(&LLFloaterPostcard::missingSubjMsgAlertCallback, self, _1, _2));
@@ -269,11 +269,11 @@ void LLFloaterPostcard::uploadCallback(const LLUUID& asset_id, void *user_data,
msg->addUUID("SessionID", gAgent.getSessionID());
msg->addUUID("AssetID", self->mAssetID);
msg->addVector3d("PosGlobal", self->mPosTakenGlobal);
- msg->addString("To", self->getChild<LLUICtrl>("to_form")->getValue().asString());
- msg->addString("From", self->getChild<LLUICtrl>("from_form")->getValue().asString());
- msg->addString("Name", self->getChild<LLUICtrl>("name_form")->getValue().asString());
- msg->addString("Subject", self->getChild<LLUICtrl>("subject_form")->getValue().asString());
- msg->addString("Msg", self->getChild<LLUICtrl>("msg_form")->getValue().asString());
+ msg->addString("To", self->childGetValue("to_form").asString());
+ msg->addString("From", self->childGetValue("from_form").asString());
+ msg->addString("Name", self->childGetValue("name_form").asString());
+ msg->addString("Subject", self->childGetValue("subject_form").asString());
+ msg->addString("Msg", self->childGetValue("msg_form").asString());
msg->addBOOL("AllowPublish", FALSE);
msg->addBOOL("MaturePublish", FALSE);
gAgent.sendReliableMessage();
@@ -290,11 +290,11 @@ void LLFloaterPostcard::updateUserInfo(const std::string& email)
iter != inst_list.end(); ++iter)
{
LLFloater* instance = *iter;
- const std::string& text = instance->getChild<LLUICtrl>("from_form")->getValue().asString();
+ const std::string& text = instance->childGetValue("from_form").asString();
if (text.empty())
{
// there's no text in this field yet, pre-populate
- instance->getChild<LLUICtrl>("from_form")->setValue(LLSD(email));
+ instance->childSetValue("from_form", LLSD(email));
}
}
}
@@ -319,17 +319,17 @@ bool LLFloaterPostcard::missingSubjMsgAlertCallback(const LLSD& notification, co
if(0 == option)
{
// User clicked OK
- if((getChild<LLUICtrl>("subject_form")->getValue().asString()).empty())
+ if((childGetValue("subject_form").asString()).empty())
{
// Stuff the subject back into the form.
- getChild<LLUICtrl>("subject_form")->setValue(getString("default_subject"));
+ childSetValue("subject_form", getString("default_subject"));
}
if(!mHasFirstMsgFocus)
{
// The user never switched focus to the messagee window.
// Using the default string.
- getChild<LLUICtrl>("msg_form")->setValue(getString("default_message"));
+ childSetValue("msg_form", getString("default_message"));
}
sendPostcard();
@@ -351,11 +351,11 @@ void LLFloaterPostcard::sendPostcard()
LLSD body = LLSD::emptyMap();
// the capability already encodes: agent ID, region ID
body["pos-global"] = mPosTakenGlobal.getValue();
- body["to"] = getChild<LLUICtrl>("to_form")->getValue().asString();
- body["from"] = getChild<LLUICtrl>("from_form")->getValue().asString();
- body["name"] = getChild<LLUICtrl>("name_form")->getValue().asString();
- body["subject"] = getChild<LLUICtrl>("subject_form")->getValue().asString();
- body["msg"] = getChild<LLUICtrl>("msg_form")->getValue().asString();
+ body["to"] = childGetValue("to_form").asString();
+ body["from"] = childGetValue("from_form").asString();
+ body["name"] = childGetValue("name_form").asString();
+ body["subject"] = childGetValue("subject_form").asString();
+ body["msg"] = childGetValue("msg_form").asString();
LLHTTPClient::post(url, body, new LLSendPostcardResponder(body, mAssetID, LLAssetType::AT_IMAGE_JPEG));
}
else
diff --git a/indra/newview/llfloaterpostprocess.cpp b/indra/newview/llfloaterpostprocess.cpp
index 7f27caf68f..5092bef724 100644
--- a/indra/newview/llfloaterpostprocess.cpp
+++ b/indra/newview/llfloaterpostprocess.cpp
@@ -206,25 +206,25 @@ void LLFloaterPostProcess::syncMenu()
comboBox->selectByValue(gPostProcess->getSelectedEffect());
/// Sync Color Filter Menu
- getChild<LLUICtrl>("ColorFilterToggle")->setValue(gPostProcess->tweaks.useColorFilter());
- //getChild<LLUICtrl>("ColorFilterGamma")->setValue(gPostProcess->tweaks.gamma());
- getChild<LLUICtrl>("ColorFilterBrightness")->setValue(gPostProcess->tweaks.brightness());
- getChild<LLUICtrl>("ColorFilterSaturation")->setValue(gPostProcess->tweaks.saturation());
- getChild<LLUICtrl>("ColorFilterContrast")->setValue(gPostProcess->tweaks.contrast());
- getChild<LLUICtrl>("ColorFilterBaseR")->setValue(gPostProcess->tweaks.contrastBaseR());
- getChild<LLUICtrl>("ColorFilterBaseG")->setValue(gPostProcess->tweaks.contrastBaseG());
- getChild<LLUICtrl>("ColorFilterBaseB")->setValue(gPostProcess->tweaks.contrastBaseB());
- getChild<LLUICtrl>("ColorFilterBaseI")->setValue(gPostProcess->tweaks.contrastBaseIntensity());
+ childSetValue("ColorFilterToggle", gPostProcess->tweaks.useColorFilter());
+ //childSetValue("ColorFilterGamma", gPostProcess->tweaks.gamma());
+ childSetValue("ColorFilterBrightness", gPostProcess->tweaks.brightness());
+ childSetValue("ColorFilterSaturation", gPostProcess->tweaks.saturation());
+ childSetValue("ColorFilterContrast", gPostProcess->tweaks.contrast());
+ childSetValue("ColorFilterBaseR", gPostProcess->tweaks.contrastBaseR());
+ childSetValue("ColorFilterBaseG", gPostProcess->tweaks.contrastBaseG());
+ childSetValue("ColorFilterBaseB", gPostProcess->tweaks.contrastBaseB());
+ childSetValue("ColorFilterBaseI", gPostProcess->tweaks.contrastBaseIntensity());
/// Sync Night Vision Menu
- getChild<LLUICtrl>("NightVisionToggle")->setValue(gPostProcess->tweaks.useNightVisionShader());
- getChild<LLUICtrl>("NightVisionBrightMult")->setValue(gPostProcess->tweaks.brightMult());
- getChild<LLUICtrl>("NightVisionNoiseSize")->setValue(gPostProcess->tweaks.noiseSize());
- getChild<LLUICtrl>("NightVisionNoiseStrength")->setValue(gPostProcess->tweaks.noiseStrength());
+ childSetValue("NightVisionToggle", gPostProcess->tweaks.useNightVisionShader());
+ childSetValue("NightVisionBrightMult", gPostProcess->tweaks.brightMult());
+ childSetValue("NightVisionNoiseSize", gPostProcess->tweaks.noiseSize());
+ childSetValue("NightVisionNoiseStrength", gPostProcess->tweaks.noiseStrength());
/// Sync Bloom Menu
- getChild<LLUICtrl>("BloomToggle")->setValue(LLSD(gPostProcess->tweaks.useBloomShader()));
- getChild<LLUICtrl>("BloomExtract")->setValue(gPostProcess->tweaks.extractLow());
- getChild<LLUICtrl>("BloomSize")->setValue(gPostProcess->tweaks.bloomWidth());
- getChild<LLUICtrl>("BloomStrength")->setValue(gPostProcess->tweaks.bloomStrength());
+ childSetValue("BloomToggle", LLSD(gPostProcess->tweaks.useBloomShader()));
+ childSetValue("BloomExtract", gPostProcess->tweaks.extractLow());
+ childSetValue("BloomSize", gPostProcess->tweaks.bloomWidth());
+ childSetValue("BloomStrength", gPostProcess->tweaks.bloomStrength());
}
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index 3804a1b858..ee8836bb47 100644
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -138,7 +138,7 @@ LLVoiceSetKeyDialog::LLVoiceSetKeyDialog(const LLSD& key)
BOOL LLVoiceSetKeyDialog::postBuild()
{
childSetAction("Cancel", onCancel, this);
- getChild<LLUICtrl>("Cancel")->setFocus(TRUE);
+ childSetFocus("Cancel");
gFocusMgr.setKeystrokesOnly(TRUE);
@@ -324,7 +324,7 @@ BOOL LLFloaterPreference::postBuild()
tabcontainer->selectFirstTab();
std::string cache_location = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, "");
- getChild<LLUICtrl>("cache_location")->setValue(cache_location);
+ childSetText("cache_location", cache_location);
// if floater is opened before login set default localized busy message
if (LLStartUp::getStartupState() < STATE_STARTED)
@@ -420,28 +420,28 @@ void LLFloaterPreference::apply()
fov_slider->setMaxValue(LLViewerCamera::getInstance()->getMaxView());
std::string cache_location = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, "");
- getChild<LLUICtrl>("cache_location")->setValue(cache_location);
+ childSetText("cache_location", cache_location);
- LLViewerMedia::setCookiesEnabled(getChild<LLUICtrl>("cookies_enabled")->getValue());
+ LLViewerMedia::setCookiesEnabled(childGetValue("cookies_enabled"));
if(hasChild("web_proxy_enabled") &&hasChild("web_proxy_editor") && hasChild("web_proxy_port"))
{
- bool proxy_enable = getChild<LLUICtrl>("web_proxy_enabled")->getValue();
- std::string proxy_address = getChild<LLUICtrl>("web_proxy_editor")->getValue();
- int proxy_port = getChild<LLUICtrl>("web_proxy_port")->getValue();
+ bool proxy_enable = childGetValue("web_proxy_enabled");
+ std::string proxy_address = childGetValue("web_proxy_editor");
+ int proxy_port = childGetValue("web_proxy_port");
LLViewerMedia::setProxyConfig(proxy_enable, proxy_address, proxy_port);
}
// LLWString busy_response = utf8str_to_wstring(getChild<LLUICtrl>("busy_response")->getValue().asString());
// LLWStringUtil::replaceTabsWithSpaces(busy_response, 4);
- gSavedSettings.setBOOL("PlainTextChatHistory", getChild<LLUICtrl>("plain_text_chat_history")->getValue().asBoolean());
+ gSavedSettings.setBOOL("PlainTextChatHistory", childGetValue("plain_text_chat_history").asBoolean());
if(mGotPersonalInfo)
{
// gSavedSettings.setString("BusyModeResponse2", std::string(wstring_to_utf8str(busy_response)));
- bool new_im_via_email = getChild<LLUICtrl>("send_im_to_email")->getValue().asBoolean();
- bool new_hide_online = getChild<LLUICtrl>("online_visibility")->getValue().asBoolean();
+ bool new_im_via_email = childGetValue("send_im_to_email").asBoolean();
+ bool new_hide_online = childGetValue("online_visibility").asBoolean();
if((new_im_via_email != mOriginalIMViaEmail)
||(new_hide_online != mOriginalHideOnlineStatus))
@@ -539,13 +539,13 @@ void LLFloaterPreference::onOpen(const LLSD& key)
maturity_list->deleteItems(LLSD(SIM_ACCESS_ADULT));
}
}
- getChildView("maturity_desired_combobox")->setVisible( true);
- getChildView("maturity_desired_textbox")->setVisible( false);
+ childSetVisible("maturity_desired_combobox", true);
+ childSetVisible("maturity_desired_textbox", false);
}
else
{
- getChild<LLUICtrl>("maturity_desired_textbox")->setValue(maturity_combo->getSelectedItemLabel());
- getChildView("maturity_desired_combobox")->setVisible( false);
+ childSetText("maturity_desired_textbox", maturity_combo->getSelectedItemLabel());
+ childSetVisible("maturity_desired_combobox", false);
}
// Display selected maturity icons.
@@ -838,7 +838,7 @@ void LLFloaterPreference::buildPopupLists()
void LLFloaterPreference::refreshEnabledState()
{
- LLComboBox* ctrl_reflections = getChild<LLComboBox>("Reflections");
+ LLCheckBoxCtrl* ctrl_reflections = getChild<LLCheckBoxCtrl>("Reflections");
LLRadioGroup* radio_reflection_detail = getChild<LLRadioGroup>("ReflectionDetailRadio");
// Reflections
@@ -851,7 +851,7 @@ void LLFloaterPreference::refreshEnabledState()
bool bumpshiny = gGLManager.mHasCubeMap && LLCubeMap::sUseCubeMaps && LLFeatureManager::getInstance()->isFeatureAvailable("RenderObjectBump");
getChild<LLCheckBoxCtrl>("BumpShiny")->setEnabled(bumpshiny ? TRUE : FALSE);
- radio_reflection_detail->setEnabled(reflections);
+ radio_reflection_detail->setEnabled(ctrl_reflections->get() && reflections);
// Avatar Mode
// Enable Avatar Shaders
@@ -897,47 +897,20 @@ void LLFloaterPreference::refreshEnabledState()
// *HACK just checks to see if we can use shaders...
// maybe some cards that use shaders, but don't support windlight
ctrl_wind_light->setEnabled(ctrl_shader_enable->getEnabled() && shaders);
-
- //Deferred/SSAO/Shadows
- LLCheckBoxCtrl* ctrl_deferred = getChild<LLCheckBoxCtrl>("UseLightShaders");
- if (LLFeatureManager::getInstance()->isFeatureAvailable("RenderUseFBO") &&
- LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") &&
- shaders)
- {
- BOOL enabled = (ctrl_wind_light->get()) ? TRUE : FALSE;
-
- ctrl_deferred->setEnabled(enabled);
-
- LLCheckBoxCtrl* ctrl_ssao = getChild<LLCheckBoxCtrl>("UseSSAO");
- LLComboBox* ctrl_shadow = getChild<LLComboBox>("ShadowDetail");
-
- enabled = enabled && LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferredSSAO") && (ctrl_deferred->get() ? TRUE : FALSE);
-
- ctrl_ssao->setEnabled(enabled);
-
- enabled = enabled && LLFeatureManager::getInstance()->isFeatureAvailable("RenderShadowDetail");
-
- ctrl_shadow->setEnabled(enabled);
- }
-
-
// now turn off any features that are unavailable
disableUnavailableSettings();
- getChildView("block_list")->setEnabled(LLLoginInstance::getInstance()->authSuccess());
+ childSetEnabled ("block_list", LLLoginInstance::getInstance()->authSuccess());
}
void LLFloaterPreference::disableUnavailableSettings()
{
- LLComboBox* ctrl_reflections = getChild<LLComboBox>("Reflections");
+ LLCheckBoxCtrl* ctrl_reflections = getChild<LLCheckBoxCtrl>("Reflections");
LLCheckBoxCtrl* ctrl_avatar_vp = getChild<LLCheckBoxCtrl>("AvatarVertexProgram");
LLCheckBoxCtrl* ctrl_avatar_cloth = getChild<LLCheckBoxCtrl>("AvatarCloth");
LLCheckBoxCtrl* ctrl_shader_enable = getChild<LLCheckBoxCtrl>("BasicShaders");
LLCheckBoxCtrl* ctrl_wind_light = getChild<LLCheckBoxCtrl>("WindLightUseAtmosShaders");
LLCheckBoxCtrl* ctrl_avatar_impostors = getChild<LLCheckBoxCtrl>("AvatarImpostors");
- LLCheckBoxCtrl* ctrl_deferred = getChild<LLCheckBoxCtrl>("UseLightShaders");
- LLComboBox* ctrl_shadows = getChild<LLComboBox>("ShadowDetail");
- LLCheckBoxCtrl* ctrl_ssao = getChild<LLCheckBoxCtrl>("UseSSAO");
// if vertex shaders off, disable all shader related products
if(!LLFeatureManager::getInstance()->isFeatureAvailable("VertexShaderEnable"))
@@ -949,22 +922,13 @@ void LLFloaterPreference::disableUnavailableSettings()
ctrl_wind_light->setValue(FALSE);
ctrl_reflections->setEnabled(FALSE);
- ctrl_reflections->setValue(0);
+ ctrl_reflections->setValue(FALSE);
ctrl_avatar_vp->setEnabled(FALSE);
ctrl_avatar_vp->setValue(FALSE);
ctrl_avatar_cloth->setEnabled(FALSE);
ctrl_avatar_cloth->setValue(FALSE);
-
- ctrl_shadows->setEnabled(FALSE);
- ctrl_shadows->setValue(0);
-
- ctrl_ssao->setEnabled(FALSE);
- ctrl_ssao->setValue(FALSE);
-
- ctrl_deferred->setEnabled(FALSE);
- ctrl_deferred->setValue(FALSE);
}
// disabled windlight
@@ -972,47 +936,10 @@ void LLFloaterPreference::disableUnavailableSettings()
{
ctrl_wind_light->setEnabled(FALSE);
ctrl_wind_light->setValue(FALSE);
-
- //deferred needs windlight, disable deferred
- ctrl_shadows->setEnabled(FALSE);
- ctrl_shadows->setValue(0);
-
- ctrl_ssao->setEnabled(FALSE);
- ctrl_ssao->setValue(FALSE);
-
- ctrl_deferred->setEnabled(FALSE);
- ctrl_deferred->setValue(FALSE);
- }
-
- // disabled deferred
- if(!LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred"))
- {
- ctrl_shadows->setEnabled(FALSE);
- ctrl_shadows->setValue(0);
-
- ctrl_ssao->setEnabled(FALSE);
- ctrl_ssao->setValue(FALSE);
-
- ctrl_deferred->setEnabled(FALSE);
- ctrl_deferred->setValue(FALSE);
- }
-
- // disabled deferred SSAO
- if(!LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferredSSAO"))
- {
- ctrl_ssao->setEnabled(FALSE);
- ctrl_ssao->setValue(FALSE);
}
- // disabled deferred shadows
- if(!LLFeatureManager::getInstance()->isFeatureAvailable("RenderShadowDetail"))
- {
- ctrl_shadows->setEnabled(FALSE);
- ctrl_shadows->setValue(0);
- }
-
// disabled reflections
- if(!LLFeatureManager::getInstance()->isFeatureAvailable("RenderReflectionDetail"))
+ if(!LLFeatureManager::getInstance()->isFeatureAvailable("RenderWaterReflections"))
{
ctrl_reflections->setEnabled(FALSE);
ctrl_reflections->setValue(FALSE);
@@ -1026,25 +953,13 @@ void LLFloaterPreference::disableUnavailableSettings()
ctrl_avatar_cloth->setEnabled(FALSE);
ctrl_avatar_cloth->setValue(FALSE);
-
- //deferred needs AvatarVP, disable deferred
- ctrl_shadows->setEnabled(FALSE);
- ctrl_shadows->setValue(0);
-
- ctrl_ssao->setEnabled(FALSE);
- ctrl_ssao->setValue(FALSE);
-
- ctrl_deferred->setEnabled(FALSE);
- ctrl_deferred->setValue(FALSE);
}
-
// disabled cloth
if(!LLFeatureManager::getInstance()->isFeatureAvailable("RenderAvatarCloth"))
{
ctrl_avatar_cloth->setEnabled(FALSE);
ctrl_avatar_cloth->setValue(FALSE);
}
-
// disabled impostors
if(!LLFeatureManager::getInstance()->isFeatureAvailable("RenderUseImpostors"))
{
@@ -1095,7 +1010,7 @@ void LLFloaterPreference::onClickSetKey()
void LLFloaterPreference::setKey(KEY key)
{
- getChild<LLUICtrl>("modifier_combo")->setValue(LLKeyboard::stringFromKey(key));
+ childSetValue("modifier_combo", LLKeyboard::stringFromKey(key));
// update the control right away since we no longer wait for apply
getChild<LLUICtrl>("modifier_combo")->onCommit();
}
@@ -1208,46 +1123,46 @@ void LLFloaterPreference::setPersonalInfo(const std::string& visibility, bool im
if(visibility == VISIBILITY_DEFAULT)
{
mOriginalHideOnlineStatus = false;
- getChildView("online_visibility")->setEnabled(TRUE);
+ childEnable("online_visibility");
}
else if(visibility == VISIBILITY_HIDDEN)
{
mOriginalHideOnlineStatus = true;
- getChildView("online_visibility")->setEnabled(TRUE);
+ childEnable("online_visibility");
}
else
{
mOriginalHideOnlineStatus = true;
}
- getChildView("include_im_in_chat_history")->setEnabled(TRUE);
- getChildView("show_timestamps_check_im")->setEnabled(TRUE);
- getChildView("friends_online_notify_checkbox")->setEnabled(TRUE);
-
- getChild<LLUICtrl>("online_visibility")->setValue(mOriginalHideOnlineStatus);
- getChild<LLUICtrl>("online_visibility")->setLabelArg("[DIR_VIS]", mDirectoryVisibility);
- getChildView("send_im_to_email")->setEnabled(TRUE);
- getChild<LLUICtrl>("send_im_to_email")->setValue(im_via_email);
- getChildView("plain_text_chat_history")->setEnabled(TRUE);
- getChild<LLUICtrl>("plain_text_chat_history")->setValue(gSavedSettings.getBOOL("PlainTextChatHistory"));
- getChildView("log_instant_messages")->setEnabled(TRUE);
-// getChildView("log_chat")->setEnabled(TRUE);
-// getChildView("busy_response")->setEnabled(TRUE);
-// getChildView("log_instant_messages_timestamp")->setEnabled(TRUE);
-// getChildView("log_chat_timestamp")->setEnabled(TRUE);
- getChildView("log_chat_IM")->setEnabled(TRUE);
- getChildView("log_date_timestamp")->setEnabled(TRUE);
-
-// getChild<LLUICtrl>("busy_response")->setValue(gSavedSettings.getString("BusyModeResponse2"));
-
- getChildView("log_nearby_chat")->setEnabled(TRUE);
- getChildView("log_instant_messages")->setEnabled(TRUE);
- getChildView("show_timestamps_check_im")->setEnabled(TRUE);
- getChildView("log_path_string")->setEnabled(FALSE);// LineEditor becomes readonly in this case.
- getChildView("log_path_button")->setEnabled(TRUE);
+ childEnable("include_im_in_chat_history");
+ childEnable("show_timestamps_check_im");
+ childEnable("friends_online_notify_checkbox");
+
+ childSetValue("online_visibility", mOriginalHideOnlineStatus);
+ childSetLabelArg("online_visibility", "[DIR_VIS]", mDirectoryVisibility);
+ childEnable("send_im_to_email");
+ childSetValue("send_im_to_email", im_via_email);
+ childEnable("plain_text_chat_history");
+ childSetValue("plain_text_chat_history", gSavedSettings.getBOOL("PlainTextChatHistory"));
+ childEnable("log_instant_messages");
+// childEnable("log_chat");
+// childEnable("busy_response");
+// childEnable("log_instant_messages_timestamp");
+// childEnable("log_chat_timestamp");
+ childEnable("log_chat_IM");
+ childEnable("log_date_timestamp");
+
+// childSetText("busy_response", gSavedSettings.getString("BusyModeResponse2"));
+
+ childEnable("log_nearby_chat");
+ childEnable("log_instant_messages");
+ childEnable("show_timestamps_check_im");
+ childDisable("log_path_string");// LineEditor becomes readonly in this case.
+ childEnable("log_path_button");
std::string display_email(email);
- getChild<LLUICtrl>("email_address")->setValue(display_email);
+ childSetText("email_address",display_email);
}
@@ -1346,8 +1261,8 @@ BOOL LLPanelPreference::postBuild()
if(hasChild("voice_unavailable"))
{
BOOL voice_disabled = gSavedSettings.getBOOL("CmdLineDisableVoice");
- getChildView("voice_unavailable")->setVisible( voice_disabled);
- getChildView("enable_voice_check")->setVisible( !voice_disabled);
+ childSetVisible("voice_unavailable", voice_disabled);
+ childSetVisible("enable_voice_check", !voice_disabled);
}
//////////////////////PanelSkins ///////////////////
@@ -1367,8 +1282,8 @@ BOOL LLPanelPreference::postBuild()
if(hasChild("online_visibility") && hasChild("send_im_to_email"))
{
- getChild<LLUICtrl>("email_address")->setValue(getString("log_in_to_change") );
-// getChild<LLUICtrl>("busy_response")->setValue(getString("log_in_to_change"));
+ childSetText("email_address",getString("log_in_to_change") );
+// childSetText("busy_response", getString("log_in_to_change"));
}
//////////////////////PanelPrivacy ///////////////////
@@ -1392,9 +1307,9 @@ BOOL LLPanelPreference::postBuild()
if (hasChild("modifier_combo"))
{
//localizing if push2talk button is set to middle mouse
- if (MIDDLE_MOUSE_CV == getChild<LLUICtrl>("modifier_combo")->getValue().asString())
+ if (MIDDLE_MOUSE_CV == childGetValue("modifier_combo").asString())
{
- getChild<LLUICtrl>("modifier_combo")->setValue(getString("middle_mouse"));
+ childSetValue("modifier_combo", getString("middle_mouse"));
}
}
diff --git a/indra/newview/llfloaterproperties.cpp b/indra/newview/llfloaterproperties.cpp
index e4e4713dbc..ebe98eb2e1 100644
--- a/indra/newview/llfloaterproperties.cpp
+++ b/indra/newview/llfloaterproperties.cpp
@@ -124,9 +124,9 @@ BOOL LLFloaterProperties::postBuild()
{
// build the UI
// item name & description
- getChild<LLLineEditor>("LabelItemName")->setPrevalidate(&LLTextValidate::validateASCIIPrintableNoPipe);
+ childSetPrevalidate("LabelItemName",&LLTextValidate::validateASCIIPrintableNoPipe);
getChild<LLUICtrl>("LabelItemName")->setCommitCallback(boost::bind(&LLFloaterProperties::onCommitName,this));
- getChild<LLLineEditor>("LabelItemDesc")->setPrevalidate(&LLTextValidate::validateASCIIPrintableNoPipe);
+ childSetPrevalidate("LabelItemDesc",&LLTextValidate::validateASCIIPrintableNoPipe);
getChild<LLUICtrl>("LabelItemDesc")->setCommitCallback(boost::bind(&LLFloaterProperties:: onCommitDescription, this));
// Creator information
getChild<LLUICtrl>("BtnCreator")->setCommitCallback(boost::bind(&LLFloaterProperties::onClickCreator,this));
@@ -195,7 +195,7 @@ void LLFloaterProperties::refresh()
};
for(size_t t=0; t<LL_ARRAY_SIZE(enableNames); ++t)
{
- getChildView(enableNames[t])->setEnabled(false);
+ childSetEnabled(enableNames[t],false);
}
const char* hideNames[]={
"BaseMaskDebug",
@@ -206,7 +206,7 @@ void LLFloaterProperties::refresh()
};
for(size_t t=0; t<LL_ARRAY_SIZE(hideNames); ++t)
{
- getChildView(hideNames[t])->setVisible(false);
+ childSetVisible(hideNames[t],false);
}
}
}
@@ -259,13 +259,13 @@ void LLFloaterProperties::refreshFromItem(LLInventoryItem* item)
GP_OBJECT_MANIPULATE)
&& is_obj_modify && is_complete;
- getChildView("LabelItemNameTitle")->setEnabled(TRUE);
- getChildView("LabelItemName")->setEnabled(is_modifiable && !is_calling_card); // for now, don't allow rename of calling cards
- getChild<LLUICtrl>("LabelItemName")->setValue(item->getName());
- getChildView("LabelItemDescTitle")->setEnabled(TRUE);
- getChildView("LabelItemDesc")->setEnabled(is_modifiable);
- getChildView("IconLocked")->setVisible(!is_modifiable);
- getChild<LLUICtrl>("LabelItemDesc")->setValue(item->getDescription());
+ childSetEnabled("LabelItemNameTitle",TRUE);
+ childSetEnabled("LabelItemName",is_modifiable && !is_calling_card); // for now, don't allow rename of calling cards
+ childSetText("LabelItemName",item->getName());
+ childSetEnabled("LabelItemDescTitle",TRUE);
+ childSetEnabled("LabelItemDesc",is_modifiable);
+ childSetVisible("IconLocked",!is_modifiable);
+ childSetText("LabelItemDesc",item->getDescription());
//////////////////
// CREATOR NAME //
@@ -277,17 +277,17 @@ void LLFloaterProperties::refreshFromItem(LLInventoryItem* item)
{
std::string name;
gCacheName->getFullName(item->getCreatorUUID(), name);
- getChildView("BtnCreator")->setEnabled(TRUE);
- getChildView("LabelCreatorTitle")->setEnabled(TRUE);
- getChildView("LabelCreatorName")->setEnabled(TRUE);
- getChild<LLUICtrl>("LabelCreatorName")->setValue(name);
+ childSetEnabled("BtnCreator",TRUE);
+ childSetEnabled("LabelCreatorTitle",TRUE);
+ childSetEnabled("LabelCreatorName",TRUE);
+ childSetText("LabelCreatorName",name);
}
else
{
- getChildView("BtnCreator")->setEnabled(FALSE);
- getChildView("LabelCreatorTitle")->setEnabled(FALSE);
- getChildView("LabelCreatorName")->setEnabled(FALSE);
- getChild<LLUICtrl>("LabelCreatorName")->setValue(getString("unknown"));
+ childSetEnabled("BtnCreator",FALSE);
+ childSetEnabled("LabelCreatorTitle",FALSE);
+ childSetEnabled("LabelCreatorName",FALSE);
+ childSetText("LabelCreatorName",getString("unknown"));
}
////////////////
@@ -304,17 +304,17 @@ void LLFloaterProperties::refreshFromItem(LLInventoryItem* item)
{
gCacheName->getFullName(perm.getOwner(), name);
}
- getChildView("BtnOwner")->setEnabled(TRUE);
- getChildView("LabelOwnerTitle")->setEnabled(TRUE);
- getChildView("LabelOwnerName")->setEnabled(TRUE);
- getChild<LLUICtrl>("LabelOwnerName")->setValue(name);
+ childSetEnabled("BtnOwner",TRUE);
+ childSetEnabled("LabelOwnerTitle",TRUE);
+ childSetEnabled("LabelOwnerName",TRUE);
+ childSetText("LabelOwnerName",name);
}
else
{
- getChildView("BtnOwner")->setEnabled(FALSE);
- getChildView("LabelOwnerTitle")->setEnabled(FALSE);
- getChildView("LabelOwnerName")->setEnabled(FALSE);
- getChild<LLUICtrl>("LabelOwnerName")->setValue(getString("public"));
+ childSetEnabled("BtnOwner",FALSE);
+ childSetEnabled("LabelOwnerTitle",FALSE);
+ childSetEnabled("LabelOwnerName",FALSE);
+ childSetText("LabelOwnerName",getString("public"));
}
//////////////////
@@ -324,7 +324,7 @@ void LLFloaterProperties::refreshFromItem(LLInventoryItem* item)
time_t time_utc = item->getCreationDate();
if (0 == time_utc)
{
- getChild<LLUICtrl>("LabelAcquiredDate")->setValue(getString("unknown"));
+ childSetText("LabelAcquiredDate",getString("unknown"));
}
else
{
@@ -332,7 +332,7 @@ void LLFloaterProperties::refreshFromItem(LLInventoryItem* item)
LLSD substitution;
substitution["datetime"] = (S32) time_utc;
LLStringUtil::format (timeStr, substitution);
- getChild<LLUICtrl>("LabelAcquiredDate")->setValue(timeStr);
+ childSetText ("LabelAcquiredDate", timeStr);
}
///////////////////////
@@ -340,11 +340,11 @@ void LLFloaterProperties::refreshFromItem(LLInventoryItem* item)
///////////////////////
if(can_agent_manipulate)
{
- getChild<LLUICtrl>("OwnerLabel")->setValue(getString("you_can"));
+ childSetText("OwnerLabel",getString("you_can"));
}
else
{
- getChild<LLUICtrl>("OwnerLabel")->setValue(getString("owner_can"));
+ childSetText("OwnerLabel",getString("owner_can"));
}
U32 base_mask = perm.getMaskBase();
@@ -353,13 +353,13 @@ void LLFloaterProperties::refreshFromItem(LLInventoryItem* item)
U32 everyone_mask = perm.getMaskEveryone();
U32 next_owner_mask = perm.getMaskNextOwner();
- getChildView("OwnerLabel")->setEnabled(TRUE);
- getChildView("CheckOwnerModify")->setEnabled(FALSE);
- getChild<LLUICtrl>("CheckOwnerModify")->setValue(LLSD((BOOL)(owner_mask & PERM_MODIFY)));
- getChildView("CheckOwnerCopy")->setEnabled(FALSE);
- getChild<LLUICtrl>("CheckOwnerCopy")->setValue(LLSD((BOOL)(owner_mask & PERM_COPY)));
- getChildView("CheckOwnerTransfer")->setEnabled(FALSE);
- getChild<LLUICtrl>("CheckOwnerTransfer")->setValue(LLSD((BOOL)(owner_mask & PERM_TRANSFER)));
+ childSetEnabled("OwnerLabel",TRUE);
+ childSetEnabled("CheckOwnerModify",FALSE);
+ childSetValue("CheckOwnerModify",LLSD((BOOL)(owner_mask & PERM_MODIFY)));
+ childSetEnabled("CheckOwnerCopy",FALSE);
+ childSetValue("CheckOwnerCopy",LLSD((BOOL)(owner_mask & PERM_COPY)));
+ childSetEnabled("CheckOwnerTransfer",FALSE);
+ childSetValue("CheckOwnerTransfer",LLSD((BOOL)(owner_mask & PERM_TRANSFER)));
///////////////////////
// DEBUG PERMISSIONS //
@@ -383,39 +383,39 @@ void LLFloaterProperties::refreshFromItem(LLInventoryItem* item)
perm_string = "B: ";
perm_string += mask_to_string(base_mask);
- getChild<LLUICtrl>("BaseMaskDebug")->setValue(perm_string);
- getChildView("BaseMaskDebug")->setVisible(TRUE);
+ childSetText("BaseMaskDebug",perm_string);
+ childSetVisible("BaseMaskDebug",TRUE);
perm_string = "O: ";
perm_string += mask_to_string(owner_mask);
- getChild<LLUICtrl>("OwnerMaskDebug")->setValue(perm_string);
- getChildView("OwnerMaskDebug")->setVisible(TRUE);
+ childSetText("OwnerMaskDebug",perm_string);
+ childSetVisible("OwnerMaskDebug",TRUE);
perm_string = "G";
perm_string += overwrite_group ? "*: " : ": ";
perm_string += mask_to_string(group_mask);
- getChild<LLUICtrl>("GroupMaskDebug")->setValue(perm_string);
- getChildView("GroupMaskDebug")->setVisible(TRUE);
+ childSetText("GroupMaskDebug",perm_string);
+ childSetVisible("GroupMaskDebug",TRUE);
perm_string = "E";
perm_string += overwrite_everyone ? "*: " : ": ";
perm_string += mask_to_string(everyone_mask);
- getChild<LLUICtrl>("EveryoneMaskDebug")->setValue(perm_string);
- getChildView("EveryoneMaskDebug")->setVisible(TRUE);
+ childSetText("EveryoneMaskDebug",perm_string);
+ childSetVisible("EveryoneMaskDebug",TRUE);
perm_string = "N";
perm_string += slam_perm ? "*: " : ": ";
perm_string += mask_to_string(next_owner_mask);
- getChild<LLUICtrl>("NextMaskDebug")->setValue(perm_string);
- getChildView("NextMaskDebug")->setVisible(TRUE);
+ childSetText("NextMaskDebug",perm_string);
+ childSetVisible("NextMaskDebug",TRUE);
}
else
{
- getChildView("BaseMaskDebug")->setVisible(FALSE);
- getChildView("OwnerMaskDebug")->setVisible(FALSE);
- getChildView("GroupMaskDebug")->setVisible(FALSE);
- getChildView("EveryoneMaskDebug")->setVisible(FALSE);
- getChildView("NextMaskDebug")->setVisible(FALSE);
+ childSetVisible("BaseMaskDebug",FALSE);
+ childSetVisible("OwnerMaskDebug",FALSE);
+ childSetVisible("GroupMaskDebug",FALSE);
+ childSetVisible("EveryoneMaskDebug",FALSE);
+ childSetVisible("NextMaskDebug",FALSE);
}
/////////////
@@ -425,18 +425,18 @@ void LLFloaterProperties::refreshFromItem(LLInventoryItem* item)
// Check for ability to change values.
if (is_link || cannot_restrict_permissions)
{
- getChildView("CheckShareWithGroup")->setEnabled(FALSE);
- getChildView("CheckEveryoneCopy")->setEnabled(FALSE);
+ childSetEnabled("CheckShareWithGroup",FALSE);
+ childSetEnabled("CheckEveryoneCopy",FALSE);
}
else if (is_obj_modify && can_agent_manipulate)
{
- getChildView("CheckShareWithGroup")->setEnabled(TRUE);
- getChildView("CheckEveryoneCopy")->setEnabled((owner_mask & PERM_COPY) && (owner_mask & PERM_TRANSFER));
+ childSetEnabled("CheckShareWithGroup",TRUE);
+ childSetEnabled("CheckEveryoneCopy",(owner_mask & PERM_COPY) && (owner_mask & PERM_TRANSFER));
}
else
{
- getChildView("CheckShareWithGroup")->setEnabled(FALSE);
- getChildView("CheckEveryoneCopy")->setEnabled(FALSE);
+ childSetEnabled("CheckShareWithGroup",FALSE);
+ childSetEnabled("CheckEveryoneCopy",FALSE);
}
// Set values.
@@ -446,7 +446,7 @@ void LLFloaterProperties::refreshFromItem(LLInventoryItem* item)
if (is_group_copy && is_group_modify && is_group_move)
{
- getChild<LLUICtrl>("CheckShareWithGroup")->setValue(LLSD((BOOL)TRUE));
+ childSetValue("CheckShareWithGroup",LLSD((BOOL)TRUE));
LLCheckBoxCtrl* ctl = getChild<LLCheckBoxCtrl>("CheckShareWithGroup");
if(ctl)
@@ -456,7 +456,7 @@ void LLFloaterProperties::refreshFromItem(LLInventoryItem* item)
}
else if (!is_group_copy && !is_group_modify && !is_group_move)
{
- getChild<LLUICtrl>("CheckShareWithGroup")->setValue(LLSD((BOOL)FALSE));
+ childSetValue("CheckShareWithGroup",LLSD((BOOL)FALSE));
LLCheckBoxCtrl* ctl = getChild<LLCheckBoxCtrl>("CheckShareWithGroup");
if(ctl)
{
@@ -473,7 +473,7 @@ void LLFloaterProperties::refreshFromItem(LLInventoryItem* item)
}
}
- getChild<LLUICtrl>("CheckEveryoneCopy")->setValue(LLSD((BOOL)(everyone_mask & PERM_COPY)));
+ childSetValue("CheckEveryoneCopy",LLSD((BOOL)(everyone_mask & PERM_COPY)));
///////////////
// SALE INFO //
@@ -485,40 +485,40 @@ void LLFloaterProperties::refreshFromItem(LLInventoryItem* item)
if (is_obj_modify && can_agent_sell
&& gAgent.allowOperation(PERM_TRANSFER, perm, GP_OBJECT_MANIPULATE))
{
- getChildView("SaleLabel")->setEnabled(is_complete);
- getChildView("CheckPurchase")->setEnabled(is_complete);
+ childSetEnabled("SaleLabel",is_complete);
+ childSetEnabled("CheckPurchase",is_complete);
- getChildView("NextOwnerLabel")->setEnabled(TRUE);
- getChildView("CheckNextOwnerModify")->setEnabled((base_mask & PERM_MODIFY) && !cannot_restrict_permissions);
- getChildView("CheckNextOwnerCopy")->setEnabled((base_mask & PERM_COPY) && !cannot_restrict_permissions);
- getChildView("CheckNextOwnerTransfer")->setEnabled((next_owner_mask & PERM_COPY) && !cannot_restrict_permissions);
+ childSetEnabled("NextOwnerLabel",TRUE);
+ childSetEnabled("CheckNextOwnerModify",(base_mask & PERM_MODIFY) && !cannot_restrict_permissions);
+ childSetEnabled("CheckNextOwnerCopy",(base_mask & PERM_COPY) && !cannot_restrict_permissions);
+ childSetEnabled("CheckNextOwnerTransfer",(next_owner_mask & PERM_COPY) && !cannot_restrict_permissions);
- getChildView("RadioSaleType")->setEnabled(is_complete && is_for_sale);
- getChildView("TextPrice")->setEnabled(is_complete && is_for_sale);
- getChildView("Edit Cost")->setEnabled(is_complete && is_for_sale);
+ childSetEnabled("RadioSaleType",is_complete && is_for_sale);
+ childSetEnabled("TextPrice",is_complete && is_for_sale);
+ childSetEnabled("Edit Cost",is_complete && is_for_sale);
}
else
{
- getChildView("SaleLabel")->setEnabled(FALSE);
- getChildView("CheckPurchase")->setEnabled(FALSE);
+ childSetEnabled("SaleLabel",FALSE);
+ childSetEnabled("CheckPurchase",FALSE);
- getChildView("NextOwnerLabel")->setEnabled(FALSE);
- getChildView("CheckNextOwnerModify")->setEnabled(FALSE);
- getChildView("CheckNextOwnerCopy")->setEnabled(FALSE);
- getChildView("CheckNextOwnerTransfer")->setEnabled(FALSE);
+ childSetEnabled("NextOwnerLabel",FALSE);
+ childSetEnabled("CheckNextOwnerModify",FALSE);
+ childSetEnabled("CheckNextOwnerCopy",FALSE);
+ childSetEnabled("CheckNextOwnerTransfer",FALSE);
- getChildView("RadioSaleType")->setEnabled(FALSE);
- getChildView("TextPrice")->setEnabled(FALSE);
- getChildView("Edit Cost")->setEnabled(FALSE);
+ childSetEnabled("RadioSaleType",FALSE);
+ childSetEnabled("TextPrice",FALSE);
+ childSetEnabled("Edit Cost",FALSE);
}
// Set values.
- getChild<LLUICtrl>("CheckPurchase")->setValue(is_for_sale);
- getChildView("combobox sale copy")->setEnabled(is_for_sale);
- getChildView("Edit Cost")->setEnabled(is_for_sale);
- getChild<LLUICtrl>("CheckNextOwnerModify")->setValue(LLSD(BOOL(next_owner_mask & PERM_MODIFY)));
- getChild<LLUICtrl>("CheckNextOwnerCopy")->setValue(LLSD(BOOL(next_owner_mask & PERM_COPY)));
- getChild<LLUICtrl>("CheckNextOwnerTransfer")->setValue(LLSD(BOOL(next_owner_mask & PERM_TRANSFER)));
+ childSetValue("CheckPurchase", is_for_sale);
+ childSetEnabled("combobox sale copy", is_for_sale);
+ childSetEnabled("Edit Cost", is_for_sale);
+ childSetValue("CheckNextOwnerModify",LLSD(BOOL(next_owner_mask & PERM_MODIFY)));
+ childSetValue("CheckNextOwnerCopy",LLSD(BOOL(next_owner_mask & PERM_COPY)));
+ childSetValue("CheckNextOwnerTransfer",LLSD(BOOL(next_owner_mask & PERM_TRANSFER)));
LLRadioGroup* radioSaleType = getChild<LLRadioGroup>("RadioSaleType");
if (is_for_sale)
@@ -526,12 +526,12 @@ void LLFloaterProperties::refreshFromItem(LLInventoryItem* item)
radioSaleType->setSelectedIndex((S32)sale_info.getSaleType() - 1);
S32 numerical_price;
numerical_price = sale_info.getSalePrice();
- getChild<LLUICtrl>("Edit Cost")->setValue(llformat("%d",numerical_price));
+ childSetText("Edit Cost",llformat("%d",numerical_price));
}
else
{
radioSaleType->setSelectedIndex(-1);
- getChild<LLUICtrl>("Edit Cost")->setValue(llformat("%d",0));
+ childSetText("Edit Cost",llformat("%d",0));
}
}
@@ -752,10 +752,10 @@ void LLFloaterProperties::updateSaleInfo()
LLSaleInfo sale_info(item->getSaleInfo());
if(!gAgent.allowOperation(PERM_TRANSFER, item->getPermissions(), GP_OBJECT_SET_SALE))
{
- getChild<LLUICtrl>("CheckPurchase")->setValue(LLSD((BOOL)FALSE));
+ childSetValue("CheckPurchase",LLSD((BOOL)FALSE));
}
- if((BOOL)getChild<LLUICtrl>("CheckPurchase")->getValue())
+ if((BOOL)childGetValue("CheckPurchase"))
{
// turn on sale info
LLSaleInfo::EForSale sale_type = LLSaleInfo::FS_COPY;
diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp
index 29ad0f3b9c..fa7a4a5759 100644
--- a/indra/newview/llfloaterregioninfo.cpp
+++ b/indra/newview/llfloaterregioninfo.cpp
@@ -326,20 +326,20 @@ void LLFloaterRegionInfo::processRegionInfo(LLMessageSystem* msg)
// GENERAL PANEL
panel = tab->getChild<LLPanel>("General");
- panel->getChild<LLUICtrl>("region_text")->setValue(LLSD(sim_name));
- panel->getChild<LLUICtrl>("region_type")->setValue(LLSD(sim_type));
- panel->getChild<LLUICtrl>("version_channel_text")->setValue(gLastVersionChannel);
-
- panel->getChild<LLUICtrl>("block_terraform_check")->setValue((region_flags & REGION_FLAGS_BLOCK_TERRAFORM) ? TRUE : FALSE );
- panel->getChild<LLUICtrl>("block_fly_check")->setValue((region_flags & REGION_FLAGS_BLOCK_FLY) ? TRUE : FALSE );
- panel->getChild<LLUICtrl>("allow_damage_check")->setValue((region_flags & REGION_FLAGS_ALLOW_DAMAGE) ? TRUE : FALSE );
- panel->getChild<LLUICtrl>("restrict_pushobject")->setValue((region_flags & REGION_FLAGS_RESTRICT_PUSHOBJECT) ? TRUE : FALSE );
- panel->getChild<LLUICtrl>("allow_land_resell_check")->setValue((region_flags & REGION_FLAGS_BLOCK_LAND_RESELL) ? FALSE : TRUE );
- panel->getChild<LLUICtrl>("allow_parcel_changes_check")->setValue((region_flags & REGION_FLAGS_ALLOW_PARCEL_CHANGES) ? TRUE : FALSE );
- panel->getChild<LLUICtrl>("block_parcel_search_check")->setValue((region_flags & REGION_FLAGS_BLOCK_PARCEL_SEARCH) ? TRUE : FALSE );
- panel->getChild<LLUICtrl>("agent_limit_spin")->setValue(LLSD((F32)agent_limit) );
- panel->getChild<LLUICtrl>("object_bonus_spin")->setValue(LLSD(object_bonus_factor) );
- panel->getChild<LLUICtrl>("access_combo")->setValue(LLSD(sim_access) );
+ panel->childSetValue("region_text", LLSD(sim_name));
+ panel->childSetValue("region_type", LLSD(sim_type));
+ panel->childSetValue("version_channel_text", gLastVersionChannel);
+
+ panel->childSetValue("block_terraform_check", (region_flags & REGION_FLAGS_BLOCK_TERRAFORM) ? TRUE : FALSE );
+ panel->childSetValue("block_fly_check", (region_flags & REGION_FLAGS_BLOCK_FLY) ? TRUE : FALSE );
+ panel->childSetValue("allow_damage_check", (region_flags & REGION_FLAGS_ALLOW_DAMAGE) ? TRUE : FALSE );
+ panel->childSetValue("restrict_pushobject", (region_flags & REGION_FLAGS_RESTRICT_PUSHOBJECT) ? TRUE : FALSE );
+ panel->childSetValue("allow_land_resell_check", (region_flags & REGION_FLAGS_BLOCK_LAND_RESELL) ? FALSE : TRUE );
+ panel->childSetValue("allow_parcel_changes_check", (region_flags & REGION_FLAGS_ALLOW_PARCEL_CHANGES) ? TRUE : FALSE );
+ panel->childSetValue("block_parcel_search_check", (region_flags & REGION_FLAGS_BLOCK_PARCEL_SEARCH) ? TRUE : FALSE );
+ panel->childSetValue("agent_limit_spin", LLSD((F32)agent_limit) );
+ panel->childSetValue("object_bonus_spin", LLSD(object_bonus_factor) );
+ panel->childSetValue("access_combo", LLSD(sim_access) );
// detect teen grid for maturity
@@ -347,32 +347,32 @@ void LLFloaterRegionInfo::processRegionInfo(LLMessageSystem* msg)
U32 parent_estate_id;
msg->getU32("RegionInfo", "ParentEstateID", parent_estate_id);
BOOL teen_grid = (parent_estate_id == 5); // *TODO add field to estate table and test that
- panel->getChildView("access_combo")->setEnabled(gAgent.isGodlike() || (region && region->canManageEstate() && !teen_grid));
+ panel->childSetEnabled("access_combo", gAgent.isGodlike() || (region && region->canManageEstate() && !teen_grid));
panel->setCtrlsEnabled(allow_modify);
// DEBUG PANEL
panel = tab->getChild<LLPanel>("Debug");
- panel->getChild<LLUICtrl>("region_text")->setValue(LLSD(sim_name) );
- panel->getChild<LLUICtrl>("disable_scripts_check")->setValue(LLSD((BOOL)(region_flags & REGION_FLAGS_SKIP_SCRIPTS)) );
- panel->getChild<LLUICtrl>("disable_collisions_check")->setValue(LLSD((BOOL)(region_flags & REGION_FLAGS_SKIP_COLLISIONS)) );
- panel->getChild<LLUICtrl>("disable_physics_check")->setValue(LLSD((BOOL)(region_flags & REGION_FLAGS_SKIP_PHYSICS)) );
+ panel->childSetValue("region_text", LLSD(sim_name) );
+ panel->childSetValue("disable_scripts_check", LLSD((BOOL)(region_flags & REGION_FLAGS_SKIP_SCRIPTS)) );
+ panel->childSetValue("disable_collisions_check", LLSD((BOOL)(region_flags & REGION_FLAGS_SKIP_COLLISIONS)) );
+ panel->childSetValue("disable_physics_check", LLSD((BOOL)(region_flags & REGION_FLAGS_SKIP_PHYSICS)) );
panel->setCtrlsEnabled(allow_modify);
// TERRAIN PANEL
panel = tab->getChild<LLPanel>("Terrain");
- panel->getChild<LLUICtrl>("region_text")->setValue(LLSD(sim_name));
- panel->getChild<LLUICtrl>("water_height_spin")->setValue(LLSD(water_height));
- panel->getChild<LLUICtrl>("terrain_raise_spin")->setValue(LLSD(terrain_raise_limit));
- panel->getChild<LLUICtrl>("terrain_lower_spin")->setValue(LLSD(terrain_lower_limit));
- panel->getChild<LLUICtrl>("use_estate_sun_check")->setValue(LLSD(use_estate_sun));
+ panel->childSetValue("region_text", LLSD(sim_name));
+ panel->childSetValue("water_height_spin", LLSD(water_height));
+ panel->childSetValue("terrain_raise_spin", LLSD(terrain_raise_limit));
+ panel->childSetValue("terrain_lower_spin", LLSD(terrain_lower_limit));
+ panel->childSetValue("use_estate_sun_check", LLSD(use_estate_sun));
- panel->getChild<LLUICtrl>("fixed_sun_check")->setValue(LLSD((BOOL)(region_flags & REGION_FLAGS_SUN_FIXED)));
- panel->getChildView("fixed_sun_check")->setEnabled(allow_modify && !use_estate_sun);
- panel->getChild<LLUICtrl>("sun_hour_slider")->setValue(LLSD(sun_hour));
- panel->getChildView("sun_hour_slider")->setEnabled(allow_modify && !use_estate_sun);
+ panel->childSetValue("fixed_sun_check", LLSD((BOOL)(region_flags & REGION_FLAGS_SUN_FIXED)));
+ panel->childSetEnabled("fixed_sun_check", allow_modify && !use_estate_sun);
+ panel->childSetValue("sun_hour_slider", LLSD(sun_hour));
+ panel->childSetEnabled("sun_hour_slider", allow_modify && !use_estate_sun);
panel->setCtrlsEnabled(allow_modify);
floater->refreshFromRegion( gAgent.getRegion() );
@@ -479,7 +479,7 @@ void LLPanelRegionInfo::onChangeText(LLLineEditor* caller, void* user_data)
BOOL LLPanelRegionInfo::postBuild()
{
getChild<LLUICtrl>("apply_btn")->setCommitCallback(boost::bind(&LLPanelRegionInfo::onBtnSet, this));
- getChildView("apply_btn")->setEnabled(FALSE);
+ childDisable("apply_btn");
refresh();
return TRUE;
}
@@ -531,12 +531,12 @@ void LLPanelRegionInfo::sendEstateOwnerMessage(
void LLPanelRegionInfo::enableButton(const std::string& btn_name, BOOL enable)
{
- getChildView(btn_name)->setEnabled(enable);
+ childSetEnabled(btn_name, enable);
}
void LLPanelRegionInfo::disableButton(const std::string& btn_name)
{
- getChildView(btn_name)->setEnabled(FALSE);
+ childDisable(btn_name);
}
void LLPanelRegionInfo::initCtrl(const std::string& name)
@@ -557,14 +557,14 @@ bool LLPanelRegionGeneralInfo::refreshFromRegion(LLViewerRegion* region)
{
BOOL allow_modify = gAgent.isGodlike() || (region && region->canManageEstate());
setCtrlsEnabled(allow_modify);
- getChildView("apply_btn")->setEnabled(FALSE);
- getChildView("access_text")->setEnabled(allow_modify);
- // getChildView("access_combo")->setEnabled(allow_modify);
+ childDisable("apply_btn");
+ childSetEnabled("access_text", allow_modify);
+ // childSetEnabled("access_combo", allow_modify);
// now set in processRegionInfo for teen grid detection
- getChildView("kick_btn")->setEnabled(allow_modify);
- getChildView("kick_all_btn")->setEnabled(allow_modify);
- getChildView("im_btn")->setEnabled(allow_modify);
- getChildView("manage_telehub_btn")->setEnabled(allow_modify);
+ childSetEnabled("kick_btn", allow_modify);
+ childSetEnabled("kick_all_btn", allow_modify);
+ childSetEnabled("im_btn", allow_modify);
+ childSetEnabled("manage_telehub_btn", allow_modify);
// Data gets filled in by processRegionInfo
@@ -713,16 +713,16 @@ BOOL LLPanelRegionGeneralInfo::sendUpdate()
std::string url = gAgent.getRegion()->getCapability("DispatchRegionInfo");
if (!url.empty())
{
- body["block_terraform"] = getChild<LLUICtrl>("block_terraform_check")->getValue();
- body["block_fly"] = getChild<LLUICtrl>("block_fly_check")->getValue();
- body["allow_damage"] = getChild<LLUICtrl>("allow_damage_check")->getValue();
- body["allow_land_resell"] = getChild<LLUICtrl>("allow_land_resell_check")->getValue();
- body["agent_limit"] = getChild<LLUICtrl>("agent_limit_spin")->getValue();
- body["prim_bonus"] = getChild<LLUICtrl>("object_bonus_spin")->getValue();
- body["sim_access"] = getChild<LLUICtrl>("access_combo")->getValue();
- body["restrict_pushobject"] = getChild<LLUICtrl>("restrict_pushobject")->getValue();
- body["allow_parcel_changes"] = getChild<LLUICtrl>("allow_parcel_changes_check")->getValue();
- body["block_parcel_search"] = getChild<LLUICtrl>("block_parcel_search_check")->getValue();
+ body["block_terraform"] = childGetValue("block_terraform_check");
+ body["block_fly"] = childGetValue("block_fly_check");
+ body["allow_damage"] = childGetValue("allow_damage_check");
+ body["allow_land_resell"] = childGetValue("allow_land_resell_check");
+ body["agent_limit"] = childGetValue("agent_limit_spin");
+ body["prim_bonus"] = childGetValue("object_bonus_spin");
+ body["sim_access"] = childGetValue("access_combo");
+ body["restrict_pushobject"] = childGetValue("restrict_pushobject");
+ body["allow_parcel_changes"] = childGetValue("allow_parcel_changes_check");
+ body["block_parcel_search"] = childGetValue("block_parcel_search_check");
LLHTTPClient::post(url, body, new LLHTTPClient::Responder());
}
@@ -731,33 +731,33 @@ BOOL LLPanelRegionGeneralInfo::sendUpdate()
strings_t strings;
std::string buffer;
- buffer = llformat("%s", (getChild<LLUICtrl>("block_terraform_check")->getValue().asBoolean() ? "Y" : "N"));
+ buffer = llformat("%s", (childGetValue("block_terraform_check").asBoolean() ? "Y" : "N"));
strings.push_back(strings_t::value_type(buffer));
- buffer = llformat("%s", (getChild<LLUICtrl>("block_fly_check")->getValue().asBoolean() ? "Y" : "N"));
+ buffer = llformat("%s", (childGetValue("block_fly_check").asBoolean() ? "Y" : "N"));
strings.push_back(strings_t::value_type(buffer));
- buffer = llformat("%s", (getChild<LLUICtrl>("allow_damage_check")->getValue().asBoolean() ? "Y" : "N"));
+ buffer = llformat("%s", (childGetValue("allow_damage_check").asBoolean() ? "Y" : "N"));
strings.push_back(strings_t::value_type(buffer));
- buffer = llformat("%s", (getChild<LLUICtrl>("allow_land_resell_check")->getValue().asBoolean() ? "Y" : "N"));
+ buffer = llformat("%s", (childGetValue("allow_land_resell_check").asBoolean() ? "Y" : "N"));
strings.push_back(strings_t::value_type(buffer));
- F32 value = (F32)getChild<LLUICtrl>("agent_limit_spin")->getValue().asReal();
+ F32 value = (F32)childGetValue("agent_limit_spin").asReal();
buffer = llformat("%f", value);
strings.push_back(strings_t::value_type(buffer));
- value = (F32)getChild<LLUICtrl>("object_bonus_spin")->getValue().asReal();
+ value = (F32)childGetValue("object_bonus_spin").asReal();
buffer = llformat("%f", value);
strings.push_back(strings_t::value_type(buffer));
- buffer = llformat("%d", getChild<LLUICtrl>("access_combo")->getValue().asInteger());
+ buffer = llformat("%d", childGetValue("access_combo").asInteger());
strings.push_back(strings_t::value_type(buffer));
- buffer = llformat("%s", (getChild<LLUICtrl>("restrict_pushobject")->getValue().asBoolean() ? "Y" : "N"));
+ buffer = llformat("%s", (childGetValue("restrict_pushobject").asBoolean() ? "Y" : "N"));
strings.push_back(strings_t::value_type(buffer));
- buffer = llformat("%s", (getChild<LLUICtrl>("allow_parcel_changes_check")->getValue().asBoolean() ? "Y" : "N"));
+ buffer = llformat("%s", (childGetValue("allow_parcel_changes_check").asBoolean() ? "Y" : "N"));
strings.push_back(strings_t::value_type(buffer));
LLUUID invoice(LLFloaterRegionInfo::getLastInvoice());
@@ -766,7 +766,7 @@ BOOL LLPanelRegionGeneralInfo::sendUpdate()
// if we changed access levels, tell user about it
LLViewerRegion* region = gAgent.getRegion();
- if (region && (getChild<LLUICtrl>("access_combo")->getValue().asInteger() != region->getSimAccess()) )
+ if (region && (childGetValue("access_combo").asInteger() != region->getSimAccess()) )
{
LLNotificationsUtil::add("RegionMaturityChange");
}
@@ -799,18 +799,18 @@ bool LLPanelRegionDebugInfo::refreshFromRegion(LLViewerRegion* region)
{
BOOL allow_modify = gAgent.isGodlike() || (region && region->canManageEstate());
setCtrlsEnabled(allow_modify);
- getChildView("apply_btn")->setEnabled(FALSE);
- getChildView("target_avatar_name")->setEnabled(FALSE);
+ childDisable("apply_btn");
+ childDisable("target_avatar_name");
- getChildView("choose_avatar_btn")->setEnabled(allow_modify);
- getChildView("return_scripts")->setEnabled(allow_modify && !mTargetAvatar.isNull());
- getChildView("return_other_land")->setEnabled(allow_modify && !mTargetAvatar.isNull());
- getChildView("return_estate_wide")->setEnabled(allow_modify && !mTargetAvatar.isNull());
- getChildView("return_btn")->setEnabled(allow_modify && !mTargetAvatar.isNull());
- getChildView("top_colliders_btn")->setEnabled(allow_modify);
- getChildView("top_scripts_btn")->setEnabled(allow_modify);
- getChildView("restart_btn")->setEnabled(allow_modify);
- getChildView("cancel_restart_btn")->setEnabled(allow_modify);
+ childSetEnabled("choose_avatar_btn", allow_modify);
+ childSetEnabled("return_scripts", allow_modify && !mTargetAvatar.isNull());
+ childSetEnabled("return_other_land", allow_modify && !mTargetAvatar.isNull());
+ childSetEnabled("return_estate_wide", allow_modify && !mTargetAvatar.isNull());
+ childSetEnabled("return_btn", allow_modify && !mTargetAvatar.isNull());
+ childSetEnabled("top_colliders_btn", allow_modify);
+ childSetEnabled("top_scripts_btn", allow_modify);
+ childSetEnabled("restart_btn", allow_modify);
+ childSetEnabled("cancel_restart_btn", allow_modify);
return LLPanelRegionInfo::refreshFromRegion(region);
}
@@ -822,13 +822,13 @@ BOOL LLPanelRegionDebugInfo::sendUpdate()
strings_t strings;
std::string buffer;
- buffer = llformat("%s", (getChild<LLUICtrl>("disable_scripts_check")->getValue().asBoolean() ? "Y" : "N"));
+ buffer = llformat("%s", (childGetValue("disable_scripts_check").asBoolean() ? "Y" : "N"));
strings.push_back(buffer);
- buffer = llformat("%s", (getChild<LLUICtrl>("disable_collisions_check")->getValue().asBoolean() ? "Y" : "N"));
+ buffer = llformat("%s", (childGetValue("disable_collisions_check").asBoolean() ? "Y" : "N"));
strings.push_back(buffer);
- buffer = llformat("%s", (getChild<LLUICtrl>("disable_physics_check")->getValue().asBoolean() ? "Y" : "N"));
+ buffer = llformat("%s", (childGetValue("disable_physics_check").asBoolean() ? "Y" : "N"));
strings.push_back(buffer);
LLUUID invoice(LLFloaterRegionInfo::getLastInvoice());
@@ -846,7 +846,7 @@ void LLPanelRegionDebugInfo::callbackAvatarID(const std::vector<std::string>& na
{
if (ids.empty() || names.empty()) return;
mTargetAvatar = ids[0];
- getChild<LLUICtrl>("target_avatar_name")->setValue(LLSD(names[0]));
+ childSetValue("target_avatar_name", LLSD(names[0]));
refreshFromRegion( gAgent.getRegion() );
}
@@ -857,23 +857,23 @@ void LLPanelRegionDebugInfo::onClickReturn(void* data)
if (panelp->mTargetAvatar.isNull()) return;
LLSD args;
- args["USER_NAME"] = panelp->getChild<LLUICtrl>("target_avatar_name")->getValue().asString();
+ args["USER_NAME"] = panelp->childGetValue("target_avatar_name").asString();
LLSD payload;
payload["avatar_id"] = panelp->mTargetAvatar;
U32 flags = SWD_ALWAYS_RETURN_OBJECTS;
- if (panelp->getChild<LLUICtrl>("return_scripts")->getValue().asBoolean())
+ if (panelp->childGetValue("return_scripts").asBoolean())
{
flags |= SWD_SCRIPTED_ONLY;
}
- if (panelp->getChild<LLUICtrl>("return_other_land")->getValue().asBoolean())
+ if (panelp->childGetValue("return_other_land").asBoolean())
{
flags |= SWD_OTHERS_LAND_ONLY;
}
payload["flags"] = int(flags);
- payload["return_estate_wide"] = panelp->getChild<LLUICtrl>("return_estate_wide")->getValue().asBoolean();
+ payload["return_estate_wide"] = panelp->childGetValue("return_estate_wide").asBoolean();
LLNotificationsUtil::add("EstateObjectReturn", args, payload,
boost::bind(&LLPanelRegionDebugInfo::callbackReturn, panelp, _1, _2));
}
@@ -979,15 +979,15 @@ bool LLPanelRegionTextureInfo::refreshFromRegion(LLViewerRegion* region)
{
BOOL allow_modify = gAgent.isGodlike() || (region && region->canManageEstate());
setCtrlsEnabled(allow_modify);
- getChildView("apply_btn")->setEnabled(FALSE);
+ childDisable("apply_btn");
if (region)
{
- getChild<LLUICtrl>("region_text")->setValue(LLSD(region->getName()));
+ childSetValue("region_text", LLSD(region->getName()));
}
else
{
- getChild<LLUICtrl>("region_text")->setValue(LLSD(""));
+ childSetValue("region_text", LLSD(""));
}
if (!region) return LLPanelRegionInfo::refreshFromRegion(region);
@@ -1011,9 +1011,9 @@ bool LLPanelRegionTextureInfo::refreshFromRegion(LLViewerRegion* region)
for(S32 i = 0; i < CORNER_COUNT; ++i)
{
buffer = llformat("height_start_spin_%d", i);
- getChild<LLUICtrl>(buffer)->setValue(LLSD(compp->getStartHeight(i)));
+ childSetValue(buffer, LLSD(compp->getStartHeight(i)));
buffer = llformat("height_range_spin_%d", i);
- getChild<LLUICtrl>(buffer)->setValue(LLSD(compp->getHeightRange(i)));
+ childSetValue(buffer, LLSD(compp->getHeightRange(i)));
}
// Call the parent for common book-keeping
@@ -1082,7 +1082,7 @@ BOOL LLPanelRegionTextureInfo::sendUpdate()
{
buffer = llformat("height_start_spin_%d", i);
std::string buffer2 = llformat("height_range_spin_%d", i);
- std::string buffer3 = llformat("%d %f %f", i, (F32)getChild<LLUICtrl>(buffer)->getValue().asReal(), (F32)getChild<LLUICtrl>(buffer2)->getValue().asReal());
+ std::string buffer3 = llformat("%d %f %f", i, (F32)childGetValue(buffer).asReal(), (F32)childGetValue(buffer2).asReal());
strings.push_back(buffer3);
}
sendEstateOwnerMessage(msg, "textureheights", invoice, strings);
@@ -1175,11 +1175,11 @@ bool LLPanelRegionTerrainInfo::refreshFromRegion(LLViewerRegion* region)
BOOL owner_or_god_or_manager = owner_or_god
|| (region && region->isEstateManager());
setCtrlsEnabled(owner_or_god_or_manager);
- getChildView("apply_btn")->setEnabled(FALSE);
+ childDisable("apply_btn");
- getChildView("download_raw_btn")->setEnabled(owner_or_god);
- getChildView("upload_raw_btn")->setEnabled(owner_or_god);
- getChildView("bake_terrain_btn")->setEnabled(owner_or_god);
+ childSetEnabled("download_raw_btn", owner_or_god);
+ childSetEnabled("upload_raw_btn", owner_or_god);
+ childSetEnabled("bake_terrain_btn", owner_or_god);
return LLPanelRegionInfo::refreshFromRegion(region);
}
@@ -1192,17 +1192,17 @@ BOOL LLPanelRegionTerrainInfo::sendUpdate()
strings_t strings;
LLUUID invoice(LLFloaterRegionInfo::getLastInvoice());
- buffer = llformat("%f", (F32)getChild<LLUICtrl>("water_height_spin")->getValue().asReal());
+ buffer = llformat("%f", (F32)childGetValue("water_height_spin").asReal());
strings.push_back(buffer);
- buffer = llformat("%f", (F32)getChild<LLUICtrl>("terrain_raise_spin")->getValue().asReal());
+ buffer = llformat("%f", (F32)childGetValue("terrain_raise_spin").asReal());
strings.push_back(buffer);
- buffer = llformat("%f", (F32)getChild<LLUICtrl>("terrain_lower_spin")->getValue().asReal());
+ buffer = llformat("%f", (F32)childGetValue("terrain_lower_spin").asReal());
strings.push_back(buffer);
- buffer = llformat("%s", (getChild<LLUICtrl>("use_estate_sun_check")->getValue().asBoolean() ? "Y" : "N"));
+ buffer = llformat("%s", (childGetValue("use_estate_sun_check").asBoolean() ? "Y" : "N"));
strings.push_back(buffer);
- buffer = llformat("%s", (getChild<LLUICtrl>("fixed_sun_check")->getValue().asBoolean() ? "Y" : "N"));
+ buffer = llformat("%s", (childGetValue("fixed_sun_check").asBoolean() ? "Y" : "N"));
strings.push_back(buffer);
- buffer = llformat("%f", (F32)getChild<LLUICtrl>("sun_hour_slider")->getValue().asReal() );
+ buffer = llformat("%f", (F32)childGetValue("sun_hour_slider").asReal() );
strings.push_back(buffer);
// Grab estate information in case the user decided to set the
@@ -1241,27 +1241,27 @@ BOOL LLPanelRegionTerrainInfo::sendUpdate()
void LLPanelRegionTerrainInfo::onChangeUseEstateTime()
{
- BOOL use_estate_sun = getChild<LLUICtrl>("use_estate_sun_check")->getValue().asBoolean();
- getChildView("fixed_sun_check")->setEnabled(!use_estate_sun);
- getChildView("sun_hour_slider")->setEnabled(!use_estate_sun);
+ BOOL use_estate_sun = childGetValue("use_estate_sun_check").asBoolean();
+ childSetEnabled("fixed_sun_check", !use_estate_sun);
+ childSetEnabled("sun_hour_slider", !use_estate_sun);
if (use_estate_sun)
{
- getChild<LLUICtrl>("fixed_sun_check")->setValue(LLSD(FALSE));
- getChild<LLUICtrl>("sun_hour_slider")->setValue(LLSD(0.f));
+ childSetValue("fixed_sun_check", LLSD(FALSE));
+ childSetValue("sun_hour_slider", LLSD(0.f));
}
- getChildView("apply_btn")->setEnabled(TRUE);
+ childEnable("apply_btn");
}
void LLPanelRegionTerrainInfo::onChangeFixedSun()
{
// Just enable the apply button. We let the sun-hour slider be enabled
// for both fixed-sun and non-fixed-sun. JC
- getChildView("apply_btn")->setEnabled(TRUE);
+ childEnable("apply_btn");
}
void LLPanelRegionTerrainInfo::onChangeSunHour()
{
- getChildView("apply_btn")->setEnabled(TRUE);
+ childEnable("apply_btn");
}
// static
@@ -1357,19 +1357,19 @@ void LLPanelEstateInfo::initDispatch(LLDispatcher& dispatch)
// Disables the sun-hour slider and the use fixed time check if the use global time is check
void LLPanelEstateInfo::onChangeUseGlobalTime()
{
- bool enabled = !getChild<LLUICtrl>("use_global_time_check")->getValue().asBoolean();
- getChildView("sun_hour_slider")->setEnabled(enabled);
- getChildView("fixed_sun_check")->setEnabled(enabled);
- getChild<LLUICtrl>("fixed_sun_check")->setValue(LLSD(FALSE));
+ bool enabled = !childGetValue("use_global_time_check").asBoolean();
+ childSetEnabled("sun_hour_slider", enabled);
+ childSetEnabled("fixed_sun_check", enabled);
+ childSetValue("fixed_sun_check", LLSD(FALSE));
enableButton("apply_btn");
}
// Enables the sun-hour slider if the fixed-sun checkbox is set
void LLPanelEstateInfo::onChangeFixedSun()
{
- bool enabled = !getChild<LLUICtrl>("fixed_sun_check")->getValue().asBoolean();
- getChildView("use_global_time_check")->setEnabled(enabled);
- getChild<LLUICtrl>("use_global_time_check")->setValue(LLSD(FALSE));
+ bool enabled = !childGetValue("fixed_sun_check").asBoolean();
+ childSetEnabled("use_global_time_check", enabled);
+ childSetValue("use_global_time_check", LLSD(FALSE));
enableButton("apply_btn");
}
@@ -1379,19 +1379,21 @@ void LLPanelEstateInfo::onChangeFixedSun()
//---------------------------------------------------------------------------
// Add/Remove estate access button callbacks
//---------------------------------------------------------------------------
-void LLPanelEstateInfo::onClickEditSky()
+void LLPanelEstateInfo::onClickEditSky(void* user_data)
{
LLFloaterReg::showInstance("env_windlight");
}
-void LLPanelEstateInfo::onClickEditDayCycle()
+void LLPanelEstateInfo::onClickEditDayCycle(void* user_data)
{
LLFloaterReg::showInstance("env_day_cycle");
}
-void LLPanelEstateInfo::onClickAddAllowedAgent()
+// static
+void LLPanelEstateInfo::onClickAddAllowedAgent(void* user_data)
{
- LLCtrlListInterface *list = childGetListInterface("allowed_avatar_name_list");
+ LLPanelEstateInfo* self = (LLPanelEstateInfo*)user_data;
+ LLCtrlListInterface *list = self->childGetListInterface("allowed_avatar_name_list");
if (!list) return;
if (list->getItemCount() >= ESTATE_MAX_ACCESS_IDS)
{
@@ -1405,7 +1407,8 @@ void LLPanelEstateInfo::onClickAddAllowedAgent()
accessAddCore(ESTATE_ACCESS_ALLOWED_AGENT_ADD, "EstateAllowedAgentAdd");
}
-void LLPanelEstateInfo::onClickRemoveAllowedAgent()
+// static
+void LLPanelEstateInfo::onClickRemoveAllowedAgent(void* user_data)
{
accessRemoveCore(ESTATE_ACCESS_ALLOWED_AGENT_REMOVE, "EstateAllowedAgentRemove", "allowed_avatar_name_list");
}
@@ -1457,14 +1460,17 @@ bool LLPanelEstateInfo::addAllowedGroup(const LLSD& notification, const LLSD& re
return false;
}
-void LLPanelEstateInfo::onClickRemoveAllowedGroup()
+// static
+void LLPanelEstateInfo::onClickRemoveAllowedGroup(void* user_data)
{
accessRemoveCore(ESTATE_ACCESS_ALLOWED_GROUP_REMOVE, "EstateAllowedGroupRemove", "allowed_group_name_list");
}
-void LLPanelEstateInfo::onClickAddBannedAgent()
+// static
+void LLPanelEstateInfo::onClickAddBannedAgent(void* user_data)
{
- LLCtrlListInterface *list = childGetListInterface("banned_avatar_name_list");
+ LLPanelEstateInfo* self = (LLPanelEstateInfo*)user_data;
+ LLCtrlListInterface *list = self->childGetListInterface("banned_avatar_name_list");
if (!list) return;
if (list->getItemCount() >= ESTATE_MAX_ACCESS_IDS)
{
@@ -1476,15 +1482,17 @@ void LLPanelEstateInfo::onClickAddBannedAgent()
accessAddCore(ESTATE_ACCESS_BANNED_AGENT_ADD, "EstateBannedAgentAdd");
}
-void LLPanelEstateInfo::onClickRemoveBannedAgent()
+// static
+void LLPanelEstateInfo::onClickRemoveBannedAgent(void* user_data)
{
accessRemoveCore(ESTATE_ACCESS_BANNED_AGENT_REMOVE, "EstateBannedAgentRemove", "banned_avatar_name_list");
}
// static
-void LLPanelEstateInfo::onClickAddEstateManager()
+void LLPanelEstateInfo::onClickAddEstateManager(void* user_data)
{
- LLCtrlListInterface *list = childGetListInterface("estate_manager_name_list");
+ LLPanelEstateInfo* self = (LLPanelEstateInfo*)user_data;
+ LLCtrlListInterface *list = self->childGetListInterface("estate_manager_name_list");
if (!list) return;
if (list->getItemCount() >= ESTATE_MAX_MANAGERS)
{ // Tell user they can't add more managers
@@ -1499,7 +1507,7 @@ void LLPanelEstateInfo::onClickAddEstateManager()
}
// static
-void LLPanelEstateInfo::onClickRemoveEstateManager()
+void LLPanelEstateInfo::onClickRemoveEstateManager(void* user_data)
{
accessRemoveCore(ESTATE_ACCESS_MANAGER_REMOVE, "EstateManagerRemove", "estate_manager_name_list");
}
@@ -1952,20 +1960,20 @@ void LLPanelEstateInfo::updateControls(LLViewerRegion* region)
BOOL manager = (region && region->isEstateManager());
setCtrlsEnabled(god || owner || manager);
- getChildView("apply_btn")->setEnabled(FALSE);
- getChildView("add_allowed_avatar_btn")->setEnabled(god || owner || manager);
- getChildView("remove_allowed_avatar_btn")->setEnabled(god || owner || manager);
- getChildView("add_allowed_group_btn")->setEnabled(god || owner || manager);
- getChildView("remove_allowed_group_btn")->setEnabled(god || owner || manager);
- getChildView("add_banned_avatar_btn")->setEnabled(god || owner || manager);
- getChildView("remove_banned_avatar_btn")->setEnabled(god || owner || manager);
- getChildView("message_estate_btn")->setEnabled(god || owner || manager);
- getChildView("kick_user_from_estate_btn")->setEnabled(god || owner || manager);
+ childDisable("apply_btn");
+ childSetEnabled("add_allowed_avatar_btn", god || owner || manager);
+ childSetEnabled("remove_allowed_avatar_btn", god || owner || manager);
+ childSetEnabled("add_allowed_group_btn", god || owner || manager);
+ childSetEnabled("remove_allowed_group_btn", god || owner || manager);
+ childSetEnabled("add_banned_avatar_btn", god || owner || manager);
+ childSetEnabled("remove_banned_avatar_btn", god || owner || manager);
+ childSetEnabled("message_estate_btn", god || owner || manager);
+ childSetEnabled("kick_user_from_estate_btn", god || owner || manager);
// estate managers can't add estate managers
- getChildView("add_estate_manager_btn")->setEnabled(god || owner);
- getChildView("remove_estate_manager_btn")->setEnabled(god || owner);
- getChildView("estate_manager_name_list")->setEnabled(god || owner);
+ childSetEnabled("add_estate_manager_btn", god || owner);
+ childSetEnabled("remove_estate_manager_btn", god || owner);
+ childSetEnabled("estate_manager_name_list", god || owner);
}
bool LLPanelEstateInfo::refreshFromRegion(LLViewerRegion* region)
@@ -2040,8 +2048,8 @@ BOOL LLPanelEstateInfo::postBuild()
avatar_name_list->setMaxItemCount(ESTATE_MAX_ACCESS_IDS);
}
- childSetAction("add_allowed_avatar_btn", boost::bind(&LLPanelEstateInfo::onClickAddAllowedAgent, this));
- childSetAction("remove_allowed_avatar_btn", boost::bind(&LLPanelEstateInfo::onClickRemoveAllowedAgent, this));
+ childSetAction("add_allowed_avatar_btn", onClickAddAllowedAgent, this);
+ childSetAction("remove_allowed_avatar_btn", onClickRemoveAllowedAgent, this);
getChild<LLUICtrl>("allowed_group_name_list")->setCommitCallback(boost::bind(&LLPanelEstateInfo::onChangeChildCtrl, this, _1));
LLNameListCtrl* group_name_list = getChild<LLNameListCtrl>("allowed_group_name_list");
@@ -2052,7 +2060,7 @@ BOOL LLPanelEstateInfo::postBuild()
}
getChild<LLUICtrl>("add_allowed_group_btn")->setCommitCallback(boost::bind(&LLPanelEstateInfo::onClickAddAllowedGroup, this));
- childSetAction("remove_allowed_group_btn", boost::bind(&LLPanelEstateInfo::onClickRemoveAllowedGroup, this));
+ childSetAction("remove_allowed_group_btn", onClickRemoveAllowedGroup, this);
getChild<LLUICtrl>("banned_avatar_name_list")->setCommitCallback(boost::bind(&LLPanelEstateInfo::onChangeChildCtrl, this, _1));
LLNameListCtrl* banned_name_list = getChild<LLNameListCtrl>("banned_avatar_name_list");
@@ -2062,8 +2070,8 @@ BOOL LLPanelEstateInfo::postBuild()
banned_name_list->setMaxItemCount(ESTATE_MAX_ACCESS_IDS);
}
- childSetAction("add_banned_avatar_btn", boost::bind(&LLPanelEstateInfo::onClickAddBannedAgent, this));
- childSetAction("remove_banned_avatar_btn", boost::bind(&LLPanelEstateInfo::onClickRemoveBannedAgent, this));
+ childSetAction("add_banned_avatar_btn", onClickAddBannedAgent, this);
+ childSetAction("remove_banned_avatar_btn", onClickRemoveBannedAgent, this);
getChild<LLUICtrl>("estate_manager_name_list")->setCommitCallback(boost::bind(&LLPanelEstateInfo::onChangeChildCtrl, this, _1));
LLNameListCtrl* manager_name_list = getChild<LLNameListCtrl>("estate_manager_name_list");
@@ -2073,28 +2081,28 @@ BOOL LLPanelEstateInfo::postBuild()
manager_name_list->setMaxItemCount(ESTATE_MAX_MANAGERS * 4); // Allow extras for dupe issue
}
- childSetAction("add_estate_manager_btn", boost::bind(&LLPanelEstateInfo::onClickAddEstateManager, this));
- childSetAction("remove_estate_manager_btn", boost::bind(&LLPanelEstateInfo::onClickRemoveEstateManager, this));
- childSetAction("message_estate_btn", boost::bind(&LLPanelEstateInfo::onClickMessageEstate, this));
+ childSetAction("add_estate_manager_btn", onClickAddEstateManager, this);
+ childSetAction("remove_estate_manager_btn", onClickRemoveEstateManager, this);
+ childSetAction("message_estate_btn", onClickMessageEstate, this);
childSetAction("kick_user_from_estate_btn", boost::bind(&LLPanelEstateInfo::onClickKickUser, this));
- childSetAction("WLEditSky", boost::bind(&LLPanelEstateInfo::onClickEditSky, this));
- childSetAction("WLEditDayCycle", boost::bind(&LLPanelEstateInfo::onClickEditDayCycle, this));
+ childSetAction("WLEditSky", onClickEditSky, this);
+ childSetAction("WLEditDayCycle", onClickEditDayCycle, this);
return LLPanelRegionInfo::postBuild();
}
void LLPanelEstateInfo::refresh()
{
- bool public_access = getChild<LLUICtrl>("externally_visible_check")->getValue().asBoolean();
- getChildView("Only Allow")->setEnabled(public_access);
- getChildView("limit_payment")->setEnabled(public_access);
- getChildView("limit_age_verified")->setEnabled(public_access);
+ bool public_access = childGetValue("externally_visible_check").asBoolean();
+ childSetEnabled("Only Allow", public_access);
+ childSetEnabled("limit_payment", public_access);
+ childSetEnabled("limit_age_verified", public_access);
// if this is set to false, then the limit fields are meaningless and should be turned off
if (public_access == false)
{
- getChild<LLUICtrl>("limit_payment")->setValue(false);
- getChild<LLUICtrl>("limit_age_verified")->setValue(false);
+ childSetValue("limit_payment", false);
+ childSetValue("limit_age_verified", false);
}
}
@@ -2217,19 +2225,19 @@ bool LLPanelEstateInfo::commitEstateInfoCaps()
LLSD body;
body["estate_name"] = getEstateName();
- body["is_externally_visible"] = getChild<LLUICtrl>("externally_visible_check")->getValue().asBoolean();
- body["allow_direct_teleport"] = getChild<LLUICtrl>("allow_direct_teleport")->getValue().asBoolean();
- body["is_sun_fixed" ] = getChild<LLUICtrl>("fixed_sun_check")->getValue().asBoolean();
- body["deny_anonymous" ] = getChild<LLUICtrl>("limit_payment")->getValue().asBoolean();
- body["deny_age_unverified" ] = getChild<LLUICtrl>("limit_age_verified")->getValue().asBoolean();
- body["allow_voice_chat" ] = getChild<LLUICtrl>("voice_chat_check")->getValue().asBoolean();
+ body["is_externally_visible"] = childGetValue("externally_visible_check").asBoolean();
+ body["allow_direct_teleport"] = childGetValue("allow_direct_teleport").asBoolean();
+ body["is_sun_fixed" ] = childGetValue("fixed_sun_check").asBoolean();
+ body["deny_anonymous" ] = childGetValue("limit_payment").asBoolean();
+ body["deny_age_unverified" ] = childGetValue("limit_age_verified").asBoolean();
+ body["allow_voice_chat" ] = childGetValue("voice_chat_check").asBoolean();
body["invoice" ] = LLFloaterRegionInfo::getLastInvoice();
// block fly is in estate database but not in estate UI, so we're not supporting it
- //body["block_fly" ] = getChild<LLUICtrl>("")->getValue().asBoolean();
+ //body["block_fly" ] = childGetValue("").asBoolean();
F32 sun_hour = getSunHour();
- if (getChild<LLUICtrl>("use_global_time_check")->getValue().asBoolean())
+ if (childGetValue("use_global_time_check").asBoolean())
{
sun_hour = 0.f; // 0 = global time
}
@@ -2269,7 +2277,7 @@ void LLPanelEstateInfo::commitEstateInfoDataserver()
msg->addString("Parameter", buffer);
F32 sun_hour = getSunHour();
- if (getChild<LLUICtrl>("use_global_time_check")->getValue().asBoolean())
+ if (childGetValue("use_global_time_check").asBoolean())
{
sun_hour = 0.f; // 0 = global time
}
@@ -2283,13 +2291,14 @@ void LLPanelEstateInfo::commitEstateInfoDataserver()
void LLPanelEstateInfo::setEstateFlags(U32 flags)
{
- getChild<LLUICtrl>("externally_visible_check")->setValue(LLSD(flags & REGION_FLAGS_EXTERNALLY_VISIBLE ? TRUE : FALSE) );
- getChild<LLUICtrl>("fixed_sun_check")->setValue(LLSD(flags & REGION_FLAGS_SUN_FIXED ? TRUE : FALSE) );
- getChild<LLUICtrl>("voice_chat_check")->setValue(
+ childSetValue("externally_visible_check", LLSD(flags & REGION_FLAGS_EXTERNALLY_VISIBLE ? TRUE : FALSE) );
+ childSetValue("fixed_sun_check", LLSD(flags & REGION_FLAGS_SUN_FIXED ? TRUE : FALSE) );
+ childSetValue(
+ "voice_chat_check",
LLSD(flags & REGION_FLAGS_ALLOW_VOICE ? TRUE : FALSE));
- getChild<LLUICtrl>("allow_direct_teleport")->setValue(LLSD(flags & REGION_FLAGS_ALLOW_DIRECT_TELEPORT ? TRUE : FALSE) );
- getChild<LLUICtrl>("limit_payment")->setValue(LLSD(flags & REGION_FLAGS_DENY_ANONYMOUS ? TRUE : FALSE) );
- getChild<LLUICtrl>("limit_age_verified")->setValue(LLSD(flags & REGION_FLAGS_DENY_AGEUNVERIFIED ? TRUE : FALSE) );
+ childSetValue("allow_direct_teleport", LLSD(flags & REGION_FLAGS_ALLOW_DIRECT_TELEPORT ? TRUE : FALSE) );
+ childSetValue("limit_payment", LLSD(flags & REGION_FLAGS_DENY_ANONYMOUS ? TRUE : FALSE) );
+ childSetValue("limit_age_verified", LLSD(flags & REGION_FLAGS_DENY_AGEUNVERIFIED ? TRUE : FALSE) );
refresh();
}
@@ -2298,32 +2307,32 @@ U32 LLPanelEstateInfo::computeEstateFlags()
{
U32 flags = 0;
- if (getChild<LLUICtrl>("externally_visible_check")->getValue().asBoolean())
+ if (childGetValue("externally_visible_check").asBoolean())
{
flags |= REGION_FLAGS_EXTERNALLY_VISIBLE;
}
- if ( getChild<LLUICtrl>("voice_chat_check")->getValue().asBoolean() )
+ if ( childGetValue("voice_chat_check").asBoolean() )
{
flags |= REGION_FLAGS_ALLOW_VOICE;
}
- if (getChild<LLUICtrl>("allow_direct_teleport")->getValue().asBoolean())
+ if (childGetValue("allow_direct_teleport").asBoolean())
{
flags |= REGION_FLAGS_ALLOW_DIRECT_TELEPORT;
}
- if (getChild<LLUICtrl>("fixed_sun_check")->getValue().asBoolean())
+ if (childGetValue("fixed_sun_check").asBoolean())
{
flags |= REGION_FLAGS_SUN_FIXED;
}
- if (getChild<LLUICtrl>("limit_payment")->getValue().asBoolean())
+ if (childGetValue("limit_payment").asBoolean())
{
flags |= REGION_FLAGS_DENY_ANONYMOUS;
}
- if (getChild<LLUICtrl>("limit_age_verified")->getValue().asBoolean())
+ if (childGetValue("limit_age_verified").asBoolean())
{
flags |= REGION_FLAGS_DENY_AGEUNVERIFIED;
}
@@ -2334,24 +2343,24 @@ U32 LLPanelEstateInfo::computeEstateFlags()
BOOL LLPanelEstateInfo::getGlobalTime()
{
- return getChild<LLUICtrl>("use_global_time_check")->getValue().asBoolean();
+ return childGetValue("use_global_time_check").asBoolean();
}
void LLPanelEstateInfo::setGlobalTime(bool b)
{
- getChild<LLUICtrl>("use_global_time_check")->setValue(LLSD(b));
- getChildView("fixed_sun_check")->setEnabled(LLSD(!b));
- getChildView("sun_hour_slider")->setEnabled(LLSD(!b));
+ childSetValue("use_global_time_check", LLSD(b));
+ childSetEnabled("fixed_sun_check", LLSD(!b));
+ childSetEnabled("sun_hour_slider", LLSD(!b));
if (b)
{
- getChild<LLUICtrl>("sun_hour_slider")->setValue(LLSD(0.f));
+ childSetValue("sun_hour_slider", LLSD(0.f));
}
}
BOOL LLPanelEstateInfo::getFixedSun()
{
- return getChild<LLUICtrl>("fixed_sun_check")->getValue().asBoolean();
+ return childGetValue("fixed_sun_check").asBoolean();
}
void LLPanelEstateInfo::setSunHour(F32 sun_hour)
@@ -2360,61 +2369,61 @@ void LLPanelEstateInfo::setSunHour(F32 sun_hour)
{
sun_hour = 24.0f + sun_hour;
}
- getChild<LLUICtrl>("sun_hour_slider")->setValue(LLSD(sun_hour));
+ childSetValue("sun_hour_slider", LLSD(sun_hour));
}
F32 LLPanelEstateInfo::getSunHour()
{
- if (getChildView("sun_hour_slider")->getEnabled())
+ if (childIsEnabled("sun_hour_slider"))
{
- return (F32)getChild<LLUICtrl>("sun_hour_slider")->getValue().asReal();
+ return (F32)childGetValue("sun_hour_slider").asReal();
}
return 0.f;
}
const std::string LLPanelEstateInfo::getEstateName() const
{
- return getChild<LLUICtrl>("estate_name")->getValue().asString();
+ return childGetValue("estate_name").asString();
}
void LLPanelEstateInfo::setEstateName(const std::string& name)
{
- getChild<LLUICtrl>("estate_name")->setValue(LLSD(name));
+ childSetValue("estate_name", LLSD(name));
}
const std::string LLPanelEstateInfo::getOwnerName() const
{
- return getChild<LLUICtrl>("estate_owner")->getValue().asString();
+ return childGetValue("estate_owner").asString();
}
void LLPanelEstateInfo::setOwnerName(const std::string& name)
{
- getChild<LLUICtrl>("estate_owner")->setValue(LLSD(name));
+ childSetValue("estate_owner", LLSD(name));
}
void LLPanelEstateInfo::setAccessAllowedEnabled(bool enable_agent,
bool enable_group,
bool enable_ban)
{
- getChildView("allow_resident_label")->setEnabled(enable_agent);
- getChildView("allowed_avatar_name_list")->setEnabled(enable_agent);
- getChildView("allowed_avatar_name_list")->setVisible( enable_agent);
- getChildView("add_allowed_avatar_btn")->setEnabled(enable_agent);
- getChildView("remove_allowed_avatar_btn")->setEnabled(enable_agent);
+ childSetEnabled("allow_resident_label", enable_agent);
+ childSetEnabled("allowed_avatar_name_list", enable_agent);
+ childSetVisible("allowed_avatar_name_list", enable_agent);
+ childSetEnabled("add_allowed_avatar_btn", enable_agent);
+ childSetEnabled("remove_allowed_avatar_btn", enable_agent);
// Groups
- getChildView("allow_group_label")->setEnabled(enable_group);
- getChildView("allowed_group_name_list")->setEnabled(enable_group);
- getChildView("allowed_group_name_list")->setVisible( enable_group);
- getChildView("add_allowed_group_btn")->setEnabled(enable_group);
- getChildView("remove_allowed_group_btn")->setEnabled(enable_group);
+ childSetEnabled("allow_group_label", enable_group);
+ childSetEnabled("allowed_group_name_list", enable_group);
+ childSetVisible("allowed_group_name_list", enable_group);
+ childSetEnabled("add_allowed_group_btn", enable_group);
+ childSetEnabled("remove_allowed_group_btn", enable_group);
// Ban
- getChildView("ban_resident_label")->setEnabled(enable_ban);
- getChildView("banned_avatar_name_list")->setEnabled(enable_ban);
- getChildView("banned_avatar_name_list")->setVisible( enable_ban);
- getChildView("add_banned_avatar_btn")->setEnabled(enable_ban);
- getChildView("remove_banned_avatar_btn")->setEnabled(enable_ban);
+ childSetEnabled("ban_resident_label", enable_ban);
+ childSetEnabled("banned_avatar_name_list", enable_ban);
+ childSetVisible("banned_avatar_name_list", enable_ban);
+ childSetEnabled("add_banned_avatar_btn", enable_ban);
+ childSetEnabled("remove_banned_avatar_btn", enable_ban);
// Update removal buttons if needed
if (enable_agent)
@@ -2476,7 +2485,7 @@ BOOL LLPanelEstateInfo::checkRemovalButton(std::string name)
// enable the remove button if something is selected
LLNameListCtrl* name_list = getChild<LLNameListCtrl>(name);
- getChildView(btn_name)->setEnabled(name_list && name_list->getFirstSelected() ? TRUE : FALSE);
+ childSetEnabled(btn_name, name_list && name_list->getFirstSelected() ? TRUE : FALSE);
return (btn_name != "");
}
@@ -3011,7 +3020,7 @@ bool LLDispatchSetEstateAccess::operator()(
args["[ALLOWEDAGENTS]"] = llformat ("%d", totalAllowedAgents);
args["[MAXACCESS]"] = llformat ("%d", ESTATE_MAX_ACCESS_IDS);
std::string msg = LLTrans::getString("RegionInfoAllowedResidents", args);
- panel->getChild<LLUICtrl>("allow_resident_label")->setValue(LLSD(msg));
+ panel->childSetValue("allow_resident_label", LLSD(msg));
if (allowed_agent_name_list)
{
@@ -3022,7 +3031,7 @@ bool LLDispatchSetEstateAccess::operator()(
memcpy(id.mData, strings[index++].data(), UUID_BYTES); /* Flawfinder: ignore */
allowed_agent_name_list->addNameItem(id);
}
- panel->getChildView("remove_allowed_avatar_btn")->setEnabled(allowed_agent_name_list->getFirstSelected() ? TRUE : FALSE);
+ panel->childSetEnabled("remove_allowed_avatar_btn", allowed_agent_name_list->getFirstSelected() ? TRUE : FALSE);
allowed_agent_name_list->sortByColumnIndex(0, TRUE);
}
}
@@ -3036,7 +3045,7 @@ bool LLDispatchSetEstateAccess::operator()(
args["[ALLOWEDGROUPS]"] = llformat ("%d", num_allowed_groups);
args["[MAXACCESS]"] = llformat ("%d", ESTATE_MAX_GROUP_IDS);
std::string msg = LLTrans::getString("RegionInfoAllowedGroups", args);
- panel->getChild<LLUICtrl>("allow_group_label")->setValue(LLSD(msg));
+ panel->childSetValue("allow_group_label", LLSD(msg));
if (allowed_group_name_list)
{
@@ -3047,7 +3056,7 @@ bool LLDispatchSetEstateAccess::operator()(
memcpy(id.mData, strings[index++].data(), UUID_BYTES); /* Flawfinder: ignore */
allowed_group_name_list->addGroupNameItem(id);
}
- panel->getChildView("remove_allowed_group_btn")->setEnabled(allowed_group_name_list->getFirstSelected() ? TRUE : FALSE);
+ panel->childSetEnabled("remove_allowed_group_btn", allowed_group_name_list->getFirstSelected() ? TRUE : FALSE);
allowed_group_name_list->sortByColumnIndex(0, TRUE);
}
}
@@ -3068,7 +3077,7 @@ bool LLDispatchSetEstateAccess::operator()(
std::string msg = llformat("Banned residents: (%d, max %d)",
totalBannedAgents,
ESTATE_MAX_ACCESS_IDS);
- panel->getChild<LLUICtrl>("ban_resident_label")->setValue(LLSD(msg));
+ panel->childSetValue("ban_resident_label", LLSD(msg));
if (banned_agent_name_list)
{
@@ -3079,7 +3088,7 @@ bool LLDispatchSetEstateAccess::operator()(
memcpy(id.mData, strings[index++].data(), UUID_BYTES); /* Flawfinder: ignore */
banned_agent_name_list->addNameItem(id);
}
- panel->getChildView("remove_banned_avatar_btn")->setEnabled(banned_agent_name_list->getFirstSelected() ? TRUE : FALSE);
+ panel->childSetEnabled("remove_banned_avatar_btn", banned_agent_name_list->getFirstSelected() ? TRUE : FALSE);
banned_agent_name_list->sortByColumnIndex(0, TRUE);
}
}
@@ -3089,7 +3098,7 @@ bool LLDispatchSetEstateAccess::operator()(
std::string msg = llformat("Estate Managers: (%d, max %d)",
num_estate_managers,
ESTATE_MAX_MANAGERS);
- panel->getChild<LLUICtrl>("estate_manager_label")->setValue(LLSD(msg));
+ panel->childSetValue("estate_manager_label", LLSD(msg));
LLNameListCtrl* estate_manager_name_list =
panel->getChild<LLNameListCtrl>("estate_manager_name_list");
@@ -3106,7 +3115,7 @@ bool LLDispatchSetEstateAccess::operator()(
memcpy(id.mData, strings[index++].data(), UUID_BYTES); /* Flawfinder: ignore */
estate_manager_name_list->addNameItem(id);
}
- panel->getChildView("remove_estate_manager_btn")->setEnabled(estate_manager_name_list->getFirstSelected() ? TRUE : FALSE);
+ panel->childSetEnabled("remove_estate_manager_btn", estate_manager_name_list->getFirstSelected() ? TRUE : FALSE);
estate_manager_name_list->sortByColumnIndex(0, TRUE);
}
}
diff --git a/indra/newview/llfloaterregioninfo.h b/indra/newview/llfloaterregioninfo.h
index 2393c74c45..342ce535fe 100644
--- a/indra/newview/llfloaterregioninfo.h
+++ b/indra/newview/llfloaterregioninfo.h
@@ -256,19 +256,19 @@ public:
void onChangeFixedSun();
void onChangeUseGlobalTime();
- void onClickEditSky();
- void onClickEditSkyHelp();
- void onClickEditDayCycle();
- void onClickEditDayCycleHelp();
-
- void onClickAddAllowedAgent();
- void onClickRemoveAllowedAgent();
- void onClickAddAllowedGroup();
- void onClickRemoveAllowedGroup();
- void onClickAddBannedAgent();
- void onClickRemoveBannedAgent();
- void onClickAddEstateManager();
- void onClickRemoveEstateManager();
+ static void onClickEditSky(void* userdata);
+ static void onClickEditSkyHelp(void* userdata);
+ static void onClickEditDayCycle(void* userdata);
+ static void onClickEditDayCycleHelp(void* userdata);
+
+ static void onClickAddAllowedAgent(void* user_data);
+ static void onClickRemoveAllowedAgent(void* user_data);
+ void onClickAddAllowedGroup();
+ static void onClickRemoveAllowedGroup(void* user_data);
+ static void onClickAddBannedAgent(void* user_data);
+ static void onClickRemoveBannedAgent(void* user_data);
+ static void onClickAddEstateManager(void* user_data);
+ static void onClickRemoveEstateManager(void* user_data);
void onClickKickUser();
// Group picker callback is different, can't use core methods below
diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp
index 97f192a708..da0301394c 100644
--- a/indra/newview/llfloaterreporter.cpp
+++ b/indra/newview/llfloaterreporter.cpp
@@ -122,7 +122,7 @@ BOOL LLFloaterReporter::postBuild()
{
LLSLURL slurl;
LLAgentUI::buildSLURL(slurl);
- getChild<LLUICtrl>("abuse_location_edit")->setValue(slurl.getSLURLString());
+ childSetText("abuse_location_edit", slurl.getSLURLString());
enableControls(TRUE);
@@ -131,7 +131,7 @@ BOOL LLFloaterReporter::postBuild()
LLViewerRegion *regionp = gAgent.getRegion();
if (regionp)
{
- getChild<LLUICtrl>("sim_field")->setValue(regionp->getName());
+ childSetText("sim_field", regionp->getName());
pos -= regionp->getOriginGlobal();
}
setPosBox(pos);
@@ -142,13 +142,13 @@ BOOL LLFloaterReporter::postBuild()
setVisible(TRUE);
// Default text to be blank
- getChild<LLUICtrl>("object_name")->setValue(LLStringUtil::null);
- getChild<LLUICtrl>("owner_name")->setValue(LLStringUtil::null);
+ childSetText("object_name", LLStringUtil::null);
+ childSetText("owner_name", LLStringUtil::null);
mOwnerName = LLStringUtil::null;
- getChild<LLUICtrl>("summary_edit")->setFocus(TRUE);
+ childSetFocus("summary_edit");
- mDefaultSummary = getChild<LLUICtrl>("details_edit")->getValue().asString();
+ mDefaultSummary = childGetText("details_edit");
// send a message and ask for information about this region -
// result comes back in processRegionInfo(..)
@@ -178,7 +178,7 @@ BOOL LLFloaterReporter::postBuild()
// grab the user's name
std::string fullname;
LLAgentUI::buildFullname(fullname);
- getChild<LLUICtrl>("reporter_field")->setValue(fullname);
+ childSetText("reporter_field", fullname);
center();
@@ -206,22 +206,22 @@ LLFloaterReporter::~LLFloaterReporter()
// virtual
void LLFloaterReporter::draw()
{
- getChildView("screen_check")->setEnabled(TRUE );
+ childSetEnabled("screen_check", TRUE );
LLFloater::draw();
}
void LLFloaterReporter::enableControls(BOOL enable)
{
- getChildView("category_combo")->setEnabled(enable);
- getChildView("chat_check")->setEnabled(enable);
- getChildView("screen_check")->setEnabled(enable);
- getChildView("screenshot")->setEnabled(FALSE);
- getChildView("pick_btn")->setEnabled(enable);
- getChildView("summary_edit")->setEnabled(enable);
- getChildView("details_edit")->setEnabled(enable);
- getChildView("send_btn")->setEnabled(enable);
- getChildView("cancel_btn")->setEnabled(enable);
+ childSetEnabled("category_combo", enable);
+ childSetEnabled("chat_check", enable);
+ childSetEnabled("screen_check", enable);
+ childDisable("screenshot");
+ childSetEnabled("pick_btn", enable);
+ childSetEnabled("summary_edit", enable);
+ childSetEnabled("details_edit", enable);
+ childSetEnabled("send_btn", enable);
+ childSetEnabled("cancel_btn", enable);
}
void LLFloaterReporter::getObjectInfo(const LLUUID& object_id)
@@ -253,7 +253,7 @@ void LLFloaterReporter::getObjectInfo(const LLUUID& object_id)
LLViewerRegion *regionp = objectp->getRegion();
if (regionp)
{
- getChild<LLUICtrl>("sim_field")->setValue(regionp->getName());
+ childSetText("sim_field", regionp->getName());
LLVector3d global_pos;
global_pos.setVec(objectp->getPositionRegion());
setPosBox(global_pos);
@@ -307,7 +307,7 @@ void LLFloaterReporter::callbackAvatarID(const std::vector<std::string>& names,
{
if (ids.empty() || names.empty()) return;
- getChild<LLUICtrl>("abuser_name_edit")->setValue(names[0] );
+ childSetText("abuser_name_edit", names[0] );
mAbuserID = ids[0];
@@ -322,9 +322,9 @@ void LLFloaterReporter::setFromAvatar(const LLUUID& avatar_id, const std::string
std::string avatar_link =
LLSLURL("agent", mObjectID, "inspect").getSLURLString();
- getChild<LLUICtrl>("owner_name")->setValue(avatar_link);
- getChild<LLUICtrl>("object_name")->setValue(avatar_name);
- getChild<LLUICtrl>("abuser_name_edit")->setValue(avatar_name);
+ childSetText("owner_name", avatar_link);
+ childSetText("object_name", avatar_name);
+ childSetText("abuser_name_edit", avatar_name);
}
// static
@@ -348,9 +348,9 @@ void LLFloaterReporter::onClickSend(void *userdata)
if ( ! self->mCopyrightWarningSeen )
{
- std::string details_lc = self->getChild<LLUICtrl>("details_edit")->getValue().asString();
+ std::string details_lc = self->childGetText("details_edit");
LLStringUtil::toLower( details_lc );
- std::string summary_lc = self->getChild<LLUICtrl>("summary_edit")->getValue().asString();
+ std::string summary_lc = self->childGetText("summary_edit");
LLStringUtil::toLower( summary_lc );
if ( details_lc.find( "copyright" ) != std::string::npos ||
summary_lc.find( "copyright" ) != std::string::npos ||
@@ -381,10 +381,10 @@ void LLFloaterReporter::onClickSend(void *userdata)
}
else
{
- if(self->getChild<LLUICtrl>("screen_check")->getValue())
+ if(self->childGetValue("screen_check"))
{
- self->getChildView("send_btn")->setEnabled(FALSE);
- self->getChildView("cancel_btn")->setEnabled(FALSE);
+ self->childDisable("send_btn");
+ self->childDisable("cancel_btn");
// the callback from uploading the image calls sendReportViaLegacy()
self->uploadImage();
}
@@ -422,8 +422,8 @@ void LLFloaterReporter::onClickObjPicker(void *userdata)
LLToolObjPicker::getInstance()->setExitCallback(LLFloaterReporter::closePickTool, self);
LLToolMgr::getInstance()->setTransientTool(LLToolObjPicker::getInstance());
self->mPicking = TRUE;
- self->getChild<LLUICtrl>("object_name")->setValue(LLStringUtil::null);
- self->getChild<LLUICtrl>("owner_name")->setValue(LLStringUtil::null);
+ self->childSetText("object_name", LLStringUtil::null);
+ self->childSetText("owner_name", LLStringUtil::null);
self->mOwnerName = LLStringUtil::null;
LLButton* pick_btn = self->getChild<LLButton>("pick_btn");
if (pick_btn) pick_btn->setToggleState(TRUE);
@@ -469,7 +469,7 @@ void LLFloaterReporter::show(const LLUUID& object_id, const std::string& avatar_
// grab the user's name
std::string fullname;
LLAgentUI::buildFullname(fullname);
- f->getChild<LLUICtrl>("reporter_field")->setValue(fullname);
+ f->childSetText("reporter_field", fullname);
if (avatar_name.empty())
// Request info for this object
@@ -498,11 +498,11 @@ void LLFloaterReporter::showFromAvatar(const LLUUID& avatar_id, const std::strin
void LLFloaterReporter::setPickedObjectProperties(const std::string& object_name, const std::string& owner_name, const LLUUID owner_id)
{
- getChild<LLUICtrl>("object_name")->setValue(object_name);
+ childSetText("object_name", object_name);
std::string owner_link =
LLSLURL("agent", owner_id, "inspect").getSLURLString();
- getChild<LLUICtrl>("owner_name")->setValue(owner_link);
- getChild<LLUICtrl>("abuser_name_edit")->setValue(owner_name);
+ childSetText("owner_name", owner_link);
+ childSetText("abuser_name_edit", owner_name);
mAbuserID = owner_id;
mOwnerName = owner_name;
}
@@ -511,7 +511,7 @@ void LLFloaterReporter::setPickedObjectProperties(const std::string& object_name
bool LLFloaterReporter::validateReport()
{
// Ensure user selected a category from the list
- LLSD category_sd = getChild<LLUICtrl>("category_combo")->getValue();
+ LLSD category_sd = childGetValue("category_combo");
U8 category = (U8)category_sd.asInteger();
if (category == 0)
{
@@ -520,32 +520,32 @@ bool LLFloaterReporter::validateReport()
}
- if ( getChild<LLUICtrl>("abuser_name_edit")->getValue().asString().empty() )
+ if ( childGetText("abuser_name_edit").empty() )
{
LLNotificationsUtil::add("HelpReportAbuseAbuserNameEmpty");
return false;
};
- if ( getChild<LLUICtrl>("abuse_location_edit")->getValue().asString().empty() )
+ if ( childGetText("abuse_location_edit").empty() )
{
LLNotificationsUtil::add("HelpReportAbuseAbuserLocationEmpty");
return false;
};
- if ( getChild<LLUICtrl>("abuse_location_edit")->getValue().asString().empty() )
+ if ( childGetText("abuse_location_edit").empty() )
{
LLNotificationsUtil::add("HelpReportAbuseAbuserLocationEmpty");
return false;
};
- if ( getChild<LLUICtrl>("summary_edit")->getValue().asString().empty() )
+ if ( childGetText("summary_edit").empty() )
{
LLNotificationsUtil::add("HelpReportAbuseSummaryEmpty");
return false;
};
- if ( getChild<LLUICtrl>("details_edit")->getValue().asString() == mDefaultSummary )
+ if ( childGetText("details_edit") == mDefaultSummary )
{
LLNotificationsUtil::add("HelpReportAbuseDetailsEmpty");
return false;
@@ -591,17 +591,17 @@ LLSD LLFloaterReporter::gatherReport()
summary << ""
<< " |" << regionp->getName() << "|" // region reporter is currently in.
- << " (" << getChild<LLUICtrl>("abuse_location_edit")->getValue().asString() << ")" // region abuse occured in (freeform text - no LLRegionPicker tool)
+ << " (" << childGetText("abuse_location_edit") << ")" // region abuse occured in (freeform text - no LLRegionPicker tool)
<< " [" << category_name << "] " // updated category
- << " {" << getChild<LLUICtrl>("abuser_name_edit")->getValue().asString() << "} " // name of abuse entered in report (chosen using LLAvatarPicker)
- << " \"" << getChild<LLUICtrl>("summary_edit")->getValue().asString() << "\""; // summary as entered
+ << " {" << childGetText("abuser_name_edit") << "} " // name of abuse entered in report (chosen using LLAvatarPicker)
+ << " \"" << childGetValue("summary_edit").asString() << "\""; // summary as entered
std::ostringstream details;
details << "V" << LLVersionInfo::getVersion() << std::endl << std::endl; // client version moved to body of email for abuse reports
- std::string object_name = getChild<LLUICtrl>("object_name")->getValue().asString();
+ std::string object_name = childGetText("object_name");
if (!object_name.empty() && !mOwnerName.empty())
{
details << "Object: " << object_name << "\n";
@@ -609,10 +609,10 @@ LLSD LLFloaterReporter::gatherReport()
}
- details << "Abuser name: " << getChild<LLUICtrl>("abuser_name_edit")->getValue().asString() << " \n";
- details << "Abuser location: " << getChild<LLUICtrl>("abuse_location_edit")->getValue().asString() << " \n";
+ details << "Abuser name: " << childGetText("abuser_name_edit") << " \n";
+ details << "Abuser location: " << childGetText("abuse_location_edit") << " \n";
- details << getChild<LLUICtrl>("details_edit")->getValue().asString();
+ details << childGetValue("details_edit").asString();
std::string version_string;
version_string = llformat(
@@ -626,14 +626,14 @@ LLSD LLFloaterReporter::gatherReport()
// only send a screenshot ID if we're asked to and the email is
// going to LL - Estate Owners cannot see the screenshot asset
LLUUID screenshot_id = LLUUID::null;
- if (getChild<LLUICtrl>("screen_check")->getValue())
+ if (childGetValue("screen_check"))
{
- screenshot_id = getChild<LLUICtrl>("screenshot")->getValue();
+ screenshot_id = childGetValue("screenshot");
};
LLSD report = LLSD::emptyMap();
report["report-type"] = (U8) mReportType;
- report["category"] = getChild<LLUICtrl>("category_combo")->getValue();
+ report["category"] = childGetValue("category_combo");
report["position"] = mPosition.getValue();
report["check-flags"] = (U8)0; // this is not used
report["screenshot-id"] = screenshot_id;
@@ -715,7 +715,7 @@ public:
void LLFloaterReporter::sendReportViaCaps(std::string url, std::string sshot_url, const LLSD& report)
{
- if(getChild<LLUICtrl>("screen_check")->getValue().asBoolean() && !sshot_url.empty())
+ if(childGetValue("screen_check").asBoolean() && !sshot_url.empty())
{
// try to upload screenshot
LLHTTPClient::post(sshot_url, report, new LLUserReportScreenshotResponder(report,
@@ -847,7 +847,7 @@ void LLFloaterReporter::setPosBox(const LLVector3d &pos)
mPosition.mV[VX],
mPosition.mV[VY],
mPosition.mV[VZ]);
- getChild<LLUICtrl>("pos_field")->setValue(pos_string);
+ childSetText("pos_field", pos_string);
}
// void LLFloaterReporter::setDescription(const std::string& description, LLMeanCollisionData *mcd)
@@ -855,7 +855,7 @@ void LLFloaterReporter::setPosBox(const LLVector3d &pos)
// LLFloaterReporter *self = LLFloaterReg::findTypedInstance<LLFloaterReporter>("reporter");
// if (self)
// {
-// self->getChild<LLUICtrl>("details_edit")->setValue(description);
+// self->childSetText("details_edit", description);
// for_each(self->mMCDList.begin(), self->mMCDList.end(), DeletePointer());
// self->mMCDList.clear();
diff --git a/indra/newview/llfloaterscriptlimits.cpp b/indra/newview/llfloaterscriptlimits.cpp
index 571f26e09f..c0c664496d 100644
--- a/indra/newview/llfloaterscriptlimits.cpp
+++ b/indra/newview/llfloaterscriptlimits.cpp
@@ -292,7 +292,7 @@ void fetchScriptLimitsRegionSummaryResponder::result(const LLSD& content_ref)
LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
if(panel_memory)
{
- panel_memory->getChild<LLUICtrl>("loading_text")->setValue(LLSD(std::string("")));
+ panel_memory->childSetValue("loading_text", LLSD(std::string("")));
LLButton* btn = panel_memory->getChild<LLButton>("refresh_list_btn");
if(btn)
@@ -489,7 +489,7 @@ void fetchScriptLimitsAttachmentInfoResponder::result(const LLSD& content_ref)
LLPanelScriptLimitsAttachment* panel = (LLPanelScriptLimitsAttachment*)tab->getChild<LLPanel>("script_limits_my_avatar_panel");
if(panel)
{
- panel->getChild<LLUICtrl>("loading_text")->setValue(LLSD(std::string("")));
+ panel->childSetValue("loading_text", LLSD(std::string("")));
LLButton* btn = panel->getChild<LLButton>("refresh_list_btn");
if(btn)
@@ -554,12 +554,12 @@ void LLPanelScriptLimitsRegionMemory::processParcelInfo(const LLParcelData& parc
if(!getLandScriptResources())
{
std::string msg_error = LLTrans::getString("ScriptLimitsRequestError");
- getChild<LLUICtrl>("loading_text")->setValue(LLSD(msg_error));
+ childSetValue("loading_text", LLSD(msg_error));
}
else
{
std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestWaiting");
- getChild<LLUICtrl>("loading_text")->setValue(LLSD(msg_waiting));
+ childSetValue("loading_text", LLSD(msg_waiting));
}
}
@@ -579,7 +579,7 @@ void LLPanelScriptLimitsRegionMemory::setParcelID(const LLUUID& parcel_id)
else
{
std::string msg_error = LLTrans::getString("ScriptLimitsRequestError");
- getChild<LLUICtrl>("loading_text")->setValue(LLSD(msg_error));
+ childSetValue("loading_text", LLSD(msg_error));
}
}
@@ -635,7 +635,7 @@ void LLPanelScriptLimitsRegionMemory::setRegionDetails(LLSD content)
LLStringUtil::format_map_t args_parcels;
args_parcels["[PARCELS]"] = llformat ("%d", number_parcels);
std::string msg_parcels = LLTrans::getString("ScriptLimitsParcelsOwned", args_parcels);
- getChild<LLUICtrl>("parcels_listed")->setValue(LLSD(msg_parcels));
+ childSetValue("parcels_listed", LLSD(msg_parcels));
uuid_vec_t names_requested;
@@ -812,7 +812,7 @@ void LLPanelScriptLimitsRegionMemory::setRegionSummary(LLSD content)
args_parcel_memory["[MAX]"] = llformat ("%d", mParcelMemoryMax);
args_parcel_memory["[AVAILABLE]"] = llformat ("%d", parcel_memory_available);
std::string msg_parcel_memory = LLTrans::getString("ScriptLimitsMemoryUsed", args_parcel_memory);
- getChild<LLUICtrl>("memory_used")->setValue(LLSD(msg_parcel_memory));
+ childSetValue("memory_used", LLSD(msg_parcel_memory));
}
if((mParcelURLsUsed >= 0) && (mParcelURLsMax >= 0))
@@ -824,7 +824,7 @@ void LLPanelScriptLimitsRegionMemory::setRegionSummary(LLSD content)
args_parcel_urls["[MAX]"] = llformat ("%d", mParcelURLsMax);
args_parcel_urls["[AVAILABLE]"] = llformat ("%d", parcel_urls_available);
std::string msg_parcel_urls = LLTrans::getString("ScriptLimitsURLsUsed", args_parcel_urls);
- getChild<LLUICtrl>("urls_used")->setValue(LLSD(msg_parcel_urls));
+ childSetValue("urls_used", LLSD(msg_parcel_urls));
}
}
@@ -835,7 +835,7 @@ BOOL LLPanelScriptLimitsRegionMemory::postBuild()
childSetAction("return_btn", onClickReturn, this);
std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestWaiting");
- getChild<LLUICtrl>("loading_text")->setValue(LLSD(msg_waiting));
+ childSetValue("loading_text", LLSD(msg_waiting));
LLScrollListCtrl *list = getChild<LLScrollListCtrl>("scripts_list");
if(!list)
@@ -860,7 +860,7 @@ BOOL LLPanelScriptLimitsRegionMemory::StartRequestChain()
LLFloaterLand* instance = LLFloaterReg::getTypedInstance<LLFloaterLand>("about_land");
if(!instance)
{
- getChild<LLUICtrl>("loading_text")->setValue(LLSD(std::string("")));
+ childSetValue("loading_text", LLSD(std::string("")));
//might have to do parent post build here
//if not logic below could use early outs
return FALSE;
@@ -879,7 +879,7 @@ BOOL LLPanelScriptLimitsRegionMemory::StartRequestChain()
if(region_id != current_region_id)
{
std::string msg_wrong_region = LLTrans::getString("ScriptLimitsRequestWrongRegion");
- getChild<LLUICtrl>("loading_text")->setValue(LLSD(msg_wrong_region));
+ childSetValue("loading_text", LLSD(msg_wrong_region));
return FALSE;
}
@@ -908,13 +908,13 @@ BOOL LLPanelScriptLimitsRegionMemory::StartRequestChain()
<< " does not support RemoteParcelRequest" << llendl;
std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestError");
- getChild<LLUICtrl>("loading_text")->setValue(LLSD(msg_waiting));
+ childSetValue("loading_text", LLSD(msg_waiting));
}
}
else
{
std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestNoParcelSelected");
- getChild<LLUICtrl>("loading_text")->setValue(LLSD(msg_waiting));
+ childSetValue("loading_text", LLSD(msg_waiting));
}
return LLPanelScriptLimitsInfo::postBuild();
@@ -936,9 +936,9 @@ void LLPanelScriptLimitsRegionMemory::clearList()
LLStringUtil::format_map_t args_parcel_memory;
std::string msg_empty_string("");
- getChild<LLUICtrl>("memory_used")->setValue(LLSD(msg_empty_string));
- getChild<LLUICtrl>("urls_used")->setValue(LLSD(msg_empty_string));
- getChild<LLUICtrl>("parcels_listed")->setValue(LLSD(msg_empty_string));
+ childSetValue("memory_used", LLSD(msg_empty_string));
+ childSetValue("urls_used", LLSD(msg_empty_string));
+ childSetValue("parcels_listed", LLSD(msg_empty_string));
mObjectListItems.clear();
}
@@ -1207,7 +1207,7 @@ void LLPanelScriptLimitsAttachment::setAttachmentDetails(LLSD content)
setAttachmentSummary(content);
- getChild<LLUICtrl>("loading_text")->setValue(LLSD(std::string("")));
+ childSetValue("loading_text", LLSD(std::string("")));
LLButton* btn = getChild<LLButton>("refresh_list_btn");
if(btn)
@@ -1221,7 +1221,7 @@ BOOL LLPanelScriptLimitsAttachment::postBuild()
childSetAction("refresh_list_btn", onClickRefresh, this);
std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestWaiting");
- getChild<LLUICtrl>("loading_text")->setValue(LLSD(msg_waiting));
+ childSetValue("loading_text", LLSD(msg_waiting));
return requestAttachmentDetails();
}
@@ -1235,7 +1235,7 @@ void LLPanelScriptLimitsAttachment::clearList()
}
std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestWaiting");
- getChild<LLUICtrl>("loading_text")->setValue(LLSD(msg_waiting));
+ childSetValue("loading_text", LLSD(msg_waiting));
}
void LLPanelScriptLimitsAttachment::setAttachmentSummary(LLSD content)
@@ -1285,7 +1285,7 @@ void LLPanelScriptLimitsAttachment::setAttachmentSummary(LLSD content)
args_attachment_memory["[MAX]"] = llformat ("%d", mAttachmentMemoryMax);
args_attachment_memory["[AVAILABLE]"] = llformat ("%d", attachment_memory_available);
std::string msg_attachment_memory = LLTrans::getString("ScriptLimitsMemoryUsed", args_attachment_memory);
- getChild<LLUICtrl>("memory_used")->setValue(LLSD(msg_attachment_memory));
+ childSetValue("memory_used", LLSD(msg_attachment_memory));
}
if((mAttachmentURLsUsed >= 0) && (mAttachmentURLsMax >= 0))
@@ -1297,7 +1297,7 @@ void LLPanelScriptLimitsAttachment::setAttachmentSummary(LLSD content)
args_attachment_urls["[MAX]"] = llformat ("%d", mAttachmentURLsMax);
args_attachment_urls["[AVAILABLE]"] = llformat ("%d", attachment_urls_available);
std::string msg_attachment_urls = LLTrans::getString("ScriptLimitsURLsUsed", args_attachment_urls);
- getChild<LLUICtrl>("urls_used")->setValue(LLSD(msg_attachment_urls));
+ childSetValue("urls_used", LLSD(msg_attachment_urls));
}
}
diff --git a/indra/newview/llfloatersearch.cpp b/indra/newview/llfloatersearch.cpp
index 7661e50eba..31c82c1464 100644
--- a/indra/newview/llfloatersearch.cpp
+++ b/indra/newview/llfloatersearch.cpp
@@ -122,11 +122,11 @@ void LLFloaterSearch::handleMediaEvent(LLPluginClassMedia *self, EMediaEvent eve
switch (event)
{
case MEDIA_EVENT_NAVIGATE_BEGIN:
- getChild<LLUICtrl>("status_text")->setValue(getString("loading_text"));
+ childSetText("status_text", getString("loading_text"));
break;
case MEDIA_EVENT_NAVIGATE_COMPLETE:
- getChild<LLUICtrl>("status_text")->setValue(getString("done_text"));
+ childSetText("status_text", getString("done_text"));
break;
default:
@@ -140,7 +140,7 @@ void LLFloaterSearch::godLevelChanged(U8 godlevel)
// changes god level, then give them a warning (we don't refresh
// the search as this might undo any page navigation or
// AJAX-driven changes since the last search).
- getChildView("refresh_search")->setVisible( (godlevel != mSearchGodLevel));
+ childSetVisible("refresh_search", (godlevel != mSearchGodLevel));
}
void LLFloaterSearch::search(const LLSD &key)
@@ -151,7 +151,7 @@ void LLFloaterSearch::search(const LLSD &key)
}
// reset the god level warning as we're sending the latest state
- getChildView("refresh_search")->setVisible(FALSE);
+ childHide("refresh_search");
mSearchGodLevel = gAgent.getGodLevel();
// work out the subdir to use based on the requested category
diff --git a/indra/newview/llfloatersellland.cpp b/indra/newview/llfloatersellland.cpp
index 3d87904dbe..af97fb90e1 100644
--- a/indra/newview/llfloatersellland.cpp
+++ b/indra/newview/llfloatersellland.cpp
@@ -157,7 +157,7 @@ BOOL LLFloaterSellLandUI::postBuild()
{
childSetCommitCallback("sell_to", onChangeValue, this);
childSetCommitCallback("price", onChangeValue, this);
- getChild<LLLineEditor>("price")->setPrevalidate(LLTextValidate::validateNonNegativeS32);
+ childSetPrevalidate("price", LLTextValidate::validateNonNegativeS32);
childSetCommitCallback("sell_objects", onChangeValue, this);
childSetAction("sell_to_select_agent", boost::bind( &LLFloaterSellLandUI::doSelectAgent, this));
childSetAction("cancel_btn", doCancel, this);
@@ -201,20 +201,20 @@ void LLFloaterSellLandUI::updateParcelInfo()
mParcelSoldWithObjects = parcelp->getSellWithObjects();
if (mParcelIsForSale)
{
- getChild<LLUICtrl>("price")->setValue(mParcelPrice);
+ childSetValue("price", mParcelPrice);
if (mParcelSoldWithObjects)
{
- getChild<LLUICtrl>("sell_objects")->setValue("yes");
+ childSetValue("sell_objects", "yes");
}
else
{
- getChild<LLUICtrl>("sell_objects")->setValue("no");
+ childSetValue("sell_objects", "no");
}
}
else
{
- getChild<LLUICtrl>("price")->setValue("");
- getChild<LLUICtrl>("sell_objects")->setValue("none");
+ childSetValue("price", "");
+ childSetValue("sell_objects", "none");
}
mParcelSnapshot = parcelp->getSnapshotID();
@@ -226,7 +226,7 @@ void LLFloaterSellLandUI::updateParcelInfo()
{
std::string name;
gCacheName->getFullName(mAuthorizedBuyer, name);
- getChild<LLUICtrl>("sell_to_agent")->setValue(name);
+ childSetText("sell_to_agent", name);
}
}
@@ -247,7 +247,7 @@ void LLFloaterSellLandUI::setBadge(const char* id, Badge badge)
case BADGE_ERROR: badgeName = badgeError; break;
}
- getChild<LLUICtrl>(id)->setValue(badgeName);
+ childSetValue(id, badgeName);
}
void LLFloaterSellLandUI::refreshUI()
@@ -258,10 +258,10 @@ void LLFloaterSellLandUI::refreshUI()
LLTextureCtrl* snapshot = getChild<LLTextureCtrl>("info_image");
snapshot->setImageAssetID(mParcelSnapshot);
- getChild<LLUICtrl>("info_parcel")->setValue(parcelp->getName());
- getChild<LLUICtrl>("info_size")->setTextArg("[AREA]", llformat("%d", mParcelActualArea));
+ childSetText("info_parcel", parcelp->getName());
+ childSetTextArg("info_size", "[AREA]", llformat("%d", mParcelActualArea));
- std::string price_str = getChild<LLUICtrl>("price")->getValue().asString();
+ std::string price_str = childGetValue("price").asString();
bool valid_price = false;
valid_price = (price_str != "") && LLTextValidate::validateNonNegativeS32(utf8str_to_wstring(price_str));
@@ -269,14 +269,14 @@ void LLFloaterSellLandUI::refreshUI()
{
F32 per_meter_price = 0;
per_meter_price = F32(mParcelPrice) / F32(mParcelActualArea);
- getChild<LLUICtrl>("price_per_m")->setTextArg("[PER_METER]", llformat("%0.2f", per_meter_price));
- getChildView("price_per_m")->setVisible(TRUE);
+ childSetTextArg("price_per_m", "[PER_METER]", llformat("%0.2f", per_meter_price));
+ childShow("price_per_m");
setBadge("step_price", BADGE_OK);
}
else
{
- getChildView("price_per_m")->setVisible(FALSE);
+ childHide("price_per_m");
if ("" == price_str)
{
@@ -290,26 +290,26 @@ void LLFloaterSellLandUI::refreshUI()
if (mSellToBuyer)
{
- getChild<LLUICtrl>("sell_to")->setValue("user");
- getChildView("sell_to_agent")->setVisible(TRUE);
- getChildView("sell_to_select_agent")->setVisible(TRUE);
+ childSetValue("sell_to", "user");
+ childShow("sell_to_agent");
+ childShow("sell_to_select_agent");
}
else
{
if (mChoseSellTo)
{
- getChild<LLUICtrl>("sell_to")->setValue("anyone");
+ childSetValue("sell_to", "anyone");
}
else
{
- getChild<LLUICtrl>("sell_to")->setValue("select");
+ childSetValue("sell_to", "select");
}
- getChildView("sell_to_agent")->setVisible(FALSE);
- getChildView("sell_to_select_agent")->setVisible(FALSE);
+ childHide("sell_to_agent");
+ childHide("sell_to_select_agent");
}
// Must select Sell To: Anybody, or User (with a specified username)
- std::string sell_to = getChild<LLUICtrl>("sell_to")->getValue().asString();
+ std::string sell_to = childGetValue("sell_to").asString();
bool valid_sell_to = "select" != sell_to &&
("user" != sell_to || mAuthorizedBuyer.notNull());
@@ -322,7 +322,7 @@ void LLFloaterSellLandUI::refreshUI()
setBadge("step_sell_to", BADGE_OK);
}
- bool valid_sell_objects = ("none" != getChild<LLUICtrl>("sell_objects")->getValue().asString());
+ bool valid_sell_objects = ("none" != childGetValue("sell_objects").asString());
if (!valid_sell_objects)
{
@@ -335,11 +335,11 @@ void LLFloaterSellLandUI::refreshUI()
if (valid_sell_to && valid_price && valid_sell_objects)
{
- getChildView("sell_btn")->setEnabled(TRUE);
+ childEnable("sell_btn");
}
else
{
- getChildView("sell_btn")->setEnabled(FALSE);
+ childDisable("sell_btn");
}
}
@@ -348,7 +348,7 @@ void LLFloaterSellLandUI::onChangeValue(LLUICtrl *ctrl, void *userdata)
{
LLFloaterSellLandUI *self = (LLFloaterSellLandUI *)userdata;
- std::string sell_to = self->getChild<LLUICtrl>("sell_to")->getValue().asString();
+ std::string sell_to = self->childGetValue("sell_to").asString();
if (sell_to == "user")
{
@@ -365,9 +365,9 @@ void LLFloaterSellLandUI::onChangeValue(LLUICtrl *ctrl, void *userdata)
self->mSellToBuyer = false;
}
- self->mParcelPrice = self->getChild<LLUICtrl>("price")->getValue();
+ self->mParcelPrice = self->childGetValue("price");
- if ("yes" == self->getChild<LLUICtrl>("sell_objects")->getValue().asString())
+ if ("yes" == self->childGetValue("sell_objects").asString())
{
self->mParcelSoldWithObjects = true;
}
@@ -396,7 +396,7 @@ void LLFloaterSellLandUI::callbackAvatarPick(const std::vector<std::string>& nam
mAuthorizedBuyer = ids[0];
- getChild<LLUICtrl>("sell_to_agent")->setValue(names[0]);
+ childSetText("sell_to_agent", names[0]);
refreshUI();
}
@@ -439,13 +439,13 @@ void LLFloaterSellLandUI::doSellLand(void *userdata)
LLParcel* parcel = self->mParcelSelection->getParcel();
// Do a confirmation
- S32 sale_price = self->getChild<LLUICtrl>("price")->getValue();
+ S32 sale_price = self->childGetValue("price");
S32 area = parcel->getArea();
std::string authorizedBuyerName = "Anyone";
bool sell_to_anyone = true;
- if ("user" == self->getChild<LLUICtrl>("sell_to")->getValue().asString())
+ if ("user" == self->childGetValue("sell_to").asString())
{
- authorizedBuyerName = self->getChild<LLUICtrl>("sell_to_agent")->getValue().asString();
+ authorizedBuyerName = self->childGetText("sell_to_agent");
sell_to_anyone = false;
}
@@ -492,7 +492,7 @@ bool LLFloaterSellLandUI::onConfirmSale(const LLSD& notification, const LLSD& re
{
return false;
}
- S32 sale_price = getChild<LLUICtrl>("price")->getValue();
+ S32 sale_price = childGetValue("price");
// Valid extracted data
if (sale_price < 0)
@@ -514,12 +514,12 @@ bool LLFloaterSellLandUI::onConfirmSale(const LLSD& notification, const LLSD& re
parcel->setParcelFlag(PF_FOR_SALE, TRUE);
parcel->setSalePrice(sale_price);
bool sell_with_objects = false;
- if ("yes" == getChild<LLUICtrl>("sell_objects")->getValue().asString())
+ if ("yes" == childGetValue("sell_objects").asString())
{
sell_with_objects = true;
}
parcel->setSellWithObjects(sell_with_objects);
- if ("user" == getChild<LLUICtrl>("sell_to")->getValue().asString())
+ if ("user" == childGetValue("sell_to").asString())
{
parcel->setAuthorizedBuyerID(mAuthorizedBuyer);
}
diff --git a/indra/newview/llfloatersettingsdebug.cpp b/indra/newview/llfloatersettingsdebug.cpp
index 41a05055fe..3bd5e900b4 100644
--- a/indra/newview/llfloatersettingsdebug.cpp
+++ b/indra/newview/llfloatersettingsdebug.cpp
@@ -121,49 +121,49 @@ void LLFloaterSettingsDebug::onCommitSettings()
switch(controlp->type())
{
case TYPE_U32:
- controlp->set(getChild<LLUICtrl>("val_spinner_1")->getValue());
+ controlp->set(childGetValue("val_spinner_1"));
break;
case TYPE_S32:
- controlp->set(getChild<LLUICtrl>("val_spinner_1")->getValue());
+ controlp->set(childGetValue("val_spinner_1"));
break;
case TYPE_F32:
- controlp->set(LLSD(getChild<LLUICtrl>("val_spinner_1")->getValue().asReal()));
+ controlp->set(LLSD(childGetValue("val_spinner_1").asReal()));
break;
case TYPE_BOOLEAN:
- controlp->set(getChild<LLUICtrl>("boolean_combo")->getValue());
+ controlp->set(childGetValue("boolean_combo"));
break;
case TYPE_STRING:
- controlp->set(LLSD(getChild<LLUICtrl>("val_text")->getValue().asString()));
+ controlp->set(LLSD(childGetValue("val_text").asString()));
break;
case TYPE_VEC3:
- vector.mV[VX] = (F32)getChild<LLUICtrl>("val_spinner_1")->getValue().asReal();
- vector.mV[VY] = (F32)getChild<LLUICtrl>("val_spinner_2")->getValue().asReal();
- vector.mV[VZ] = (F32)getChild<LLUICtrl>("val_spinner_3")->getValue().asReal();
+ vector.mV[VX] = (F32)childGetValue("val_spinner_1").asReal();
+ vector.mV[VY] = (F32)childGetValue("val_spinner_2").asReal();
+ vector.mV[VZ] = (F32)childGetValue("val_spinner_3").asReal();
controlp->set(vector.getValue());
break;
case TYPE_VEC3D:
- vectord.mdV[VX] = getChild<LLUICtrl>("val_spinner_1")->getValue().asReal();
- vectord.mdV[VY] = getChild<LLUICtrl>("val_spinner_2")->getValue().asReal();
- vectord.mdV[VZ] = getChild<LLUICtrl>("val_spinner_3")->getValue().asReal();
+ vectord.mdV[VX] = childGetValue("val_spinner_1").asReal();
+ vectord.mdV[VY] = childGetValue("val_spinner_2").asReal();
+ vectord.mdV[VZ] = childGetValue("val_spinner_3").asReal();
controlp->set(vectord.getValue());
break;
case TYPE_RECT:
- rect.mLeft = getChild<LLUICtrl>("val_spinner_1")->getValue().asInteger();
- rect.mRight = getChild<LLUICtrl>("val_spinner_2")->getValue().asInteger();
- rect.mBottom = getChild<LLUICtrl>("val_spinner_3")->getValue().asInteger();
- rect.mTop = getChild<LLUICtrl>("val_spinner_4")->getValue().asInteger();
+ rect.mLeft = childGetValue("val_spinner_1").asInteger();
+ rect.mRight = childGetValue("val_spinner_2").asInteger();
+ rect.mBottom = childGetValue("val_spinner_3").asInteger();
+ rect.mTop = childGetValue("val_spinner_4").asInteger();
controlp->set(rect.getValue());
break;
case TYPE_COL4:
- col3.setValue(getChild<LLUICtrl>("val_color_swatch")->getValue());
- col4 = LLColor4(col3, (F32)getChild<LLUICtrl>("val_spinner_4")->getValue().asReal());
+ col3.setValue(childGetValue("val_color_swatch"));
+ col4 = LLColor4(col3, (F32)childGetValue("val_spinner_4").asReal());
controlp->set(col4.getValue());
break;
case TYPE_COL3:
- controlp->set(getChild<LLUICtrl>("val_color_swatch")->getValue());
- //col3.mV[VRED] = (F32)floaterp->getChild<LLUICtrl>("val_spinner_1")->getValue().asC();
- //col3.mV[VGREEN] = (F32)floaterp->getChild<LLUICtrl>("val_spinner_2")->getValue().asReal();
- //col3.mV[VBLUE] = (F32)floaterp->getChild<LLUICtrl>("val_spinner_3")->getValue().asReal();
+ controlp->set(childGetValue("val_color_swatch"));
+ //col3.mV[VRED] = (F32)floaterp->childGetValue("val_spinner_1").asC();
+ //col3.mV[VGREEN] = (F32)floaterp->childGetValue("val_spinner_2").asReal();
+ //col3.mV[VBLUE] = (F32)floaterp->childGetValue("val_spinner_3").asReal();
//controlp->set(col3.getValue());
break;
default:
@@ -205,7 +205,7 @@ void LLFloaterSettingsDebug::updateControl(LLControlVariable* controlp)
spinner3->setVisible(FALSE);
spinner4->setVisible(FALSE);
color_swatch->setVisible(FALSE);
- getChildView("val_text")->setVisible( FALSE);
+ childSetVisible("val_text", FALSE);
mComment->setText(LLStringUtil::null);
if (controlp)
@@ -213,7 +213,7 @@ void LLFloaterSettingsDebug::updateControl(LLControlVariable* controlp)
eControlType type = controlp->type();
//hide combo box only for non booleans, otherwise this will result in the combo box closing every frame
- getChildView("boolean_combo")->setVisible( type == TYPE_BOOLEAN);
+ childSetVisible("boolean_combo", type == TYPE_BOOLEAN);
mComment->setText(controlp->getComment());
@@ -279,23 +279,23 @@ void LLFloaterSettingsDebug::updateControl(LLControlVariable* controlp)
}
break;
case TYPE_BOOLEAN:
- if (!getChild<LLUICtrl>("boolean_combo")->hasFocus())
+ if (!childHasFocus("boolean_combo"))
{
if (sd.asBoolean())
{
- getChild<LLUICtrl>("boolean_combo")->setValue(LLSD("true"));
+ childSetValue("boolean_combo", LLSD("true"));
}
else
{
- getChild<LLUICtrl>("boolean_combo")->setValue(LLSD(""));
+ childSetValue("boolean_combo", LLSD(""));
}
}
break;
case TYPE_STRING:
- getChildView("val_text")->setVisible( TRUE);
- if (!getChild<LLUICtrl>("val_text")->hasFocus())
+ childSetVisible("val_text", TRUE);
+ if (!childHasFocus("val_text"))
{
- getChild<LLUICtrl>("val_text")->setValue(sd);
+ childSetValue("val_text", sd);
}
break;
case TYPE_VEC3:
diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp
index f58f704ff2..a5da861fb0 100644
--- a/indra/newview/llfloatersnapshot.cpp
+++ b/indra/newview/llfloatersnapshot.cpp
@@ -40,7 +40,6 @@
#include "llbutton.h"
#include "llcombobox.h"
#include "lleconomy.h"
-#include "lllandmarkactions.h"
#include "llsliderctrl.h"
#include "llspinctrl.h"
#include "llviewercontrol.h"
@@ -54,7 +53,6 @@
#include "llradiogroup.h"
#include "lltoolfocus.h"
#include "lltoolmgr.h"
-#include "llwebsharing.h"
#include "llworld.h"
#include "llagentui.h"
@@ -82,8 +80,8 @@
///----------------------------------------------------------------------------
/// Local function declarations, constants, enums, and typedefs
///----------------------------------------------------------------------------
-S32 LLFloaterSnapshot::sUIWinHeightLong = 530 ;
-S32 LLFloaterSnapshot::sUIWinHeightShort = LLFloaterSnapshot::sUIWinHeightLong - 240 ;
+S32 LLFloaterSnapshot::sUIWinHeightLong = 526 ;
+S32 LLFloaterSnapshot::sUIWinHeightShort = LLFloaterSnapshot::sUIWinHeightLong - 230 ;
S32 LLFloaterSnapshot::sUIWinWidth = 215 ;
LLSnapshotFloaterView* gSnapshotFloaterView = NULL;
@@ -111,8 +109,7 @@ public:
{
SNAPSHOT_POSTCARD,
SNAPSHOT_TEXTURE,
- SNAPSHOT_LOCAL,
- SNAPSHOT_WEB
+ SNAPSHOT_LOCAL
};
@@ -158,7 +155,6 @@ public:
void setSnapshotQuality(S32 quality);
void setSnapshotBufferType(LLViewerWindow::ESnapshotType type) { mSnapshotBufferType = type; }
void updateSnapshot(BOOL new_snapshot, BOOL new_thumbnail = FALSE, F32 delay = 0.f);
- void saveWeb();
LLFloaterPostcard* savePostcard();
void saveTexture();
BOOL saveLocal();
@@ -171,9 +167,6 @@ public:
// Returns TRUE when snapshot generated, FALSE otherwise.
static BOOL onIdle( void* snapshot_preview );
- // callback for region name resolve
- void regionNameCallback(LLImageJPEG* snapshot, LLSD& metadata, const std::string& name, S32 x, S32 y, S32 z);
-
private:
LLColor4 mColor;
LLPointer<LLViewerTexture> mViewerImage[2]; //used to represent the scene when the frame is frozen.
@@ -827,19 +820,9 @@ BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview )
// delete any existing image
previewp->mFormattedImage = NULL;
// now create the new one of the appropriate format.
- // note: postcards and web hardcoded to use jpeg always.
- LLFloaterSnapshot::ESnapshotFormat format;
-
- if (previewp->getSnapshotType() == SNAPSHOT_POSTCARD ||
- previewp->getSnapshotType() == SNAPSHOT_WEB)
- {
- format = LLFloaterSnapshot::SNAPSHOT_FORMAT_JPEG;
- }
- else
- {
- format = previewp->getSnapshotFormat();
- }
-
+ // note: postcards hardcoded to use jpeg always.
+ LLFloaterSnapshot::ESnapshotFormat format = previewp->getSnapshotType() == SNAPSHOT_POSTCARD
+ ? LLFloaterSnapshot::SNAPSHOT_FORMAT_JPEG : previewp->getSnapshotFormat();
switch(format)
{
case LLFloaterSnapshot::SNAPSHOT_FORMAT_PNG:
@@ -1032,33 +1015,6 @@ BOOL LLSnapshotLivePreview::saveLocal()
return success;
}
-void LLSnapshotLivePreview::saveWeb()
-{
- // *FIX: Will break if the window closes because of CloseSnapshotOnKeep!
- // Needs to pass on ownership of the image.
- LLImageJPEG* jpg = dynamic_cast<LLImageJPEG*>(mFormattedImage.get());
- if(!jpg)
- {
- llwarns << "Formatted image not a JPEG" << llendl;
- return;
- }
-
- LLSD metadata;
- metadata["description"] = getChild<LLLineEditor>("description")->getText();
-
- LLLandmarkActions::getRegionNameAndCoordsFromPosGlobal(gAgentCamera.getCameraPositionGlobal(),
- boost::bind(&LLSnapshotLivePreview::regionNameCallback, this, jpg, metadata, _1, _2, _3, _4));
-
- gViewerWindow->playSnapshotAnimAndSound();
-}
-
-void LLSnapshotLivePreview::regionNameCallback(LLImageJPEG* snapshot, LLSD& metadata, const std::string& name, S32 x, S32 y, S32 z)
-{
- metadata["slurl"] = LLSLURL(name, LLVector3d(x, y, z)).getSLURLString();
-
- LLWebSharing::instance().shareSnapshot(snapshot, metadata);
-}
-
///----------------------------------------------------------------------------
/// Class LLFloaterSnapshot::Impl
///----------------------------------------------------------------------------
@@ -1109,7 +1065,6 @@ public:
private:
static LLSnapshotLivePreview::ESnapshotType getTypeIndex(LLFloaterSnapshot* floater);
- static LLSD getTypeName(LLSnapshotLivePreview::ESnapshotType index);
static ESnapshotFormat getFormatIndex(LLFloaterSnapshot* floater);
static LLViewerWindow::ESnapshotType getLayerType(LLFloaterSnapshot* floater);
static void comboSetCustom(LLFloaterSnapshot *floater, const std::string& comboname);
@@ -1135,51 +1090,17 @@ LLSnapshotLivePreview* LLFloaterSnapshot::Impl::getPreviewView(LLFloaterSnapshot
LLSnapshotLivePreview::ESnapshotType LLFloaterSnapshot::Impl::getTypeIndex(LLFloaterSnapshot* floater)
{
LLSnapshotLivePreview::ESnapshotType index = LLSnapshotLivePreview::SNAPSHOT_POSTCARD;
- LLSD value = floater->getChild<LLUICtrl>("snapshot_type_radio")->getValue();
-
+ LLSD value = floater->childGetValue("snapshot_type_radio");
const std::string id = value.asString();
if (id == "postcard")
- {
index = LLSnapshotLivePreview::SNAPSHOT_POSTCARD;
- }
else if (id == "texture")
- {
index = LLSnapshotLivePreview::SNAPSHOT_TEXTURE;
- }
else if (id == "local")
- {
index = LLSnapshotLivePreview::SNAPSHOT_LOCAL;
- }
- else if (id == "share_to_web")
- {
- index = LLSnapshotLivePreview::SNAPSHOT_WEB;
- }
-
return index;
}
-// static
-LLSD LLFloaterSnapshot::Impl::getTypeName(LLSnapshotLivePreview::ESnapshotType index)
-{
- std::string id;
- switch (index)
- {
- case LLSnapshotLivePreview::SNAPSHOT_WEB:
- id = "share_to_web";
- break;
- case LLSnapshotLivePreview::SNAPSHOT_POSTCARD:
- id = "postcard";
- break;
- case LLSnapshotLivePreview::SNAPSHOT_TEXTURE:
- id = "texture";
- break;
- case LLSnapshotLivePreview::SNAPSHOT_LOCAL:
- default:
- id = "local";
- break;
- }
- return LLSD(id);
-}
// static
LLFloaterSnapshot::ESnapshotFormat LLFloaterSnapshot::Impl::getFormatIndex(LLFloaterSnapshot* floater)
@@ -1205,7 +1126,7 @@ LLFloaterSnapshot::ESnapshotFormat LLFloaterSnapshot::Impl::getFormatIndex(LLFlo
LLViewerWindow::ESnapshotType LLFloaterSnapshot::Impl::getLayerType(LLFloaterSnapshot* floater)
{
LLViewerWindow::ESnapshotType type = LLViewerWindow::SNAPSHOT_TYPE_COLOR;
- LLSD value = floater->getChild<LLUICtrl>("layer_types")->getValue();
+ LLSD value = floater->childGetValue("layer_types");
const std::string id = value.asString();
if (id == "colors")
type = LLViewerWindow::SNAPSHOT_TYPE_COLOR;
@@ -1248,7 +1169,7 @@ void LLFloaterSnapshot::Impl::updateLayout(LLFloaterSnapshot* floaterp)
previewp->setSize(gViewerWindow->getWindowWidthRaw(), gViewerWindow->getWindowHeightRaw());
}
- bool use_freeze_frame = floaterp->getChild<LLUICtrl>("freeze_frame_check")->getValue().asBoolean();
+ bool use_freeze_frame = floaterp->childGetValue("freeze_frame_check").asBoolean();
if (use_freeze_frame)
{
@@ -1316,64 +1237,56 @@ void LLFloaterSnapshot::Impl::updateLayout(LLFloaterSnapshot* floaterp)
void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater)
{
LLRadioGroup* snapshot_type_radio = floater->getChild<LLRadioGroup>("snapshot_type_radio");
- LLSnapshotLivePreview::ESnapshotType shot_type = (LLSnapshotLivePreview::ESnapshotType)gSavedSettings.getS32("LastSnapshotType");
- snapshot_type_radio->setSelectedByValue(getTypeName(shot_type), true);
-
- ESnapshotFormat shot_format = (ESnapshotFormat)gSavedSettings.getS32("SnapshotFormat");
+ snapshot_type_radio->setSelectedIndex(gSavedSettings.getS32("LastSnapshotType"));
+ LLSnapshotLivePreview::ESnapshotType shot_type = getTypeIndex(floater);
+ ESnapshotFormat shot_format = (ESnapshotFormat)gSavedSettings.getS32("SnapshotFormat"); //getFormatIndex(floater); LLViewerWindow::ESnapshotType layer_type = getLayerType(floater);
LLViewerWindow::ESnapshotType layer_type = getLayerType(floater);
- floater->getChildView("share_to_web")->setVisible( gSavedSettings.getBOOL("SnapshotSharingEnabled"));
-
- floater->getChildView("postcard_size_combo")->setVisible( FALSE);
- floater->getChildView("texture_size_combo")->setVisible( FALSE);
- floater->getChildView("local_size_combo")->setVisible( FALSE);
+ floater->childSetVisible("postcard_size_combo", FALSE);
+ floater->childSetVisible("texture_size_combo", FALSE);
+ floater->childSetVisible("local_size_combo", FALSE);
floater->getChild<LLComboBox>("postcard_size_combo")->selectNthItem(gSavedSettings.getS32("SnapshotPostcardLastResolution"));
floater->getChild<LLComboBox>("texture_size_combo")->selectNthItem(gSavedSettings.getS32("SnapshotTextureLastResolution"));
floater->getChild<LLComboBox>("local_size_combo")->selectNthItem(gSavedSettings.getS32("SnapshotLocalLastResolution"));
floater->getChild<LLComboBox>("local_format_combo")->selectNthItem(gSavedSettings.getS32("SnapshotFormat"));
- // *TODO: Separate settings for Web images from postcards
- floater->getChildView("send_btn")->setVisible( shot_type == LLSnapshotLivePreview::SNAPSHOT_POSTCARD ||
- shot_type == LLSnapshotLivePreview::SNAPSHOT_WEB);
- floater->getChildView("upload_btn")->setVisible(shot_type == LLSnapshotLivePreview::SNAPSHOT_TEXTURE);
- floater->getChildView("save_btn")->setVisible( shot_type == LLSnapshotLivePreview::SNAPSHOT_LOCAL);
- floater->getChildView("keep_aspect_check")->setEnabled(shot_type != LLSnapshotLivePreview::SNAPSHOT_TEXTURE && !floater->impl.mAspectRatioCheckOff);
- floater->getChildView("layer_types")->setEnabled(shot_type == LLSnapshotLivePreview::SNAPSHOT_LOCAL);
+ floater->childSetVisible("upload_btn", shot_type == LLSnapshotLivePreview::SNAPSHOT_TEXTURE);
+ floater->childSetVisible("send_btn", shot_type == LLSnapshotLivePreview::SNAPSHOT_POSTCARD);
+ floater->childSetVisible("save_btn", shot_type == LLSnapshotLivePreview::SNAPSHOT_LOCAL);
+ floater->childSetEnabled("keep_aspect_check", shot_type != LLSnapshotLivePreview::SNAPSHOT_TEXTURE && !floater->impl.mAspectRatioCheckOff);
+ floater->childSetEnabled("layer_types", shot_type == LLSnapshotLivePreview::SNAPSHOT_LOCAL);
BOOL is_advance = gSavedSettings.getBOOL("AdvanceSnapshot");
BOOL is_local = shot_type == LLSnapshotLivePreview::SNAPSHOT_LOCAL;
- BOOL show_slider = (shot_type == LLSnapshotLivePreview::SNAPSHOT_POSTCARD ||
- shot_type == LLSnapshotLivePreview::SNAPSHOT_WEB ||
- (is_local && shot_format == LLFloaterSnapshot::SNAPSHOT_FORMAT_JPEG));
-
- floater->getChildView("more_btn")->setVisible( !is_advance); // the only item hidden in advanced mode
- floater->getChildView("less_btn")->setVisible( is_advance);
- floater->getChildView("type_label2")->setVisible( is_advance);
- floater->getChildView("format_label")->setVisible( is_advance && is_local);
- floater->getChildView("local_format_combo")->setVisible( is_advance && is_local);
- floater->getChildView("layer_types")->setVisible( is_advance);
- floater->getChildView("layer_type_label")->setVisible( is_advance);
- floater->getChildView("snapshot_width")->setVisible( is_advance);
- floater->getChildView("snapshot_height")->setVisible( is_advance);
- floater->getChildView("keep_aspect_check")->setVisible( is_advance);
- floater->getChildView("ui_check")->setVisible( is_advance);
- floater->getChildView("hud_check")->setVisible( is_advance);
- floater->getChildView("keep_open_check")->setVisible( is_advance);
- floater->getChildView("freeze_frame_check")->setVisible( is_advance);
- floater->getChildView("auto_snapshot_check")->setVisible( is_advance);
- floater->getChildView("image_quality_slider")->setVisible( is_advance && show_slider);
+ BOOL show_slider =
+ shot_type == LLSnapshotLivePreview::SNAPSHOT_POSTCARD
+ || (is_local && shot_format == LLFloaterSnapshot::SNAPSHOT_FORMAT_JPEG);
+
+ floater->childSetVisible("more_btn", !is_advance); // the only item hidden in advanced mode
+ floater->childSetVisible("less_btn", is_advance);
+ floater->childSetVisible("type_label2", is_advance);
+ floater->childSetVisible("format_label", is_advance && is_local);
+ floater->childSetVisible("local_format_combo", is_advance && is_local);
+ floater->childSetVisible("layer_types", is_advance);
+ floater->childSetVisible("layer_type_label", is_advance);
+ floater->childSetVisible("snapshot_width", is_advance);
+ floater->childSetVisible("snapshot_height", is_advance);
+ floater->childSetVisible("keep_aspect_check", is_advance);
+ floater->childSetVisible("ui_check", is_advance);
+ floater->childSetVisible("hud_check", is_advance);
+ floater->childSetVisible("keep_open_check", is_advance);
+ floater->childSetVisible("freeze_frame_check", is_advance);
+ floater->childSetVisible("auto_snapshot_check", is_advance);
+ floater->childSetVisible("image_quality_slider", is_advance && show_slider);
LLSnapshotLivePreview* previewp = getPreviewView(floater);
BOOL got_bytes = previewp && previewp->getDataSize() > 0;
BOOL got_snap = previewp && previewp->getSnapshotUpToDate();
- // *TODO: Separate maximum size for Web images from postcards
- floater->getChildView("send_btn")->setEnabled((shot_type == LLSnapshotLivePreview::SNAPSHOT_POSTCARD ||
- shot_type == LLSnapshotLivePreview::SNAPSHOT_WEB) &&
- got_snap && previewp->getDataSize() <= MAX_POSTCARD_DATASIZE);
- floater->getChildView("upload_btn")->setEnabled(shot_type == LLSnapshotLivePreview::SNAPSHOT_TEXTURE && got_snap);
- floater->getChildView("save_btn")->setEnabled(shot_type == LLSnapshotLivePreview::SNAPSHOT_LOCAL && got_snap);
+ floater->childSetEnabled("send_btn", shot_type == LLSnapshotLivePreview::SNAPSHOT_POSTCARD && got_snap && previewp->getDataSize() <= MAX_POSTCARD_DATASIZE);
+ floater->childSetEnabled("upload_btn", shot_type == LLSnapshotLivePreview::SNAPSHOT_TEXTURE && got_snap);
+ floater->childSetEnabled("save_btn", shot_type == LLSnapshotLivePreview::SNAPSHOT_LOCAL && got_snap);
LLLocale locale(LLLocale::USER_LOCALE);
std::string bytes_string;
@@ -1382,21 +1295,19 @@ void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater)
LLResMgr::getInstance()->getIntegerString(bytes_string, (previewp->getDataSize()) >> 10 );
}
S32 upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload();
- floater->getChild<LLUICtrl>("texture")->setLabelArg("[AMOUNT]", llformat("%d",upload_cost));
- floater->getChild<LLUICtrl>("upload_btn")->setLabelArg("[AMOUNT]", llformat("%d",upload_cost));
- floater->getChild<LLUICtrl>("file_size_label")->setTextArg("[SIZE]", got_snap ? bytes_string : floater->getString("unknown"));
- floater->getChild<LLUICtrl>("file_size_label")->setColor(
+ floater->childSetLabelArg("texture", "[AMOUNT]", llformat("%d",upload_cost));
+ floater->childSetLabelArg("upload_btn", "[AMOUNT]", llformat("%d",upload_cost));
+ floater->childSetTextArg("file_size_label", "[SIZE]", got_snap ? bytes_string : floater->getString("unknown"));
+ floater->childSetColor("file_size_label",
shot_type == LLSnapshotLivePreview::SNAPSHOT_POSTCARD
&& got_bytes
&& previewp->getDataSize() > MAX_POSTCARD_DATASIZE ? LLUIColor(LLColor4::red) : LLUIColorTable::instance().getColor( "LabelTextColor" ));
switch(shot_type)
{
- // *TODO: Separate settings for Web images from postcards
- case LLSnapshotLivePreview::SNAPSHOT_WEB:
case LLSnapshotLivePreview::SNAPSHOT_POSTCARD:
layer_type = LLViewerWindow::SNAPSHOT_TYPE_COLOR;
- floater->getChild<LLUICtrl>("layer_types")->setValue("colors");
+ floater->childSetValue("layer_types", "colors");
if(is_advance)
{
setResolution(floater, "postcard_size_combo");
@@ -1404,7 +1315,7 @@ void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater)
break;
case LLSnapshotLivePreview::SNAPSHOT_TEXTURE:
layer_type = LLViewerWindow::SNAPSHOT_TYPE_COLOR;
- floater->getChild<LLUICtrl>("layer_types")->setValue("colors");
+ floater->childSetValue("layer_types", "colors");
if(is_advance)
{
setResolution(floater, "texture_size_combo");
@@ -1485,39 +1396,28 @@ void LLFloaterSnapshot::Impl::onClickKeep(void* data)
{
LLFloaterSnapshot *view = (LLFloaterSnapshot *)data;
LLSnapshotLivePreview* previewp = getPreviewView(view);
-
+
if (previewp)
{
- switch (previewp->getSnapshotType())
+ if (previewp->getSnapshotType() == LLSnapshotLivePreview::SNAPSHOT_POSTCARD)
{
- case LLSnapshotLivePreview::SNAPSHOT_WEB:
- previewp->saveWeb();
- break;
-
- case LLSnapshotLivePreview::SNAPSHOT_POSTCARD:
+ LLFloaterPostcard* floater = previewp->savePostcard();
+ // if still in snapshot mode, put postcard floater in snapshot floaterview
+ // and link it to snapshot floater
+ if (floater && !gSavedSettings.getBOOL("CloseSnapshotOnKeep"))
{
- LLFloaterPostcard* floater = previewp->savePostcard();
- // if still in snapshot mode, put postcard floater in snapshot floaterview
- // and link it to snapshot floater
- if (floater && !gSavedSettings.getBOOL("CloseSnapshotOnKeep"))
- {
- gFloaterView->removeChild(floater);
- gSnapshotFloaterView->addChild(floater);
- view->addDependentFloater(floater, FALSE);
- }
+ gFloaterView->removeChild(floater);
+ gSnapshotFloaterView->addChild(floater);
+ view->addDependentFloater(floater, FALSE);
}
- break;
-
- case LLSnapshotLivePreview::SNAPSHOT_TEXTURE:
+ }
+ else if (previewp->getSnapshotType() == LLSnapshotLivePreview::SNAPSHOT_TEXTURE)
+ {
previewp->saveTexture();
- break;
-
- case LLSnapshotLivePreview::SNAPSHOT_LOCAL:
+ }
+ else
+ {
previewp->saveLocal();
- break;
-
- default:
- break;
}
if (gSavedSettings.getBOOL("CloseSnapshotOnKeep"))
@@ -1704,7 +1604,7 @@ void LLFloaterSnapshot::Impl::checkAspectRatio(LLFloaterSnapshot *view, S32 inde
if(0 == index) //current window size
{
view->impl.mAspectRatioCheckOff = true ;
- view->getChildView("keep_aspect_check")->setEnabled(FALSE) ;
+ view->childSetEnabled("keep_aspect_check", FALSE) ;
if(previewp)
{
@@ -1716,7 +1616,7 @@ void LLFloaterSnapshot::Impl::checkAspectRatio(LLFloaterSnapshot *view, S32 inde
view->impl.mAspectRatioCheckOff = false ;
//if(LLSnapshotLivePreview::SNAPSHOT_TEXTURE != gSavedSettings.getS32("LastSnapshotType"))
{
- view->getChildView("keep_aspect_check")->setEnabled(TRUE) ;
+ view->childSetEnabled("keep_aspect_check", TRUE) ;
if(previewp)
{
@@ -1727,7 +1627,7 @@ void LLFloaterSnapshot::Impl::checkAspectRatio(LLFloaterSnapshot *view, S32 inde
else
{
view->impl.mAspectRatioCheckOff = true ;
- view->getChildView("keep_aspect_check")->setEnabled(FALSE) ;
+ view->childSetEnabled("keep_aspect_check", FALSE) ;
if(previewp)
{
@@ -1742,22 +1642,18 @@ static std::string lastSnapshotWidthName()
{
switch(gSavedSettings.getS32("LastSnapshotType"))
{
- // *TODO: Separate settings for Web snapshots and postcards
- case LLSnapshotLivePreview::SNAPSHOT_WEB: return "LastSnapshotToEmailWidth";
- case LLSnapshotLivePreview::SNAPSHOT_POSTCARD: return "LastSnapshotToEmailWidth";
- case LLSnapshotLivePreview::SNAPSHOT_TEXTURE: return "LastSnapshotToInventoryWidth";
- default: return "LastSnapshotToDiskWidth";
+ case LLSnapshotLivePreview::SNAPSHOT_POSTCARD: return "LastSnapshotToEmailWidth";
+ case LLSnapshotLivePreview::SNAPSHOT_TEXTURE: return "LastSnapshotToInventoryWidth";
+ default: return "LastSnapshotToDiskWidth";
}
}
static std::string lastSnapshotHeightName()
{
switch(gSavedSettings.getS32("LastSnapshotType"))
{
- // *TODO: Separate settings for Web snapshots and postcards
- case LLSnapshotLivePreview::SNAPSHOT_WEB: return "LastSnapshotToEmailHeight";
- case LLSnapshotLivePreview::SNAPSHOT_POSTCARD: return "LastSnapshotToEmailHeight";
- case LLSnapshotLivePreview::SNAPSHOT_TEXTURE: return "LastSnapshotToInventoryHeight";
- default: return "LastSnapshotToDiskHeight";
+ case LLSnapshotLivePreview::SNAPSHOT_POSTCARD: return "LastSnapshotToEmailHeight";
+ case LLSnapshotLivePreview::SNAPSHOT_TEXTURE: return "LastSnapshotToInventoryHeight";
+ default: return "LastSnapshotToDiskHeight";
}
}
@@ -1816,10 +1712,10 @@ void LLFloaterSnapshot::Impl::updateResolution(LLUICtrl* ctrl, void* data, BOOL
resetSnapshotSizeOnUI(view, width, height) ;
}
- if(view->getChild<LLUICtrl>("snapshot_width")->getValue().asInteger() != width || view->getChild<LLUICtrl>("snapshot_height")->getValue().asInteger() != height)
+ if(view->childGetValue("snapshot_width").asInteger() != width || view->childGetValue("snapshot_height").asInteger() != height)
{
- view->getChild<LLUICtrl>("snapshot_width")->setValue(width);
- view->getChild<LLUICtrl>("snapshot_height")->setValue(height);
+ view->childSetValue("snapshot_width", width);
+ view->childSetValue("snapshot_height", height);
}
if(original_width != width || original_height != height)
@@ -1871,7 +1767,7 @@ void LLFloaterSnapshot::Impl::onCommitSnapshotType(LLUICtrl* ctrl, void* data)
//static
void LLFloaterSnapshot::Impl::onCommitSnapshotFormat(LLUICtrl* ctrl, void* data)
{
- LLFloaterSnapshot *view = (LLFloaterSnapshot *)data;
+ LLFloaterSnapshot *view = (LLFloaterSnapshot *)data;
if (view)
{
gSavedSettings.setS32("SnapshotFormat", getFormatIndex(view));
@@ -2002,8 +1898,8 @@ void LLFloaterSnapshot::Impl::onCommitCustomResolution(LLUICtrl *ctrl, void* dat
LLFloaterSnapshot *view = (LLFloaterSnapshot *)data;
if (view)
{
- S32 w = llfloor((F32)view->getChild<LLUICtrl>("snapshot_width")->getValue().asReal());
- S32 h = llfloor((F32)view->getChild<LLUICtrl>("snapshot_height")->getValue().asReal());
+ S32 w = llfloor((F32)view->childGetValue("snapshot_width").asReal());
+ S32 h = llfloor((F32)view->childGetValue("snapshot_height").asReal());
LLSnapshotLivePreview* previewp = getPreviewView(view);
if (previewp)
@@ -2092,12 +1988,6 @@ LLFloaterSnapshot::~LLFloaterSnapshot()
BOOL LLFloaterSnapshot::postBuild()
{
- // Kick start Web Sharing, to fetch its config data if it needs to.
- if (gSavedSettings.getBOOL("SnapshotSharingEnabled"))
- {
- LLWebSharing::instance().init();
- }
-
childSetCommitCallback("snapshot_type_radio", Impl::onCommitSnapshotType, this);
childSetCommitCallback("local_format_combo", Impl::onCommitSnapshotFormat, this);
@@ -2112,34 +2002,34 @@ BOOL LLFloaterSnapshot::postBuild()
childSetAction("discard_btn", Impl::onClickDiscard, this);
childSetCommitCallback("image_quality_slider", Impl::onCommitQuality, this);
- getChild<LLUICtrl>("image_quality_slider")->setValue(gSavedSettings.getS32("SnapshotQuality"));
+ childSetValue("image_quality_slider", gSavedSettings.getS32("SnapshotQuality"));
childSetCommitCallback("snapshot_width", Impl::onCommitCustomResolution, this);
childSetCommitCallback("snapshot_height", Impl::onCommitCustomResolution, this);
childSetCommitCallback("ui_check", Impl::onClickUICheck, this);
- getChild<LLUICtrl>("ui_check")->setValue(gSavedSettings.getBOOL("RenderUIInSnapshot"));
+ childSetValue("ui_check", gSavedSettings.getBOOL("RenderUIInSnapshot"));
childSetCommitCallback("hud_check", Impl::onClickHUDCheck, this);
- getChild<LLUICtrl>("hud_check")->setValue(gSavedSettings.getBOOL("RenderHUDInSnapshot"));
+ childSetValue("hud_check", gSavedSettings.getBOOL("RenderHUDInSnapshot"));
childSetCommitCallback("keep_open_check", Impl::onClickKeepOpenCheck, this);
- getChild<LLUICtrl>("keep_open_check")->setValue(!gSavedSettings.getBOOL("CloseSnapshotOnKeep"));
+ childSetValue("keep_open_check", !gSavedSettings.getBOOL("CloseSnapshotOnKeep"));
childSetCommitCallback("keep_aspect_check", Impl::onClickKeepAspectCheck, this);
- getChild<LLUICtrl>("keep_aspect_check")->setValue(gSavedSettings.getBOOL("KeepAspectForSnapshot"));
+ childSetValue("keep_aspect_check", gSavedSettings.getBOOL("KeepAspectForSnapshot"));
childSetCommitCallback("layer_types", Impl::onCommitLayerTypes, this);
- getChild<LLUICtrl>("layer_types")->setValue("colors");
- getChildView("layer_types")->setEnabled(FALSE);
+ childSetValue("layer_types", "colors");
+ childSetEnabled("layer_types", FALSE);
- getChild<LLUICtrl>("snapshot_width")->setValue(gSavedSettings.getS32(lastSnapshotWidthName()));
- getChild<LLUICtrl>("snapshot_height")->setValue(gSavedSettings.getS32(lastSnapshotHeightName()));
+ childSetValue("snapshot_width", gSavedSettings.getS32(lastSnapshotWidthName()));
+ childSetValue("snapshot_height", gSavedSettings.getS32(lastSnapshotHeightName()));
- getChild<LLUICtrl>("freeze_frame_check")->setValue(gSavedSettings.getBOOL("UseFreezeFrame"));
+ childSetValue("freeze_frame_check", gSavedSettings.getBOOL("UseFreezeFrame"));
childSetCommitCallback("freeze_frame_check", Impl::onCommitFreezeFrame, this);
- getChild<LLUICtrl>("auto_snapshot_check")->setValue(gSavedSettings.getBOOL("AutoSnapshot"));
+ childSetValue("auto_snapshot_check", gSavedSettings.getBOOL("AutoSnapshot"));
childSetCommitCallback("auto_snapshot_check", Impl::onClickAutoSnap, this);
childSetCommitCallback("postcard_size_combo", Impl::onCommitResolution, this);
diff --git a/indra/newview/llfloatertelehub.cpp b/indra/newview/llfloatertelehub.cpp
index d945f1a2de..d3d3b75a50 100644
--- a/indra/newview/llfloatertelehub.cpp
+++ b/indra/newview/llfloatertelehub.cpp
@@ -106,19 +106,19 @@ void LLFloaterTelehub::refresh()
BOOL have_selection = (object != NULL);
BOOL all_volume = LLSelectMgr::getInstance()->selectionAllPCode( LL_PCODE_VOLUME );
- getChildView("connect_btn")->setEnabled(have_selection && all_volume);
+ childSetEnabled("connect_btn", have_selection && all_volume);
BOOL have_telehub = mTelehubObjectID.notNull();
- getChildView("disconnect_btn")->setEnabled(have_telehub);
+ childSetEnabled("disconnect_btn", have_telehub);
BOOL space_avail = (mNumSpawn < MAX_SPAWNPOINTS_PER_TELEHUB);
- getChildView("add_spawn_point_btn")->setEnabled(have_selection && all_volume && space_avail);
+ childSetEnabled("add_spawn_point_btn", have_selection && all_volume && space_avail);
LLScrollListCtrl* list = getChild<LLScrollListCtrl>("spawn_points_list");
if (list)
{
BOOL enable_remove = (list->getFirstSelected() != NULL);
- getChildView("remove_spawn_point_btn")->setEnabled(enable_remove);
+ childSetEnabled("remove_spawn_point_btn", enable_remove);
}
}
@@ -249,18 +249,18 @@ void LLFloaterTelehub::unpackTelehubInfo(LLMessageSystem* msg)
if (mTelehubObjectID.isNull())
{
- getChildView("status_text_connected")->setVisible( false);
- getChildView("status_text_not_connected")->setVisible( true);
- getChildView("help_text_connected")->setVisible( false);
- getChildView("help_text_not_connected")->setVisible( true);
+ childSetVisible("status_text_connected", false);
+ childSetVisible("status_text_not_connected", true);
+ childSetVisible("help_text_connected", false);
+ childSetVisible("help_text_not_connected", true);
}
else
{
- getChild<LLUICtrl>("status_text_connected")->setTextArg("[OBJECT]", mTelehubObjectName);
- getChildView("status_text_connected")->setVisible( true);
- getChildView("status_text_not_connected")->setVisible( false);
- getChildView("help_text_connected")->setVisible( true);
- getChildView("help_text_not_connected")->setVisible( false);
+ childSetTextArg("status_text_connected", "[OBJECT]", mTelehubObjectName);
+ childSetVisible("status_text_connected", true);
+ childSetVisible("status_text_not_connected", false);
+ childSetVisible("help_text_connected", true);
+ childSetVisible("help_text_not_connected", false);
}
LLScrollListCtrl* list = getChild<LLScrollListCtrl>("spawn_points_list");
diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp
index 58a0d08c7d..41ca5b78f8 100644
--- a/indra/newview/llfloatertools.cpp
+++ b/indra/newview/llfloatertools.cpp
@@ -222,13 +222,13 @@ BOOL LLFloaterTools::postBuild()
mTitleMedia = getChild<LLMediaCtrl>("title_media");
mCheckSelectIndividual = getChild<LLCheckBoxCtrl>("checkbox edit linked parts");
- getChild<LLUICtrl>("checkbox edit linked parts")->setValue((BOOL)gSavedSettings.getBOOL("EditLinkedParts"));
+ childSetValue("checkbox edit linked parts",(BOOL)gSavedSettings.getBOOL("EditLinkedParts"));
mCheckSnapToGrid = getChild<LLCheckBoxCtrl>("checkbox snap to grid");
- getChild<LLUICtrl>("checkbox snap to grid")->setValue((BOOL)gSavedSettings.getBOOL("SnapEnabled"));
+ childSetValue("checkbox snap to grid",(BOOL)gSavedSettings.getBOOL("SnapEnabled"));
mCheckStretchUniform = getChild<LLCheckBoxCtrl>("checkbox uniform");
- getChild<LLUICtrl>("checkbox uniform")->setValue((BOOL)gSavedSettings.getBOOL("ScaleUniform"));
+ childSetValue("checkbox uniform",(BOOL)gSavedSettings.getBOOL("ScaleUniform"));
mCheckStretchTexture = getChild<LLCheckBoxCtrl>("checkbox stretch textures");
- getChild<LLUICtrl>("checkbox stretch textures")->setValue((BOOL)gSavedSettings.getBOOL("ScaleStretchTextures"));
+ childSetValue("checkbox stretch textures",(BOOL)gSavedSettings.getBOOL("ScaleStretchTextures"));
mComboGridMode = getChild<LLComboBox>("combobox grid mode");
mCheckStretchUniformLabel = getChild<LLTextBox>("checkbox uniform label");
@@ -248,21 +248,21 @@ BOOL LLFloaterTools::postBuild()
}
}
mCheckCopySelection = getChild<LLCheckBoxCtrl>("checkbox copy selection");
- getChild<LLUICtrl>("checkbox copy selection")->setValue((BOOL)gSavedSettings.getBOOL("CreateToolCopySelection"));
+ childSetValue("checkbox copy selection",(BOOL)gSavedSettings.getBOOL("CreateToolCopySelection"));
mCheckSticky = getChild<LLCheckBoxCtrl>("checkbox sticky");
- getChild<LLUICtrl>("checkbox sticky")->setValue((BOOL)gSavedSettings.getBOOL("CreateToolKeepSelected"));
+ childSetValue("checkbox sticky",(BOOL)gSavedSettings.getBOOL("CreateToolKeepSelected"));
mCheckCopyCenters = getChild<LLCheckBoxCtrl>("checkbox copy centers");
- getChild<LLUICtrl>("checkbox copy centers")->setValue((BOOL)gSavedSettings.getBOOL("CreateToolCopyCenters"));
+ childSetValue("checkbox copy centers",(BOOL)gSavedSettings.getBOOL("CreateToolCopyCenters"));
mCheckCopyRotates = getChild<LLCheckBoxCtrl>("checkbox copy rotates");
- getChild<LLUICtrl>("checkbox copy rotates")->setValue((BOOL)gSavedSettings.getBOOL("CreateToolCopyRotates"));
+ childSetValue("checkbox copy rotates",(BOOL)gSavedSettings.getBOOL("CreateToolCopyRotates"));
mRadioGroupLand = getChild<LLRadioGroup>("land_radio_group");
mBtnApplyToSelection = getChild<LLButton>("button apply to selection");
mSliderDozerSize = getChild<LLSlider>("slider brush size");
- getChild<LLUICtrl>("slider brush size")->setValue(gSavedSettings.getF32("LandBrushSize"));
+ childSetValue( "slider brush size", gSavedSettings.getF32("LandBrushSize"));
mSliderDozerForce = getChild<LLSlider>("slider force");
// the setting stores the actual force multiplier, but the slider is logarithmic, so we convert here
- getChild<LLUICtrl>("slider force")->setValue(log10(gSavedSettings.getF32("LandBrushForce")));
+ childSetValue( "slider force", log10(gSavedSettings.getF32("LandBrushForce")));
mTab = getChild<LLTabContainer>("Object Info Tabs");
if(mTab)
@@ -415,25 +415,25 @@ void LLFloaterTools::refresh()
LLLocale locale(LLLocale::USER_LOCALE);
std::string obj_count_string;
LLResMgr::getInstance()->getIntegerString(obj_count_string, LLSelectMgr::getInstance()->getSelection()->getRootObjectCount());
- getChild<LLUICtrl>("obj_count")->setTextArg("[COUNT]", obj_count_string);
+ childSetTextArg("obj_count", "[COUNT]", obj_count_string);
std::string prim_count_string;
LLResMgr::getInstance()->getIntegerString(prim_count_string, LLSelectMgr::getInstance()->getSelection()->getObjectCount());
- getChild<LLUICtrl>("prim_count")->setTextArg("[COUNT]", prim_count_string);
+ childSetTextArg("prim_count", "[COUNT]", prim_count_string);
// calculate selection rendering cost
if (sShowObjectCost)
{
std::string prim_cost_string;
LLResMgr::getInstance()->getIntegerString(prim_cost_string, calcRenderCost());
- getChild<LLUICtrl>("RenderingCost")->setTextArg("[COUNT]", prim_cost_string);
+ childSetTextArg("RenderingCost", "[COUNT]", prim_cost_string);
}
// disable the object and prim counts if nothing selected
bool have_selection = ! LLSelectMgr::getInstance()->getSelection()->isEmpty();
- getChildView("obj_count")->setEnabled(have_selection);
- getChildView("prim_count")->setEnabled(have_selection);
- getChildView("RenderingCost")->setEnabled(have_selection && sShowObjectCost);
+ childSetEnabled("obj_count", have_selection);
+ childSetEnabled("prim_count", have_selection);
+ childSetEnabled("RenderingCost", have_selection && sShowObjectCost);
// Refresh child tabs
mPanelPermissions->refresh();
@@ -501,8 +501,8 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask)
mBtnFocus ->setToggleState( focus_visible );
mRadioGroupFocus->setVisible( focus_visible );
- getChildView("slider zoom")->setVisible( focus_visible);
- getChildView("slider zoom")->setEnabled(gCameraBtnZoom);
+ childSetVisible("slider zoom", focus_visible);
+ childSetEnabled("slider zoom", gCameraBtnZoom);
if (!gCameraBtnOrbit &&
!gCameraBtnPan &&
@@ -527,7 +527,7 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask)
}
// multiply by correction factor because volume sliders go [0, 0.5]
- getChild<LLUICtrl>("slider zoom")->setValue(gAgentCamera.getCameraZoomFraction() * 0.5f);
+ childSetValue( "slider zoom", gAgentCamera.getCameraZoomFraction() * 0.5f);
// Move buttons
BOOL move_visible = (tool == LLToolGrab::getInstance());
@@ -565,7 +565,7 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask)
mBtnEdit ->setToggleState( edit_visible );
mRadioGroupEdit->setVisible( edit_visible );
bool linked_parts = gSavedSettings.getBOOL("EditLinkedParts");
- getChildView("RenderingCost")->setVisible( !linked_parts && (edit_visible || focus_visible || move_visible) && sShowObjectCost);
+ childSetVisible("RenderingCost", !linked_parts && (edit_visible || focus_visible || move_visible) && sShowObjectCost);
if (mCheckSelectIndividual)
{
@@ -708,17 +708,17 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask)
if (mSliderDozerSize)
{
mSliderDozerSize ->setVisible( land_visible );
- getChildView("Bulldozer:")->setVisible( land_visible);
- getChildView("Dozer Size:")->setVisible( land_visible);
+ childSetVisible("Bulldozer:", land_visible);
+ childSetVisible("Dozer Size:", land_visible);
}
if (mSliderDozerForce)
{
mSliderDozerForce ->setVisible( land_visible );
- getChildView("Strength:")->setVisible( land_visible);
+ childSetVisible("Strength:", land_visible);
}
- getChildView("obj_count")->setVisible( !land_visible);
- getChildView("prim_count")->setVisible( !land_visible);
+ childSetVisible("obj_count", !land_visible);
+ childSetVisible("prim_count", !land_visible);
mTab->setVisible(!land_visible);
mPanelLandInfo->setVisible(land_visible);
}
@@ -1085,7 +1085,7 @@ void LLFloaterTools::getMediaState()
&&first_object->permModify()
))
{
- getChildView("Add_Media")->setEnabled(FALSE);
+ childSetEnabled("Add_Media", FALSE);
media_info->clear();
clearMediaSettings();
return;
@@ -1096,7 +1096,7 @@ void LLFloaterTools::getMediaState()
if(!has_media_capability)
{
- getChildView("Add_Media")->setEnabled(FALSE);
+ childSetEnabled("Add_Media", FALSE);
LL_WARNS("LLFloaterTools: media") << "Media not enabled (no capability) in this region!" << LL_ENDL;
clearMediaSettings();
return;
@@ -1188,7 +1188,7 @@ void LLFloaterTools::getMediaState()
// update UI depending on whether "object" (prim or face) has media
// and whether or not you are allowed to edit it.
- getChildView("Add_Media")->setEnabled(editable);
+ childSetEnabled("Add_Media", editable);
// IF all the faces have media (or all dont have media)
if ( LLFloaterMediaSettings::getInstance()->mIdenticalHasMediaInfo )
{
@@ -1215,10 +1215,10 @@ void LLFloaterTools::getMediaState()
mNeedMediaTitle = false;
}
- getChildView("media_tex")->setEnabled(bool_has_media && editable);
- getChildView("edit_media")->setEnabled(bool_has_media && LLFloaterMediaSettings::getInstance()->mIdenticalHasMediaInfo && editable );
- getChildView("delete_media")->setEnabled(bool_has_media && editable );
- getChildView("add_media")->setEnabled(( ! bool_has_media ) && editable );
+ childSetEnabled("media_tex", bool_has_media && editable);
+ childSetEnabled( "edit_media", bool_has_media && LLFloaterMediaSettings::getInstance()->mIdenticalHasMediaInfo && editable );
+ childSetEnabled( "delete_media", bool_has_media && editable );
+ childSetEnabled( "add_media", ( ! bool_has_media ) && editable );
// TODO: display a list of all media on the face - use 'identical' flag
}
else // not all face has media but at least one does.
@@ -1245,10 +1245,10 @@ void LLFloaterTools::getMediaState()
}
}
- getChildView("media_tex")->setEnabled(TRUE);
- getChildView("edit_media")->setEnabled(LLFloaterMediaSettings::getInstance()->mIdenticalHasMediaInfo);
- getChildView("delete_media")->setEnabled(TRUE);
- getChildView("add_media")->setEnabled(FALSE );
+ childSetEnabled("media_tex", TRUE);
+ childSetEnabled( "edit_media", LLFloaterMediaSettings::getInstance()->mIdenticalHasMediaInfo);
+ childSetEnabled( "delete_media", TRUE);
+ childSetEnabled( "add_media", FALSE );
}
media_info->setText(media_title);
diff --git a/indra/newview/llfloatertopobjects.cpp b/indra/newview/llfloatertopobjects.cpp
index a984dd1d51..41869ac62b 100644
--- a/indra/newview/llfloatertopobjects.cpp
+++ b/indra/newview/llfloatertopobjects.cpp
@@ -92,7 +92,7 @@ LLFloaterTopObjects::~LLFloaterTopObjects()
BOOL LLFloaterTopObjects::postBuild()
{
LLScrollListCtrl *objects_list = getChild<LLScrollListCtrl>("objects_list");
- getChild<LLUICtrl>("objects_list")->setFocus(TRUE);
+ childSetFocus("objects_list");
objects_list->setDoubleClickCallback(onDoubleClickObjectsList, this);
objects_list->setCommitOnSelectionChange(TRUE);
@@ -247,7 +247,7 @@ void LLFloaterTopObjects::handleReply(LLMessageSystem *msg, void** data)
LLUIString format = getString("top_scripts_text");
format.setArg("[COUNT]", llformat("%d", total_count));
format.setArg("[TIME]", llformat("%0.1f", mtotalScore));
- getChild<LLUICtrl>("title_text")->setValue(LLSD(format));
+ childSetValue("title_text", LLSD(format));
}
else
{
@@ -256,7 +256,7 @@ void LLFloaterTopObjects::handleReply(LLMessageSystem *msg, void** data)
list->setColumnLabel("mono_time", "");
LLUIString format = getString("top_colliders_text");
format.setArg("[COUNT]", llformat("%d", total_count));
- getChild<LLUICtrl>("title_text")->setValue(LLSD(format));
+ childSetValue("title_text", LLSD(format));
}
}
@@ -276,13 +276,13 @@ void LLFloaterTopObjects::updateSelectionInfo()
std::string object_id_string = object_id.asString();
- getChild<LLUICtrl>("id_editor")->setValue(LLSD(object_id_string));
+ childSetValue("id_editor", LLSD(object_id_string));
LLScrollListItem* sli = list->getFirstSelected();
llassert(sli);
if (sli)
{
- getChild<LLUICtrl>("object_name_editor")->setValue(sli->getColumn(1)->getValue().asString());
- getChild<LLUICtrl>("owner_name_editor")->setValue(sli->getColumn(2)->getValue().asString());
+ childSetValue("object_name_editor", sli->getColumn(1)->getValue().asString());
+ childSetValue("owner_name_editor", sli->getColumn(2)->getValue().asString());
}
}
@@ -306,7 +306,7 @@ void LLFloaterTopObjects::doToObjects(int action, bool all)
LLViewerRegion* region = gAgent.getRegion();
if (!region) return;
- LLCtrlListInterface *list = getChild<LLUICtrl>("objects_list")->getListInterface();
+ LLCtrlListInterface *list = childGetListInterface("objects_list");
if (!list || list->getItemCount() == 0) return;
uuid_vec_t::iterator id_itor;
@@ -451,14 +451,14 @@ void LLFloaterTopObjects::onRefresh()
void LLFloaterTopObjects::onGetByObjectName()
{
mFlags = STAT_FILTER_BY_OBJECT;
- mFilter = getChild<LLUICtrl>("object_name_editor")->getValue().asString();
+ mFilter = childGetText("object_name_editor");
onRefresh();
}
void LLFloaterTopObjects::onGetByOwnerName()
{
mFlags = STAT_FILTER_BY_OWNER;
- mFilter = getChild<LLUICtrl>("owner_name_editor")->getValue().asString();
+ mFilter = childGetText("owner_name_editor");
onRefresh();
}
diff --git a/indra/newview/llfloatertos.cpp b/indra/newview/llfloatertos.cpp
index c5df7e16e9..6e64291240 100644
--- a/indra/newview/llfloatertos.cpp
+++ b/indra/newview/llfloatertos.cpp
@@ -193,8 +193,8 @@ void LLFloaterTOS::draw()
void LLFloaterTOS::updateAgree(LLUICtrl*, void* userdata )
{
LLFloaterTOS* self = (LLFloaterTOS*) userdata;
- bool agree = self->getChild<LLUICtrl>("agree_chk")->getValue().asBoolean();
- self->getChildView("Continue")->setEnabled(agree);
+ bool agree = self->childGetValue("agree_chk").asBoolean();
+ self->childSetEnabled("Continue", agree);
}
// static
diff --git a/indra/newview/llfloateruipreview.cpp b/indra/newview/llfloateruipreview.cpp
index 333e44e077..fadb250c48 100644
--- a/indra/newview/llfloateruipreview.cpp
+++ b/indra/newview/llfloateruipreview.cpp
@@ -469,7 +469,7 @@ BOOL LLFloaterUIPreview::postBuild()
// Set up overlap panel
mOverlapPanel = getChild<LLOverlapPanel>("overlap_panel");
- getChildView("overlap_scroll")->setVisible( mHighlightingOverlaps);
+ childSetVisible("overlap_scroll", mHighlightingOverlaps);
mDelim = gDirUtilp->getDirDelimiter(); // initialize delimiter to dir sep slash
@@ -1693,7 +1693,7 @@ void LLFloaterUIPreview::onClickToggleOverlapping()
setRect(LLRect(getRect().mLeft,getRect().mTop,getRect().mRight + mOverlapPanel->getRect().getWidth(),getRect().mBottom));
setResizeLimits(width + mOverlapPanel->getRect().getWidth(), height);
}
- getChildView("overlap_scroll")->setVisible( mHighlightingOverlaps);
+ childSetVisible("overlap_scroll", mHighlightingOverlaps);
}
void LLFloaterUIPreview::findOverlapsInChildren(LLView* parent)
diff --git a/indra/newview/llfloaterurldisplay.cpp b/indra/newview/llfloaterurldisplay.cpp
new file mode 100644
index 0000000000..fffc4fd20a
--- /dev/null
+++ b/indra/newview/llfloaterurldisplay.cpp
@@ -0,0 +1,103 @@
+/**
+ * @file llfloaterurldisplay.h
+ * @brief Probably should be called LLFloaterTeleport, or LLFloaterLandmark
+ * as it gives you a preview of a potential teleport location.
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llregionhandle.h"
+#include "v3dmath.h"
+
+#include "llfloaterurldisplay.h"
+
+#include "llpanelplace.h"
+#include "lluictrlfactory.h"
+
+////////////////////////////////////////////////////////////////////////////
+// LLFloaterURLDisplay
+
+
+LLFloaterURLDisplay::LLFloaterURLDisplay(const LLSD& sd)
+ : LLFloater(sd)
+{
+ mFactoryMap["place_details_panel"] = LLCallbackMap(LLFloaterURLDisplay::createPlaceDetail, this);
+// LLUICtrlFactory::getInstance()->buildFloater(this, "floater_preview_url.xml");
+
+ // If positioned at 0,0 the teleport button is behind the toolbar.
+ LLRect r = getRect();
+ if (r.mBottom == 0 && r.mLeft == 0)
+ {
+ // first use, center it
+ center();
+ }
+ else
+ {
+ gFloaterView->adjustToFitScreen(this, FALSE);
+ }
+}
+
+LLFloaterURLDisplay::~LLFloaterURLDisplay()
+{
+}
+
+void LLFloaterURLDisplay::displayParcelInfo(U64 region_handle, const LLVector3& pos_local)
+{
+ mRegionHandle = region_handle;
+ mRegionPosition = pos_local;
+ LLVector3d pos_global = from_region_handle(region_handle);
+ pos_global += (LLVector3d)pos_local;
+
+ LLUUID region_id; // don't know this
+ LLUUID landmark_asset_id; // don't know this either
+ mPlacePanel->displayParcelInfo(pos_local, landmark_asset_id, region_id, pos_global);
+
+ this->setVisible(true);
+ this->setFrontmost(true);
+}
+
+void LLFloaterURLDisplay::setSnapshotDisplay(const LLUUID& snapshot_id)
+{
+ mPlacePanel->setSnapshot(snapshot_id);
+}
+
+void LLFloaterURLDisplay::setName(const std::string& name)
+{ // Set the name and also clear description
+ mPlacePanel->resetName(name);
+}
+
+void LLFloaterURLDisplay::setLocationString(const std::string& name)
+{
+ mPlacePanel->setLocationString(name);
+}
+
+// static
+void* LLFloaterURLDisplay::createPlaceDetail(void* userdata)
+{
+ LLFloaterURLDisplay *self = (LLFloaterURLDisplay*)userdata;
+ self->mPlacePanel = new LLPanelPlace();
+ LLUICtrlFactory::getInstance()->buildPanel(self->mPlacePanel, "panel_place.xml");
+
+ return self->mPlacePanel;
+}
diff --git a/indra/newview/llfloaterurldisplay.h b/indra/newview/llfloaterurldisplay.h
new file mode 100644
index 0000000000..1bea4c4aa8
--- /dev/null
+++ b/indra/newview/llfloaterurldisplay.h
@@ -0,0 +1,58 @@
+/**
+ * @file llfloaterurldisplay.h
+ * @brief LLFloaterURLDisplay class implementation
+ *
+ * $LicenseInfo:firstyear=2006&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLFLOATERURLDISPLAY_H
+#define LL_LLFLOATERURLDISPLAY_H
+
+#include "llfloater.h"
+#include "v3math.h"
+
+class LLPanelPlace;
+class LLSD;
+class LLUUID;
+
+class LLFloaterURLDisplay : public LLFloater
+{
+ friend class LLFloaterReg;
+public:
+
+ void displayParcelInfo(U64 region_handle, const LLVector3& pos);
+ void setSnapshotDisplay(const LLUUID& snapshot_id);
+ void setName(const std::string& name);
+ void setLocationString(const std::string& name);
+
+ static void* createPlaceDetail(void* userdata);
+
+private:
+ LLFloaterURLDisplay(const LLSD& sd);
+ virtual ~LLFloaterURLDisplay();
+
+ LLVector3 mRegionPosition;
+ U64 mRegionHandle;
+ LLPanelPlace* mPlacePanel;
+};
+
+#endif // LL_LLFLOATERURLDISPLAY_H
diff --git a/indra/newview/llfloaterurlentry.cpp b/indra/newview/llfloaterurlentry.cpp
index 40f6d07286..3c906501c7 100644
--- a/indra/newview/llfloaterurlentry.cpp
+++ b/indra/newview/llfloaterurlentry.cpp
@@ -105,7 +105,7 @@ BOOL LLFloaterURLEntry::postBuild()
// clear media list button
LLSD parcel_history = LLURLHistory::getURLHistory("parcel");
bool enable_clear_button = parcel_history.size() > 0 ? true : false;
- getChildView("clear_btn")->setEnabled(enable_clear_button );
+ childSetEnabled( "clear_btn", enable_clear_button );
// OK button
childSetAction("ok_btn", onBtnOK, this);
@@ -157,7 +157,7 @@ void LLFloaterURLEntry::headerFetchComplete(U32 status, const std::string& mime_
}
// Decrement the cursor
getWindow()->decBusyCount();
- getChildView("loading_label")->setVisible( false);
+ childSetVisible("loading_label", false);
closeFloater();
}
@@ -230,13 +230,13 @@ void LLFloaterURLEntry::onBtnOK( void* userdata )
}
// Grey the buttons until we get the header response
- self->getChildView("ok_btn")->setEnabled(false);
- self->getChildView("cancel_btn")->setEnabled(false);
- self->getChildView("media_entry")->setEnabled(false);
+ self->childSetEnabled("ok_btn", false);
+ self->childSetEnabled("cancel_btn", false);
+ self->childSetEnabled("media_entry", false);
// show progress bar here?
getWindow()->incBusyCount();
- self->getChildView("loading_label")->setVisible( true);
+ self->childSetVisible("loading_label", true);
}
// static
@@ -278,7 +278,7 @@ bool LLFloaterURLEntry::callback_clear_url_list(const LLSD& notification, const
LLURLHistory::clear("parcel");
// cleared the list so disable Clear button
- getChildView("clear_btn")->setEnabled(false );
+ childSetEnabled( "clear_btn", false );
}
return false;
}
diff --git a/indra/newview/llfloatervoicedevicesettings.cpp b/indra/newview/llfloatervoicedevicesettings.cpp
index 34277001ee..81a65f5469 100644
--- a/indra/newview/llfloatervoicedevicesettings.cpp
+++ b/indra/newview/llfloatervoicedevicesettings.cpp
@@ -97,7 +97,7 @@ void LLPanelVoiceDeviceSettings::draw()
// let user know that volume indicator is not yet available
bool is_in_tuning_mode = LLVoiceClient::getInstance()->inTuningMode();
- getChildView("wait_text")->setVisible( !is_in_tuning_mode);
+ childSetVisible("wait_text", !is_in_tuning_mode);
LLPanel::draw();
diff --git a/indra/newview/llfloatervoiceeffect.cpp b/indra/newview/llfloatervoiceeffect.cpp
index 2a3950f9b1..24d1707f64 100644
--- a/indra/newview/llfloatervoiceeffect.cpp
+++ b/indra/newview/llfloatervoiceeffect.cpp
@@ -60,7 +60,7 @@ BOOL LLFloaterVoiceEffect::postBuild()
{
setDefaultBtn("record_btn");
getChild<LLButton>("record_btn")->setFocus(true);
- getChild<LLUICtrl>("voice_morphing_link")->setTextArg("[URL]", LLTrans::getString("voice_morphing_url"));
+ childSetTextArg("voice_morphing_link", "[URL]", LLTrans::getString("voice_morphing_url"));
mVoiceEffectList = getChild<LLScrollListCtrl>("voice_effect_list");
if (mVoiceEffectList)
diff --git a/indra/newview/llfloaterwater.cpp b/indra/newview/llfloaterwater.cpp
index 9c3f943013..ebcd9d40f2 100644
--- a/indra/newview/llfloaterwater.cpp
+++ b/indra/newview/llfloaterwater.cpp
@@ -204,7 +204,7 @@ void LLFloaterWater::syncMenu()
param_mgr->mFogColor = current_params.getVector4(param_mgr->mFogColor.mName, err);
LLColor4 col = param_mgr->getFogColor();
- getChild<LLUICtrl>("WaterGlow")->setValue(col.mV[3]);
+ childSetValue("WaterGlow", col.mV[3]);
col.mV[3] = 1.0f;
LLColorSwatchCtrl* colCtrl = getChild<LLColorSwatchCtrl>("WaterFogColor");
@@ -215,41 +215,41 @@ void LLFloaterWater::syncMenu()
log(current_params.getFloat(param_mgr->mFogDensity.mName, err)) /
log(param_mgr->mFogDensity.mBase);
param_mgr->setDensitySliderValue(param_mgr->mFogDensity.mExp);
- getChild<LLUICtrl>("WaterFogDensity")->setValue(param_mgr->mFogDensity.mExp);
+ childSetValue("WaterFogDensity", param_mgr->mFogDensity.mExp);
param_mgr->mUnderWaterFogMod.mX =
current_params.getFloat(param_mgr->mUnderWaterFogMod.mName, err);
- getChild<LLUICtrl>("WaterUnderWaterFogMod")->setValue(param_mgr->mUnderWaterFogMod.mX);
+ childSetValue("WaterUnderWaterFogMod", param_mgr->mUnderWaterFogMod.mX);
param_mgr->mNormalScale = current_params.getVector3(param_mgr->mNormalScale.mName, err);
- getChild<LLUICtrl>("WaterNormalScaleX")->setValue(param_mgr->mNormalScale.mX);
- getChild<LLUICtrl>("WaterNormalScaleY")->setValue(param_mgr->mNormalScale.mY);
- getChild<LLUICtrl>("WaterNormalScaleZ")->setValue(param_mgr->mNormalScale.mZ);
+ childSetValue("WaterNormalScaleX", param_mgr->mNormalScale.mX);
+ childSetValue("WaterNormalScaleY", param_mgr->mNormalScale.mY);
+ childSetValue("WaterNormalScaleZ", param_mgr->mNormalScale.mZ);
// Fresnel
param_mgr->mFresnelScale.mX = current_params.getFloat(param_mgr->mFresnelScale.mName, err);
- getChild<LLUICtrl>("WaterFresnelScale")->setValue(param_mgr->mFresnelScale.mX);
+ childSetValue("WaterFresnelScale", param_mgr->mFresnelScale.mX);
param_mgr->mFresnelOffset.mX = current_params.getFloat(param_mgr->mFresnelOffset.mName, err);
- getChild<LLUICtrl>("WaterFresnelOffset")->setValue(param_mgr->mFresnelOffset.mX);
+ childSetValue("WaterFresnelOffset", param_mgr->mFresnelOffset.mX);
// Scale Above/Below
param_mgr->mScaleAbove.mX = current_params.getFloat(param_mgr->mScaleAbove.mName, err);
- getChild<LLUICtrl>("WaterScaleAbove")->setValue(param_mgr->mScaleAbove.mX);
+ childSetValue("WaterScaleAbove", param_mgr->mScaleAbove.mX);
param_mgr->mScaleBelow.mX = current_params.getFloat(param_mgr->mScaleBelow.mName, err);
- getChild<LLUICtrl>("WaterScaleBelow")->setValue(param_mgr->mScaleBelow.mX);
+ childSetValue("WaterScaleBelow", param_mgr->mScaleBelow.mX);
// blur mult
param_mgr->mBlurMultiplier.mX = current_params.getFloat(param_mgr->mBlurMultiplier.mName, err);
- getChild<LLUICtrl>("WaterBlurMult")->setValue(param_mgr->mBlurMultiplier.mX);
+ childSetValue("WaterBlurMult", param_mgr->mBlurMultiplier.mX);
// wave directions
param_mgr->mWave1Dir = current_params.getVector2(param_mgr->mWave1Dir.mName, err);
- getChild<LLUICtrl>("WaterWave1DirX")->setValue(param_mgr->mWave1Dir.mX);
- getChild<LLUICtrl>("WaterWave1DirY")->setValue(param_mgr->mWave1Dir.mY);
+ childSetValue("WaterWave1DirX", param_mgr->mWave1Dir.mX);
+ childSetValue("WaterWave1DirY", param_mgr->mWave1Dir.mY);
param_mgr->mWave2Dir = current_params.getVector2(param_mgr->mWave2Dir.mName, err);
- getChild<LLUICtrl>("WaterWave2DirX")->setValue(param_mgr->mWave2Dir.mX);
- getChild<LLUICtrl>("WaterWave2DirY")->setValue(param_mgr->mWave2Dir.mY);
+ childSetValue("WaterWave2DirX", param_mgr->mWave2Dir.mX);
+ childSetValue("WaterWave2DirY", param_mgr->mWave2Dir.mY);
LLTextureCtrl* textCtrl = getChild<LLTextureCtrl>("WaterNormalMap");
textCtrl->setImageAssetID(param_mgr->getNormalMapID());
@@ -333,7 +333,7 @@ void LLFloaterWater::onColorControlRMoved(LLUICtrl* ctrl, WaterColorControl* col
std::string name = colorControl->mSliderName;
name.append("I");
- getChild<LLUICtrl>(name)->setValue(colorControl->mR);
+ childSetValue(name, colorControl->mR);
}
colorControl->update(LLWaterParamManager::instance()->mCurParams);
@@ -356,7 +356,7 @@ void LLFloaterWater::onColorControlGMoved(LLUICtrl* ctrl, WaterColorControl* col
std::string name = colorControl->mSliderName;
name.append("I");
- getChild<LLUICtrl>(name)->setValue(colorControl->mG);
+ childSetValue(name, colorControl->mG);
}
@@ -380,7 +380,7 @@ void LLFloaterWater::onColorControlBMoved(LLUICtrl* ctrl, WaterColorControl* col
std::string name = colorControl->mSliderName;
name.append("I");
- getChild<LLUICtrl>(name)->setValue(colorControl->mB);
+ childSetValue(name, colorControl->mB);
}
colorControl->update(LLWaterParamManager::instance()->mCurParams);
@@ -449,9 +449,9 @@ void LLFloaterWater::onColorControlIMoved(LLUICtrl* ctrl, WaterColorControl* col
}
// set the sliders to the new vals
- getChild<LLUICtrl>(rName)->setValue(colorControl->mR);
- getChild<LLUICtrl>(gName)->setValue(colorControl->mG);
- getChild<LLUICtrl>(bName)->setValue(colorControl->mB);
+ childSetValue(rName, colorControl->mR);
+ childSetValue(gName, colorControl->mG);
+ childSetValue(bName, colorControl->mB);
}
// now update the current parameters and send them to shaders
diff --git a/indra/newview/llfloaterwindlight.cpp b/indra/newview/llfloaterwindlight.cpp
index 7131cb5de3..dae473c6f9 100644
--- a/indra/newview/llfloaterwindlight.cpp
+++ b/indra/newview/llfloaterwindlight.cpp
@@ -272,31 +272,31 @@ void LLFloaterWindLight::syncMenu()
// blue horizon
param_mgr->mBlueHorizon = currentParams.getVector(param_mgr->mBlueHorizon.mName, err);
- getChild<LLUICtrl>("WLBlueHorizonR")->setValue(param_mgr->mBlueHorizon.r / 2.0);
- getChild<LLUICtrl>("WLBlueHorizonG")->setValue(param_mgr->mBlueHorizon.g / 2.0);
- getChild<LLUICtrl>("WLBlueHorizonB")->setValue(param_mgr->mBlueHorizon.b / 2.0);
- getChild<LLUICtrl>("WLBlueHorizonI")->setValue(
+ childSetValue("WLBlueHorizonR", param_mgr->mBlueHorizon.r / 2.0);
+ childSetValue("WLBlueHorizonG", param_mgr->mBlueHorizon.g / 2.0);
+ childSetValue("WLBlueHorizonB", param_mgr->mBlueHorizon.b / 2.0);
+ childSetValue("WLBlueHorizonI",
std::max(param_mgr->mBlueHorizon.r / 2.0,
std::max(param_mgr->mBlueHorizon.g / 2.0,
param_mgr->mBlueHorizon.b / 2.0)));
// haze density, horizon, mult, and altitude
param_mgr->mHazeDensity = currentParams.getVector(param_mgr->mHazeDensity.mName, err);
- getChild<LLUICtrl>("WLHazeDensity")->setValue(param_mgr->mHazeDensity.r);
+ childSetValue("WLHazeDensity", param_mgr->mHazeDensity.r);
param_mgr->mHazeHorizon = currentParams.getVector(param_mgr->mHazeHorizon.mName, err);
- getChild<LLUICtrl>("WLHazeHorizon")->setValue(param_mgr->mHazeHorizon.r);
+ childSetValue("WLHazeHorizon", param_mgr->mHazeHorizon.r);
param_mgr->mDensityMult = currentParams.getVector(param_mgr->mDensityMult.mName, err);
- getChild<LLUICtrl>("WLDensityMult")->setValue(param_mgr->mDensityMult.x *
+ childSetValue("WLDensityMult", param_mgr->mDensityMult.x *
param_mgr->mDensityMult.mult);
param_mgr->mMaxAlt = currentParams.getVector(param_mgr->mMaxAlt.mName, err);
- getChild<LLUICtrl>("WLMaxAltitude")->setValue(param_mgr->mMaxAlt.x);
+ childSetValue("WLMaxAltitude", param_mgr->mMaxAlt.x);
// blue density
param_mgr->mBlueDensity = currentParams.getVector(param_mgr->mBlueDensity.mName, err);
- getChild<LLUICtrl>("WLBlueDensityR")->setValue(param_mgr->mBlueDensity.r / 2.0);
- getChild<LLUICtrl>("WLBlueDensityG")->setValue(param_mgr->mBlueDensity.g / 2.0);
- getChild<LLUICtrl>("WLBlueDensityB")->setValue(param_mgr->mBlueDensity.b / 2.0);
- getChild<LLUICtrl>("WLBlueDensityI")->setValue(
+ childSetValue("WLBlueDensityR", param_mgr->mBlueDensity.r / 2.0);
+ childSetValue("WLBlueDensityG", param_mgr->mBlueDensity.g / 2.0);
+ childSetValue("WLBlueDensityB", param_mgr->mBlueDensity.b / 2.0);
+ childSetValue("WLBlueDensityI",
std::max(param_mgr->mBlueDensity.r / 2.0,
std::max(param_mgr->mBlueDensity.g / 2.0, param_mgr->mBlueDensity.b / 2.0)));
@@ -304,93 +304,93 @@ void LLFloaterWindLight::syncMenu()
// sunlight
param_mgr->mSunlight = currentParams.getVector(param_mgr->mSunlight.mName, err);
- getChild<LLUICtrl>("WLSunlightR")->setValue(param_mgr->mSunlight.r / WL_SUN_AMBIENT_SLIDER_SCALE);
- getChild<LLUICtrl>("WLSunlightG")->setValue(param_mgr->mSunlight.g / WL_SUN_AMBIENT_SLIDER_SCALE);
- getChild<LLUICtrl>("WLSunlightB")->setValue(param_mgr->mSunlight.b / WL_SUN_AMBIENT_SLIDER_SCALE);
- getChild<LLUICtrl>("WLSunlightI")->setValue(
+ childSetValue("WLSunlightR", param_mgr->mSunlight.r / WL_SUN_AMBIENT_SLIDER_SCALE);
+ childSetValue("WLSunlightG", param_mgr->mSunlight.g / WL_SUN_AMBIENT_SLIDER_SCALE);
+ childSetValue("WLSunlightB", param_mgr->mSunlight.b / WL_SUN_AMBIENT_SLIDER_SCALE);
+ childSetValue("WLSunlightI",
std::max(param_mgr->mSunlight.r / WL_SUN_AMBIENT_SLIDER_SCALE,
std::max(param_mgr->mSunlight.g / WL_SUN_AMBIENT_SLIDER_SCALE, param_mgr->mSunlight.b / WL_SUN_AMBIENT_SLIDER_SCALE)));
// glow
param_mgr->mGlow = currentParams.getVector(param_mgr->mGlow.mName, err);
- getChild<LLUICtrl>("WLGlowR")->setValue(2 - param_mgr->mGlow.r / 20.0f);
- getChild<LLUICtrl>("WLGlowB")->setValue(-param_mgr->mGlow.b / 5.0f);
+ childSetValue("WLGlowR", 2 - param_mgr->mGlow.r / 20.0f);
+ childSetValue("WLGlowB", -param_mgr->mGlow.b / 5.0f);
// ambient
param_mgr->mAmbient = currentParams.getVector(param_mgr->mAmbient.mName, err);
- getChild<LLUICtrl>("WLAmbientR")->setValue(param_mgr->mAmbient.r / WL_SUN_AMBIENT_SLIDER_SCALE);
- getChild<LLUICtrl>("WLAmbientG")->setValue(param_mgr->mAmbient.g / WL_SUN_AMBIENT_SLIDER_SCALE);
- getChild<LLUICtrl>("WLAmbientB")->setValue(param_mgr->mAmbient.b / WL_SUN_AMBIENT_SLIDER_SCALE);
- getChild<LLUICtrl>("WLAmbientI")->setValue(
+ childSetValue("WLAmbientR", param_mgr->mAmbient.r / WL_SUN_AMBIENT_SLIDER_SCALE);
+ childSetValue("WLAmbientG", param_mgr->mAmbient.g / WL_SUN_AMBIENT_SLIDER_SCALE);
+ childSetValue("WLAmbientB", param_mgr->mAmbient.b / WL_SUN_AMBIENT_SLIDER_SCALE);
+ childSetValue("WLAmbientI",
std::max(param_mgr->mAmbient.r / WL_SUN_AMBIENT_SLIDER_SCALE,
std::max(param_mgr->mAmbient.g / WL_SUN_AMBIENT_SLIDER_SCALE, param_mgr->mAmbient.b / WL_SUN_AMBIENT_SLIDER_SCALE)));
- getChild<LLUICtrl>("WLSunAngle")->setValue(param_mgr->mCurParams.getFloat("sun_angle",err) / F_TWO_PI);
- getChild<LLUICtrl>("WLEastAngle")->setValue(param_mgr->mCurParams.getFloat("east_angle",err) / F_TWO_PI);
+ childSetValue("WLSunAngle", param_mgr->mCurParams.getFloat("sun_angle",err) / F_TWO_PI);
+ childSetValue("WLEastAngle", param_mgr->mCurParams.getFloat("east_angle",err) / F_TWO_PI);
// Clouds
// Cloud Color
param_mgr->mCloudColor = currentParams.getVector(param_mgr->mCloudColor.mName, err);
- getChild<LLUICtrl>("WLCloudColorR")->setValue(param_mgr->mCloudColor.r);
- getChild<LLUICtrl>("WLCloudColorG")->setValue(param_mgr->mCloudColor.g);
- getChild<LLUICtrl>("WLCloudColorB")->setValue(param_mgr->mCloudColor.b);
- getChild<LLUICtrl>("WLCloudColorI")->setValue(
+ childSetValue("WLCloudColorR", param_mgr->mCloudColor.r);
+ childSetValue("WLCloudColorG", param_mgr->mCloudColor.g);
+ childSetValue("WLCloudColorB", param_mgr->mCloudColor.b);
+ childSetValue("WLCloudColorI",
std::max(param_mgr->mCloudColor.r,
std::max(param_mgr->mCloudColor.g, param_mgr->mCloudColor.b)));
// Cloud
param_mgr->mCloudMain = currentParams.getVector(param_mgr->mCloudMain.mName, err);
- getChild<LLUICtrl>("WLCloudX")->setValue(param_mgr->mCloudMain.r);
- getChild<LLUICtrl>("WLCloudY")->setValue(param_mgr->mCloudMain.g);
- getChild<LLUICtrl>("WLCloudDensity")->setValue(param_mgr->mCloudMain.b);
+ childSetValue("WLCloudX", param_mgr->mCloudMain.r);
+ childSetValue("WLCloudY", param_mgr->mCloudMain.g);
+ childSetValue("WLCloudDensity", param_mgr->mCloudMain.b);
// Cloud Detail
param_mgr->mCloudDetail = currentParams.getVector(param_mgr->mCloudDetail.mName, err);
- getChild<LLUICtrl>("WLCloudDetailX")->setValue(param_mgr->mCloudDetail.r);
- getChild<LLUICtrl>("WLCloudDetailY")->setValue(param_mgr->mCloudDetail.g);
- getChild<LLUICtrl>("WLCloudDetailDensity")->setValue(param_mgr->mCloudDetail.b);
+ childSetValue("WLCloudDetailX", param_mgr->mCloudDetail.r);
+ childSetValue("WLCloudDetailY", param_mgr->mCloudDetail.g);
+ childSetValue("WLCloudDetailDensity", param_mgr->mCloudDetail.b);
// Cloud extras
param_mgr->mCloudCoverage = currentParams.getVector(param_mgr->mCloudCoverage.mName, err);
param_mgr->mCloudScale = currentParams.getVector(param_mgr->mCloudScale.mName, err);
- getChild<LLUICtrl>("WLCloudCoverage")->setValue(param_mgr->mCloudCoverage.x);
- getChild<LLUICtrl>("WLCloudScale")->setValue(param_mgr->mCloudScale.x);
+ childSetValue("WLCloudCoverage", param_mgr->mCloudCoverage.x);
+ childSetValue("WLCloudScale", param_mgr->mCloudScale.x);
// cloud scrolling
bool lockX = !param_mgr->mCurParams.getEnableCloudScrollX();
bool lockY = !param_mgr->mCurParams.getEnableCloudScrollY();
- getChild<LLUICtrl>("WLCloudLockX")->setValue(lockX);
- getChild<LLUICtrl>("WLCloudLockY")->setValue(lockY);
- getChild<LLUICtrl>("DrawClassicClouds")->setValue(gSavedSettings.getBOOL("SkyUseClassicClouds"));
+ childSetValue("WLCloudLockX", lockX);
+ childSetValue("WLCloudLockY", lockY);
+ childSetValue("DrawClassicClouds", gSavedSettings.getBOOL("SkyUseClassicClouds"));
// disable if locked, enable if not
if(lockX)
{
- getChildView("WLCloudScrollX")->setEnabled(FALSE);
+ childDisable("WLCloudScrollX");
} else {
- getChildView("WLCloudScrollX")->setEnabled(TRUE);
+ childEnable("WLCloudScrollX");
}
if(lockY)
{
- getChildView("WLCloudScrollY")->setEnabled(FALSE);
+ childDisable("WLCloudScrollY");
} else {
- getChildView("WLCloudScrollY")->setEnabled(TRUE);
+ childEnable("WLCloudScrollY");
}
// *HACK cloud scrolling is off my an additive of 10
- getChild<LLUICtrl>("WLCloudScrollX")->setValue(param_mgr->mCurParams.getCloudScrollX() - 10.0f);
- getChild<LLUICtrl>("WLCloudScrollY")->setValue(param_mgr->mCurParams.getCloudScrollY() - 10.0f);
+ childSetValue("WLCloudScrollX", param_mgr->mCurParams.getCloudScrollX() - 10.0f);
+ childSetValue("WLCloudScrollY", param_mgr->mCurParams.getCloudScrollY() - 10.0f);
param_mgr->mDistanceMult = currentParams.getVector(param_mgr->mDistanceMult.mName, err);
- getChild<LLUICtrl>("WLDistanceMult")->setValue(param_mgr->mDistanceMult.x);
+ childSetValue("WLDistanceMult", param_mgr->mDistanceMult.x);
// Tweak extras
param_mgr->mWLGamma = currentParams.getVector(param_mgr->mWLGamma.mName, err);
- getChild<LLUICtrl>("WLGamma")->setValue(param_mgr->mWLGamma.x);
+ childSetValue("WLGamma", param_mgr->mWLGamma.x);
- getChild<LLUICtrl>("WLStarAlpha")->setValue(param_mgr->mCurParams.getStarBrightness());
+ childSetValue("WLStarAlpha", param_mgr->mCurParams.getStarBrightness());
LLTabContainer* tab = getChild<LLTabContainer>("WindLight Tabs");
LLPanel* panel = getChild<LLPanel>("Scattering");
@@ -422,11 +422,11 @@ void LLFloaterWindLight::onColorControlRMoved(LLUICtrl* ctrl, WLColorControl* co
name.append("I");
if(colorControl->isSunOrAmbientColor) {
- getChild<LLUICtrl>(name)->setValue(colorControl->r / 3);
+ childSetValue(name, colorControl->r / 3);
} else if(colorControl->isBlueHorizonOrDensity) {
- getChild<LLUICtrl>(name)->setValue(colorControl->r / 2);
+ childSetValue(name, colorControl->r / 2);
} else {
- getChild<LLUICtrl>(name)->setValue(colorControl->r);
+ childSetValue(name, colorControl->r);
}
}
@@ -457,11 +457,11 @@ void LLFloaterWindLight::onColorControlGMoved(LLUICtrl* ctrl, WLColorControl* co
name.append("I");
if(colorControl->isSunOrAmbientColor) {
- getChild<LLUICtrl>(name)->setValue(colorControl->g / 3);
+ childSetValue(name, colorControl->g / 3);
} else if(colorControl->isBlueHorizonOrDensity) {
- getChild<LLUICtrl>(name)->setValue(colorControl->g / 2);
+ childSetValue(name, colorControl->g / 2);
} else {
- getChild<LLUICtrl>(name)->setValue(colorControl->g);
+ childSetValue(name, colorControl->g);
}
}
@@ -492,11 +492,11 @@ void LLFloaterWindLight::onColorControlBMoved(LLUICtrl* ctrl, WLColorControl* co
name.append("I");
if(colorControl->isSunOrAmbientColor) {
- getChild<LLUICtrl>(name)->setValue(colorControl->b / 3);
+ childSetValue(name, colorControl->b / 3);
} else if(colorControl->isBlueHorizonOrDensity) {
- getChild<LLUICtrl>(name)->setValue(colorControl->b / 2);
+ childSetValue(name, colorControl->b / 2);
} else {
- getChild<LLUICtrl>(name)->setValue(colorControl->b);
+ childSetValue(name, colorControl->b);
}
}
@@ -566,24 +566,24 @@ void LLFloaterWindLight::onColorControlIMoved(LLUICtrl* ctrl, WLColorControl* co
// divide sun color vals by three
if(colorControl->isSunOrAmbientColor)
{
- getChild<LLUICtrl>(rName)->setValue(colorControl->r/3);
- getChild<LLUICtrl>(gName)->setValue(colorControl->g/3);
- getChild<LLUICtrl>(bName)->setValue(colorControl->b/3);
+ childSetValue(rName, colorControl->r/3);
+ childSetValue(gName, colorControl->g/3);
+ childSetValue(bName, colorControl->b/3);
}
else if(colorControl->isBlueHorizonOrDensity)
{
- getChild<LLUICtrl>(rName)->setValue(colorControl->r/2);
- getChild<LLUICtrl>(gName)->setValue(colorControl->g/2);
- getChild<LLUICtrl>(bName)->setValue(colorControl->b/2);
+ childSetValue(rName, colorControl->r/2);
+ childSetValue(gName, colorControl->g/2);
+ childSetValue(bName, colorControl->b/2);
}
else
{
// set the sliders to the new vals
- getChild<LLUICtrl>(rName)->setValue(colorControl->r);
- getChild<LLUICtrl>(gName)->setValue(colorControl->g);
- getChild<LLUICtrl>(bName)->setValue(colorControl->b);
+ childSetValue(rName, colorControl->r);
+ childSetValue(gName, colorControl->g);
+ childSetValue(bName, colorControl->b);
}
}
diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp
index 3afa31b873..942d246dc2 100644
--- a/indra/newview/llfloaterworldmap.cpp
+++ b/indra/newview/llfloaterworldmap.cpp
@@ -242,7 +242,7 @@ BOOL LLFloaterWorldMap::postBuild()
landmark_combo->setTextEntryCallback( boost::bind(&LLFloaterWorldMap::onComboTextEntry, this) );
mCurZoomVal = log(LLWorldMapView::sMapScale)/log(2.f);
- getChild<LLUICtrl>("zoom slider")->setValue(LLWorldMapView::sMapScale);
+ childSetValue("zoom slider", LLWorldMapView::sMapScale);
setDefaultBtn(NULL);
@@ -315,7 +315,7 @@ void LLFloaterWorldMap::onOpen(const LLSD& key)
const LLUUID landmark_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LANDMARK);
LLInventoryModelBackgroundFetch::instance().start(landmark_folder_id);
- getChild<LLUICtrl>("location")->setFocus( TRUE);
+ childSetFocus("location", TRUE);
gFocusMgr.triggerFocusFlash();
buildAvatarIDList();
@@ -351,9 +351,9 @@ BOOL LLFloaterWorldMap::handleScrollWheel(S32 x, S32 y, S32 clicks)
{
if(mPanel->pointInView(x, y))
{
- F32 slider_value = (F32)getChild<LLUICtrl>("zoom slider")->getValue().asReal();
+ F32 slider_value = (F32)childGetValue("zoom slider").asReal();
slider_value += ((F32)clicks * -0.3333f);
- getChild<LLUICtrl>("zoom slider")->setValue(LLSD(slider_value));
+ childSetValue("zoom slider", LLSD(slider_value));
return TRUE;
}
}
@@ -381,32 +381,32 @@ void LLFloaterWorldMap::draw()
LLViewerRegion* regionp = gAgent.getRegion();
bool agent_on_prelude = (regionp && regionp->isPrelude());
bool enable_go_home = gAgent.isGodlike() || !agent_on_prelude;
- getChildView("Go Home")->setEnabled(enable_go_home);
+ childSetEnabled("Go Home", enable_go_home);
updateLocation();
LLTracker::ETrackingStatus tracking_status = LLTracker::getTrackingStatus();
if (LLTracker::TRACKING_AVATAR == tracking_status)
{
- getChild<LLUICtrl>("avatar_icon")->setColor( map_track_color);
+ childSetColor("avatar_icon", map_track_color);
}
else
{
- getChild<LLUICtrl>("avatar_icon")->setColor( map_track_disabled_color);
+ childSetColor("avatar_icon", map_track_disabled_color);
}
if (LLTracker::TRACKING_LANDMARK == tracking_status)
{
- getChild<LLUICtrl>("landmark_icon")->setColor( map_track_color);
+ childSetColor("landmark_icon", map_track_color);
}
else
{
- getChild<LLUICtrl>("landmark_icon")->setColor( map_track_disabled_color);
+ childSetColor("landmark_icon", map_track_disabled_color);
}
if (LLTracker::TRACKING_LOCATION == tracking_status)
{
- getChild<LLUICtrl>("location_icon")->setColor( map_track_color);
+ childSetColor("location_icon", map_track_color);
}
else
{
@@ -416,11 +416,11 @@ void LLFloaterWorldMap::draw()
double value = fmod(seconds, 2);
value = 0.5 + 0.5*cos(value * F_PI);
LLColor4 loading_color(0.0, F32(value/2), F32(value), 1.0);
- getChild<LLUICtrl>("location_icon")->setColor( loading_color);
+ childSetColor("location_icon", loading_color);
}
else
{
- getChild<LLUICtrl>("location_icon")->setColor( map_track_disabled_color);
+ childSetColor("location_icon", map_track_disabled_color);
}
}
@@ -430,16 +430,16 @@ void LLFloaterWorldMap::draw()
centerOnTarget(TRUE);
}
- getChildView("Teleport")->setEnabled((BOOL)tracking_status);
-// getChildView("Clear")->setEnabled((BOOL)tracking_status);
- getChildView("Show Destination")->setEnabled((BOOL)tracking_status || LLWorldMap::getInstance()->isTracking());
- getChildView("copy_slurl")->setEnabled((mSLURL.isValid()) );
+ childSetEnabled("Teleport", (BOOL)tracking_status);
+// childSetEnabled("Clear", (BOOL)tracking_status);
+ childSetEnabled("Show Destination", (BOOL)tracking_status || LLWorldMap::getInstance()->isTracking());
+ childSetEnabled("copy_slurl", (mSLURL.isValid()) );
setMouseOpaque(TRUE);
getDragHandle()->setMouseOpaque(TRUE);
//RN: snaps to zoom value because interpolation caused jitter in the text rendering
- if (!mZoomTimer.getStarted() && mCurZoomVal != (F32)getChild<LLUICtrl>("zoom slider")->getValue().asReal())
+ if (!mZoomTimer.getStarted() && mCurZoomVal != (F32)childGetValue("zoom slider").asReal())
{
mZoomTimer.start();
}
@@ -449,7 +449,7 @@ void LLFloaterWorldMap::draw()
interp = 1.f;
mZoomTimer.stop();
}
- mCurZoomVal = lerp(mCurZoomVal, (F32)getChild<LLUICtrl>("zoom slider")->getValue().asReal(), interp);
+ mCurZoomVal = lerp(mCurZoomVal, (F32)childGetValue("zoom slider").asReal(), interp);
F32 map_scale = 256.f*pow(2.f, mCurZoomVal);
LLWorldMapView::setScale( map_scale );
@@ -457,13 +457,13 @@ void LLFloaterWorldMap::draw()
// If above threshold level (i.e. low res) -> Disable all checkboxes
// If under threshold level (i.e. high res) -> Enable all checkboxes
bool enable = LLWorldMapView::showRegionInfo();
- getChildView("people_chk")->setEnabled(enable);
- getChildView("infohub_chk")->setEnabled(enable);
- getChildView("telehub_chk")->setEnabled(enable);
- getChildView("land_for_sale_chk")->setEnabled(enable);
- getChildView("event_chk")->setEnabled(enable);
- getChildView("events_mature_chk")->setEnabled(enable);
- getChildView("events_adult_chk")->setEnabled(enable);
+ childSetEnabled("people_chk", enable);
+ childSetEnabled("infohub_chk", enable);
+ childSetEnabled("telehub_chk", enable);
+ childSetEnabled("land_for_sale_chk", enable);
+ childSetEnabled("event_chk", enable);
+ childSetEnabled("events_mature_chk", enable);
+ childSetEnabled("events_adult_chk", enable);
LLFloater::draw();
}
@@ -487,7 +487,7 @@ void LLFloaterWorldMap::trackAvatar( const LLUUID& avatar_id, const std::string&
// convenience.
if(gAgent.isGodlike())
{
- getChild<LLUICtrl>("spin z")->setValue(LLSD(200.f));
+ childSetValue("spin z", LLSD(200.f));
}
// Don't re-request info if we already have it or we won't have it in time to teleport
if (mTrackedStatus != LLTracker::TRACKING_AVATAR || name != mTrackedAvatarName)
@@ -668,7 +668,7 @@ void LLFloaterWorldMap::updateLocation()
mSetToUserPosition = FALSE;
// Fill out the location field
- getChild<LLUICtrl>("location")->setValue(agent_sim_name);
+ childSetValue("location", agent_sim_name);
// update the coordinate display with location of avatar in region
updateTeleportCoordsDisplay( agentPos );
@@ -701,7 +701,7 @@ void LLFloaterWorldMap::updateLocation()
}
}
- getChild<LLUICtrl>("location")->setValue(sim_name);
+ childSetValue("location", sim_name);
// refresh coordinate display to reflect where user clicked.
LLVector3d coord_pos = LLTracker::getTrackedPositionGlobal();
@@ -736,7 +736,7 @@ void LLFloaterWorldMap::trackURL(const std::string& region_name, S32 x_coord, S3
else
{
// fill in UI based on URL
- gFloaterWorldMap->getChild<LLUICtrl>("location")->setValue(region_name);
+ gFloaterWorldMap->childSetValue("location", region_name);
// Save local coords to highlight position after region global
// position is returned.
@@ -1133,7 +1133,7 @@ void LLFloaterWorldMap::onLocationFocusChanged( LLFocusableElement* focus )
void LLFloaterWorldMap::updateSearchEnabled()
{
if (childHasKeyboardFocus("location") &&
- getChild<LLUICtrl>("location")->getValue().asString().length() > 0)
+ childGetValue("location").asString().length() > 0)
{
setDefaultBtn("DoSearch");
}
@@ -1154,14 +1154,14 @@ void LLFloaterWorldMap::onLocationCommit()
mCompletingRegionName = "";
mLastRegionName = "";
- std::string str = getChild<LLUICtrl>("location")->getValue().asString();
+ std::string str = childGetValue("location").asString();
// Trim any leading and trailing spaces in the search target
std::string saved_str = str;
LLStringUtil::trim( str );
if ( str != saved_str )
{ // Set the value in the UI if any spaces were removed
- getChild<LLUICtrl>("location")->setValue(str);
+ childSetValue("location", str);
}
LLStringUtil::toLower(str);
@@ -1301,7 +1301,7 @@ void LLFloaterWorldMap::teleport()
&& av_tracker.haveTrackingInfo() )
{
pos_global = av_tracker.getGlobalPos();
- pos_global.mdV[VZ] = getChild<LLUICtrl>("spin z")->getValue();
+ pos_global.mdV[VZ] = childGetValue("spin z");
}
else if ( LLTracker::TRACKING_LANDMARK == tracking_status)
{
@@ -1470,7 +1470,7 @@ void LLFloaterWorldMap::updateSims(bool found_null_sim)
if (!match.isUndefined())
{
list->selectByValue(match);
- getChild<LLUICtrl>("search_results")->setFocus(TRUE);
+ childSetFocus("search_results");
onCommitSearchResult();
}
@@ -1518,7 +1518,7 @@ void LLFloaterWorldMap::onCommitSearchResult()
pos_global.mdV[VY] += (F64)pos_local.mV[VY];
pos_global.mdV[VZ] = (F64)pos_local.mV[VZ];
- getChild<LLUICtrl>("location")->setValue(sim_name);
+ childSetValue("location", sim_name);
trackLocation(pos_global);
setDefaultBtn("Teleport");
break;
@@ -1533,13 +1533,13 @@ void LLFloaterWorldMap::onChangeMaturity()
bool can_access_mature = gAgent.canAccessMature();
bool can_access_adult = gAgent.canAccessAdult();
- getChildView("events_mature_icon")->setVisible( can_access_mature);
- getChildView("events_mature_label")->setVisible( can_access_mature);
- getChildView("events_mature_chk")->setVisible( can_access_mature);
+ childSetVisible("events_mature_icon", can_access_mature);
+ childSetVisible("events_mature_label", can_access_mature);
+ childSetVisible("events_mature_chk", can_access_mature);
- getChildView("events_adult_icon")->setVisible( can_access_adult);
- getChildView("events_adult_label")->setVisible( can_access_adult);
- getChildView("events_adult_chk")->setVisible( can_access_adult);
+ childSetVisible("events_adult_icon", can_access_adult);
+ childSetVisible("events_adult_label", can_access_adult);
+ childSetVisible("events_adult_chk", can_access_adult);
// disable mature / adult events.
if (!can_access_mature)
diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp
index 5d8e3f9ab9..d71e288ffe 100644
--- a/indra/newview/llfolderview.cpp
+++ b/indra/newview/llfolderview.cpp
@@ -56,7 +56,6 @@
#include "llviewerwindow.h"
#include "llvoavatar.h"
#include "llfloaterproperties.h"
-#include "llnotificationsutil.h"
// Linden library includes
#include "lldbstrings.h"
@@ -99,6 +98,7 @@ void copy_selected_item(void* user_data);
void open_selected_items(void* user_data);
void properties_selected_items(void* user_data);
void paste_items(void* user_data);
+void renamer_focus_lost( LLFocusableElement* handler, void* user_data );
//---------------------------------------------------------------------------
@@ -178,6 +178,7 @@ LLFolderView::LLFolderView(const Params& p)
mSourceID(p.task_id),
mRenameItem( NULL ),
mNeedsScroll( FALSE ),
+ mEnableScroll( true ),
mUseLabelSuffix(p.use_label_suffix),
mPinningSelectedItem(FALSE),
mNeedsAutoSelect( FALSE ),
@@ -243,7 +244,7 @@ LLFolderView::LLFolderView(const Params& p)
text_p.name(std::string(p.name));
text_p.font(font);
text_p.visible(false);
- text_p.parse_urls(true);
+ text_p.allow_html(true);
text_p.wrap(true); // allow multiline text. See EXT-7564, EXT-7047
// set text padding the same as in People panel. EXT-7047, EXT-4837
text_p.h_pad(STATUS_TEXT_HPAD);
@@ -268,8 +269,6 @@ LLFolderView::LLFolderView(const Params& p)
// Destroys the object
LLFolderView::~LLFolderView( void )
{
- closeRenamer();
-
// The release focus call can potentially call the
// scrollcontainer, which can potentially be called with a partly
// destroyed scollcontainer. Just null it out here, and no worries
@@ -285,6 +284,8 @@ LLFolderView::~LLFolderView( void )
LLView::deleteViewByHandle(mPopupMenuHandle);
+ gViewerWindow->removePopup(mRenamer);
+
mAutoOpenItems.removeAllNodes();
clearSelection();
mItems.clear();
@@ -991,7 +992,12 @@ void LLFolderView::finishRenamingItem( void )
mRenameItem->rename( mRenamer->getText() );
}
- closeRenamer();
+ gViewerWindow->removePopup(mRenamer);
+
+ if( mRenameItem )
+ {
+ setSelectionFromRoot( mRenameItem, TRUE );
+ }
// List is re-sorted alphabeticly, so scroll to make sure the selected item is visible.
scrollToShowSelection();
@@ -999,26 +1005,20 @@ void LLFolderView::finishRenamingItem( void )
void LLFolderView::closeRenamer( void )
{
- if (mRenamer && mRenamer->getVisible())
+ // will commit current name (which could be same as original name)
+ mRenamer->setFocus( FALSE );
+ mRenamer->setVisible( FALSE );
+ gViewerWindow->removePopup(mRenamer);
+
+ if( mRenameItem )
{
- // Triggers onRenamerLost() that actually closes the renamer.
- gViewerWindow->removePopup(mRenamer);
+ setSelectionFromRoot( mRenameItem, TRUE );
+ mRenameItem = NULL;
}
}
void LLFolderView::removeSelectedItems( void )
{
- if (mSelectedItems.empty()) return;
- LLSD args;
- args["QUESTION"] = LLTrans::getString(mSelectedItems.size() > 1 ? "DeleteItems" : "DeleteItem");
- LLNotificationsUtil::add("DeleteItems", args, LLSD(), boost::bind(&LLFolderView::onItemsRemovalConfirmation, this, _1, _2));
-}
-
-void LLFolderView::onItemsRemovalConfirmation(const LLSD& notification, const LLSD& response)
-{
- S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
- if (option != 0) return; // canceled
-
if(getVisible() && getEnabled())
{
// just in case we're removing the renaming item.
@@ -1438,7 +1438,8 @@ void LLFolderView::startRenamingSelectedItem( void )
mRenamer->setVisible( TRUE );
// set focus will fail unless item is visible
mRenamer->setFocus( TRUE );
- mRenamer->setTopLostCallback(boost::bind(&LLFolderView::onRenamerLost, this));
+ mRenamer->setTopLostCallback(boost::bind(&LLFolderView::onRenamerLost, this, _1));
+ mRenamer->setFocusLostCallback(boost::bind(&LLFolderView::onRenamerLost, this, _1));
gViewerWindow->addPopup(mRenamer);
}
}
@@ -1959,7 +1960,10 @@ BOOL LLFolderView::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
void LLFolderView::deleteAllChildren()
{
- closeRenamer();
+ if(mRenamer == gFocusMgr.getTopCtrl())
+ {
+ gViewerWindow->removePopup(mRenamer);
+ }
LLView::deleteViewByHandle(mPopupMenuHandle);
mPopupMenuHandle = LLHandle<LLView>();
mRenamer = NULL;
@@ -1970,9 +1974,7 @@ void LLFolderView::deleteAllChildren()
void LLFolderView::scrollToShowSelection()
{
- // If items are filtered while background fetch is in progress
- // scrollbar resets to the first filtered item. See EXT-3981.
- if (!LLInventoryModelBackgroundFetch::instance().backgroundFetchActive() && mSelectedItems.size())
+ if (mEnableScroll && mSelectedItems.size())
{
mNeedsScroll = TRUE;
}
@@ -2444,20 +2446,13 @@ S32 LLFolderView::notify(const LLSD& info)
/// Local function definitions
///----------------------------------------------------------------------------
-void LLFolderView::onRenamerLost()
+void LLFolderView::onRenamerLost( LLFocusableElement* renamer)
{
- if (mRenamer && mRenamer->getVisible())
- {
- mRenamer->setVisible(FALSE);
-
- // will commit current name (which could be same as original name)
- mRenamer->setFocus(FALSE);
- }
-
- if( mRenameItem )
+ mRenameItem = NULL;
+ LLUICtrl* uictrl = dynamic_cast<LLUICtrl*>(renamer);
+ if (uictrl)
{
- setSelectionFromRoot( mRenameItem, TRUE );
- mRenameItem = NULL;
+ uictrl->setVisible(FALSE);
}
}
diff --git a/indra/newview/llfolderview.h b/indra/newview/llfolderview.h
index 980f9a34a6..9be83ba852 100644
--- a/indra/newview/llfolderview.h
+++ b/indra/newview/llfolderview.h
@@ -268,6 +268,7 @@ public:
void dumpSelectionInformation();
virtual S32 notify(const LLSD& info) ;
+ void setEnableScroll(bool enable_scroll) { mEnableScroll = enable_scroll; }
bool useLabelSuffix() { return mUseLabelSuffix; }
private:
@@ -277,7 +278,7 @@ protected:
LLScrollContainer* mScrollContainer; // NULL if this is not a child of a scroll container.
void commitRename( const LLSD& data );
- void onRenamerLost();
+ void onRenamerLost( LLFocusableElement* renamer);
void finishRenamingItem( void );
void closeRenamer( void );
@@ -287,8 +288,6 @@ protected:
BOOL addNoOptions(LLMenuGL* menu) const;
- void onItemsRemovalConfirmation(const LLSD& notification, const LLSD& response);
-
protected:
LLHandle<LLView> mPopupMenuHandle;
@@ -304,6 +303,7 @@ protected:
LLLineEditor* mRenamer;
BOOL mNeedsScroll;
+ bool mEnableScroll;
BOOL mPinningSelectedItem;
LLRect mScrollConstraintRect;
BOOL mNeedsAutoSelect;
diff --git a/indra/newview/llfriendcard.cpp b/indra/newview/llfriendcard.cpp
index 2f856abe8f..f672ffe20f 100644
--- a/indra/newview/llfriendcard.cpp
+++ b/indra/newview/llfriendcard.cpp
@@ -293,17 +293,6 @@ void LLFriendCardsManager::collectFriendsLists(folderid_buddies_map_t& folderBud
{
folderBuddiesMap.clear();
- static bool syncronize_friends_folders = true;
- if (syncronize_friends_folders)
- {
- // Checks whether "Friends" and "Friends/All" folders exist in "Calling Cards" folder,
- // fetches their contents if needed and synchronizes it with buddies list.
- // If the folders are not found they are created.
- LLFriendCardsManager::instance().syncFriendCardsFolders();
- syncronize_friends_folders = false;
- }
-
-
LLInventoryModel::cat_array_t* listFolders;
LLInventoryModel::item_array_t* items;
diff --git a/indra/newview/llgrouplist.cpp b/indra/newview/llgrouplist.cpp
index 4f9d51ce58..3751a33a48 100644
--- a/indra/newview/llgrouplist.cpp
+++ b/indra/newview/llgrouplist.cpp
@@ -206,8 +206,8 @@ void LLGroupList::addNewItem(const LLUUID& id, const std::string& name, const LL
item->setName(name, mNameFilter);
item->setGroupIconID(icon_id);
- item->getChildView("info_btn")->setVisible( false);
- item->getChildView("profile_btn")->setVisible( false);
+ item->childSetVisible("info_btn", false);
+ item->childSetVisible("profile_btn", false);
item->setGroupIconVisible(mShowIcons);
addItem(item, id, pos);
@@ -317,16 +317,16 @@ void LLGroupListItem::setValue( const LLSD& value )
{
if (!value.isMap()) return;
if (!value.has("selected")) return;
- getChildView("selected_icon")->setVisible( value["selected"]);
+ childSetVisible("selected_icon", value["selected"]);
}
void LLGroupListItem::onMouseEnter(S32 x, S32 y, MASK mask)
{
- getChildView("hovered_icon")->setVisible( true);
+ childSetVisible("hovered_icon", true);
if (mGroupID.notNull()) // don't show the info button for the "none" group
{
mInfoBtn->setVisible(true);
- getChildView("profile_btn")->setVisible( true);
+ childSetVisible("profile_btn", true);
}
LLPanel::onMouseEnter(x, y, mask);
@@ -334,9 +334,9 @@ void LLGroupListItem::onMouseEnter(S32 x, S32 y, MASK mask)
void LLGroupListItem::onMouseLeave(S32 x, S32 y, MASK mask)
{
- getChildView("hovered_icon")->setVisible( false);
+ childSetVisible("hovered_icon", false);
mInfoBtn->setVisible(false);
- getChildView("profile_btn")->setVisible( false);
+ childSetVisible("profile_btn", false);
LLPanel::onMouseLeave(x, y, mask);
}
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index b00a663a9a..f748603bfa 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -231,25 +231,6 @@ LLIMModel::LLIMSession::LLIMSession(const LLUUID& session_id, const std::string&
new LLSessionTimeoutTimer(mSessionID, SESSION_INITIALIZATION_TIMEOUT);
}
- // *WORKAROUND: for server hard-coded string in indra\newsim\llsimchatterbox.cpp
- if (isAdHocSessionType() && IM_SESSION_INVITE == type)
- {
- // For an ad-hoc incoming chat name is received from the server and is in a form of "<Avatar's name> Conference"
- // Lets update it to localize the "Conference" word. See EXT-8429.
- S32 separator_index = mName.rfind(" ");
- std::string name = mName.substr(0, separator_index);
- ++separator_index;
- std::string conference_word = mName.substr(separator_index, mName.length());
-
- // additional check that session name is what we expected
- if ("Conference" == conference_word)
- {
- LLStringUtil::format_map_t args;
- args["[AGENT_NAME]"] = name;
- LLTrans::findString(mName, "conference-title-incoming", args);
- }
- }
-
if (IM_NOTHING_SPECIAL == type)
{
mCallBackEnabled = LLVoiceClient::getInstance()->isSessionCallBackPossible(mSessionID);
@@ -1015,6 +996,19 @@ void LLIMModel::sendMessage(const std::string& utf8_text,
if (is_not_group_id)
{
+
+#if 0
+ //use this code to add only online members
+ LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(im_session_id);
+ LLSpeakerMgr::speaker_list_t speaker_list;
+ speaker_mgr->getSpeakerList(&speaker_list, true);
+ for(LLSpeakerMgr::speaker_list_t::iterator it = speaker_list.begin(); it != speaker_list.end(); it++)
+ {
+ const LLPointer<LLSpeaker>& speakerp = *it;
+
+ LLRecentPeople::instance().add(speakerp->mID);
+ }
+#else
LLIMModel::LLIMSession* session = LLIMModel::getInstance()->findIMSession(im_session_id);
if( session == 0)//??? shouldn't really happen
{
@@ -1029,20 +1023,16 @@ void LLIMModel::sendMessage(const std::string& utf8_text,
// Concrete participants will be added into this list once they sent message in chat.
if (IM_SESSION_INVITE == dialog) return;
- // Add only online members to recent (EXT-8658)
- LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(im_session_id);
- LLSpeakerMgr::speaker_list_t speaker_list;
- if(speaker_mgr != NULL)
- {
- speaker_mgr->getSpeakerList(&speaker_list, true);
- }
- for(LLSpeakerMgr::speaker_list_t::iterator it = speaker_list.begin(); it != speaker_list.end(); it++)
+ // implemented adding of all participants of an outgoing to Recent People List. See EXT-5694.
+ for(uuid_vec_t::iterator it = session->mInitialTargetIDs.begin();
+ it!=session->mInitialTargetIDs.end();++it)
{
- const LLPointer<LLSpeaker>& speakerp = *it;
+ const LLUUID id = *it;
- LLRecentPeople::instance().add(speakerp->mID);
+ LLRecentPeople::instance().add(id);
}
}
+#endif
}
@@ -1713,12 +1703,12 @@ void LLOutgoingCallDialog::show(const LLSD& key)
old_caller_name = LLTextUtil::formatPhoneNumber(old_caller_name);
}
- getChild<LLUICtrl>("leaving")->setTextArg("[CURRENT_CHAT]", old_caller_name);
+ childSetTextArg("leaving", "[CURRENT_CHAT]", old_caller_name);
show_oldchannel = true;
}
else
{
- getChild<LLUICtrl>("leaving")->setTextArg("[CURRENT_CHAT]", getString("localchat"));
+ childSetTextArg("leaving", "[CURRENT_CHAT]", getString("localchat"));
}
if (!mPayload["disconnected_channel_name"].asString().empty())
@@ -1728,16 +1718,16 @@ void LLOutgoingCallDialog::show(const LLSD& key)
{
channel_name = LLTextUtil::formatPhoneNumber(channel_name);
}
- getChild<LLUICtrl>("nearby")->setTextArg("[VOICE_CHANNEL_NAME]", channel_name);
+ childSetTextArg("nearby", "[VOICE_CHANNEL_NAME]", channel_name);
// skipping "You will now be reconnected to nearby" in notification when call is ended by disabling voice,
// so no reconnection to nearby chat happens (EXT-4397)
bool voice_works = LLVoiceClient::getInstance()->voiceEnabled() && LLVoiceClient::getInstance()->isVoiceWorking();
std::string reconnect_nearby = voice_works ? LLTrans::getString("reconnect_nearby") : std::string();
- getChild<LLUICtrl>("nearby")->setTextArg("[RECONNECT_NEARBY]", reconnect_nearby);
+ childSetTextArg("nearby", "[RECONNECT_NEARBY]", reconnect_nearby);
const std::string& nearby_str = mPayload["ended_by_agent"] ? NEARBY_P2P_BY_AGENT : NEARBY_P2P_BY_OTHER;
- getChild<LLUICtrl>(nearby_str)->setTextArg("[RECONNECT_NEARBY]", reconnect_nearby);
+ childSetTextArg(nearby_str, "[RECONNECT_NEARBY]", reconnect_nearby);
}
std::string callee_name = mPayload["session_name"].asString();
@@ -1757,8 +1747,8 @@ void LLOutgoingCallDialog::show(const LLSD& key)
setTitle(callee_name);
LLSD callee_id = mPayload["other_user_id"];
- getChild<LLUICtrl>("calling")->setTextArg("[CALLEE_NAME]", callee_name);
- getChild<LLUICtrl>("connecting")->setTextArg("[CALLEE_NAME]", callee_name);
+ childSetTextArg("calling", "[CALLEE_NAME]", callee_name);
+ childSetTextArg("connecting", "[CALLEE_NAME]", callee_name);
// for outgoing group calls callee_id == group id == session id
setIcon(callee_id, callee_id);
@@ -1943,7 +1933,7 @@ BOOL LLIncomingCallDialog::postBuild()
//it's not possible to connect to existing Ad-Hoc/Group chat through incoming ad-hoc call
//and no IM for avaline
- getChildView("Start IM")->setVisible( is_avatar && notify_box_type != "VoiceInviteAdHoc" && notify_box_type != "VoiceInviteGroup");
+ childSetVisible("Start IM", is_avatar && notify_box_type != "VoiceInviteAdHoc" && notify_box_type != "VoiceInviteGroup");
setCanDrag(FALSE);
@@ -1967,12 +1957,12 @@ void LLIncomingCallDialog::onOpen(const LLSD& key)
if (voice && !voice->getSessionName().empty())
{
args["[CURRENT_CHAT]"] = voice->getSessionName();
- getChild<LLUICtrl>("question")->setValue(getString(key["question_type"].asString(), args));
+ childSetText("question", getString(key["question_type"].asString(), args));
}
else
{
args["[CURRENT_CHAT]"] = getString("localchat");
- getChild<LLUICtrl>("question")->setValue(getString(key["question_type"].asString(), args));
+ childSetText("question", getString(key["question_type"].asString(), args));
}
}
diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h
index 4ce94773bf..dfd39cc39c 100644
--- a/indra/newview/llimview.h
+++ b/indra/newview/llimview.h
@@ -227,8 +227,7 @@ public:
* Get a session's name.
* For a P2P chat - it's an avatar's name,
* For a group chat - it's a group's name
- * For an incoming ad-hoc chat - is received from the server and is in a from of "<Avatar's name> Conference"
- * It is updated in LLIMModel::LLIMSession's constructor to localize the "Conference".
+ * For an ad-hoc chat - is received from the server and is in a from of "<Avatar's name> conference"
*/
const std::string& getName(const LLUUID& session_id) const;
diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp
index b367d68b02..d877d659c1 100644
--- a/indra/newview/llinspectavatar.cpp
+++ b/indra/newview/llinspectavatar.cpp
@@ -365,7 +365,7 @@ void LLInspectAvatar::requestUpdate()
//remove avatar id from cache to get fresh info
LLAvatarIconIDCache::getInstance()->remove(mAvatarID);
- getChild<LLUICtrl>("avatar_icon")->setValue(LLSD(mAvatarID) );
+ childSetValue("avatar_icon", LLSD(mAvatarID) );
gCacheName->get(mAvatarID, FALSE,
boost::bind(&LLInspectAvatar::nameUpdatedCallback,
@@ -615,7 +615,7 @@ void LLInspectAvatar::nameUpdatedCallback(
if (id == mAvatarID)
{
mAvatarName = first + " " + last;
- getChild<LLUICtrl>("user_name")->setValue(LLSD(mAvatarName) );
+ childSetValue("user_name", LLSD(mAvatarName) );
}
}
diff --git a/indra/newview/llinspectgroup.cpp b/indra/newview/llinspectgroup.cpp
index 214b135bc1..1e9bbb7839 100644
--- a/indra/newview/llinspectgroup.cpp
+++ b/indra/newview/llinspectgroup.cpp
@@ -233,7 +233,7 @@ void LLInspectGroup::nameUpdatedCallback(
if (id == mGroupID)
{
// group names are returned as a first name
- getChild<LLUICtrl>("group_name")->setValue(LLSD(first) );
+ childSetValue("group_name", LLSD(first) );
}
// Otherwise possibly a request for an older inspector, ignore it
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index aff0bc4099..beeac86f94 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -1264,12 +1264,6 @@ BOOL LLItemBridge::isItemRenameable() const
{
return FALSE;
}
-
- if (!item->isFinished()) // EXT-8662
- {
- return FALSE;
- }
-
return (item->getPermissions().allowModifyBy(gAgent.getID()));
}
return FALSE;
@@ -3936,7 +3930,7 @@ void LLObjectBridge::performAction(LLInventoryModel* model, std::string action)
item = (LLViewerInventoryItem*)gInventory.getItem(object_id);
if(item && gInventory.isObjectDescendentOf(object_id, gInventory.getRootFolderID()))
{
- rez_attachment(item, NULL, true); // Replace if "Wear"ing.
+ rez_attachment(item, NULL);
}
else if(item && item->isFinished())
{
@@ -3952,16 +3946,23 @@ void LLObjectBridge::performAction(LLInventoryModel* model, std::string action)
}
gFocusMgr.setKeyboardFocus(NULL);
}
- else if ("wear_add" == action)
- {
- LLAppearanceMgr::instance().wearItemOnAvatar(mUUID, true, false); // Don't replace if adding.
- }
else if (isRemoveAction(action))
{
LLInventoryItem* item = gInventory.getItem(mUUID);
if(item)
{
- LLVOAvatarSelf::detachAttachmentIntoInventory(item->getLinkedUUID());
+ gMessageSystem->newMessageFast(_PREHASH_DetachAttachmentIntoInv);
+ gMessageSystem->nextBlockFast(_PREHASH_ObjectData);
+ gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
+ gMessageSystem->addUUIDFast(_PREHASH_ItemID, item->getLinkedUUID());
+ gMessageSystem->sendReliable( gAgent.getRegion()->getHost());
+
+ // this object might have been selected, so let the selection manager know it's gone now
+ LLViewerObject *found_obj = gObjectList.findObject(item->getLinkedUUID());
+ if (found_obj)
+ {
+ LLSelectMgr::getInstance()->remove(found_obj);
+ }
}
}
else LLItemBridge::performAction(model, action);
@@ -3978,11 +3979,6 @@ std::string LLObjectBridge::getLabelSuffix() const
{
if (get_is_item_worn(mUUID))
{
- if (!isAgentAvatarValid())
- {
- return LLItemBridge::getLabelSuffix() + LLTrans::getString("worn");
- }
-
std::string attachment_point_name = gAgentAvatarp->getAttachedPointName(mUUID);
// e.g. "(worn on ...)" / "(attached to ...)"
@@ -3996,19 +3992,10 @@ std::string LLObjectBridge::getLabelSuffix() const
}
}
-void rez_attachment(LLViewerInventoryItem* item, LLViewerJointAttachment* attachment, bool replace)
+void rez_attachment(LLViewerInventoryItem* item, LLViewerJointAttachment* attachment)
{
- const LLUUID& item_id = item->getLinkedUUID();
-
- // Check for duplicate request.
- if (isAgentAvatarValid() &&
- (gAgentAvatarp->attachmentWasRequested(item_id) ||
- gAgentAvatarp->isWearingAttachment(item_id)))
- {
- llwarns << "duplicate attachment request, ignoring" << llendl;
- return;
- }
- gAgentAvatarp->addAttachmentRequest(item_id);
+ LLSD payload;
+ payload["item_id"] = item->getLinkedUUID(); // Wear the base object in case this is a link.
S32 attach_pt = 0;
if (isAgentAvatarValid() && attachment)
@@ -4024,16 +4011,9 @@ void rez_attachment(LLViewerInventoryItem* item, LLViewerJointAttachment* attach
}
}
- if (!replace)
- {
- attach_pt |= ATTACHMENT_ADD;
- }
-
- LLSD payload;
- payload["item_id"] = item_id; // Wear the base object in case this is a link.
payload["attachment_point"] = attach_pt;
- if (replace &&
+ if (!gSavedSettings.getBOOL("MultipleAttachments") &&
(attachment && attachment->getNumObjects() > 0))
{
LLNotificationsUtil::add("ReplaceAttachment", LLSD(), payload, confirm_replace_attachment_rez);
@@ -4057,13 +4037,13 @@ bool confirm_replace_attachment_rez(const LLSD& notification, const LLSD& respon
S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
if (option == 0/*YES*/)
{
- LLUUID item_id = notification["payload"]["item_id"].asUUID();
- LLViewerInventoryItem* itemp = gInventory.getItem(item_id);
+ LLViewerInventoryItem* itemp = gInventory.getItem(notification["payload"]["item_id"].asUUID());
if (itemp)
{
U8 attachment_pt = notification["payload"]["attachment_point"].asInteger();
-
+ if (gSavedSettings.getBOOL("MultipleAttachments"))
+ attachment_pt |= ATTACHMENT_ADD;
LLMessageSystem* msg = gMessageSystem;
msg->newMessageFast(_PREHASH_RezSingleAttachmentFromInv);
@@ -4120,7 +4100,6 @@ void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
{
items.push_back(std::string("Wearable And Object Separator"));
items.push_back(std::string("Wearable And Object Wear"));
- items.push_back(std::string("Wearable Add"));
items.push_back(std::string("Attach To"));
items.push_back(std::string("Attach To HUD"));
// commented out for DEV-32347
@@ -4129,7 +4108,6 @@ void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
if (!gAgentAvatarp->canAttachMoreObjects())
{
disabled_items.push_back(std::string("Wearable And Object Wear"));
- disabled_items.push_back(std::string("Wearable Add"));
disabled_items.push_back(std::string("Attach To"));
disabled_items.push_back(std::string("Attach To HUD"));
}
@@ -4332,7 +4310,19 @@ void remove_inventory_category_from_avatar_step2( BOOL proceed, LLUUID category_
LLViewerInventoryItem *obj_item = obj_item_array.get(i);
if (get_is_item_worn(obj_item->getUUID()))
{
- LLVOAvatarSelf::detachAttachmentIntoInventory(obj_item->getLinkedUUID());
+ gMessageSystem->newMessageFast(_PREHASH_DetachAttachmentIntoInv);
+ gMessageSystem->nextBlockFast(_PREHASH_ObjectData );
+ gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID() );
+ gMessageSystem->addUUIDFast(_PREHASH_ItemID, obj_item->getLinkedUUID() );
+
+ gMessageSystem->sendReliable( gAgent.getRegion()->getHost() );
+
+ // this object might have been selected, so let the selection manager know it's gone now
+ LLViewerObject *found_obj = gObjectList.findObject( obj_item->getLinkedUUID());
+ if (found_obj)
+ {
+ LLSelectMgr::getInstance()->remove(found_obj);
+ }
}
}
}
diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h
index 14abdd76b9..6ddd77284a 100644
--- a/indra/newview/llinventorybridge.h
+++ b/indra/newview/llinventorybridge.h
@@ -588,8 +588,7 @@ public:
};
void rez_attachment(LLViewerInventoryItem* item,
- LLViewerJointAttachment* attachment,
- bool replace = false);
+ LLViewerJointAttachment* attachment);
// Move items from an in-world object's "Contents" folder to a specified
// folder in agent inventory.
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index f3d9639dee..e814cf012e 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -215,13 +215,7 @@ BOOL get_is_item_worn(const LLUUID& id)
const LLViewerInventoryItem* item = gInventory.getItem(id);
if (!item)
return FALSE;
-
- // Consider the item as worn if it has links in COF.
- if (LLAppearanceMgr::instance().isLinkInCOF(id))
- {
- return TRUE;
- }
-
+
switch(item->getType())
{
case LLAssetType::AT_OBJECT:
@@ -263,16 +257,6 @@ BOOL get_can_item_be_worn(const LLUUID& id)
return FALSE;
}
- const LLUUID trash_id = gInventory.findCategoryUUIDForType(
- LLFolderType::FT_TRASH);
-
- // item can't be worn if base obj in trash, see EXT-7015
- if (gInventory.isObjectDescendentOf(item->getLinkedUUID(),
- trash_id))
- {
- return false;
- }
-
switch(item->getType())
{
case LLAssetType::AT_OBJECT:
diff --git a/indra/newview/llinventoryfunctions.h b/indra/newview/llinventoryfunctions.h
index cfe1747fd4..853bf45c5e 100644
--- a/indra/newview/llinventoryfunctions.h
+++ b/indra/newview/llinventoryfunctions.h
@@ -295,7 +295,6 @@ public:
virtual bool operator()(LLInventoryCategory* cat, LLInventoryItem* item)
{
- //converting an inventory type to a bitmap filter mask
if(item && (mFilterMask & (1LL << item->getInventoryType())) )
{
return true;
diff --git a/indra/newview/llinventoryitemslist.cpp b/indra/newview/llinventoryitemslist.cpp
index 348d7ebcec..2b81ba8a12 100644
--- a/indra/newview/llinventoryitemslist.cpp
+++ b/indra/newview/llinventoryitemslist.cpp
@@ -80,37 +80,6 @@ boost::signals2::connection LLInventoryItemsList::setRefreshCompleteCallback(con
return mRefreshCompleteSignal.connect(cb);
}
-bool LLInventoryItemsList::selectItemByValue(const LLSD& value, bool select)
-{
- if (!LLFlatListView::selectItemByValue(value, select) && !value.isUndefined())
- {
- mSelectTheseIDs.push_back(value);
- return false;
- }
- return true;
-}
-
-void LLInventoryItemsList::updateSelection()
-{
- if(mSelectTheseIDs.empty()) return;
-
- std::vector<LLSD> cur;
- getValues(cur);
-
- for(std::vector<LLSD>::const_iterator cur_id_it = cur.begin(); cur_id_it != cur.end() && !mSelectTheseIDs.empty(); ++cur_id_it)
- {
- uuid_vec_t::iterator select_ids_it = std::find(mSelectTheseIDs.begin(), mSelectTheseIDs.end(), *cur_id_it);
- if(select_ids_it != mSelectTheseIDs.end())
- {
- selectItemByUUID(*select_ids_it);
- mSelectTheseIDs.erase(select_ids_it);
- }
- }
-
- scrollToShowFirstSelectedItem();
- mSelectTheseIDs.clear();
-}
-
void LLInventoryItemsList::doIdle()
{
if (!mNeedsRefresh) return;
@@ -179,12 +148,6 @@ void LLInventoryItemsList::refresh()
bool needs_refresh = add_limit_exceeded;
setNeedsRefresh(needs_refresh);
setForceRefresh(needs_refresh);
-
- // After list building completed, select items that had been requested to select before list was build
- if(!needs_refresh)
- {
- updateSelection();
- }
}
void LLInventoryItemsList::computeDifference(
diff --git a/indra/newview/llinventoryitemslist.h b/indra/newview/llinventoryitemslist.h
index 86e11dff17..ca90427659 100644
--- a/indra/newview/llinventoryitemslist.h
+++ b/indra/newview/llinventoryitemslist.h
@@ -64,10 +64,6 @@ public:
*/
void setForceRefresh(bool force_refresh){ mForceRefresh = force_refresh; }
- virtual bool selectItemByValue(const LLSD& value, bool select = true);
-
- void updateSelection();
-
/**
* Idle routine used to refresh the list regardless of the current list
* visibility, unlike draw() which is called only for the visible list.
@@ -104,9 +100,6 @@ protected:
private:
uuid_vec_t mIDs; // IDs of items that were added in refreshList().
// Will be used in refresh() to determine added and removed ids
-
- uuid_vec_t mSelectTheseIDs; // IDs that will be selected if list is not loaded till now
-
bool mNeedsRefresh;
bool mForceRefresh;
diff --git a/indra/newview/llinventorylistitem.cpp b/indra/newview/llinventorylistitem.cpp
index 1ea91103f1..901fa483a9 100644
--- a/indra/newview/llinventorylistitem.cpp
+++ b/indra/newview/llinventorylistitem.cpp
@@ -232,17 +232,6 @@ const std::string& LLPanelInventoryListItemBase::getDescription() const
return inv_item->getDescription();
}
-time_t LLPanelInventoryListItemBase::getCreationDate() const
-{
- LLViewerInventoryItem* inv_item = getItem();
- if (NULL == inv_item)
- {
- return 0;
- }
-
- return inv_item->getCreationDate();
-}
-
LLViewerInventoryItem* LLPanelInventoryListItemBase::getItem() const
{
return gInventory.getItem(mInventoryItemUUID);
diff --git a/indra/newview/llinventorylistitem.h b/indra/newview/llinventorylistitem.h
index b1ef6c74ee..40bb52ddda 100644
--- a/indra/newview/llinventorylistitem.h
+++ b/indra/newview/llinventorylistitem.h
@@ -146,9 +146,6 @@ public:
/** Get the description of a corresponding inventory item */
const std::string& getDescription() const;
- /** Get the creation date of a corresponding inventory item */
- time_t getCreationDate() const;
-
/** Get the associated inventory item */
LLViewerInventoryItem* getItem() const;
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index 820520df9e..cb6a1fafe5 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -169,9 +169,6 @@ void LLInventoryPanel::initFromParams(const LLInventoryPanel::Params& params)
setSortOrder(gSavedSettings.getU32(DEFAULT_SORT_ORDER));
}
mFolderRoot->setSortOrder(getFilter()->getSortOrder());
-
- // Initialize base class params.
- LLPanel::initFromParams(params);
}
LLInventoryPanel::~LLInventoryPanel()
@@ -703,6 +700,21 @@ BOOL LLInventoryPanel::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
return handled;
}
+// virtual
+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.
+ mFolderRoot->setEnableScroll(false);
+}
+
+// virtual
+void LLInventoryPanel::onMouseLeave(S32 x, S32 y, MASK mask)
+{
+ LLPanel::onMouseLeave(x, y, mask);
+ mFolderRoot->setEnableScroll(true);
+}
+
void LLInventoryPanel::onFocusLost()
{
// inventory no longer handles cut/copy/paste/delete
diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h
index 6545fc0d5e..f8aaae8fab 100644
--- a/indra/newview/llinventorypanel.h
+++ b/indra/newview/llinventorypanel.h
@@ -115,6 +115,10 @@ public:
void* cargo_data,
EAcceptance* accept,
std::string& tooltip_msg);
+
+ void onMouseEnter(S32 x, S32 y, MASK mask);
+ void onMouseLeave(S32 x, S32 y, MASK mask);
+
// LLUICtrl methods
/*virtual*/ void onFocusLost();
/*virtual*/ void onFocusReceived();
diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp
index a6ff76cf84..5981441e27 100644
--- a/indra/newview/llmediactrl.cpp
+++ b/indra/newview/llmediactrl.cpp
@@ -61,8 +61,7 @@ LLMediaCtrl::Params::Params()
decouple_texture_size("decouple_texture_size", false),
texture_width("texture_width", 1024),
texture_height("texture_height", 1024),
- caret_color("caret_color"),
- initial_mime_type("initial_mime_type")
+ caret_color("caret_color")
{
tab_stop(false);
}
@@ -87,8 +86,7 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) :
mDecoupleTextureSize ( false ),
mTextureWidth ( 1024 ),
mTextureHeight ( 1024 ),
- mClearCache(false),
- mHomePageMimeType(p.initial_mime_type)
+ mClearCache(false)
{
{
LLColor4 color = p.caret_color().get();
@@ -97,7 +95,7 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) :
setIgnoreUIScale(p.ignore_ui_scale);
- setHomePageUrl(p.start_url, p.initial_mime_type);
+ setHomePageUrl(p.start_url);
setBorderVisible(p.border_visible);
@@ -563,12 +561,12 @@ void LLMediaCtrl::navigateHome()
////////////////////////////////////////////////////////////////////////////////
//
-void LLMediaCtrl::setHomePageUrl( const std::string& urlIn, const std::string& mime_type )
+void LLMediaCtrl::setHomePageUrl( const std::string urlIn )
{
mHomePageUrl = urlIn;
if (mMediaSource)
{
- mMediaSource->setHomeURL(mHomePageUrl, mime_type);
+ mMediaSource->setHomeURL(mHomePageUrl);
}
}
@@ -612,7 +610,7 @@ bool LLMediaCtrl::ensureMediaSourceExists()
if ( mMediaSource )
{
mMediaSource->setUsedInUI(true);
- mMediaSource->setHomeURL(mHomePageUrl, mHomePageMimeType);
+ mMediaSource->setHomeURL(mHomePageUrl);
mMediaSource->setVisible( getVisible() );
mMediaSource->addObserver( this );
mMediaSource->setBackgroundColor( getBackgroundColor() );
diff --git a/indra/newview/llmediactrl.h b/indra/newview/llmediactrl.h
index 755d1e1b04..9fc066c07f 100644
--- a/indra/newview/llmediactrl.h
+++ b/indra/newview/llmediactrl.h
@@ -57,8 +57,6 @@ public:
texture_height;
Optional<LLUIColor> caret_color;
-
- Optional<std::string> initial_mime_type;
Params();
};
@@ -105,7 +103,7 @@ public:
// because we control the page content. See DEV-9530. JC.
void setTrusted( bool valIn );
- void setHomePageUrl( const std::string& urlIn, const std::string& mime_type = LLStringUtil::null );
+ void setHomePageUrl( const std::string urlIn );
std::string getHomePageUrl();
// set/clear URL to visit when a 404 page is reached
@@ -169,7 +167,6 @@ public:
bool mForceUpdate;
bool mTrusted;
std::string mHomePageUrl;
- std::string mHomePageMimeType;
std::string mCurrentNavUrl;
bool mIgnoreUIScale;
bool mAlwaysRefresh;
diff --git a/indra/newview/llmediadataclient.cpp b/indra/newview/llmediadataclient.cpp
index 31038b4aac..da656d8b5e 100644
--- a/indra/newview/llmediadataclient.cpp
+++ b/indra/newview/llmediadataclient.cpp
@@ -52,32 +52,6 @@
// - Any request that gets a 503 still goes through the retry logic
//
-/***************************************************************************************************************
- What's up with this queueing code?
-
- First, a bit of background:
-
- Media on a prim was added into the system in the Viewer 2.0 timeframe. In order to avoid changing the
- network format of objects, an unused field in the object (the "MediaURL" string) was repurposed to
- indicate that the object had media data, and also hold a sequence number and the UUID of the agent
- who last updated the data. The actual media data for objects is accessed via the "ObjectMedia" capability.
- Due to concerns about sim performance, requests to this capability are rate-limited to 5 requests every
- 5 seconds per agent.
-
- The initial implementation of LLMediaDataClient used a single queue to manage requests to the "ObjectMedia" cap.
- Requests to the cap were queued so that objects closer to the avatar were loaded in first, since they were most
- likely to be the ones the media performance manager would load.
-
- This worked in some cases, but we found that it was possible for a scripted object that constantly updated its
- media data to starve other objects, since the same queue contained both requests to load previously unseen media
- data and requests to fetch media data in response to object updates.
-
- The solution for this we came up with was to have two queues. The sorted queue contains requests to fetch media
- data for objects that don't have it yet, and the round-robin queue contains requests to update media data for
- objects that have already completed their initial load. When both queues are non-empty, the code ping-pongs
- between them so that updates can't completely block initial load-in.
-**************************************************************************************************************/
-
//
// Forward decls
//
@@ -91,54 +65,6 @@ const U32 LLMediaDataClient::MAX_ROUND_ROBIN_QUEUE_SIZE = 10000;
std::ostream& operator<<(std::ostream &s, const LLMediaDataClient::request_queue_t &q);
std::ostream& operator<<(std::ostream &s, const LLMediaDataClient::Request &q);
-template <typename T>
-static typename T::iterator find_matching_request(T &c, const LLMediaDataClient::Request *request, LLMediaDataClient::Request::Type match_type)
-{
- for(typename T::iterator iter = c.begin(); iter != c.end(); ++iter)
- {
- if(request->isMatch(*iter, match_type))
- {
- return iter;
- }
- }
-
- return c.end();
-}
-
-template <typename T>
-static typename T::iterator find_matching_request(T &c, const LLUUID &id, LLMediaDataClient::Request::Type match_type)
-{
- for(typename T::iterator iter = c.begin(); iter != c.end(); ++iter)
- {
- if(((*iter)->getID() == id) && ((match_type == LLMediaDataClient::Request::ANY) || (match_type == (*iter)->getType())))
- {
- return iter;
- }
- }
-
- return c.end();
-}
-
-// NOTE: remove_matching_requests will not work correctly for containers where deleting an element may invalidate iterators
-// to other elements in the container (such as std::vector).
-// If the implementation is changed to use a container with this property, this will need to be revisited.
-template <typename T>
-static void remove_matching_requests(T &c, const LLUUID &id, LLMediaDataClient::Request::Type match_type)
-{
- for(typename T::iterator iter = c.begin(); iter != c.end();)
- {
- typename T::value_type i = *iter;
- typename T::iterator next = iter;
- next++;
- if((i->getID() == id) && ((match_type == LLMediaDataClient::Request::ANY) || (match_type == i->getType())))
- {
- i->markDead();
- c.erase(iter);
- }
- iter = next;
- }
-}
-
//////////////////////////////////////////////////////////////////////////////////////
//
// LLMediaDataClient
@@ -155,36 +81,117 @@ LLMediaDataClient::LLMediaDataClient(F32 queue_timer_delay,
mMaxNumRetries(max_retries),
mMaxSortedQueueSize(max_sorted_queue_size),
mMaxRoundRobinQueueSize(max_round_robin_queue_size),
- mQueueTimerIsRunning(false)
+ mQueueTimerIsRunning(false),
+ mCurrentQueueIsTheSortedQueue(true)
{
}
LLMediaDataClient::~LLMediaDataClient()
{
stopQueueTimer();
+
+ // This should clear the queue, and hopefully call all the destructors.
+ LL_DEBUGS("LLMediaDataClient") << "~LLMediaDataClient destructor: queue: " <<
+ (isEmpty() ? "<empty> " : "<not empty> ") << LL_ENDL;
+
+ mSortedQueue.clear();
+ mRoundRobinQueue.clear();
}
bool LLMediaDataClient::isEmpty() const
{
- return mQueue.empty();
+ return mSortedQueue.empty() && mRoundRobinQueue.empty();
}
bool LLMediaDataClient::isInQueue(const LLMediaDataClientObject::ptr_t &object)
{
- if(find_matching_request(mQueue, object->getID()) != mQueue.end())
- return true;
-
- if(find_matching_request(mUnQueuedRequests, object->getID()) != mUnQueuedRequests.end())
- return true;
+ return (LLMediaDataClient::findOrRemove(mSortedQueue, object, false/*remove*/, LLMediaDataClient::Request::ANY).notNull()
+ || (LLMediaDataClient::findOrRemove(mRoundRobinQueue, object, false/*remove*/, LLMediaDataClient::Request::ANY).notNull()));
+}
+
+bool LLMediaDataClient::removeFromQueue(const LLMediaDataClientObject::ptr_t &object)
+{
+ bool removedFromSortedQueue = LLMediaDataClient::findOrRemove(mSortedQueue, object, true/*remove*/, LLMediaDataClient::Request::ANY).notNull();
+ bool removedFromRoundRobinQueue = LLMediaDataClient::findOrRemove(mRoundRobinQueue, object, true/*remove*/, LLMediaDataClient::Request::ANY).notNull();
+ return removedFromSortedQueue || removedFromRoundRobinQueue;
+}
+
+//static
+LLMediaDataClient::request_ptr_t LLMediaDataClient::findOrRemove(request_queue_t &queue, const LLMediaDataClientObject::ptr_t &obj, bool remove, LLMediaDataClient::Request::Type type)
+{
+ request_ptr_t result;
+ request_queue_t::iterator iter = queue.begin();
+ request_queue_t::iterator end = queue.end();
+ while (iter != end)
+ {
+ if (obj->getID() == (*iter)->getObject()->getID() && (type == LLMediaDataClient::Request::ANY || type == (*iter)->getType()))
+ {
+ result = *iter;
+ if (remove) queue.erase(iter);
+ break;
+ }
+ iter++;
+ }
+ return result;
+}
+
+void LLMediaDataClient::request(const LLMediaDataClientObject::ptr_t &object, const LLSD &payload)
+{
+ if (object.isNull() || ! object->hasMedia()) return;
- return false;
+ // Push the object on the queue
+ enqueue(new Request(getCapabilityName(), payload, object, this));
}
-void LLMediaDataClient::removeFromQueue(const LLMediaDataClientObject::ptr_t &object)
+void LLMediaDataClient::enqueue(const Request *request)
{
- LL_DEBUGS("LLMediaDataClient") << "removing requests matching ID " << object->getID() << LL_ENDL;
- remove_matching_requests(mQueue, object->getID());
- remove_matching_requests(mUnQueuedRequests, object->getID());
+ if (request->isNew())
+ {
+ // Add to sorted queue
+ if (LLMediaDataClient::findOrRemove(mSortedQueue, request->getObject(), true/*remove*/, request->getType()).notNull())
+ {
+ LL_DEBUGS("LLMediaDataClient") << "REMOVING OLD request for " << *request << " ALREADY THERE!" << LL_ENDL;
+ }
+
+ LL_DEBUGS("LLMediaDataClient") << "Queuing SORTED request for " << *request << LL_ENDL;
+
+ // Sadly, we have to const-cast because items put into the queue are not const
+ mSortedQueue.push_back(const_cast<LLMediaDataClient::Request*>(request));
+
+ LL_DEBUGS("LLMediaDataClientQueue") << "SORTED queue:" << mSortedQueue << LL_ENDL;
+ }
+ else {
+ if (mRoundRobinQueue.size() > mMaxRoundRobinQueueSize)
+ {
+ LL_INFOS_ONCE("LLMediaDataClient") << "RR QUEUE MAXED OUT!!!" << LL_ENDL;
+ LL_DEBUGS("LLMediaDataClient") << "Not queuing " << *request << LL_ENDL;
+ return;
+ }
+
+ // ROUND ROBIN: if it is there, and it is a GET request, leave it. If not, put at front!
+ request_ptr_t existing_request;
+ if (request->getType() == Request::GET)
+ {
+ existing_request = LLMediaDataClient::findOrRemove(mRoundRobinQueue, request->getObject(), false/*remove*/, request->getType());
+ }
+ if (existing_request.isNull())
+ {
+ LL_DEBUGS("LLMediaDataClient") << "Queuing RR request for " << *request << LL_ENDL;
+ // Push the request on the pending queue
+ // Sadly, we have to const-cast because items put into the queue are not const
+ mRoundRobinQueue.push_front(const_cast<LLMediaDataClient::Request*>(request));
+
+ LL_DEBUGS("LLMediaDataClientQueue") << "RR queue:" << mRoundRobinQueue << LL_ENDL;
+ }
+ else
+ {
+ LL_DEBUGS("LLMediaDataClient") << "ALREADY THERE: NOT Queuing request for " << *request << LL_ENDL;
+
+ existing_request->markSent(false);
+ }
+ }
+ // Start the timer if not already running
+ startQueueTimer();
}
void LLMediaDataClient::startQueueTimer()
@@ -196,7 +203,7 @@ void LLMediaDataClient::startQueueTimer()
new QueueTimer(mQueueTimerDelay, this);
}
else {
- LL_DEBUGS("LLMediaDataClient") << "queue timer is already running" << LL_ENDL;
+ LL_DEBUGS("LLMediaDataClient") << "not starting queue timer (it's already running, right???)" << LL_ENDL;
}
}
@@ -207,138 +214,179 @@ void LLMediaDataClient::stopQueueTimer()
bool LLMediaDataClient::processQueueTimer()
{
- if(isEmpty())
- return true;
-
- LL_DEBUGS("LLMediaDataClient") << "QueueTimer::tick() started, queue size is: " << mQueue.size() << LL_ENDL;
- LL_DEBUGS("LLMediaDataClientQueue") << "QueueTimer::tick() started, SORTED queue is: " << mQueue << LL_ENDL;
-
+ sortQueue();
+
+ if(!isEmpty())
+ {
+ LL_DEBUGS("LLMediaDataClient") << "QueueTimer::tick() started, SORTED queue size is: " << mSortedQueue.size()
+ << ", RR queue size is: " << mRoundRobinQueue.size() << LL_ENDL;
+ LL_DEBUGS("LLMediaDataClientQueue") << "QueueTimer::tick() started, SORTED queue is: " << mSortedQueue << LL_ENDL;
+ LL_DEBUGS("LLMediaDataClientQueue") << "QueueTimer::tick() started, RR queue is: " << mRoundRobinQueue << LL_ENDL;
+ }
+
serviceQueue();
- LL_DEBUGS("LLMediaDataClient") << "QueueTimer::tick() finished, queue size is: " << mQueue.size() << LL_ENDL;
- LL_DEBUGS("LLMediaDataClientQueue") << "QueueTimer::tick() finished, SORTED queue is: " << mQueue << LL_ENDL;
+ LL_DEBUGS("LLMediaDataClient") << "QueueTimer::tick() finished, SORTED queue size is: " << mSortedQueue.size()
+ << ", RR queue size is: " << mRoundRobinQueue.size() << LL_ENDL;
+ LL_DEBUGS("LLMediaDataClientQueue") << "QueueTimer::tick() finished, SORTED queue is: " << mSortedQueue << LL_ENDL;
+ LL_DEBUGS("LLMediaDataClientQueue") << "QueueTimer::tick() finished, RR queue is: " << mRoundRobinQueue << LL_ENDL;
return isEmpty();
}
-LLMediaDataClient::request_ptr_t LLMediaDataClient::dequeue()
+void LLMediaDataClient::sortQueue()
{
- request_ptr_t request;
- request_queue_t *queue_p = getQueue();
-
- if (queue_p->empty())
+ if(!mSortedQueue.empty())
{
- LL_DEBUGS("LLMediaDataClient") << "queue empty: " << (*queue_p) << LL_ENDL;
- }
- else
- {
- request = queue_p->front();
-
- if(canServiceRequest(request))
+ // Score all items first
+ request_queue_t::iterator iter = mSortedQueue.begin();
+ request_queue_t::iterator end = mSortedQueue.end();
+ while (iter != end)
{
- // We will be returning this request, so remove it from the queue.
- queue_p->pop_front();
+ (*iter)->updateScore();
+ iter++;
}
- else
+
+ // Re-sort the list...
+ // NOTE: should this be a stable_sort? If so we need to change to using a vector.
+ mSortedQueue.sort(LLMediaDataClient::compareRequests);
+
+ // ...then cull items over the max
+ U32 size = mSortedQueue.size();
+ if (size > mMaxSortedQueueSize)
{
- // Don't return this request -- it's not ready to be serviced.
- request = NULL;
+ U32 num_to_cull = (size - mMaxSortedQueueSize);
+ LL_INFOS_ONCE("LLMediaDataClient") << "sorted queue MAXED OUT! Culling "
+ << num_to_cull << " items" << LL_ENDL;
+ while (num_to_cull-- > 0)
+ {
+ mSortedQueue.pop_back();
+ }
}
}
-
- return request;
-}
-
-void LLMediaDataClient::pushBack(request_ptr_t request)
-{
- request_queue_t *queue_p = getQueue();
- queue_p->push_front(request);
}
-void LLMediaDataClient::trackRequest(request_ptr_t request)
-{
- request_set_t::iterator iter = mUnQueuedRequests.find(request);
-
- if(iter != mUnQueuedRequests.end())
- {
- LL_WARNS("LLMediaDataClient") << "Tracking already tracked request: " << *request << LL_ENDL;
- }
- else
- {
- mUnQueuedRequests.insert(request);
- }
-}
-
-void LLMediaDataClient::stopTrackingRequest(request_ptr_t request)
+// static
+bool LLMediaDataClient::compareRequests(const request_ptr_t &o1, const request_ptr_t &o2)
{
- request_set_t::iterator iter = mUnQueuedRequests.find(request);
-
- if (iter != mUnQueuedRequests.end())
- {
- mUnQueuedRequests.erase(iter);
- }
- else
- {
- LL_WARNS("LLMediaDataClient") << "Removing an untracked request: " << *request << LL_ENDL;
- }
+ if (o2.isNull()) return true;
+ if (o1.isNull()) return false;
+ return ( o1->getScore() > o2->getScore() );
}
void LLMediaDataClient::serviceQueue()
{
- // Peel one off of the items from the queue and execute it
- request_ptr_t request;
+ request_queue_t *queue_p = getCurrentQueue();
- do
+ // quick retry loop for cases where we shouldn't wait for the next timer tick
+ while(true)
{
- request = dequeue();
-
- if(request.isNull())
- {
- // Queue is empty.
- return;
- }
-
- if(request->isDead())
+ if (queue_p->empty())
{
- LL_INFOS("LLMediaDataClient") << "Skipping dead request " << *request << LL_ENDL;
- continue;
+ LL_DEBUGS("LLMediaDataClient") << "queue empty: " << (*queue_p) << LL_ENDL;
+ break;
}
-
- } while(false);
- // try to send the HTTP message to the cap url
- std::string url = request->getCapability();
- if (!url.empty())
- {
- const LLSD &sd_payload = request->getPayload();
- LL_INFOS("LLMediaDataClient") << "Sending request for " << *request << LL_ENDL;
+ // Peel one off of the items from the queue, and execute request
+ request_ptr_t request = queue_p->front();
+ llassert(!request.isNull());
+ const LLMediaDataClientObject *object = (request.isNull()) ? NULL : request->getObject();
+ llassert(NULL != object);
- // Add this request to the non-queued tracking list
- trackRequest(request);
+ // Check for conditions that would make us just pop and rapidly loop through
+ // the queue.
+ if(request.isNull() ||
+ request->isMarkedSent() ||
+ NULL == object ||
+ object->isDead() ||
+ !object->hasMedia())
+ {
+ if (request.isNull())
+ {
+ LL_WARNS("LLMediaDataClient") << "Skipping NULL request" << LL_ENDL;
+ }
+ else {
+ LL_INFOS("LLMediaDataClient") << "Skipping : " << *request << " "
+ << ((request->isMarkedSent()) ? " request is marked sent" :
+ ((NULL == object) ? " object is NULL " :
+ ((object->isDead()) ? "object is dead" :
+ ((!object->hasMedia()) ? "object has no media!" : "BADNESS!")))) << LL_ENDL;
+ }
+ queue_p->pop_front();
+ continue; // jump back to the start of the quick retry loop
+ }
- // and make the post
- LLHTTPClient::post(url, sd_payload, request->createResponder());
- }
- else
- {
- // Cap url doesn't exist.
+ // Next, ask if this is "interesting enough" to fetch. If not, just stop
+ // and wait for the next timer go-round. Only do this for the sorted
+ // queue.
+ if (mCurrentQueueIsTheSortedQueue && !object->isInterestingEnough())
+ {
+ LL_DEBUGS("LLMediaDataClient") << "Not fetching " << *request << ": not interesting enough" << LL_ENDL;
+ break;
+ }
- if(request->getRetryCount() < mMaxNumRetries)
+ // Finally, try to send the HTTP message to the cap url
+ std::string url = request->getCapability();
+ bool maybe_retry = false;
+ if (!url.empty())
{
- LL_WARNS("LLMediaDataClient") << "Could not send request " << *request << " (empty cap url), will retry." << LL_ENDL;
- // Put this request back at the head of its queue, and retry next time the queue timer fires.
- request->incRetryCount();
- pushBack(request);
+ const LLSD &sd_payload = request->getPayload();
+ LL_INFOS("LLMediaDataClient") << "Sending request for " << *request << LL_ENDL;
+
+ // Call the subclass for creating the responder
+ LLHTTPClient::post(url, sd_payload, createResponder(request));
}
- else
+ else {
+ LL_INFOS("LLMediaDataClient") << "NOT Sending request for " << *request << ": empty cap url!" << LL_ENDL;
+ maybe_retry = true;
+ }
+
+ bool exceeded_retries = request->getRetryCount() > mMaxNumRetries;
+ if (maybe_retry && ! exceeded_retries) // Try N times before giving up
{
- // This request has exceeded its maxumim retry count. It will be dropped.
- LL_WARNS("LLMediaDataClient") << "Could not send request " << *request << " for " << mMaxNumRetries << " tries, dropping request." << LL_ENDL;
+ // We got an empty cap, but in that case we will retry again next
+ // timer fire.
+ request->incRetryCount();
}
+ else {
+ if (exceeded_retries)
+ {
+ LL_WARNS("LLMediaDataClient") << "Could not send request " << *request << " for "
+ << mMaxNumRetries << " tries...popping object id " << object->getID() << LL_ENDL;
+ // XXX Should we bring up a warning dialog??
+ }
+
+ queue_p->pop_front();
+
+ if (! mCurrentQueueIsTheSortedQueue) {
+ // Round robin
+ request->markSent(true);
+ mRoundRobinQueue.push_back(request);
+ }
+ }
+
+ // end of quick loop -- any cases where we want to loop will use 'continue' to jump back to the start.
+ break;
+ }
+
+ swapCurrentQueue();
+}
+void LLMediaDataClient::swapCurrentQueue()
+{
+ // Swap
+ mCurrentQueueIsTheSortedQueue = !mCurrentQueueIsTheSortedQueue;
+ // If its empty, swap back
+ if (getCurrentQueue()->empty())
+ {
+ mCurrentQueueIsTheSortedQueue = !mCurrentQueueIsTheSortedQueue;
}
}
+LLMediaDataClient::request_queue_t *LLMediaDataClient::getCurrentQueue()
+{
+ return (mCurrentQueueIsTheSortedQueue) ? &mSortedQueue : &mRoundRobinQueue;
+}
// dump the queue
std::ostream& operator<<(std::ostream &s, const LLMediaDataClient::request_queue_t &q)
@@ -348,7 +396,7 @@ std::ostream& operator<<(std::ostream &s, const LLMediaDataClient::request_queue
LLMediaDataClient::request_queue_t::const_iterator end = q.end();
while (iter != end)
{
- s << "\t" << i << "]: " << (*iter)->getID().asString() << "(" << (*iter)->getObject()->getMediaInterest() << ")";
+ s << "\t" << i << "]: " << (*iter)->getObject()->getID().asString() << "(" << (*iter)->getObject()->getMediaInterest() << ")";
iter++;
i++;
}
@@ -368,24 +416,18 @@ LLMediaDataClient::QueueTimer::QueueTimer(F32 time, LLMediaDataClient *mdc)
mMDC->setIsRunning(true);
}
+LLMediaDataClient::QueueTimer::~QueueTimer()
+{
+ LL_DEBUGS("LLMediaDataClient") << "~QueueTimer" << LL_ENDL;
+ mMDC->setIsRunning(false);
+ mMDC = NULL;
+}
+
// virtual
BOOL LLMediaDataClient::QueueTimer::tick()
{
- BOOL result = TRUE;
-
- if (!mMDC.isNull())
- {
- result = mMDC->processQueueTimer();
-
- if(result)
- {
- // This timer won't fire again.
- mMDC->setIsRunning(false);
- mMDC = NULL;
- }
- }
-
- return result;
+ if (mMDC.isNull()) return TRUE;
+ return mMDC->processQueueTimer();
}
@@ -395,30 +437,29 @@ BOOL LLMediaDataClient::QueueTimer::tick()
//
//////////////////////////////////////////////////////////////////////////////////////
-LLMediaDataClient::RetryTimer::RetryTimer(F32 time, request_ptr_t request)
-: LLEventTimer(time), mRequest(request)
+LLMediaDataClient::Responder::RetryTimer::RetryTimer(F32 time, Responder *mdr)
+: LLEventTimer(time), mResponder(mdr)
{
- mRequest->startTracking();
}
-// virtual
-BOOL LLMediaDataClient::RetryTimer::tick()
+// virtual
+LLMediaDataClient::Responder::RetryTimer::~RetryTimer()
{
- mRequest->stopTracking();
-
- if(mRequest->isDead())
- {
- LL_INFOS("LLMediaDataClient") << "RetryTimer fired for dead request: " << *mRequest << ", aborting." << LL_ENDL;
- }
- else
- {
- LL_INFOS("LLMediaDataClient") << "RetryTimer fired for: " << *mRequest << ", retrying." << LL_ENDL;
- mRequest->reEnqueue();
- }
+ LL_DEBUGS("LLMediaDataClient") << "~RetryTimer" << *(mResponder->getRequest()) << LL_ENDL;
- // Release the ref to the request.
- mRequest = NULL;
+ // XXX This is weird: Instead of doing the work in tick() (which re-schedules
+ // a timer, which might be risky), do it here, in the destructor. Yes, it is very odd.
+ // Instead of retrying, we just put the request back onto the queue
+ LL_INFOS("LLMediaDataClient") << "RetryTimer fired for: " << *(mResponder->getRequest()) << " retrying" << LL_ENDL;
+ mResponder->getRequest()->reEnqueue();
+
+ // Release the ref to the responder.
+ mResponder = NULL;
+}
+// virtual
+BOOL LLMediaDataClient::Responder::RetryTimer::tick()
+{
// Don't fire again
return TRUE;
}
@@ -431,37 +472,56 @@ BOOL LLMediaDataClient::RetryTimer::tick()
//////////////////////////////////////////////////////////////////////////////////////
/*static*/U32 LLMediaDataClient::Request::sNum = 0;
-LLMediaDataClient::Request::Request(Type in_type,
+LLMediaDataClient::Request::Request(const char *cap_name,
+ const LLSD& sd_payload,
LLMediaDataClientObject *obj,
- LLMediaDataClient *mdc,
- S32 face)
-: mType(in_type),
+ LLMediaDataClient *mdc)
+: mCapName(cap_name),
+ mPayload(sd_payload),
mObject(obj),
mNum(++sNum),
mRetryCount(0),
mMDC(mdc),
- mScore((F64)0.0),
- mFace(face)
+ mMarkedSent(false),
+ mScore((F64)0.0)
{
- mObjectID = mObject->getID();
}
-const char *LLMediaDataClient::Request::getCapName() const
+LLMediaDataClient::Request::~Request()
{
- if(mMDC)
- return mMDC->getCapabilityName();
-
- return "";
+ LL_DEBUGS("LLMediaDataClient") << "~Request" << (*this) << LL_ENDL;
+ mMDC = NULL;
+ mObject = NULL;
}
+
std::string LLMediaDataClient::Request::getCapability() const
{
- if(mMDC)
+ return getObject()->getCapabilityUrl(getCapName());
+}
+
+// Helper function to get the "type" of request, which just pokes around to
+// discover it.
+LLMediaDataClient::Request::Type LLMediaDataClient::Request::getType() const
+{
+ if (0 == strcmp(mCapName, "ObjectMediaNavigate"))
{
- return getObject()->getCapabilityUrl(getCapName());
+ return NAVIGATE;
}
-
- return "";
+ else if (0 == strcmp(mCapName, "ObjectMedia"))
+ {
+ const std::string &verb = mPayload["verb"];
+ if (verb == "GET")
+ {
+ return GET;
+ }
+ else if (verb == "UPDATE")
+ {
+ return UPDATE;
+ }
+ }
+ llassert(false);
+ return GET;
}
const char *LLMediaDataClient::Request::getTypeAsString() const
@@ -486,30 +546,35 @@ const char *LLMediaDataClient::Request::getTypeAsString() const
}
-void LLMediaDataClient::Request::reEnqueue()
+void LLMediaDataClient::Request::reEnqueue() const
{
- if(mMDC)
- {
- mMDC->enqueue(this);
- }
+ // I sure hope this doesn't deref a bad pointer:
+ mMDC->enqueue(this);
}
F32 LLMediaDataClient::Request::getRetryTimerDelay() const
{
- if(mMDC)
- return mMDC->mRetryTimerDelay;
-
- return 0.0f;
+ return (mMDC == NULL) ? LLMediaDataClient::UNAVAILABLE_RETRY_TIMER_DELAY :
+ mMDC->mRetryTimerDelay;
}
U32 LLMediaDataClient::Request::getMaxNumRetries() const
{
- if(mMDC)
- return mMDC->mMaxNumRetries;
-
- return 0;
+ return (mMDC == NULL) ? LLMediaDataClient::MAX_RETRIES : mMDC->mMaxNumRetries;
}
+void LLMediaDataClient::Request::markSent(bool flag)
+{
+ if (mMarkedSent != flag)
+ {
+ mMarkedSent = flag;
+ if (!mMarkedSent)
+ {
+ mNum = ++sNum;
+ }
+ }
+}
+
void LLMediaDataClient::Request::updateScore()
{
F64 tmp = mObject->getMediaInterest();
@@ -520,37 +585,15 @@ void LLMediaDataClient::Request::updateScore()
}
}
-void LLMediaDataClient::Request::markDead()
-{
- mMDC = NULL;
-}
-
-bool LLMediaDataClient::Request::isDead()
-{
- return ((mMDC == NULL) || mObject->isDead());
-}
-
-void LLMediaDataClient::Request::startTracking()
-{
- if(mMDC)
- mMDC->trackRequest(this);
-}
-
-void LLMediaDataClient::Request::stopTracking()
-{
- if(mMDC)
- mMDC->stopTrackingRequest(this);
-}
-
std::ostream& operator<<(std::ostream &s, const LLMediaDataClient::Request &r)
{
s << "request: num=" << r.getNum()
<< " type=" << r.getTypeAsString()
- << " ID=" << r.getID()
- << " face=" << r.getFace()
+ << " ID=" << r.getObject()->getID()
<< " #retries=" << r.getRetryCount();
return s;
}
+
//////////////////////////////////////////////////////////////////////////////////////
//
@@ -563,17 +606,15 @@ LLMediaDataClient::Responder::Responder(const request_ptr_t &request)
{
}
+LLMediaDataClient::Responder::~Responder()
+{
+ LL_DEBUGS("LLMediaDataClient") << "~Responder" << *(getRequest()) << LL_ENDL;
+ mRequest = NULL;
+}
+
/*virtual*/
void LLMediaDataClient::Responder::error(U32 status, const std::string& reason)
{
- mRequest->stopTracking();
-
- if(mRequest->isDead())
- {
- LL_WARNS("LLMediaDataClient") << "dead request " << *mRequest << LL_ENDL;
- return;
- }
-
if (status == HTTP_SERVICE_UNAVAILABLE)
{
F32 retry_timeout = mRequest->getRetryTimerDelay();
@@ -586,16 +627,14 @@ void LLMediaDataClient::Responder::error(U32 status, const std::string& reason)
// Start timer (instances are automagically tracked by
// InstanceTracker<> and LLEventTimer)
- new RetryTimer(F32(retry_timeout/*secs*/), mRequest);
+ new RetryTimer(F32(retry_timeout/*secs*/), this);
}
- else
- {
+ else {
LL_INFOS("LLMediaDataClient") << *mRequest << " got SERVICE_UNAVAILABLE...retry count "
<< mRequest->getRetryCount() << " exceeds " << mRequest->getMaxNumRetries() << ", not retrying" << LL_ENDL;
}
}
- else
- {
+ else {
std::string msg = boost::lexical_cast<std::string>(status) + ": " + reason;
LL_WARNS("LLMediaDataClient") << *mRequest << " http error(" << msg << ")" << LL_ENDL;
}
@@ -604,14 +643,6 @@ void LLMediaDataClient::Responder::error(U32 status, const std::string& reason)
/*virtual*/
void LLMediaDataClient::Responder::result(const LLSD& content)
{
- mRequest->stopTracking();
-
- if(mRequest->isDead())
- {
- LL_WARNS("LLMediaDataClient") << "dead request " << *mRequest << LL_ENDL;
- return;
- }
-
LL_DEBUGS("LLMediaDataClientResponse") << *mRequest << " result : " << ll_print_sd(content) << LL_ENDL;
}
@@ -622,10 +653,9 @@ void LLMediaDataClient::Responder::result(const LLSD& content)
//
//////////////////////////////////////////////////////////////////////////////////////
-void LLObjectMediaDataClient::fetchMedia(LLMediaDataClientObject *object)
+LLMediaDataClient::Responder *LLObjectMediaDataClient::createResponder(const request_ptr_t &request) const
{
- // Create a get request and put it in the queue.
- enqueue(new RequestGet(object, this));
+ return new LLObjectMediaDataClient::Responder(request);
}
const char *LLObjectMediaDataClient::getCapabilityName() const
@@ -633,286 +663,70 @@ const char *LLObjectMediaDataClient::getCapabilityName() const
return "ObjectMedia";
}
-LLObjectMediaDataClient::request_queue_t *LLObjectMediaDataClient::getQueue()
-{
- return (mCurrentQueueIsTheSortedQueue) ? &mQueue : &mRoundRobinQueue;
-}
-
-void LLObjectMediaDataClient::sortQueue()
-{
- if(!mQueue.empty())
- {
- // score all elements in the sorted queue.
- for(request_queue_t::iterator iter = mQueue.begin(); iter != mQueue.end(); iter++)
- {
- (*iter)->updateScore();
- }
-
- // Re-sort the list...
- mQueue.sort(compareRequestScores);
-
- // ...then cull items over the max
- U32 size = mQueue.size();
- if (size > mMaxSortedQueueSize)
- {
- U32 num_to_cull = (size - mMaxSortedQueueSize);
- LL_INFOS_ONCE("LLMediaDataClient") << "sorted queue MAXED OUT! Culling "
- << num_to_cull << " items" << LL_ENDL;
- while (num_to_cull-- > 0)
- {
- mQueue.back()->markDead();
- mQueue.pop_back();
- }
- }
- }
-
-}
-
-// static
-bool LLObjectMediaDataClient::compareRequestScores(const request_ptr_t &o1, const request_ptr_t &o2)
-{
- if (o2.isNull()) return true;
- if (o1.isNull()) return false;
- return ( o1->getScore() > o2->getScore() );
-}
-
-void LLObjectMediaDataClient::enqueue(Request *request)
-{
- if(request->isDead())
- {
- LL_DEBUGS("LLMediaDataClient") << "not queueing dead request " << *request << LL_ENDL;
- return;
- }
-
- // Invariants:
- // new requests always go into the sorted queue.
- //
-
- bool is_new = request->isNew();
-
- if(!is_new && (request->getType() == Request::GET))
- {
- // For GET requests that are not new, if a matching request is already in the round robin queue,
- // in flight, or being retried, leave it at its current position.
- request_queue_t::iterator iter = find_matching_request(mRoundRobinQueue, request->getID(), Request::GET);
- request_set_t::iterator iter2 = find_matching_request(mUnQueuedRequests, request->getID(), Request::GET);
-
- if( (iter != mRoundRobinQueue.end()) || (iter2 != mUnQueuedRequests.end()) )
- {
- LL_DEBUGS("LLMediaDataClient") << "ALREADY THERE: NOT Queuing request for " << *request << LL_ENDL;
-
- return;
- }
- }
-
- // TODO: should an UPDATE cause pending GET requests for the same object to be removed from the queue?
- // IF the update will cause an object update message to be sent out at some point in the future, it probably should.
-
- // Remove any existing requests of this type for this object
- remove_matching_requests(mQueue, request->getID(), request->getType());
- remove_matching_requests(mRoundRobinQueue, request->getID(), request->getType());
- remove_matching_requests(mUnQueuedRequests, request->getID(), request->getType());
-
- if (is_new)
- {
- LL_DEBUGS("LLMediaDataClient") << "Queuing SORTED request for " << *request << LL_ENDL;
-
- mQueue.push_back(request);
-
- LL_DEBUGS("LLMediaDataClientQueue") << "SORTED queue:" << mQueue << LL_ENDL;
- }
- else
- {
- if (mRoundRobinQueue.size() > mMaxRoundRobinQueueSize)
- {
- LL_INFOS_ONCE("LLMediaDataClient") << "RR QUEUE MAXED OUT!!!" << LL_ENDL;
- LL_DEBUGS("LLMediaDataClient") << "Not queuing " << *request << LL_ENDL;
- return;
- }
-
- LL_DEBUGS("LLMediaDataClient") << "Queuing RR request for " << *request << LL_ENDL;
- // Push the request on the pending queue
- mRoundRobinQueue.push_back(request);
-
- LL_DEBUGS("LLMediaDataClientQueue") << "RR queue:" << mRoundRobinQueue << LL_ENDL;
- }
- // Start the timer if not already running
- startQueueTimer();
-}
-
-bool LLObjectMediaDataClient::canServiceRequest(request_ptr_t request)
-{
- if(mCurrentQueueIsTheSortedQueue)
- {
- if(!request->getObject()->isInterestingEnough())
- {
- LL_DEBUGS("LLMediaDataClient") << "Not fetching " << *request << ": not interesting enough" << LL_ENDL;
- return false;
- }
- }
-
- return true;
-};
-
-void LLObjectMediaDataClient::swapCurrentQueue()
-{
- // Swap
- mCurrentQueueIsTheSortedQueue = !mCurrentQueueIsTheSortedQueue;
- // If its empty, swap back
- if (getQueue()->empty())
- {
- mCurrentQueueIsTheSortedQueue = !mCurrentQueueIsTheSortedQueue;
- }
-}
-
-bool LLObjectMediaDataClient::isEmpty() const
-{
- return mQueue.empty() && mRoundRobinQueue.empty();
-}
-
-bool LLObjectMediaDataClient::isInQueue(const LLMediaDataClientObject::ptr_t &object)
-{
- // First, call parent impl.
- if(LLMediaDataClient::isInQueue(object))
- return true;
-
- if(find_matching_request(mRoundRobinQueue, object->getID()) != mRoundRobinQueue.end())
- return true;
-
- return false;
-}
-
-void LLObjectMediaDataClient::removeFromQueue(const LLMediaDataClientObject::ptr_t &object)
-{
- // First, call parent impl.
- LLMediaDataClient::removeFromQueue(object);
-
- remove_matching_requests(mRoundRobinQueue, object->getID());
-}
-
-bool LLObjectMediaDataClient::processQueueTimer()
-{
- if(isEmpty())
- return true;
-
- LL_DEBUGS("LLMediaDataClient") << "started, SORTED queue size is: " << mQueue.size()
- << ", RR queue size is: " << mRoundRobinQueue.size() << LL_ENDL;
- LL_DEBUGS("LLMediaDataClientQueue") << " SORTED queue is: " << mQueue << LL_ENDL;
- LL_DEBUGS("LLMediaDataClientQueue") << " RR queue is: " << mRoundRobinQueue << LL_ENDL;
-
-// purgeDeadRequests();
-
- sortQueue();
-
- LL_DEBUGS("LLMediaDataClientQueue") << "after sort, SORTED queue is: " << mQueue << LL_ENDL;
-
- serviceQueue();
-
- swapCurrentQueue();
-
- LL_DEBUGS("LLMediaDataClient") << "finished, SORTED queue size is: " << mQueue.size()
- << ", RR queue size is: " << mRoundRobinQueue.size() << LL_ENDL;
- LL_DEBUGS("LLMediaDataClientQueue") << " SORTED queue is: " << mQueue << LL_ENDL;
- LL_DEBUGS("LLMediaDataClientQueue") << " RR queue is: " << mRoundRobinQueue << LL_ENDL;
-
- return isEmpty();
-}
-
-LLObjectMediaDataClient::RequestGet::RequestGet(LLMediaDataClientObject *obj, LLMediaDataClient *mdc):
- LLMediaDataClient::Request(LLMediaDataClient::Request::GET, obj, mdc)
-{
-}
-
-LLSD LLObjectMediaDataClient::RequestGet::getPayload() const
-{
- LLSD result;
- result["verb"] = "GET";
- result[LLTextureEntry::OBJECT_ID_KEY] = mObject->getID();
-
- return result;
-}
-
-LLMediaDataClient::Responder *LLObjectMediaDataClient::RequestGet::createResponder()
+void LLObjectMediaDataClient::fetchMedia(LLMediaDataClientObject *object)
{
- return new LLObjectMediaDataClient::Responder(this);
+ LLSD sd_payload;
+ sd_payload["verb"] = "GET";
+ sd_payload[LLTextureEntry::OBJECT_ID_KEY] = object->getID();
+ request(object, sd_payload);
}
-
void LLObjectMediaDataClient::updateMedia(LLMediaDataClientObject *object)
{
- // Create an update request and put it in the queue.
- enqueue(new RequestUpdate(object, this));
-}
-
-LLObjectMediaDataClient::RequestUpdate::RequestUpdate(LLMediaDataClientObject *obj, LLMediaDataClient *mdc):
- LLMediaDataClient::Request(LLMediaDataClient::Request::UPDATE, obj, mdc)
-{
-}
-
-LLSD LLObjectMediaDataClient::RequestUpdate::getPayload() const
-{
- LLSD result;
- result["verb"] = "UPDATE";
- result[LLTextureEntry::OBJECT_ID_KEY] = mObject->getID();
-
+ LLSD sd_payload;
+ sd_payload["verb"] = "UPDATE";
+ sd_payload[LLTextureEntry::OBJECT_ID_KEY] = object->getID();
LLSD object_media_data;
int i = 0;
- int end = mObject->getMediaDataCount();
+ int end = object->getMediaDataCount();
for ( ; i < end ; ++i)
{
- object_media_data.append(mObject->getMediaDataLLSD(i));
+ object_media_data.append(object->getMediaDataLLSD(i));
}
+ sd_payload[LLTextureEntry::OBJECT_MEDIA_DATA_KEY] = object_media_data;
+
+ LL_DEBUGS("LLMediaDataClient") << "update media data: " << object->getID() << " " << ll_print_sd(sd_payload) << LL_ENDL;
- result[LLTextureEntry::OBJECT_MEDIA_DATA_KEY] = object_media_data;
-
- return result;
+ request(object, sd_payload);
}
-LLMediaDataClient::Responder *LLObjectMediaDataClient::RequestUpdate::createResponder()
-{
- // This just uses the base class's responder.
- return new LLMediaDataClient::Responder(this);
-}
-
-
/*virtual*/
void LLObjectMediaDataClient::Responder::result(const LLSD& content)
{
- getRequest()->stopTracking();
-
- if(getRequest()->isDead())
+ const LLMediaDataClient::Request::Type type = getRequest()->getType();
+ llassert(type == LLMediaDataClient::Request::GET || type == LLMediaDataClient::Request::UPDATE)
+ if (type == LLMediaDataClient::Request::GET)
{
- LL_WARNS("LLMediaDataClient") << "dead request " << *(getRequest()) << LL_ENDL;
- return;
- }
-
- // This responder is only used for GET requests, not UPDATE.
-
- LL_DEBUGS("LLMediaDataClientResponse") << *(getRequest()) << " GET returned: " << ll_print_sd(content) << LL_ENDL;
-
- // Look for an error
- if (content.has("error"))
- {
- const LLSD &error = content["error"];
- LL_WARNS("LLMediaDataClient") << *(getRequest()) << " Error getting media data for object: code=" <<
- error["code"].asString() << ": " << error["message"].asString() << LL_ENDL;
+ LL_DEBUGS("LLMediaDataClientResponse") << *(getRequest()) << " GET returned: " << ll_print_sd(content) << LL_ENDL;
- // XXX Warn user?
- }
- else
- {
- // Check the data
- const LLUUID &object_id = content[LLTextureEntry::OBJECT_ID_KEY];
- if (object_id != getRequest()->getObject()->getID())
+ // Look for an error
+ if (content.has("error"))
{
- // NOT good, wrong object id!!
- LL_WARNS("LLMediaDataClient") << *(getRequest()) << " DROPPING response with wrong object id (" << object_id << ")" << LL_ENDL;
- return;
+ const LLSD &error = content["error"];
+ LL_WARNS("LLMediaDataClient") << *(getRequest()) << " Error getting media data for object: code=" <<
+ error["code"].asString() << ": " << error["message"].asString() << LL_ENDL;
+
+ // XXX Warn user?
}
-
- // Otherwise, update with object media data
- getRequest()->getObject()->updateObjectMediaData(content[LLTextureEntry::OBJECT_MEDIA_DATA_KEY],
- content[LLTextureEntry::MEDIA_VERSION_KEY]);
+ else {
+ // Check the data
+ const LLUUID &object_id = content[LLTextureEntry::OBJECT_ID_KEY];
+ if (object_id != getRequest()->getObject()->getID())
+ {
+ // NOT good, wrong object id!!
+ LL_WARNS("LLMediaDataClient") << *(getRequest()) << " DROPPING response with wrong object id (" << object_id << ")" << LL_ENDL;
+ return;
+ }
+
+ // Otherwise, update with object media data
+ getRequest()->getObject()->updateObjectMediaData(content[LLTextureEntry::OBJECT_MEDIA_DATA_KEY],
+ content[LLTextureEntry::MEDIA_VERSION_KEY]);
+ }
+ }
+ else if (type == LLMediaDataClient::Request::UPDATE)
+ {
+ // just do what our superclass does
+ LLMediaDataClient::Responder::result(content);
}
}
@@ -922,105 +736,38 @@ void LLObjectMediaDataClient::Responder::result(const LLSD& content)
// Subclass of LLMediaDataClient for the ObjectMediaNavigate cap
//
//////////////////////////////////////////////////////////////////////////////////////
-
-const char *LLObjectMediaNavigateClient::getCapabilityName() const
+LLMediaDataClient::Responder *LLObjectMediaNavigateClient::createResponder(const request_ptr_t &request) const
{
- return "ObjectMediaNavigate";
+ return new LLObjectMediaNavigateClient::Responder(request);
}
-void LLObjectMediaNavigateClient::enqueue(Request *request)
+const char *LLObjectMediaNavigateClient::getCapabilityName() const
{
- if(request->isDead())
- {
- LL_DEBUGS("LLMediaDataClient") << "not queueing dead request " << *request << LL_ENDL;
- return;
- }
-
- // If there's already a matching request in the queue, remove it.
- request_queue_t::iterator iter = find_matching_request(mQueue, request);
- if(iter != mQueue.end())
- {
- LL_DEBUGS("LLMediaDataClient") << "removing matching queued request " << (**iter) << LL_ENDL;
- mQueue.erase(iter);
- }
- else
- {
- request_set_t::iterator set_iter = find_matching_request(mUnQueuedRequests, request);
- if(set_iter != mUnQueuedRequests.end())
- {
- LL_DEBUGS("LLMediaDataClient") << "removing matching unqueued request " << (**set_iter) << LL_ENDL;
- mUnQueuedRequests.erase(set_iter);
- }
- }
-
-#if 0
- // Sadly, this doesn't work. It ends up creating a race condition when the user navigates and then hits the "back" button
- // where the navigate-back appears to be spurious and doesn't get broadcast.
- if(request->getObject()->isCurrentMediaUrl(request->getFace(), request->getURL()))
- {
- // This navigate request is trying to send the face to the current URL. Drop it.
- LL_DEBUGS("LLMediaDataClient") << "dropping spurious request " << (*request) << LL_ENDL;
- }
- else
-#endif
- {
- LL_DEBUGS("LLMediaDataClient") << "queueing new request " << (*request) << LL_ENDL;
- mQueue.push_back(request);
-
- // Start the timer if not already running
- startQueueTimer();
- }
+ return "ObjectMediaNavigate";
}
void LLObjectMediaNavigateClient::navigate(LLMediaDataClientObject *object, U8 texture_index, const std::string &url)
{
-
-// LL_INFOS("LLMediaDataClient") << "navigate() initiated: " << ll_print_sd(sd_payload) << LL_ENDL;
+ LLSD sd_payload;
+ sd_payload[LLTextureEntry::OBJECT_ID_KEY] = object->getID();
+ sd_payload[LLMediaEntry::CURRENT_URL_KEY] = url;
+ sd_payload[LLTextureEntry::TEXTURE_INDEX_KEY] = (LLSD::Integer)texture_index;
- // Create a get request and put it in the queue.
- enqueue(new RequestNavigate(object, this, texture_index, url));
-}
-
-LLObjectMediaNavigateClient::RequestNavigate::RequestNavigate(LLMediaDataClientObject *obj, LLMediaDataClient *mdc, U8 texture_index, const std::string &url):
- LLMediaDataClient::Request(LLMediaDataClient::Request::NAVIGATE, obj, mdc, (S32)texture_index),
- mURL(url)
-{
-}
-
-LLSD LLObjectMediaNavigateClient::RequestNavigate::getPayload() const
-{
- LLSD result;
- result[LLTextureEntry::OBJECT_ID_KEY] = getID();
- result[LLMediaEntry::CURRENT_URL_KEY] = mURL;
- result[LLTextureEntry::TEXTURE_INDEX_KEY] = (LLSD::Integer)getFace();
+ LL_INFOS("LLMediaDataClient") << "navigate() initiated: " << ll_print_sd(sd_payload) << LL_ENDL;
- return result;
-}
-
-LLMediaDataClient::Responder *LLObjectMediaNavigateClient::RequestNavigate::createResponder()
-{
- return new LLObjectMediaNavigateClient::Responder(this);
+ request(object, sd_payload);
}
/*virtual*/
void LLObjectMediaNavigateClient::Responder::error(U32 status, const std::string& reason)
{
- getRequest()->stopTracking();
-
- if(getRequest()->isDead())
- {
- LL_WARNS("LLMediaDataClient") << "dead request " << *(getRequest()) << LL_ENDL;
- return;
- }
-
// Bounce back (unless HTTP_SERVICE_UNAVAILABLE, in which case call base
// class
if (status == HTTP_SERVICE_UNAVAILABLE)
{
LLMediaDataClient::Responder::error(status, reason);
}
- else
- {
+ else {
// bounce the face back
LL_WARNS("LLMediaDataClient") << *(getRequest()) << " Error navigating: http code=" << status << LL_ENDL;
const LLSD &payload = getRequest()->getPayload();
@@ -1032,14 +779,6 @@ void LLObjectMediaNavigateClient::Responder::error(U32 status, const std::string
/*virtual*/
void LLObjectMediaNavigateClient::Responder::result(const LLSD& content)
{
- getRequest()->stopTracking();
-
- if(getRequest()->isDead())
- {
- LL_WARNS("LLMediaDataClient") << "dead request " << *(getRequest()) << LL_ENDL;
- return;
- }
-
LL_INFOS("LLMediaDataClient") << *(getRequest()) << " NAVIGATE returned " << ll_print_sd(content) << LL_ENDL;
if (content.has("error"))
@@ -1054,17 +793,14 @@ void LLObjectMediaNavigateClient::Responder::result(const LLSD& content)
// bounce the face back
getRequest()->getObject()->mediaNavigateBounceBack((LLSD::Integer)payload[LLTextureEntry::TEXTURE_INDEX_KEY]);
}
- else
- {
+ else {
LL_WARNS("LLMediaDataClient") << *(getRequest()) << " Error navigating: code=" <<
error["code"].asString() << ": " << error["message"].asString() << LL_ENDL;
}
-
// XXX Warn user?
}
- else
- {
- // No action required.
- LL_DEBUGS("LLMediaDataClientResponse") << *(getRequest()) << " result : " << ll_print_sd(content) << LL_ENDL;
+ else {
+ // just do what our superclass does
+ LLMediaDataClient::Responder::result(content);
}
}
diff --git a/indra/newview/llmediadataclient.h b/indra/newview/llmediadataclient.h
index ab90915c55..69579c57fd 100644
--- a/indra/newview/llmediadataclient.h
+++ b/indra/newview/llmediadataclient.h
@@ -28,7 +28,7 @@
#define LL_LLMEDIADATACLIENT_H
#include "llhttpclient.h"
-#include <set>
+#include <queue>
#include "llrefcount.h"
#include "llpointer.h"
#include "lleventtimer.h"
@@ -42,8 +42,6 @@ public:
virtual U8 getMediaDataCount() const = 0;
// Get the media data at index, as an LLSD
virtual LLSD getMediaDataLLSD(U8 index) const = 0;
- // Return true if the current URL for the face in the media data matches the specified URL.
- virtual bool isCurrentMediaUrl(U8 index, const std::string &url) const = 0;
// Get this object's UUID
virtual LLUUID getID() const = 0;
// Navigate back to previous URL
@@ -69,7 +67,6 @@ public:
typedef LLPointer<LLMediaDataClientObject> ptr_t;
};
-
// This object creates a priority queue for requests.
// Abstracts the Cap URL, the request, and the responder
class LLMediaDataClient : public LLRefCount
@@ -90,37 +87,31 @@ public:
U32 max_sorted_queue_size = MAX_SORTED_QUEUE_SIZE,
U32 max_round_robin_queue_size = MAX_ROUND_ROBIN_QUEUE_SIZE);
+ // Make the request
+ void request(const LLMediaDataClientObject::ptr_t &object, const LLSD &payload);
+
F32 getRetryTimerDelay() const { return mRetryTimerDelay; }
// Returns true iff the queue is empty
- virtual bool isEmpty() const;
+ bool isEmpty() const;
// Returns true iff the given object is in the queue
- virtual bool isInQueue(const LLMediaDataClientObject::ptr_t &object);
+ bool isInQueue(const LLMediaDataClientObject::ptr_t &object);
// Remove the given object from the queue. Returns true iff the given object is removed.
- virtual void removeFromQueue(const LLMediaDataClientObject::ptr_t &object);
+ bool removeFromQueue(const LLMediaDataClientObject::ptr_t &object);
// Called only by the Queue timer and tests (potentially)
- virtual bool processQueueTimer();
+ bool processQueueTimer();
protected:
// Destructor
virtual ~LLMediaDataClient(); // use unref
- class Responder;
-
- // Request (pure virtual base class for requests in the queue)
+ // Request
class Request : public LLRefCount
{
public:
- // Subclasses must implement this to build a payload for their request type.
- virtual LLSD getPayload() const = 0;
- // and must create the correct type of responder.
- virtual Responder *createResponder() = 0;
-
- virtual std::string getURL() { return ""; }
-
enum Type {
GET,
UPDATE,
@@ -128,61 +119,50 @@ protected:
ANY
};
- protected:
- // The only way to create one of these is through a subclass.
- Request(Type in_type, LLMediaDataClientObject *obj, LLMediaDataClient *mdc, S32 face = -1);
- public:
+ Request(const char *cap_name, const LLSD& sd_payload, LLMediaDataClientObject *obj, LLMediaDataClient *mdc);
+ const char *getCapName() const { return mCapName; }
+ const LLSD &getPayload() const { return mPayload; }
LLMediaDataClientObject *getObject() const { return mObject; }
U32 getNum() const { return mNum; }
+
U32 getRetryCount() const { return mRetryCount; }
void incRetryCount() { mRetryCount++; }
- Type getType() const { return mType; }
- F64 getScore() const { return mScore; }
// Note: may return empty string!
std::string getCapability() const;
- const char *getCapName() const;
+
+ Type getType() const;
const char *getTypeAsString() const;
// Re-enqueue thyself
- void reEnqueue();
+ void reEnqueue() const;
F32 getRetryTimerDelay() const;
U32 getMaxNumRetries() const;
- bool isObjectValid() const { return mObject.notNull() && (!mObject->isDead()); }
- bool isNew() const { return isObjectValid() && mObject->isNew(); }
+ bool isNew() const { return mObject.notNull() ? mObject->isNew() : false; }
+ void markSent(bool flag);
+ bool isMarkedSent() const { return mMarkedSent; }
void updateScore();
+ F64 getScore() const { return mScore; }
- void markDead();
- bool isDead();
- void startTracking();
- void stopTracking();
-
+ public:
friend std::ostream& operator<<(std::ostream &s, const Request &q);
- const LLUUID &getID() const { return mObjectID; }
- S32 getFace() const { return mFace; }
-
- bool isMatch (const Request* other, Type match_type = ANY) const
- {
- return ((match_type == ANY) || (mType == other->mType)) &&
- (mFace == other->mFace) &&
- (mObjectID == other->mObjectID);
- }
- protected:
- LLMediaDataClientObject::ptr_t mObject;
+ protected:
+ virtual ~Request(); // use unref();
+
private:
- Type mType;
+ const char *mCapName;
+ LLSD mPayload;
+ LLMediaDataClientObject::ptr_t mObject;
// Simple tracking
U32 mNum;
static U32 sNum;
U32 mRetryCount;
F64 mScore;
-
- LLUUID mObjectID;
- S32 mFace;
+ bool mMarkedSent;
// Back pointer to the MDC...not a ref!
LLMediaDataClient *mMDC;
@@ -199,66 +179,48 @@ protected:
//If we get back a normal response, handle it here. Default just logs it.
virtual void result(const LLSD& content);
- request_ptr_t &getRequest() { return mRequest; }
+ const request_ptr_t &getRequest() const { return mRequest; }
+ protected:
+ virtual ~Responder();
+
private:
- request_ptr_t mRequest;
- };
- class RetryTimer : public LLEventTimer
- {
- public:
- RetryTimer(F32 time, request_ptr_t);
- virtual BOOL tick();
- private:
- // back-pointer
+ class RetryTimer : public LLEventTimer
+ {
+ public:
+ RetryTimer(F32 time, Responder *);
+ virtual ~RetryTimer();
+ virtual BOOL tick();
+ private:
+ // back-pointer
+ boost::intrusive_ptr<Responder> mResponder;
+ };
+
request_ptr_t mRequest;
};
-
protected:
- typedef std::list<request_ptr_t> request_queue_t;
- typedef std::set<request_ptr_t> request_set_t;
+ // Subclasses must override this factory method to return a new responder
+ virtual Responder *createResponder(const request_ptr_t &request) const = 0;
+
// Subclasses must override to return a cap name
virtual const char *getCapabilityName() const = 0;
-
- // Puts the request into a queue, appropriately handling duplicates, etc.
- virtual void enqueue(Request*) = 0;
+ virtual void sortQueue();
virtual void serviceQueue();
-
- virtual request_queue_t *getQueue() { return &mQueue; };
-
- // Gets the next request, removing it from the queue
- virtual request_ptr_t dequeue();
-
- virtual bool canServiceRequest(request_ptr_t request) { return true; };
-
- // Returns a request to the head of the queue (should only be used for requests that came from dequeue
- virtual void pushBack(request_ptr_t request);
-
- void trackRequest(request_ptr_t request);
- void stopTrackingRequest(request_ptr_t request);
-
- request_queue_t mQueue;
-
- const F32 mQueueTimerDelay;
- const F32 mRetryTimerDelay;
- const U32 mMaxNumRetries;
- const U32 mMaxSortedQueueSize;
- const U32 mMaxRoundRobinQueueSize;
- // Set for keeping track of requests that aren't in either queue. This includes:
- // Requests that have been sent and are awaiting a response (pointer held by the Responder)
- // Requests that are waiting for their retry timers to fire (pointer held by the retry timer)
- request_set_t mUnQueuedRequests;
-
- void startQueueTimer();
- void stopQueueTimer();
-
private:
+ typedef std::list<request_ptr_t> request_queue_t;
+
+ void enqueue(const Request*);
+
+ // Return whether the given object is/was in the queue
+ static LLMediaDataClient::request_ptr_t findOrRemove(request_queue_t &queue, const LLMediaDataClientObject::ptr_t &obj, bool remove, Request::Type type);
+ // Comparator for sorting
+ static bool compareRequests(const request_ptr_t &o1, const request_ptr_t &o2);
static F64 getObjectScore(const LLMediaDataClientObject::ptr_t &obj);
friend std::ostream& operator<<(std::ostream &s, const Request &q);
@@ -269,76 +231,57 @@ private:
public:
QueueTimer(F32 time, LLMediaDataClient *mdc);
virtual BOOL tick();
+ protected:
+ virtual ~QueueTimer();
private:
// back-pointer
LLPointer<LLMediaDataClient> mMDC;
};
+ void startQueueTimer();
+ void stopQueueTimer();
void setIsRunning(bool val) { mQueueTimerIsRunning = val; }
-
+
+ void swapCurrentQueue();
+ request_queue_t *getCurrentQueue();
+
+ const F32 mQueueTimerDelay;
+ const F32 mRetryTimerDelay;
+ const U32 mMaxNumRetries;
+ const U32 mMaxSortedQueueSize;
+ const U32 mMaxRoundRobinQueueSize;
+
bool mQueueTimerIsRunning;
-
- template <typename T> friend typename T::iterator find_matching_request(T &c, const LLMediaDataClient::Request *request, LLMediaDataClient::Request::Type match_type = LLMediaDataClient::Request::ANY);
- template <typename T> friend typename T::iterator find_matching_request(T &c, const LLUUID &id, LLMediaDataClient::Request::Type match_type = LLMediaDataClient::Request::ANY);
- template <typename T> friend void remove_matching_requests(T &c, const LLUUID &id, LLMediaDataClient::Request::Type match_type = LLMediaDataClient::Request::ANY);
-
+
+ request_queue_t mSortedQueue;
+ request_queue_t mRoundRobinQueue;
+ bool mCurrentQueueIsTheSortedQueue;
};
+
// MediaDataClient specific for the ObjectMedia cap
class LLObjectMediaDataClient : public LLMediaDataClient
{
public:
- LOG_CLASS(LLObjectMediaDataClient);
LLObjectMediaDataClient(F32 queue_timer_delay = QUEUE_TIMER_DELAY,
F32 retry_timer_delay = UNAVAILABLE_RETRY_TIMER_DELAY,
U32 max_retries = MAX_RETRIES,
U32 max_sorted_queue_size = MAX_SORTED_QUEUE_SIZE,
U32 max_round_robin_queue_size = MAX_ROUND_ROBIN_QUEUE_SIZE)
- : LLMediaDataClient(queue_timer_delay, retry_timer_delay, max_retries),
- mCurrentQueueIsTheSortedQueue(true)
+ : LLMediaDataClient(queue_timer_delay, retry_timer_delay, max_retries)
{}
+ virtual ~LLObjectMediaDataClient() {}
void fetchMedia(LLMediaDataClientObject *object);
void updateMedia(LLMediaDataClientObject *object);
-
- class RequestGet: public Request
- {
- public:
- RequestGet(LLMediaDataClientObject *obj, LLMediaDataClient *mdc);
- /*virtual*/ LLSD getPayload() const;
- /*virtual*/ Responder *createResponder();
- };
-
- class RequestUpdate: public Request
- {
- public:
- RequestUpdate(LLMediaDataClientObject *obj, LLMediaDataClient *mdc);
- /*virtual*/ LLSD getPayload() const;
- /*virtual*/ Responder *createResponder();
- };
-
- // Returns true iff the queue is empty
- virtual bool isEmpty() const;
-
- // Returns true iff the given object is in the queue
- virtual bool isInQueue(const LLMediaDataClientObject::ptr_t &object);
-
- // Remove the given object from the queue. Returns true iff the given object is removed.
- virtual void removeFromQueue(const LLMediaDataClientObject::ptr_t &object);
-
- virtual bool processQueueTimer();
-
- virtual bool canServiceRequest(request_ptr_t request);
-
+
protected:
+ // Subclasses must override this factory method to return a new responder
+ virtual Responder *createResponder(const request_ptr_t &request) const;
+
// Subclasses must override to return a cap name
virtual const char *getCapabilityName() const;
-
- virtual request_queue_t *getQueue();
-
- // Puts the request into the appropriate queue
- virtual void enqueue(Request*);
-
+
class Responder : public LLMediaDataClient::Responder
{
public:
@@ -346,16 +289,6 @@ protected:
: LLMediaDataClient::Responder(request) {}
virtual void result(const LLSD &content);
};
-private:
- // The Get/Update data client needs a second queue to avoid object updates starving load-ins.
- void swapCurrentQueue();
-
- request_queue_t mRoundRobinQueue;
- bool mCurrentQueueIsTheSortedQueue;
-
- // Comparator for sorting
- static bool compareRequestScores(const request_ptr_t &o1, const request_ptr_t &o2);
- void sortQueue();
};
@@ -363,7 +296,6 @@ private:
class LLObjectMediaNavigateClient : public LLMediaDataClient
{
public:
- LOG_CLASS(LLObjectMediaNavigateClient);
// NOTE: from llmediaservice.h
static const int ERROR_PERMISSION_DENIED_CODE = 8002;
@@ -374,24 +306,14 @@ public:
U32 max_round_robin_queue_size = MAX_ROUND_ROBIN_QUEUE_SIZE)
: LLMediaDataClient(queue_timer_delay, retry_timer_delay, max_retries)
{}
+ virtual ~LLObjectMediaNavigateClient() {}
void navigate(LLMediaDataClientObject *object, U8 texture_index, const std::string &url);
-
- // Puts the request into the appropriate queue
- virtual void enqueue(Request*);
-
- class RequestNavigate: public Request
- {
- public:
- RequestNavigate(LLMediaDataClientObject *obj, LLMediaDataClient *mdc, U8 texture_index, const std::string &url);
- /*virtual*/ LLSD getPayload() const;
- /*virtual*/ Responder *createResponder();
- /*virtual*/ std::string getURL() { return mURL; }
- private:
- std::string mURL;
- };
protected:
+ // Subclasses must override this factory method to return a new responder
+ virtual Responder *createResponder(const request_ptr_t &request) const;
+
// Subclasses must override to return a cap name
virtual const char *getCapabilityName() const;
diff --git a/indra/newview/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp
index 18bba6e358..e4d6a45ee8 100644
--- a/indra/newview/llnavigationbar.cpp
+++ b/indra/newview/llnavigationbar.cpp
@@ -810,9 +810,9 @@ void LLNavigationBar::showNavigationPanel(BOOL visible)
}
}
- getChildView("bg_icon")->setVisible( visible && fpVisible);
- getChildView("bg_icon_no_fav_bevel")->setVisible( visible && !fpVisible);
- getChildView("bg_icon_no_nav_bevel")->setVisible( !visible && fpVisible);
+ childSetVisible("bg_icon", visible && fpVisible);
+ childSetVisible("bg_icon_no_fav_bevel", visible && !fpVisible);
+ childSetVisible("bg_icon_no_nav_bevel", !visible && fpVisible);
}
void LLNavigationBar::showFavoritesPanel(BOOL visible)
@@ -877,9 +877,9 @@ void LLNavigationBar::showFavoritesPanel(BOOL visible)
getParent()->reshape(nbRect.getWidth(), nbRect.getHeight());
}
- getChildView("bg_icon")->setVisible( npVisible && visible);
- getChildView("bg_icon_no_fav_bevel")->setVisible( npVisible && !visible);
- getChildView("bg_icon_no_nav_bevel")->setVisible( !npVisible && visible);
+ childSetVisible("bg_icon", npVisible && visible);
+ childSetVisible("bg_icon_no_fav_bevel", npVisible && !visible);
+ childSetVisible("bg_icon_no_nav_bevel", !npVisible && visible);
fb->setVisible(visible);
}
diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp
index 4f9845d704..9bef0a6192 100644
--- a/indra/newview/llnearbychatbar.cpp
+++ b/indra/newview/llnearbychatbar.cpp
@@ -388,7 +388,7 @@ LLGestureComboList::~LLGestureComboList()
LLCtrlListInterface* LLGestureComboList::getListInterface()
{
return mList;
-}
+};
LLNearbyChatBar::LLNearbyChatBar()
: LLPanel()
diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp
index 51f9a03a9c..3eda077b87 100644
--- a/indra/newview/lloutfitslist.cpp
+++ b/indra/newview/lloutfitslist.cpp
@@ -398,12 +398,6 @@ void LLOutfitsList::onOpen(const LLSD& /*info*/)
mIsInitialized = true;
}
-
- LLAccordionCtrlTab* selected_tab = mAccordion->getSelectedTab();
- if (!selected_tab) return;
-
- // Pass focus to the selected outfit tab.
- selected_tab->showAndFocusHeader();
}
void LLOutfitsList::refreshList(const LLUUID& category_id)
@@ -1056,37 +1050,25 @@ void LLOutfitsList::onWearableItemsListRightClick(LLUICtrl* ctrl, S32 x, S32 y)
void LLOutfitsList::onCOFChanged()
{
- LLInventoryModel::cat_array_t cat_array;
- LLInventoryModel::item_array_t item_array;
-
- // Collect current COF items
- gInventory.collectDescendents(
- LLAppearanceMgr::instance().getCOF(),
- cat_array,
- item_array,
- LLInventoryModel::EXCLUDE_TRASH);
-
- uuid_vec_t vnew;
- uuid_vec_t vadded;
- uuid_vec_t vremoved;
+ LLInventoryModel::changed_items_t changed_linked_items;
- // From gInventory we get the UUIDs of links that are currently in COF.
- // These links UUIDs are not the same UUIDs that we have in each wearable items list.
- // So we collect base items' UUIDs to find them or links that point to them in wearable
- // items lists and update their worn state there.
- for (LLInventoryModel::item_array_t::const_iterator iter = item_array.begin();
- iter != item_array.end();
- ++iter)
+ const LLInventoryModel::changed_items_t& changed_items = gInventory.getChangedIDs();
+ for (LLInventoryModel::changed_items_t::const_iterator iter = changed_items.begin();
+ iter != changed_items.end();
+ ++iter)
{
- vnew.push_back((*iter)->getLinkedUUID());
+ LLViewerInventoryItem* item = gInventory.getItem(*iter);
+ if (item)
+ {
+ // From gInventory we get the UUIDs of new links added to COF
+ // or removed from COF. These links UUIDs are not the same UUIDs
+ // that we have in each wearable items list. So we collect base items
+ // UUIDs to find all items or links that point to same base items in wearable
+ // items lists and update their worn state there.
+ changed_linked_items.insert(item->getLinkedUUID());
+ }
}
- // We need to update only items that were added or removed from COF.
- LLCommonUtils::computeDifference(vnew, mCOFLinkedItems, vadded, vremoved);
-
- // Store the ids of items currently linked from COF.
- mCOFLinkedItems = vnew;
-
for (outfits_map_t::iterator iter = mOutfitsMap.begin();
iter != mOutfitsMap.end();
++iter)
@@ -1097,13 +1079,9 @@ void LLOutfitsList::onCOFChanged()
LLWearableItemsList* list = dynamic_cast<LLWearableItemsList*>(tab->getAccordionView());
if (!list) continue;
- // Append removed ids to added ids because we should update all of them.
- vadded.reserve(vadded.size() + vremoved.size());
- vadded.insert(vadded.end(), vremoved.begin(), vremoved.end());
-
// Every list updates the labels of changed items or
// the links that point to these items.
- list->updateChangedItems(vadded);
+ list->updateChangedItems(changed_linked_items);
}
}
diff --git a/indra/newview/lloutfitslist.h b/indra/newview/lloutfitslist.h
index 37b909c93e..25aeab2cb7 100644
--- a/indra/newview/lloutfitslist.h
+++ b/indra/newview/lloutfitslist.h
@@ -209,10 +209,6 @@ private:
typedef outfits_map_t::value_type outfits_map_value_t;
outfits_map_t mOutfitsMap;
- // IDs of original items which are worn and linked in COF.
- // Used to monitor COF changes for updating items worn state. See EXT-8636.
- uuid_vec_t mCOFLinkedItems;
-
LLOutfitListGearMenu* mGearMenu;
LLListContextMenu* mOutfitMenu;
diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp
index 68ca65420a..38a8e17827 100644
--- a/indra/newview/llpanelavatar.cpp
+++ b/indra/newview/llpanelavatar.cpp
@@ -170,14 +170,14 @@ void LLPanelAvatarNotes::onOpen(const LLSD& key)
fillRightsData();
//Disable "Add Friend" button for friends.
- getChildView("add_friend")->setEnabled(!LLAvatarActions::isFriend(getAvatarId()));
+ childSetEnabled("add_friend", !LLAvatarActions::isFriend(getAvatarId()));
}
void LLPanelAvatarNotes::fillRightsData()
{
- getChild<LLUICtrl>("status_check")->setValue(FALSE);
- getChild<LLUICtrl>("map_check")->setValue(FALSE);
- getChild<LLUICtrl>("objects_check")->setValue(FALSE);
+ childSetValue("status_check", FALSE);
+ childSetValue("map_check", FALSE);
+ childSetValue("objects_check", FALSE);
const LLRelationship* relation = LLAvatarTracker::instance().getBuddyInfo(getAvatarId());
// If true - we are viewing friend's profile, enable check boxes and set values.
@@ -185,9 +185,9 @@ void LLPanelAvatarNotes::fillRightsData()
{
S32 rights = relation->getRightsGrantedTo();
- getChild<LLUICtrl>("status_check")->setValue(LLRelationship::GRANT_ONLINE_STATUS & rights ? TRUE : FALSE);
- getChild<LLUICtrl>("map_check")->setValue(LLRelationship::GRANT_MAP_LOCATION & rights ? TRUE : FALSE);
- getChild<LLUICtrl>("objects_check")->setValue(LLRelationship::GRANT_MODIFY_OBJECTS & rights ? TRUE : FALSE);
+ childSetValue("status_check",LLRelationship::GRANT_ONLINE_STATUS & rights ? TRUE : FALSE);
+ childSetValue("map_check",LLRelationship::GRANT_MAP_LOCATION & rights ? TRUE : FALSE);
+ childSetValue("objects_check",LLRelationship::GRANT_MODIFY_OBJECTS & rights ? TRUE : FALSE);
}
@@ -196,7 +196,7 @@ void LLPanelAvatarNotes::fillRightsData()
void LLPanelAvatarNotes::onCommitNotes()
{
- std::string notes = getChild<LLUICtrl>("notes_edit")->getValue().asString();
+ std::string notes = childGetValue("notes_edit").asString();
LLAvatarPropertiesProcessor::getInstance()-> sendNotes(getAvatarId(),notes);
}
@@ -211,8 +211,8 @@ void LLPanelAvatarNotes::rightsConfirmationCallback(const LLSD& notification,
}
else
{
- getChild<LLUICtrl>("objects_check")->setValue(
- getChild<LLUICtrl>("objects_check")->getValue().asBoolean() ? FALSE : TRUE);
+ childSetValue("objects_check",
+ childGetValue("objects_check").asBoolean() ? FALSE : TRUE);
}
}
@@ -255,14 +255,14 @@ void LLPanelAvatarNotes::onCommitRights()
S32 rights = 0;
- if(getChild<LLUICtrl>("status_check")->getValue().asBoolean())
+ if(childGetValue("status_check").asBoolean())
rights |= LLRelationship::GRANT_ONLINE_STATUS;
- if(getChild<LLUICtrl>("map_check")->getValue().asBoolean())
+ if(childGetValue("map_check").asBoolean())
rights |= LLRelationship::GRANT_MAP_LOCATION;
- if(getChild<LLUICtrl>("objects_check")->getValue().asBoolean())
+ if(childGetValue("objects_check").asBoolean())
rights |= LLRelationship::GRANT_MODIFY_OBJECTS;
- bool allow_modify_objects = getChild<LLUICtrl>("objects_check")->getValue().asBoolean();
+ bool allow_modify_objects = childGetValue("objects_check").asBoolean();
// if modify objects checkbox clicked
if (buddy_relationship->isRightGrantedTo(
@@ -285,8 +285,8 @@ void LLPanelAvatarNotes::processProperties(void* data, EAvatarProcessorType type
LLAvatarNotes* avatar_notes = static_cast<LLAvatarNotes*>(data);
if(avatar_notes && getAvatarId() == avatar_notes->target_id)
{
- getChild<LLUICtrl>("notes_edit")->setValue(avatar_notes->notes);
- getChildView("notes edit")->setEnabled(true);
+ childSetValue("notes_edit",avatar_notes->notes);
+ childSetEnabled("notes edit", true);
LLAvatarPropertiesProcessor::getInstance()->removeObserver(getAvatarId(),this);
}
@@ -295,15 +295,15 @@ void LLPanelAvatarNotes::processProperties(void* data, EAvatarProcessorType type
void LLPanelAvatarNotes::resetData()
{
- getChild<LLUICtrl>("notes_edit")->setValue(LLStringUtil::null);
+ childSetValue("notes_edit",LLStringUtil::null);
// Default value is TRUE
- getChild<LLUICtrl>("status_check")->setValue(TRUE);
+ childSetValue("status_check", TRUE);
}
void LLPanelAvatarNotes::resetControls()
{
//Disable "Add Friend" button for friends.
- getChildView("add_friend")->setEnabled(TRUE);
+ childSetEnabled("add_friend", TRUE);
enableCheckboxes(false);
}
@@ -335,9 +335,9 @@ void LLPanelAvatarNotes::onShareButtonClick()
void LLPanelAvatarNotes::enableCheckboxes(bool enable)
{
- getChildView("status_check")->setEnabled(enable);
- getChildView("map_check")->setEnabled(enable);
- getChildView("objects_check")->setEnabled(enable);
+ childSetEnabled("status_check", enable);
+ childSetEnabled("map_check", enable);
+ childSetEnabled("objects_check", enable);
}
LLPanelAvatarNotes::~LLPanelAvatarNotes()
@@ -355,7 +355,7 @@ LLPanelAvatarNotes::~LLPanelAvatarNotes()
// virtual, called by LLAvatarTracker
void LLPanelAvatarNotes::changed(U32 mask)
{
- getChildView("teleport")->setEnabled(LLAvatarTracker::instance().isBuddyOnline(getAvatarId()));
+ childSetEnabled("teleport", LLAvatarTracker::instance().isBuddyOnline(getAvatarId()));
// update rights to avoid have checkboxes enabled when friendship is terminated. EXT-4947.
fillRightsData();
@@ -369,7 +369,7 @@ void LLPanelAvatarNotes::onChange(EStatusType status, const std::string &channel
return;
}
- getChildView("call")->setEnabled(LLVoiceClient::getInstance()->voiceEnabled() && LLVoiceClient::getInstance()->isVoiceWorking());
+ childSetEnabled("call", LLVoiceClient::getInstance()->voiceEnabled() && LLVoiceClient::getInstance()->isVoiceWorking());
}
void LLPanelAvatarNotes::setAvatarId(const LLUUID& id)
@@ -451,17 +451,17 @@ void LLPanelProfileTab::updateButtons()
if(LLAvatarActions::isFriend(getAvatarId()))
{
- getChildView("teleport")->setEnabled(is_buddy_online);
+ childSetEnabled("teleport", is_buddy_online);
}
else
{
- getChildView("teleport")->setEnabled(true);
+ childSetEnabled("teleport", true);
}
bool enable_map_btn = (is_buddy_online &&
is_agent_mappable(getAvatarId()))
|| gAgent.isGodlike();
- getChildView("show_on_map_btn")->setEnabled(enable_map_btn);
+ childSetEnabled("show_on_map_btn", enable_map_btn);
}
//////////////////////////////////////////////////////////////////////////
@@ -522,7 +522,7 @@ void LLPanelAvatarProfile::onOpen(const LLSD& key)
mGroups.clear();
//Disable "Add Friend" button for friends.
- getChildView("add_friend")->setEnabled(!LLAvatarActions::isFriend(getAvatarId()));
+ childSetEnabled("add_friend", !LLAvatarActions::isFriend(getAvatarId()));
}
void LLPanelAvatarProfile::updateData()
@@ -538,32 +538,32 @@ void LLPanelAvatarProfile::updateData()
void LLPanelAvatarProfile::resetControls()
{
- getChildView("status_panel")->setVisible( true);
- getChildView("profile_buttons_panel")->setVisible( true);
- getChildView("title_groups_text")->setVisible( true);
- getChildView("sl_groups")->setVisible( true);
- getChildView("add_friend")->setEnabled(true);
+ childSetVisible("status_panel", true);
+ childSetVisible("profile_buttons_panel", true);
+ childSetVisible("title_groups_text", true);
+ childSetVisible("sl_groups", true);
+ childSetEnabled("add_friend", true);
- getChildView("status_me_panel")->setVisible( false);
- getChildView("profile_me_buttons_panel")->setVisible( false);
- getChildView("account_actions_panel")->setVisible( false);
+ childSetVisible("status_me_panel", false);
+ childSetVisible("profile_me_buttons_panel", false);
+ childSetVisible("account_actions_panel", false);
}
void LLPanelAvatarProfile::resetData()
{
mGroups.clear();
- getChild<LLUICtrl>("2nd_life_pic")->setValue(LLUUID::null);
- getChild<LLUICtrl>("real_world_pic")->setValue(LLUUID::null);
- getChild<LLUICtrl>("online_status")->setValue(LLStringUtil::null);
- getChild<LLUICtrl>("status_message")->setValue(LLStringUtil::null);
- getChild<LLUICtrl>("sl_description_edit")->setValue(LLStringUtil::null);
- getChild<LLUICtrl>("fl_description_edit")->setValue(LLStringUtil::null);
- getChild<LLUICtrl>("sl_groups")->setValue(LLStringUtil::null);
- getChild<LLUICtrl>("homepage_edit")->setValue(LLStringUtil::null);
- getChild<LLUICtrl>("register_date")->setValue(LLStringUtil::null);
- getChild<LLUICtrl>("acc_status_text")->setValue(LLStringUtil::null);
- getChild<LLUICtrl>("partner_text")->setTextArg("[FIRST]", LLStringUtil::null);
- getChild<LLUICtrl>("partner_text")->setTextArg("[LAST]", LLStringUtil::null);
+ childSetValue("2nd_life_pic",LLUUID::null);
+ childSetValue("real_world_pic",LLUUID::null);
+ childSetValue("online_status",LLStringUtil::null);
+ childSetValue("status_message",LLStringUtil::null);
+ childSetValue("sl_description_edit",LLStringUtil::null);
+ childSetValue("fl_description_edit",LLStringUtil::null);
+ childSetValue("sl_groups",LLStringUtil::null);
+ childSetValue("homepage_edit",LLStringUtil::null);
+ childSetValue("register_date",LLStringUtil::null);
+ childSetValue("acc_status_text",LLStringUtil::null);
+ childSetTextArg("partner_text", "[FIRST]", LLStringUtil::null);
+ childSetTextArg("partner_text", "[LAST]", LLStringUtil::null);
}
void LLPanelAvatarProfile::processProperties(void* data, EAvatarProcessorType type)
@@ -625,7 +625,7 @@ void LLPanelAvatarProfile::processGroupProperties(const LLAvatarGroups* avatar_g
groups += group_url;
}
- getChild<LLUICtrl>("sl_groups")->setValue(groups);
+ childSetValue("sl_groups", groups);
}
void LLPanelAvatarProfile::fillCommonData(const LLAvatarData* avatar_data)
@@ -641,15 +641,15 @@ void LLPanelAvatarProfile::fillCommonData(const LLAvatarData* avatar_data)
}
args["[AGE]"] = LLDateUtil::ageFromDate( avatar_data->born_on, LLDate::now());
std::string register_date = getString("RegisterDateFormat", args);
- getChild<LLUICtrl>("register_date")->setValue(register_date );
- getChild<LLUICtrl>("sl_description_edit")->setValue(avatar_data->about_text);
- getChild<LLUICtrl>("fl_description_edit")->setValue(avatar_data->fl_about_text);
- getChild<LLUICtrl>("2nd_life_pic")->setValue(avatar_data->image_id);
- getChild<LLUICtrl>("real_world_pic")->setValue(avatar_data->fl_image_id);
- getChild<LLUICtrl>("homepage_edit")->setValue(avatar_data->profile_url);
+ childSetValue("register_date", register_date );
+ childSetValue("sl_description_edit", avatar_data->about_text);
+ childSetValue("fl_description_edit",avatar_data->fl_about_text);
+ childSetValue("2nd_life_pic", avatar_data->image_id);
+ childSetValue("real_world_pic", avatar_data->fl_image_id);
+ childSetValue("homepage_edit", avatar_data->profile_url);
// Hide home page textbox if no page was set to fix "homepage URL appears clickable without URL - EXT-4734"
- getChildView("homepage_edit")->setVisible( !avatar_data->profile_url.empty());
+ childSetVisible("homepage_edit", !avatar_data->profile_url.empty());
}
void LLPanelAvatarProfile::fillPartnerData(const LLAvatarData* avatar_data)
@@ -675,7 +675,7 @@ void LLPanelAvatarProfile::fillAccountStatus(const LLAvatarData* avatar_data)
// dataserver/lldataavatar.cpp for privacy considerations
args["[AGEVERIFICATION]"] = "";
std::string caption_text = getString("CaptionTextAcctInfo", args);
- getChild<LLUICtrl>("acc_status_text")->setValue(caption_text);
+ childSetValue("acc_status_text", caption_text);
}
void LLPanelAvatarProfile::pay()
@@ -791,7 +791,7 @@ LLPanelAvatarProfile::~LLPanelAvatarProfile()
// virtual, called by LLAvatarTracker
void LLPanelAvatarProfile::changed(U32 mask)
{
- getChildView("teleport")->setEnabled(LLAvatarTracker::instance().isBuddyOnline(getAvatarId()));
+ childSetEnabled("teleport", LLAvatarTracker::instance().isBuddyOnline(getAvatarId()));
}
// virtual
@@ -802,7 +802,7 @@ void LLPanelAvatarProfile::onChange(EStatusType status, const std::string &chann
return;
}
- getChildView("call")->setEnabled(LLVoiceClient::getInstance()->voiceEnabled() && LLVoiceClient::getInstance()->isVoiceWorking());
+ childSetEnabled("call", LLVoiceClient::getInstance()->voiceEnabled() && LLVoiceClient::getInstance()->isVoiceWorking());
}
void LLPanelAvatarProfile::setAvatarId(const LLUUID& id)
@@ -855,12 +855,12 @@ void LLPanelMyProfile::processProfileProperties(const LLAvatarData* avatar_data)
void LLPanelMyProfile::resetControls()
{
- getChildView("status_panel")->setVisible( false);
- getChildView("profile_buttons_panel")->setVisible( false);
- getChildView("title_groups_text")->setVisible( false);
- getChildView("sl_groups")->setVisible( false);
- getChildView("status_me_panel")->setVisible( true);
- getChildView("profile_me_buttons_panel")->setVisible( true);
+ childSetVisible("status_panel", false);
+ childSetVisible("profile_buttons_panel", false);
+ childSetVisible("title_groups_text", false);
+ childSetVisible("sl_groups", false);
+ childSetVisible("status_me_panel", true);
+ childSetVisible("profile_me_buttons_panel", true);
}
diff --git a/indra/newview/llpanelblockedlist.cpp b/indra/newview/llpanelblockedlist.cpp
index fd2e961cb7..6fe29ed6bb 100644
--- a/indra/newview/llpanelblockedlist.cpp
+++ b/indra/newview/llpanelblockedlist.cpp
@@ -126,7 +126,7 @@ void LLPanelBlockedList::refreshBlockedList()
void LLPanelBlockedList::updateButtons()
{
bool hasSelected = NULL != mBlockedList->getFirstSelected();
- getChildView("Unblock")->setEnabled(hasSelected);
+ childSetEnabled("Unblock", hasSelected);
}
@@ -263,7 +263,7 @@ void LLFloaterGetBlockedObjectName::applyBlocking()
{
if (mGetObjectNameCallback)
{
- const std::string& text = getChild<LLUICtrl>("object_name")->getValue().asString();
+ const std::string& text = childGetValue("object_name").asString();
mGetObjectNameCallback(text);
}
closeFloater();
diff --git a/indra/newview/llpanelclassified.cpp b/indra/newview/llpanelclassified.cpp
index bf7214eb3b..f61fd1f39e 100644
--- a/indra/newview/llpanelclassified.cpp
+++ b/indra/newview/llpanelclassified.cpp
@@ -32,34 +32,53 @@
#include "llpanelclassified.h"
+#include "lldir.h"
#include "lldispatcher.h"
#include "llfloaterreg.h"
#include "llhttpclient.h"
#include "llnotifications.h"
#include "llnotificationsutil.h"
#include "llparcel.h"
+#include "lltabcontainer.h"
+#include "message.h"
#include "llagent.h"
+#include "llavataractions.h"
+#include "llbutton.h"
+#include "llcheckboxctrl.h"
#include "llclassifiedflags.h"
#include "llclassifiedstatsresponder.h"
#include "llcommandhandler.h" // for classified HTML detail page click tracking
-#include "lliconctrl.h"
+#include "llviewercontrol.h"
#include "lllineeditor.h"
+#include "lltextbox.h"
#include "llcombobox.h"
#include "lltexturectrl.h"
#include "lltexteditor.h"
+#include "lluiconstants.h"
+#include "llurldispatcher.h" // for classified HTML detail click teleports
+#include "lluictrlfactory.h"
#include "llviewerparcelmgr.h"
+#include "llviewerwindow.h"
+#include "llworldmap.h"
#include "llfloaterworldmap.h"
#include "llviewergenericmessage.h" // send_generic_message
#include "llviewerregion.h"
+#include "llviewerwindow.h" // for window width, height
+#include "llappviewer.h" // abortQuit()
#include "lltrans.h"
#include "llscrollcontainer.h"
#include "llstatusbar.h"
const S32 MINIMUM_PRICE_FOR_LISTING = 50; // L$
+const S32 MATURE_UNDEFINED = -1;
+const S32 MATURE_CONTENT = 1;
+const S32 PG_CONTENT = 2;
+const S32 DECLINE_TO_STATE = 0;
//static
-LLPanelClassifiedInfo::panel_list_t LLPanelClassifiedInfo::sAllPanels;
+std::list<LLPanelClassified*> LLPanelClassified::sAllPanels;
+std::list<LLPanelClassifiedInfo*> LLPanelClassifiedInfo::sAllPanels;
// "classifiedclickthrough"
// strings[0] = classified_id
@@ -106,6 +125,1040 @@ public:
}
};
+
+/* Re-expose this if we need to have classified ad HTML detail
+ pages. JC
+
+// We need to count classified teleport clicks from the search HTML detail pages,
+// so we need have a teleport that also sends a click count message.
+class LLClassifiedTeleportHandler : public LLCommandHandler
+{
+public:
+ // don't allow from external browsers because it moves you immediately
+ LLClassifiedTeleportHandler() : LLCommandHandler("classifiedteleport", UNTRUSTED_BLOCK) { }
+
+ bool handle(const LLSD& tokens, const LLSD& queryMap)
+ {
+ // Need at least classified id and region name, so 2 params
+ if (tokens.size() < 2) return false;
+ LLUUID classified_id = tokens[0].asUUID();
+ if (classified_id.isNull()) return false;
+ // *HACK: construct a SLURL to do the teleport
+ std::string url("secondlife:///app/teleport/");
+ // skip the uuid we took off above, rebuild URL
+ // separated by slashes.
+ for (S32 i = 1; i < tokens.size(); ++i)
+ {
+ url += tokens[i].asString();
+ url += "/";
+ }
+ llinfos << "classified teleport to " << url << llendl;
+ // *TODO: separately track old search, sidebar, and new search
+ // Right now detail HTML pages count as new search.
+ const bool from_search = true;
+ LLPanelClassified::sendClassifiedClickMessage(classified_id, "teleport", from_search);
+ // Invoke teleport
+ LLMediaCtrl* web = NULL;
+ const bool trusted_browser = true;
+ return LLURLDispatcher::dispatch(url, web, trusted_browser);
+ }
+};
+// Creating the object registers with the dispatcher.
+LLClassifiedTeleportHandler gClassifiedTeleportHandler;
+*/
+
+LLPanelClassified::LLPanelClassified(bool in_finder, bool from_search)
+: LLPanel(),
+ mInFinder(in_finder),
+ mFromSearch(from_search),
+ mDirty(false),
+ mForceClose(false),
+ mLocationChanged(false),
+ mClassifiedID(),
+ mCreatorID(),
+ mPriceForListing(0),
+ mDataRequested(FALSE),
+ mPaidFor(FALSE),
+ mPosGlobal(),
+ mSnapshotCtrl(NULL),
+ mNameEditor(NULL),
+ mDescEditor(NULL),
+ mLocationEditor(NULL),
+ mCategoryCombo(NULL),
+ mMatureCombo(NULL),
+ mAutoRenewCheck(NULL),
+ mUpdateBtn(NULL),
+ mTeleportBtn(NULL),
+ mMapBtn(NULL),
+ mProfileBtn(NULL),
+ mInfoText(NULL),
+ mSetBtn(NULL),
+ mClickThroughText(NULL),
+ mTeleportClicksOld(0),
+ mMapClicksOld(0),
+ mProfileClicksOld(0),
+ mTeleportClicksNew(0),
+ mMapClicksNew(0),
+ mProfileClicksNew(0)
+
+{
+ sAllPanels.push_back(this);
+
+ std::string classified_def_file;
+ if (mInFinder)
+ {
+ LLUICtrlFactory::getInstance()->buildPanel(this, "panel_classified.xml");
+ }
+ else
+ {
+ LLUICtrlFactory::getInstance()->buildPanel(this, "panel_avatar_classified.xml");
+ }
+
+ // Register dispatcher
+ gGenericDispatcher.addHandler("classifiedclickthrough",
+ &sClassifiedClickThrough);
+}
+
+
+LLPanelClassified::~LLPanelClassified()
+{
+ sAllPanels.remove(this);
+}
+
+
+void LLPanelClassified::reset()
+{
+ mClassifiedID.setNull();
+ mCreatorID.setNull();
+ mParcelID.setNull();
+
+ // Don't request data, this isn't valid
+ mDataRequested = TRUE;
+
+ mDirty = false;
+ mPaidFor = FALSE;
+
+ mPosGlobal.clearVec();
+
+ clearCtrls();
+ resetDirty();
+}
+
+
+BOOL LLPanelClassified::postBuild()
+{
+ mSnapshotCtrl = getChild<LLTextureCtrl>("snapshot_ctrl");
+ mSnapshotCtrl->setCommitCallback(onCommitAny, this);
+ mSnapshotSize = mSnapshotCtrl->getRect();
+
+ mNameEditor = getChild<LLLineEditor>("given_name_editor");
+ mNameEditor->setMaxTextLength(DB_PARCEL_NAME_LEN);
+ mNameEditor->setCommitOnFocusLost(TRUE);
+ mNameEditor->setFocusReceivedCallback(boost::bind(focusReceived, _1, this));
+ mNameEditor->setCommitCallback(onCommitAny, this);
+ mNameEditor->setPrevalidate( LLTextValidate::validateASCII );
+
+ mDescEditor = getChild<LLTextEditor>("desc_editor");
+ mDescEditor->setCommitOnFocusLost(TRUE);
+ mDescEditor->setFocusReceivedCallback(boost::bind(focusReceived, _1, this));
+ mDescEditor->setCommitCallback(onCommitAny, this);
+
+ mLocationEditor = getChild<LLLineEditor>("location_editor");
+
+ mSetBtn = getChild<LLButton>( "set_location_btn");
+ mSetBtn->setClickedCallback(onClickSet, this);
+
+ mTeleportBtn = getChild<LLButton>( "classified_teleport_btn");
+ mTeleportBtn->setClickedCallback(onClickTeleport, this);
+
+ mMapBtn = getChild<LLButton>( "classified_map_btn");
+ mMapBtn->setClickedCallback(onClickMap, this);
+
+ if(mInFinder)
+ {
+ mProfileBtn = getChild<LLButton>( "classified_profile_btn");
+ mProfileBtn->setClickedCallback(onClickProfile, this);
+ }
+
+ mCategoryCombo = getChild<LLComboBox>( "classified_category_combo");
+ LLClassifiedInfo::cat_map::iterator iter;
+ for (iter = LLClassifiedInfo::sCategories.begin();
+ iter != LLClassifiedInfo::sCategories.end();
+ iter++)
+ {
+ mCategoryCombo->add(LLTrans::getString(iter->second), (void *)((intptr_t)iter->first), ADD_BOTTOM);
+ }
+ mCategoryCombo->setCurrentByIndex(0);
+ mCategoryCombo->setCommitCallback(onCommitAny, this);
+
+ mMatureCombo = getChild<LLComboBox>( "classified_mature_check");
+ mMatureCombo->setCurrentByIndex(0);
+ mMatureCombo->setCommitCallback(onCommitAny, this);
+ if (gAgent.wantsPGOnly())
+ {
+ // Teens don't get to set mature flag. JC
+ mMatureCombo->setVisible(FALSE);
+ mMatureCombo->setCurrentByIndex(PG_CONTENT);
+ }
+
+ if (!mInFinder)
+ {
+ mAutoRenewCheck = getChild<LLCheckBoxCtrl>( "auto_renew_check");
+ mAutoRenewCheck->setCommitCallback(onCommitAny, this);
+ }
+
+ mUpdateBtn = getChild<LLButton>("classified_update_btn");
+ mUpdateBtn->setClickedCallback(onClickUpdate, this);
+
+ if (!mInFinder)
+ {
+ mClickThroughText = getChild<LLTextBox>("click_through_text");
+ }
+
+ resetDirty();
+ return TRUE;
+}
+
+BOOL LLPanelClassified::titleIsValid()
+{
+ // Disallow leading spaces, punctuation, etc. that screw up
+ // sort order.
+ const std::string& name = mNameEditor->getText();
+ if (name.empty())
+ {
+ LLNotificationsUtil::add("BlankClassifiedName");
+ return FALSE;
+ }
+ if (!isalnum(name[0]))
+ {
+ LLNotificationsUtil::add("ClassifiedMustBeAlphanumeric");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+void LLPanelClassified::apply()
+{
+ // Apply is used for automatically saving results, so only
+ // do that if there is a difference, and this is a save not create.
+ if (checkDirty() && mPaidFor)
+ {
+ sendClassifiedInfoUpdate();
+ }
+}
+
+bool LLPanelClassified::saveCallback(const LLSD& notification, const LLSD& response)
+{
+ S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+
+ switch(option)
+ {
+ case 0: // Save
+ sendClassifiedInfoUpdate();
+ // fall through to close
+
+ case 1: // Don't Save
+ {
+ mForceClose = true;
+ // Close containing floater
+ LLFloater* parent_floater = gFloaterView->getParentFloater(this);
+ if (parent_floater)
+ {
+ parent_floater->closeFloater();
+ }
+ }
+ break;
+
+ case 2: // Cancel
+ default:
+ LLAppViewer::instance()->abortQuit();
+ break;
+ }
+ return false;
+}
+
+
+BOOL LLPanelClassified::canClose()
+{
+ if (mForceClose || !checkDirty())
+ return TRUE;
+
+ LLSD args;
+ args["NAME"] = mNameEditor->getText();
+ LLNotificationsUtil::add("ClassifiedSave", args, LLSD(), boost::bind(&LLPanelClassified::saveCallback, this, _1, _2));
+ return FALSE;
+}
+
+// Fill in some reasonable defaults for a new classified.
+void LLPanelClassified::initNewClassified()
+{
+ // TODO: Don't generate this on the client.
+ mClassifiedID.generate();
+
+ mCreatorID = gAgent.getID();
+
+ mPosGlobal = gAgent.getPositionGlobal();
+
+ mPaidFor = FALSE;
+
+ // Try to fill in the current parcel
+ LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
+ if (parcel)
+ {
+ mNameEditor->setText(parcel->getName());
+ //mDescEditor->setText(parcel->getDesc());
+ mSnapshotCtrl->setImageAssetID(parcel->getSnapshotID());
+ //mPriceEditor->setText("0");
+ mCategoryCombo->setCurrentByIndex(0);
+ }
+
+ mUpdateBtn->setLabel(getString("publish_txt"));
+
+ // simulate clicking the "location" button
+ LLPanelClassified::onClickSet(this);
+}
+
+
+void LLPanelClassified::setClassifiedID(const LLUUID& id)
+{
+ mClassifiedID = id;
+}
+
+//static
+void LLPanelClassified::setClickThrough(const LLUUID& classified_id,
+ S32 teleport,
+ S32 map,
+ S32 profile,
+ bool from_new_table)
+{
+ for (panel_list_t::iterator iter = sAllPanels.begin(); iter != sAllPanels.end(); ++iter)
+ {
+ LLPanelClassified* self = *iter;
+ // For top picks, must match pick id
+ if (self->mClassifiedID != classified_id)
+ {
+ continue;
+ }
+
+ // We need to check to see if the data came from the new stat_table
+ // or the old classified table. We also need to cache the data from
+ // the two separate sources so as to display the aggregate totals.
+
+ if (from_new_table)
+ {
+ self->mTeleportClicksNew = teleport;
+ self->mMapClicksNew = map;
+ self->mProfileClicksNew = profile;
+ }
+ else
+ {
+ self->mTeleportClicksOld = teleport;
+ self->mMapClicksOld = map;
+ self->mProfileClicksOld = profile;
+ }
+
+ if (self->mClickThroughText)
+ {
+ LLStringUtil::format_map_t args;
+ args["[TELEPORT]"] = llformat ("%d", self->mTeleportClicksNew + self->mTeleportClicksOld);
+ args["[MAP]"] = llformat ("%d", self->mMapClicksNew + self->mMapClicksOld);
+ args["[PROFILE]"] = llformat ("%d", self->mProfileClicksNew + self->mProfileClicksOld);
+ std::string msg = LLTrans::getString ("ClassifiedClicksTxt", args);
+ self->mClickThroughText->setText(msg);
+ }
+ }
+}
+
+// Schedules the panel to request data
+// from the server next time it is drawn.
+void LLPanelClassified::markForServerRequest()
+{
+ mDataRequested = FALSE;
+}
+
+
+std::string LLPanelClassified::getClassifiedName()
+{
+ return mNameEditor->getText();
+}
+
+
+void LLPanelClassified::sendClassifiedInfoRequest()
+{
+ LLMessageSystem *msg = gMessageSystem;
+
+ if (mClassifiedID != mRequestedID)
+ {
+ msg->newMessageFast(_PREHASH_ClassifiedInfoRequest);
+ msg->nextBlockFast(_PREHASH_AgentData);
+ msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID() );
+ msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID() );
+ msg->nextBlockFast(_PREHASH_Data);
+ msg->addUUIDFast(_PREHASH_ClassifiedID, mClassifiedID);
+ gAgent.sendReliableMessage();
+
+ mDataRequested = TRUE;
+ mRequestedID = mClassifiedID;
+
+ // While we're at it let's get the stats from the new table if that
+ // capability exists.
+ std::string url = gAgent.getRegion()->getCapability("SearchStatRequest");
+ LLSD body;
+ body["classified_id"] = mClassifiedID;
+
+ if (!url.empty())
+ {
+ llinfos << "Classified stat request via capability" << llendl;
+ LLHTTPClient::post(url, body, new LLClassifiedStatsResponder(mClassifiedID));
+ }
+ }
+}
+
+
+void LLPanelClassified::sendClassifiedInfoUpdate()
+{
+ // If we don't have a classified id yet, we'll need to generate one,
+ // otherwise we'll keep overwriting classified_id 00000 in the database.
+ if (mClassifiedID.isNull())
+ {
+ // TODO: Don't do this on the client.
+ mClassifiedID.generate();
+ }
+
+ LLMessageSystem* msg = gMessageSystem;
+
+ msg->newMessageFast(_PREHASH_ClassifiedInfoUpdate);
+ msg->nextBlockFast(_PREHASH_AgentData);
+ msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
+ msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
+ msg->nextBlockFast(_PREHASH_Data);
+ msg->addUUIDFast(_PREHASH_ClassifiedID, mClassifiedID);
+ // TODO: fix this
+ U32 category = mCategoryCombo->getCurrentIndex() + 1;
+ msg->addU32Fast(_PREHASH_Category, category);
+ msg->addStringFast(_PREHASH_Name, mNameEditor->getText());
+ msg->addStringFast(_PREHASH_Desc, mDescEditor->getText());
+
+ // fills in on simulator if null
+ msg->addUUIDFast(_PREHASH_ParcelID, mParcelID);
+ // fills in on simulator if null
+ msg->addU32Fast(_PREHASH_ParentEstate, 0);
+ msg->addUUIDFast(_PREHASH_SnapshotID, mSnapshotCtrl->getImageAssetID());
+ msg->addVector3dFast(_PREHASH_PosGlobal, mPosGlobal);
+ BOOL mature = mMatureCombo->getCurrentIndex() == MATURE_CONTENT;
+ BOOL auto_renew = FALSE;
+ if (mAutoRenewCheck)
+ {
+ auto_renew = mAutoRenewCheck->get();
+ }
+ // These flags doesn't matter here.
+ const bool adult_enabled = false;
+ const bool is_pg = false;
+ U8 flags = pack_classified_flags_request(auto_renew, is_pg, mature, adult_enabled);
+ msg->addU8Fast(_PREHASH_ClassifiedFlags, flags);
+ msg->addS32("PriceForListing", mPriceForListing);
+ gAgent.sendReliableMessage();
+
+ mDirty = false;
+}
+
+
+//static
+void LLPanelClassified::processClassifiedInfoReply(LLMessageSystem *msg, void **)
+{
+ lldebugs << "processClassifiedInfoReply()" << llendl;
+ // Extract the agent id and verify the message is for this
+ // client.
+ LLUUID agent_id;
+ msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id );
+ if (agent_id != gAgent.getID())
+ {
+ llwarns << "Agent ID mismatch in processClassifiedInfoReply"
+ << llendl;
+ return;
+ }
+
+ LLUUID classified_id;
+ msg->getUUIDFast(_PREHASH_Data, _PREHASH_ClassifiedID, classified_id);
+
+ LLUUID creator_id;
+ msg->getUUIDFast(_PREHASH_Data, _PREHASH_CreatorID, creator_id);
+
+ LLUUID parcel_id;
+ msg->getUUIDFast(_PREHASH_Data, _PREHASH_ParcelID, parcel_id);
+
+ std::string name;
+ msg->getStringFast(_PREHASH_Data, _PREHASH_Name, name);
+
+ std::string desc;
+ msg->getStringFast(_PREHASH_Data, _PREHASH_Desc, desc);
+
+ LLUUID snapshot_id;
+ msg->getUUIDFast(_PREHASH_Data, _PREHASH_SnapshotID, snapshot_id);
+
+ // "Location text" is actually the original
+ // name that owner gave the parcel, and the location.
+ std::string location_text;
+
+ msg->getStringFast(_PREHASH_Data, _PREHASH_ParcelName, location_text);
+ if (!location_text.empty())
+ {
+ location_text.append(", ");
+ }
+
+ std::string sim_name;
+ msg->getStringFast(_PREHASH_Data, _PREHASH_SimName, sim_name);
+
+ LLVector3d pos_global;
+ msg->getVector3dFast(_PREHASH_Data, _PREHASH_PosGlobal, pos_global);
+
+ S32 region_x = llround((F32)pos_global.mdV[VX]) % REGION_WIDTH_UNITS;
+ S32 region_y = llround((F32)pos_global.mdV[VY]) % REGION_WIDTH_UNITS;
+ S32 region_z = llround((F32)pos_global.mdV[VZ]);
+
+ std::string buffer = llformat("%s (%d, %d, %d)", sim_name.c_str(), region_x, region_y, region_z);
+ location_text.append(buffer);
+
+ U8 flags;
+ msg->getU8Fast(_PREHASH_Data, _PREHASH_ClassifiedFlags, flags);
+ //BOOL enabled = is_cf_enabled(flags);
+ bool mature = is_cf_mature(flags);
+ bool auto_renew = is_cf_auto_renew(flags);
+
+ U32 date = 0;
+ msg->getU32Fast(_PREHASH_Data, _PREHASH_CreationDate, date);
+ time_t tim = date;
+
+ // future use
+ U32 expiration_date = 0;
+ msg->getU32("Data", "ExpirationDate", expiration_date);
+
+ U32 category = 0;
+ msg->getU32Fast(_PREHASH_Data, _PREHASH_Category, category);
+
+ S32 price_for_listing = 0;
+ msg->getS32("Data", "PriceForListing", price_for_listing);
+
+ // Look up the panel to fill in
+ for (panel_list_t::iterator iter = sAllPanels.begin(); iter != sAllPanels.end(); ++iter)
+ {
+ LLPanelClassified* self = *iter;
+ // For top picks, must match pick id
+ if (self->mClassifiedID != classified_id)
+ {
+ continue;
+ }
+
+ // Found the panel, now fill in the information
+ self->mClassifiedID = classified_id;
+ self->mCreatorID = creator_id;
+ self->mParcelID = parcel_id;
+ self->mPriceForListing = price_for_listing;
+ self->mSimName.assign(sim_name);
+ self->mPosGlobal = pos_global;
+
+ // Update UI controls
+ self->mNameEditor->setText(name);
+ self->mDescEditor->setText(desc);
+ self->mSnapshotCtrl->setImageAssetID(snapshot_id);
+ self->mLocationEditor->setText(location_text);
+ self->mLocationChanged = false;
+
+ self->mCategoryCombo->setCurrentByIndex(category - 1);
+ if(mature)
+ {
+ self->mMatureCombo->setCurrentByIndex(MATURE_CONTENT);
+ }
+ else
+ {
+ self->mMatureCombo->setCurrentByIndex(PG_CONTENT);
+ }
+ if (self->mAutoRenewCheck)
+ {
+ self->mAutoRenewCheck->set(auto_renew);
+ }
+
+ std::string dateStr = self->getString("dateStr");
+ LLSD substitution;
+ substitution["datetime"] = (S32) tim;
+ LLStringUtil::format (dateStr, substitution);
+
+ LLStringUtil::format_map_t string_args;
+ string_args["[DATE]"] = dateStr;
+ string_args["[AMT]"] = llformat("%d", price_for_listing);
+ self->childSetText("classified_info_text", self->getString("ad_placed_paid", string_args));
+
+ // If we got data from the database, we know the listing is paid for.
+ self->mPaidFor = TRUE;
+
+ self->mUpdateBtn->setLabel(self->getString("update_txt"));
+
+ self->resetDirty();
+
+ // I don't know if a second call is deliberate or a bad merge, so I'm leaving it here.
+ self->resetDirty();
+ }
+}
+
+void LLPanelClassified::draw()
+{
+ refresh();
+
+ LLPanel::draw();
+}
+
+
+void LLPanelClassified::refresh()
+{
+ if (!mDataRequested)
+ {
+ sendClassifiedInfoRequest();
+ }
+
+ // Check for god mode
+ BOOL godlike = gAgent.isGodlike();
+ BOOL is_self = (gAgent.getID() == mCreatorID);
+
+ // Set button visibility/enablement appropriately
+ if (mInFinder)
+ {
+
+ // End user doesn't ned to see price twice, or date posted.
+
+ mSnapshotCtrl->setEnabled(godlike);
+ if(godlike)
+ {
+ //make it smaller, so text is more legible
+ mSnapshotCtrl->setOrigin(20, 175);
+ mSnapshotCtrl->reshape(300, 200);
+ }
+ else
+ {
+ mSnapshotCtrl->setOrigin(mSnapshotSize.mLeft, mSnapshotSize.mBottom);
+ mSnapshotCtrl->reshape(mSnapshotSize.getWidth(), mSnapshotSize.getHeight());
+ //normal
+ }
+ mNameEditor->setEnabled(godlike);
+ mDescEditor->setEnabled(godlike);
+ mCategoryCombo->setEnabled(godlike);
+ mCategoryCombo->setVisible(godlike);
+
+ mMatureCombo->setEnabled(godlike);
+ mMatureCombo->setVisible(godlike);
+
+ // Jesse (who is the only one who uses this, as far as we can tell
+ // Says that he does not want a set location button - he has used it
+ // accidently in the past.
+ mSetBtn->setVisible(FALSE);
+ mSetBtn->setEnabled(FALSE);
+
+ mUpdateBtn->setEnabled(godlike);
+ mUpdateBtn->setVisible(godlike);
+ }
+ else
+ {
+ mSnapshotCtrl->setEnabled(is_self);
+ mNameEditor->setEnabled(is_self);
+ mDescEditor->setEnabled(is_self);
+ //mPriceEditor->setEnabled(is_self);
+ mCategoryCombo->setEnabled(is_self);
+ mMatureCombo->setEnabled(is_self);
+
+ if( is_self )
+ {
+ if( mMatureCombo->getCurrentIndex() == 0 )
+ {
+ // It's a new panel.
+ // PG regions should have PG classifieds. AO should have mature.
+
+ setDefaultAccessCombo();
+ }
+ }
+
+ if (mAutoRenewCheck)
+ {
+ mAutoRenewCheck->setEnabled(is_self);
+ mAutoRenewCheck->setVisible(is_self);
+ }
+
+ mClickThroughText->setEnabled(is_self);
+ mClickThroughText->setVisible(is_self);
+
+ mSetBtn->setVisible(is_self);
+ mSetBtn->setEnabled(is_self);
+
+ mUpdateBtn->setEnabled(is_self && checkDirty());
+ mUpdateBtn->setVisible(is_self);
+ }
+}
+
+// static
+void LLPanelClassified::onClickUpdate(void* data)
+{
+ LLPanelClassified* self = (LLPanelClassified*)data;
+
+ if(self == NULL) return;
+
+ // Disallow leading spaces, punctuation, etc. that screw up
+ // sort order.
+ if ( ! self->titleIsValid() )
+ {
+ return;
+ };
+
+ // If user has not set mature, do not allow publish
+ if(self->mMatureCombo->getCurrentIndex() == DECLINE_TO_STATE)
+ {
+ // Tell user about it
+ LLNotificationsUtil::add("SetClassifiedMature",
+ LLSD(),
+ LLSD(),
+ boost::bind(&LLPanelClassified::confirmMature, self, _1, _2));
+ return;
+ }
+
+ // Mature content flag is set, proceed
+ self->gotMature();
+}
+
+// Callback from a dialog indicating response to mature notification
+bool LLPanelClassified::confirmMature(const LLSD& notification, const LLSD& response)
+{
+ S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+
+ // 0 == Yes
+ // 1 == No
+ // 2 == Cancel
+ switch(option)
+ {
+ case 0:
+ mMatureCombo->setCurrentByIndex(MATURE_CONTENT);
+ break;
+ case 1:
+ mMatureCombo->setCurrentByIndex(PG_CONTENT);
+ break;
+ default:
+ return false;
+ }
+
+ // If we got here it means they set a valid value
+ gotMature();
+ return false;
+}
+
+// Called after we have determined whether this classified has
+// mature content or not.
+void LLPanelClassified::gotMature()
+{
+ // if already paid for, just do the update
+ if (mPaidFor)
+ {
+ LLNotification::Params params("PublishClassified");
+ params.functor.function(boost::bind(&LLPanelClassified::confirmPublish, this, _1, _2));
+ LLNotifications::instance().forceResponse(params, 0);
+ }
+ else
+ {
+ // Ask the user how much they want to pay
+ LLFloaterPriceForListing::show( callbackGotPriceForListing, this );
+ }
+}
+
+// static
+void LLPanelClassified::callbackGotPriceForListing(S32 option, std::string text, void* data)
+{
+ LLPanelClassified* self = (LLPanelClassified*)data;
+
+ // Only do something if user hits publish
+ if (option != 0) return;
+
+ S32 price_for_listing = strtol(text.c_str(), NULL, 10);
+ if (price_for_listing < MINIMUM_PRICE_FOR_LISTING)
+ {
+ LLSD args;
+ std::string price_text = llformat("%d", MINIMUM_PRICE_FOR_LISTING);
+ args["MIN_PRICE"] = price_text;
+
+ LLNotificationsUtil::add("MinClassifiedPrice", args);
+ return;
+ }
+
+ // price is acceptable, put it in the dialog for later read by
+ // update send
+ self->mPriceForListing = price_for_listing;
+
+ LLSD args;
+ args["AMOUNT"] = llformat("%d", price_for_listing);
+ LLNotificationsUtil::add("PublishClassified", args, LLSD(),
+ boost::bind(&LLPanelClassified::confirmPublish, self, _1, _2));
+}
+
+void LLPanelClassified::resetDirty()
+{
+ // Tell all the widgets to reset their dirty state since the ad was just saved
+ if (mSnapshotCtrl)
+ mSnapshotCtrl->resetDirty();
+ if (mNameEditor)
+ mNameEditor->resetDirty();
+ if (mDescEditor)
+ mDescEditor->resetDirty();
+ if (mLocationEditor)
+ mLocationEditor->resetDirty();
+ mLocationChanged = false;
+ if (mCategoryCombo)
+ mCategoryCombo->resetDirty();
+ if (mMatureCombo)
+ mMatureCombo->resetDirty();
+ if (mAutoRenewCheck)
+ mAutoRenewCheck->resetDirty();
+}
+
+// invoked from callbackConfirmPublish
+bool LLPanelClassified::confirmPublish(const LLSD& notification, const LLSD& response)
+{
+ S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+ // Option 0 = publish
+ if (option != 0) return false;
+
+ sendClassifiedInfoUpdate();
+
+ // Big hack - assume that top picks are always in a browser,
+ // and non-finder-classifieds are always in a tab container.
+ if (! mInFinder)
+ {
+ LLTabContainer* tab = (LLTabContainer*)getParent();
+ tab->setCurrentTabName(mNameEditor->getText());
+ }
+
+ resetDirty();
+ return false;
+}
+
+
+// static
+void LLPanelClassified::onClickTeleport(void* data)
+{
+ LLPanelClassified* self = (LLPanelClassified*)data;
+ LLFloaterWorldMap* worldmap_instance = LLFloaterWorldMap::getInstance();
+
+ if (!self->mPosGlobal.isExactlyZero()&&worldmap_instance)
+ {
+ gAgent.teleportViaLocation(self->mPosGlobal);
+ worldmap_instance->trackLocation(self->mPosGlobal);
+ self->sendClassifiedClickMessage("teleport");
+ }
+}
+
+
+// static
+void LLPanelClassified::onClickMap(void* data)
+{
+ LLPanelClassified* self = (LLPanelClassified*)data;
+ LLFloaterWorldMap* worldmap_instance = LLFloaterWorldMap::getInstance();
+ if(worldmap_instance)
+ {
+ worldmap_instance->trackLocation(self->mPosGlobal);
+ LLFloaterReg::showInstance("world_map", "center");
+ }
+ self->sendClassifiedClickMessage("map");
+}
+
+// static
+void LLPanelClassified::onClickProfile(void* data)
+{
+ LLPanelClassified* self = (LLPanelClassified*)data;
+ LLAvatarActions::showProfile(self->mCreatorID);
+ self->sendClassifiedClickMessage("profile");
+}
+
+// static
+/*
+void LLPanelClassified::onClickLandmark(void* data)
+{
+ LLPanelClassified* self = (LLPanelClassified*)data;
+ create_landmark(self->mNameEditor->getText(), "", self->mPosGlobal);
+}
+*/
+
+// static
+void LLPanelClassified::onClickSet(void* data)
+{
+ LLPanelClassified* self = (LLPanelClassified*)data;
+
+ // Save location for later.
+ self->mPosGlobal = gAgent.getPositionGlobal();
+
+ std::string location_text;
+ std::string regionName = LLTrans::getString("ClassifiedUpdateAfterPublish");
+ LLViewerRegion* pRegion = gAgent.getRegion();
+ if (pRegion)
+ {
+ regionName = pRegion->getName();
+ }
+ location_text.assign(regionName);
+ location_text.append(", ");
+
+ S32 region_x = llround((F32)self->mPosGlobal.mdV[VX]) % REGION_WIDTH_UNITS;
+ S32 region_y = llround((F32)self->mPosGlobal.mdV[VY]) % REGION_WIDTH_UNITS;
+ S32 region_z = llround((F32)self->mPosGlobal.mdV[VZ]);
+
+ location_text.append(self->mSimName);
+ location_text.append(llformat(" (%d, %d, %d)", region_x, region_y, region_z));
+
+ self->mLocationEditor->setText(location_text);
+ self->mLocationChanged = true;
+
+ self->setDefaultAccessCombo();
+
+ // Set this to null so it updates on the next save.
+ self->mParcelID.setNull();
+
+ onCommitAny(NULL, data);
+}
+
+
+BOOL LLPanelClassified::checkDirty()
+{
+ mDirty = FALSE;
+ if ( mSnapshotCtrl ) mDirty |= mSnapshotCtrl->isDirty();
+ if ( mNameEditor ) mDirty |= mNameEditor->isDirty();
+ if ( mDescEditor ) mDirty |= mDescEditor->isDirty();
+ if ( mLocationEditor ) mDirty |= mLocationEditor->isDirty();
+ if ( mLocationChanged ) mDirty |= TRUE;
+ if ( mCategoryCombo ) mDirty |= mCategoryCombo->isDirty();
+ if ( mMatureCombo ) mDirty |= mMatureCombo->isDirty();
+ if ( mAutoRenewCheck ) mDirty |= mAutoRenewCheck->isDirty();
+
+ return mDirty;
+}
+
+// static
+void LLPanelClassified::onCommitAny(LLUICtrl* ctrl, void* data)
+{
+ LLPanelClassified* self = (LLPanelClassified*)data;
+ if (self)
+ {
+ self->checkDirty();
+ }
+}
+
+// static
+void LLPanelClassified::focusReceived(LLFocusableElement* ctrl, void* data)
+{
+ // allow the data to be saved
+ onCommitAny((LLUICtrl*)ctrl, data);
+}
+
+
+void LLPanelClassified::sendClassifiedClickMessage(const std::string& type)
+{
+ // You're allowed to click on your own ads to reassure yourself
+ // that the system is working.
+ LLSD body;
+ body["type"] = type;
+ body["from_search"] = mFromSearch;
+ body["classified_id"] = mClassifiedID;
+ body["parcel_id"] = mParcelID;
+ body["dest_pos_global"] = mPosGlobal.getValue();
+ body["region_name"] = mSimName;
+
+ std::string url = gAgent.getRegion()->getCapability("SearchStatTracking");
+ llinfos << "LLPanelClassified::sendClassifiedClickMessage via capability" << llendl;
+ LLHTTPClient::post(url, body, new LLHTTPClient::Responder());
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////
+
+LLFloaterPriceForListing::LLFloaterPriceForListing()
+: LLFloater(LLSD()),
+ mCallback(NULL),
+ mUserData(NULL)
+{ }
+
+//virtual
+LLFloaterPriceForListing::~LLFloaterPriceForListing()
+{ }
+
+//virtual
+BOOL LLFloaterPriceForListing::postBuild()
+{
+ LLLineEditor* edit = getChild<LLLineEditor>("price_edit");
+ if (edit)
+ {
+ edit->setPrevalidate(LLTextValidate::validateNonNegativeS32);
+ std::string min_price = llformat("%d", MINIMUM_PRICE_FOR_LISTING);
+ edit->setText(min_price);
+ edit->selectAll();
+ edit->setFocus(TRUE);
+ }
+
+ childSetAction("set_price_btn", onClickSetPrice, this);
+
+ childSetAction("cancel_btn", onClickCancel, this);
+
+ setDefaultBtn("set_price_btn");
+ return TRUE;
+}
+
+//static
+void LLFloaterPriceForListing::show( void (*callback)(S32, std::string, void*), void* userdata)
+{
+ LLFloaterPriceForListing *self = new LLFloaterPriceForListing();
+
+ // Builds and adds to gFloaterView
+ LLUICtrlFactory::getInstance()->buildFloater(self, "floater_price_for_listing.xml", NULL);
+ self->center();
+
+ self->mCallback = callback;
+ self->mUserData = userdata;
+}
+
+//static
+void LLFloaterPriceForListing::onClickSetPrice(void* data)
+{
+ buttonCore(0, data);
+}
+
+//static
+void LLFloaterPriceForListing::onClickCancel(void* data)
+{
+ buttonCore(1, data);
+}
+
+//static
+void LLFloaterPriceForListing::buttonCore(S32 button, void* data)
+{
+ LLFloaterPriceForListing* self = (LLFloaterPriceForListing*)data;
+
+ if (self->mCallback)
+ {
+ std::string text = self->childGetText("price_edit");
+ self->mCallback(button, text, self->mUserData);
+ self->closeFloater();
+ }
+}
+
+void LLPanelClassified::setDefaultAccessCombo()
+{
+ // PG regions should have PG classifieds. AO should have mature.
+
+ LLViewerRegion *regionp = gAgent.getRegion();
+
+ switch( regionp->getSimAccess() )
+ {
+ case SIM_ACCESS_PG:
+ mMatureCombo->setCurrentByIndex(PG_CONTENT);
+ break;
+ case SIM_ACCESS_ADULT:
+ mMatureCombo->setCurrentByIndex(MATURE_CONTENT);
+ break;
+ default:
+ // You are free to move about the cabin.
+ break;
+ }
+}
+
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
@@ -257,7 +1310,7 @@ void LLPanelClassifiedInfo::processProperties(void* data, EAvatarProcessorType t
setSimName(c_info->sim_name);
setClassifiedLocation(createLocationText(c_info->parcel_name, c_info->sim_name, c_info->pos_global));
- getChild<LLUICtrl>("category")->setValue(LLClassifiedInfo::sCategories[c_info->category]);
+ childSetValue("category", LLClassifiedInfo::sCategories[c_info->category]);
static std::string mature_str = getString("type_mature");
static std::string pg_str = getString("type_pg");
@@ -265,20 +1318,20 @@ void LLPanelClassifiedInfo::processProperties(void* data, EAvatarProcessorType t
static std::string date_fmt = getString("date_fmt");
bool mature = is_cf_mature(c_info->flags);
- getChild<LLUICtrl>("content_type")->setValue(mature ? mature_str : pg_str);
+ childSetValue("content_type", mature ? mature_str : pg_str);
getChild<LLIconCtrl>("content_type_moderate")->setVisible(mature);
getChild<LLIconCtrl>("content_type_general")->setVisible(!mature);
std::string auto_renew_str = is_cf_auto_renew(c_info->flags) ?
getString("auto_renew_on") : getString("auto_renew_off");
- getChild<LLUICtrl>("auto_renew")->setValue(auto_renew_str);
+ childSetValue("auto_renew", auto_renew_str);
price_str.setArg("[PRICE]", llformat("%d", c_info->price_for_listing));
- getChild<LLUICtrl>("price_for_listing")->setValue(LLSD(price_str));
+ childSetValue("price_for_listing", LLSD(price_str));
std::string date_str = date_fmt;
LLStringUtil::format(date_str, LLSD().with("datetime", (S32) c_info->creation_date));
- getChild<LLUICtrl>("creation_date")->setValue(date_str);
+ childSetText("creation_date", date_str);
setInfoLoaded(true);
}
@@ -305,13 +1358,13 @@ void LLPanelClassifiedInfo::resetData()
mMapClicksNew = 0;
mProfileClicksNew = 0;
- getChild<LLUICtrl>("category")->setValue(LLStringUtil::null);
- getChild<LLUICtrl>("content_type")->setValue(LLStringUtil::null);
- getChild<LLUICtrl>("click_through_text")->setValue(LLStringUtil::null);
- getChild<LLUICtrl>("price_for_listing")->setValue(LLStringUtil::null);
- getChild<LLUICtrl>("auto_renew")->setValue(LLStringUtil::null);
- getChild<LLUICtrl>("creation_date")->setValue(LLStringUtil::null);
- getChild<LLUICtrl>("click_through_text")->setValue(LLStringUtil::null);
+ childSetText("category", LLStringUtil::null);
+ childSetText("content_type", LLStringUtil::null);
+ childSetText("click_through_text", LLStringUtil::null);
+ childSetText("price_for_listing", LLStringUtil::null);
+ childSetText("auto_renew", LLStringUtil::null);
+ childSetText("creation_date", LLStringUtil::null);
+ childSetText("click_through_text", LLStringUtil::null);
getChild<LLIconCtrl>("content_type_moderate")->setVisible(FALSE);
getChild<LLIconCtrl>("content_type_general")->setVisible(FALSE);
}
@@ -320,40 +1373,40 @@ void LLPanelClassifiedInfo::resetControls()
{
bool is_self = getAvatarId() == gAgent.getID();
- getChildView("edit_btn")->setEnabled(is_self);
- getChildView("edit_btn")->setVisible( is_self);
- getChildView("price_layout_panel")->setVisible( is_self);
- getChildView("clickthrough_layout_panel")->setVisible( is_self);
+ childSetEnabled("edit_btn", is_self);
+ childSetVisible("edit_btn", is_self);
+ childSetVisible("price_layout_panel", is_self);
+ childSetVisible("clickthrough_layout_panel", is_self);
}
void LLPanelClassifiedInfo::setClassifiedName(const std::string& name)
{
- getChild<LLUICtrl>("classified_name")->setValue(name);
+ childSetValue("classified_name", name);
}
std::string LLPanelClassifiedInfo::getClassifiedName()
{
- return getChild<LLUICtrl>("classified_name")->getValue().asString();
+ return childGetValue("classified_name").asString();
}
void LLPanelClassifiedInfo::setDescription(const std::string& desc)
{
- getChild<LLUICtrl>("classified_desc")->setValue(desc);
+ childSetValue("classified_desc", desc);
}
std::string LLPanelClassifiedInfo::getDescription()
{
- return getChild<LLUICtrl>("classified_desc")->getValue().asString();
+ return childGetValue("classified_desc").asString();
}
void LLPanelClassifiedInfo::setClassifiedLocation(const std::string& location)
{
- getChild<LLUICtrl>("classified_location")->setValue(location);
+ childSetValue("classified_location", location);
}
std::string LLPanelClassifiedInfo::getClassifiedLocation()
{
- return getChild<LLUICtrl>("classified_location")->getValue().asString();
+ return childGetValue("classified_location").asString();
}
void LLPanelClassifiedInfo::setSnapshotId(const LLUUID& id)
@@ -376,7 +1429,7 @@ void LLPanelClassifiedInfo::draw()
LLUUID LLPanelClassifiedInfo::getSnapshotId()
{
- return getChild<LLUICtrl>("classified_snapshot")->getValue().asUUID();
+ return childGetValue("classified_snapshot").asUUID();
}
// static
@@ -431,9 +1484,9 @@ void LLPanelClassifiedInfo::setClickThrough(
ct_str.setArg("[MAP]", llformat("%d", self->mMapClicksNew + self->mMapClicksOld));
ct_str.setArg("[PROFILE]", llformat("%d", self->mProfileClicksNew + self->mProfileClicksOld));
- self->getChild<LLUICtrl>("click_through_text")->setValue(ct_str.getString());
+ self->childSetText("click_through_text", ct_str.getString());
// *HACK: remove this when there is enough room for click stats in the info panel
- self->getChildView("click_through_text")->setToolTip(ct_str.getString());
+ self->childSetToolTip("click_through_text", ct_str.getString());
llinfos << "teleport: " << llformat("%d", self->mTeleportClicksNew + self->mTeleportClicksOld)
<< ", map: " << llformat("%d", self->mMapClicksNew + self->mMapClicksOld)
@@ -681,8 +1734,8 @@ void LLPanelClassifiedEdit::fillIn(const LLSD& key)
region_name = region->getName();
}
- getChild<LLUICtrl>("classified_name")->setValue(makeClassifiedName());
- getChild<LLUICtrl>("classified_desc")->setValue(desc);
+ childSetValue("classified_name", makeClassifiedName());
+ childSetValue("classified_desc", desc);
setSnapshotId(snapshot_id);
setClassifiedLocation(createLocationText(getLocationNotice(), region_name, getPosGlobal()));
// server will set valid parcel id
@@ -697,8 +1750,8 @@ void LLPanelClassifiedEdit::fillIn(const LLSD& key)
setCategory((U32)key["category"].asInteger());
setContentType((U32)key["content_type"].asInteger());
setClassifiedLocation(key["location_text"]);
- getChild<LLUICtrl>("auto_renew")->setValue(key["auto_renew"]);
- getChild<LLUICtrl>("price_for_listing")->setValue(key["price_for_listing"].asInteger());
+ childSetValue("auto_renew", key["auto_renew"]);
+ childSetValue("price_for_listing", key["price_for_listing"].asInteger());
}
}
@@ -729,7 +1782,7 @@ void LLPanelClassifiedEdit::onOpen(const LLSD& key)
}
std::string save_btn_label = is_new ? getString("publish_label") : getString("save_label");
- getChild<LLUICtrl>("save_changes_btn")->setLabelArg("[LABEL]", save_btn_label);
+ childSetLabelArg("save_changes_btn", "[LABEL]", save_btn_label);
enableVerbs(is_new);
enableEditing(is_new);
@@ -768,16 +1821,16 @@ void LLPanelClassifiedEdit::processProperties(void* data, EAvatarProcessorType t
bool auto_renew = is_cf_auto_renew(c_info->flags);
setContentType(mature ? CB_ITEM_MATURE : CB_ITEM_PG);
- getChild<LLUICtrl>("auto_renew")->setValue(auto_renew);
- getChild<LLUICtrl>("price_for_listing")->setValue(c_info->price_for_listing);
- getChildView("price_for_listing")->setEnabled(isNew());
+ childSetValue("auto_renew", auto_renew);
+ childSetValue("price_for_listing", c_info->price_for_listing);
+ childSetEnabled("price_for_listing", isNew());
resetDirty();
setInfoLoaded(true);
enableVerbs(false);
// for just created classified - in case user opened edit panel before processProperties() callback
- getChild<LLUICtrl>("save_changes_btn")->setLabelArg("[LABEL]", getString("save_label"));
+ childSetLabelArg("save_changes_btn", "[LABEL]", getString("save_label"));
}
}
}
@@ -836,9 +1889,9 @@ void LLPanelClassifiedEdit::resetControls()
getChild<LLComboBox>("category")->setCurrentByIndex(0);
getChild<LLComboBox>("content_type")->setCurrentByIndex(0);
- getChild<LLUICtrl>("auto_renew")->setValue(false);
- getChild<LLUICtrl>("price_for_listing")->setValue(MINIMUM_PRICE_FOR_LISTING);
- getChildView("price_for_listing")->setEnabled(TRUE);
+ childSetValue("auto_renew", false);
+ childSetValue("price_for_listing", MINIMUM_PRICE_FOR_LISTING);
+ childSetEnabled("price_for_listing", TRUE);
}
bool LLPanelClassifiedEdit::canClose()
@@ -877,7 +1930,7 @@ void LLPanelClassifiedEdit::setContentType(U32 content_type)
bool LLPanelClassifiedEdit::getAutoRenew()
{
- return getChild<LLUICtrl>("auto_renew")->getValue().asBoolean();
+ return childGetValue("auto_renew").asBoolean();
}
void LLPanelClassifiedEdit::sendUpdate()
@@ -928,7 +1981,7 @@ void LLPanelClassifiedEdit::setCategory(U32 category)
U8 LLPanelClassifiedEdit::getFlags()
{
- bool auto_renew = getChild<LLUICtrl>("auto_renew")->getValue().asBoolean();
+ bool auto_renew = childGetValue("auto_renew").asBoolean();
LLComboBox* content_cb = getChild<LLComboBox>("content_type");
bool mature = content_cb->getCurrentIndex() == CB_ITEM_MATURE;
@@ -938,25 +1991,25 @@ U8 LLPanelClassifiedEdit::getFlags()
void LLPanelClassifiedEdit::enableVerbs(bool enable)
{
- getChildView("save_changes_btn")->setEnabled(enable);
+ childSetEnabled("save_changes_btn", enable);
}
void LLPanelClassifiedEdit::enableEditing(bool enable)
{
- getChildView("classified_snapshot")->setEnabled(enable);
- getChildView("classified_name")->setEnabled(enable);
- getChildView("classified_desc")->setEnabled(enable);
- getChildView("set_to_curr_location_btn")->setEnabled(enable);
- getChildView("category")->setEnabled(enable);
- getChildView("content_type")->setEnabled(enable);
- getChildView("price_for_listing")->setEnabled(enable);
- getChildView("auto_renew")->setEnabled(enable);
+ childSetEnabled("classified_snapshot", enable);
+ childSetEnabled("classified_name", enable);
+ childSetEnabled("classified_desc", enable);
+ childSetEnabled("set_to_curr_location_btn", enable);
+ childSetEnabled("category", enable);
+ childSetEnabled("content_type", enable);
+ childSetEnabled("price_for_listing", enable);
+ childSetEnabled("auto_renew", enable);
}
void LLPanelClassifiedEdit::showEditing(bool show)
{
- getChildView("price_for_listing_label")->setVisible( show);
- getChildView("price_for_listing")->setVisible( show);
+ childSetVisible("price_for_listing_label", show);
+ childSetVisible("price_for_listing", show);
}
std::string LLPanelClassifiedEdit::makeClassifiedName()
@@ -985,12 +2038,12 @@ std::string LLPanelClassifiedEdit::makeClassifiedName()
S32 LLPanelClassifiedEdit::getPriceForListing()
{
- return getChild<LLUICtrl>("price_for_listing")->getValue().asInteger();
+ return childGetValue("price_for_listing").asInteger();
}
void LLPanelClassifiedEdit::setPriceForListing(S32 price)
{
- getChild<LLUICtrl>("price_for_listing")->setValue(price);
+ childSetValue("price_for_listing", price);
}
void LLPanelClassifiedEdit::onSetLocationClick()
@@ -1148,12 +2201,12 @@ BOOL LLPublishClassifiedFloater::postBuild()
void LLPublishClassifiedFloater::setPrice(S32 price)
{
- getChild<LLUICtrl>("price_for_listing")->setValue(price);
+ childSetValue("price_for_listing", price);
}
S32 LLPublishClassifiedFloater::getPrice()
{
- return getChild<LLUICtrl>("price_for_listing")->getValue().asInteger();
+ return childGetValue("price_for_listing").asInteger();
}
void LLPublishClassifiedFloater::setPublishClickedCallback(const commit_signal_t::slot_type& cb)
diff --git a/indra/newview/llpanelclassified.h b/indra/newview/llpanelclassified.h
index cedd65c405..b3aeaae3e5 100644
--- a/indra/newview/llpanelclassified.h
+++ b/indra/newview/llpanelclassified.h
@@ -27,20 +27,174 @@
// Display of a classified used both for the global view in the
// Find directory, and also for each individual user's classified in their
// profile.
+
#ifndef LL_LLPANELCLASSIFIED_H
#define LL_LLPANELCLASSIFIED_H
#include "llavatarpropertiesprocessor.h"
-#include "llclassifiedinfo.h"
-#include "llfloater.h"
#include "llpanel.h"
-#include "llrect.h"
-#include "lluuid.h"
+#include "llclassifiedinfo.h"
#include "v3dmath.h"
-
-class LLScrollContainer;
+#include "lluuid.h"
+#include "llfloater.h"
+//#include "llrect.h"
+
+class LLButton;
+class LLCheckBoxCtrl;
+class LLComboBox;
+class LLIconCtrl;
+class LLLineEditor;
+class LLTextBox;
+class LLTextEditor;
class LLTextureCtrl;
class LLUICtrl;
+class LLMessageSystem;
+class LLScrollContainer;
+
+// *TODO deprecated, should be removed.
+// New class implemented in ticket EXT-2095
+class LLPanelClassified : public LLPanel
+{
+public:
+ LLPanelClassified(bool in_finder, bool from_search);
+ /*virtual*/ ~LLPanelClassified();
+
+ void reset();
+
+ /*virtual*/ BOOL postBuild();
+
+ /*virtual*/ void draw();
+
+ /*virtual*/ void refresh();
+
+ void apply();
+
+ // If can close, return TRUE. If cannot close, pop save/discard dialog
+ // and return FALSE.
+ BOOL canClose();
+
+ // Setup a new classified, including creating an id, giving a sane
+ // initial position, etc.
+ void initNewClassified();
+
+ void setClassifiedID(const LLUUID& id);
+ void setClickThroughText(const std::string& text);
+ static void setClickThrough(const LLUUID& classified_id,
+ S32 teleport, S32 map, S32 profile, bool from_new_table);
+
+ // check that the title is valid (E.G. starts with a number or letter)
+ BOOL titleIsValid();
+
+ // Schedules the panel to request data
+ // from the server next time it is drawn.
+ void markForServerRequest();
+
+ std::string getClassifiedName();
+ const LLUUID& getClassifiedID() const { return mClassifiedID; }
+
+ void sendClassifiedInfoRequest();
+ void sendClassifiedInfoUpdate();
+ void resetDirty();
+
+ static void processClassifiedInfoReply(LLMessageSystem* msg, void**);
+
+ // Confirmation dialogs flow in this order
+ bool confirmMature(const LLSD& notification, const LLSD& response);
+ void gotMature();
+ static void callbackGotPriceForListing(S32 option, std::string text, void* data);
+ bool confirmPublish(const LLSD& notification, const LLSD& response);
+
+ void sendClassifiedClickMessage(const std::string& type);
+
+protected:
+ bool saveCallback(const LLSD& notification, const LLSD& response);
+
+ static void onClickUpdate(void* data);
+ static void onClickTeleport(void* data);
+ static void onClickMap(void* data);
+ static void onClickProfile(void* data);
+ static void onClickSet(void* data);
+
+ static void focusReceived(LLFocusableElement* ctrl, void* data);
+ static void onCommitAny(LLUICtrl* ctrl, void* data);
+
+ void setDefaultAccessCombo(); // Default AO and PG regions to proper classified access
+
+ BOOL checkDirty(); // Update and return mDirty
+
+protected:
+ bool mInFinder;
+ bool mFromSearch; // from web-based "All" search sidebar
+ BOOL mDirty;
+ bool mForceClose;
+ bool mLocationChanged;
+ LLUUID mClassifiedID;
+ LLUUID mRequestedID;
+ LLUUID mCreatorID;
+ LLUUID mParcelID;
+ S32 mPriceForListing;
+
+ // Needed for stat tracking
+ S32 mTeleportClicksOld;
+ S32 mMapClicksOld;
+ S32 mProfileClicksOld;
+ S32 mTeleportClicksNew;
+ S32 mMapClicksNew;
+ S32 mProfileClicksNew;
+
+ // Data will be requested on first draw
+ BOOL mDataRequested;
+
+ // For avatar panel classifieds only, has the user been charged
+ // yet for this classified? That is, have they saved once?
+ BOOL mPaidFor;
+
+ std::string mSimName;
+ LLVector3d mPosGlobal;
+
+ // Values the user may change
+ LLTextureCtrl* mSnapshotCtrl;
+ LLLineEditor* mNameEditor;
+ LLTextEditor* mDescEditor;
+ LLLineEditor* mLocationEditor;
+ LLComboBox* mCategoryCombo;
+ LLComboBox* mMatureCombo;
+ LLCheckBoxCtrl* mAutoRenewCheck;
+
+ LLButton* mUpdateBtn;
+ LLButton* mTeleportBtn;
+ LLButton* mMapBtn;
+ LLButton* mProfileBtn;
+
+ LLTextBox* mInfoText;
+ LLButton* mSetBtn;
+ LLTextBox* mClickThroughText;
+
+ LLRect mSnapshotSize;
+ typedef std::list<LLPanelClassified*> panel_list_t;
+ static panel_list_t sAllPanels;
+};
+
+
+class LLFloaterPriceForListing
+: public LLFloater
+{
+public:
+ LLFloaterPriceForListing();
+ virtual ~LLFloaterPriceForListing();
+ virtual BOOL postBuild();
+
+ static void show( void (*callback)(S32 option, std::string value, void* userdata), void* userdata );
+
+private:
+ static void onClickSetPrice(void*);
+ static void onClickCancel(void*);
+ static void buttonCore(S32 button, void* data);
+
+private:
+ void (*mCallback)(S32 option, std::string, void*);
+ void* mUserData;
+};
class LLPublishClassifiedFloater : public LLFloater
{
diff --git a/indra/newview/llpanelcontents.cpp b/indra/newview/llpanelcontents.cpp
index bf3bf38863..3952e80962 100644
--- a/indra/newview/llpanelcontents.cpp
+++ b/indra/newview/llpanelcontents.cpp
@@ -107,7 +107,7 @@ void LLPanelContents::getState(LLViewerObject *objectp )
{
if( !objectp )
{
- getChildView("button new script")->setEnabled(FALSE);
+ childSetEnabled("button new script",FALSE);
return;
}
@@ -121,7 +121,7 @@ void LLPanelContents::getState(LLViewerObject *objectp )
BOOL all_volume = LLSelectMgr::getInstance()->selectionAllPCode( LL_PCODE_VOLUME );
// Edit script button - ok if object is editable and there's an unambiguous destination for the object.
- getChildView("button new script")->setEnabled(
+ childSetEnabled("button new script",
editable &&
all_volume &&
((LLSelectMgr::getInstance()->getSelection()->getRootObjectCount() == 1)
diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
index 90ed8b9e58..85bddab02c 100644
--- a/indra/newview/llpaneleditwearable.cpp
+++ b/indra/newview/llpaneleditwearable.cpp
@@ -838,15 +838,6 @@ void LLPanelEditWearable::draw()
LLPanel::draw();
}
-void LLPanelEditWearable::setVisible(BOOL visible)
-{
- if (!visible)
- {
- showWearable(mWearablePtr, FALSE);
- }
- LLPanel::setVisible(visible);
-}
-
void LLPanelEditWearable::setWearable(LLWearable *wearable)
{
showWearable(mWearablePtr, FALSE);
@@ -1218,9 +1209,9 @@ void LLPanelEditWearable::toggleTypeSpecificControls(LLWearableType::EType type)
// Toggle controls specific to shape editing panel.
{
bool is_shape = (type == LLWearableType::WT_SHAPE);
- getChildView("sex_radio")->setVisible( is_shape);
- getChildView("female_icon")->setVisible( is_shape);
- getChildView("male_icon")->setVisible( is_shape);
+ childSetVisible("sex_radio", is_shape);
+ childSetVisible("female_icon", is_shape);
+ childSetVisible("male_icon", is_shape);
}
}
@@ -1420,7 +1411,7 @@ void LLPanelEditWearable::updateVerbs()
BOOL is_dirty = isDirty();
mBtnRevert->setEnabled(is_dirty);
- getChildView("save_as_button")->setEnabled(is_dirty && can_copy);
+ childSetEnabled("save_as_button", is_dirty && can_copy);
if(isAgentAvatarValid())
{
diff --git a/indra/newview/llpaneleditwearable.h b/indra/newview/llpaneleditwearable.h
index 43513d8ab3..2d586276a6 100644
--- a/indra/newview/llpaneleditwearable.h
+++ b/indra/newview/llpaneleditwearable.h
@@ -71,8 +71,6 @@ public:
void onSaveAsButtonClicked();
void saveAsCallback(const LLSD& notification, const LLSD& response);
- virtual void setVisible(BOOL visible);
-
private:
typedef std::map<F32, LLViewerVisualParam*> value_map_t;
diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp
index 572e7a6212..c4bbdb37f8 100644
--- a/indra/newview/llpanelface.cpp
+++ b/indra/newview/llpanelface.cpp
@@ -388,8 +388,8 @@ void LLPanelFace::getState()
BOOL editable = objectp->permModify();
// only turn on auto-adjust button if there is a media renderer and the media is loaded
- getChildView("textbox autofix")->setEnabled(editable);
- getChildView("button align")->setEnabled(editable);
+ childSetEnabled("textbox autofix", editable);
+ childSetEnabled("button align", editable);
//if ( LLMediaEngine::getInstance()->getMediaRenderer () )
// if ( LLMediaEngine::getInstance()->getMediaRenderer ()->isLoaded () )
@@ -399,7 +399,7 @@ void LLPanelFace::getState()
//
// //mBtnAutoFix->setEnabled ( editable );
// }
- getChildView("button apply")->setEnabled(editable);
+ childSetEnabled("button apply",editable);
bool identical;
LLTextureCtrl* texture_ctrl = getChild<LLTextureCtrl>("texture control");
@@ -439,8 +439,8 @@ void LLPanelFace::getState()
if(LLViewerMedia::textureHasMedia(id))
{
- getChildView("textbox autofix")->setEnabled(editable);
- getChildView("button align")->setEnabled(editable);
+ childSetEnabled("textbox autofix",editable);
+ childSetEnabled("button align",editable);
}
if (identical)
@@ -499,6 +499,8 @@ void LLPanelFace::getState()
// Texture scale
{
+ childSetEnabled("tex scale",editable);
+ //mLabelTexScale->setEnabled( editable );
F32 scale_s = 1.f;
struct f2 : public LLSelectedTEGetFunctor<F32>
{
@@ -508,12 +510,12 @@ void LLPanelFace::getState()
}
} func;
identical = LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue( &func, scale_s );
- getChild<LLUICtrl>("TexScaleU")->setValue(editable ? llabs(scale_s) : 0);
- getChild<LLUICtrl>("TexScaleU")->setTentative(LLSD((BOOL)(!identical)));
- getChildView("TexScaleU")->setEnabled(editable);
- getChild<LLUICtrl>("checkbox flip s")->setValue(LLSD((BOOL)(scale_s < 0 ? TRUE : FALSE )));
- getChild<LLUICtrl>("checkbox flip s")->setTentative(LLSD((BOOL)((!identical) ? TRUE : FALSE )));
- getChildView("checkbox flip s")->setEnabled(editable);
+ childSetValue("TexScaleU",editable ? llabs(scale_s) : 0);
+ childSetTentative("TexScaleU",LLSD((BOOL)(!identical)));
+ childSetEnabled("TexScaleU",editable);
+ childSetValue("checkbox flip s",LLSD((BOOL)(scale_s < 0 ? TRUE : FALSE )));
+ childSetTentative("checkbox flip s",LLSD((BOOL)((!identical) ? TRUE : FALSE )));
+ childSetEnabled("checkbox flip s",editable);
}
{
@@ -527,17 +529,17 @@ void LLPanelFace::getState()
} func;
identical = LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue( &func, scale_t );
- getChild<LLUICtrl>("TexScaleV")->setValue(llabs(editable ? llabs(scale_t) : 0));
- getChild<LLUICtrl>("TexScaleV")->setTentative(LLSD((BOOL)(!identical)));
- getChildView("TexScaleV")->setEnabled(editable);
- getChild<LLUICtrl>("checkbox flip t")->setValue(LLSD((BOOL)(scale_t< 0 ? TRUE : FALSE )));
- getChild<LLUICtrl>("checkbox flip t")->setTentative(LLSD((BOOL)((!identical) ? TRUE : FALSE )));
- getChildView("checkbox flip t")->setEnabled(editable);
+ childSetValue("TexScaleV",llabs(editable ? llabs(scale_t) : 0));
+ childSetTentative("TexScaleV",LLSD((BOOL)(!identical)));
+ childSetEnabled("TexScaleV",editable);
+ childSetValue("checkbox flip t",LLSD((BOOL)(scale_t< 0 ? TRUE : FALSE )));
+ childSetTentative("checkbox flip t",LLSD((BOOL)((!identical) ? TRUE : FALSE )));
+ childSetEnabled("checkbox flip t",editable);
}
// Texture offset
{
- getChildView("tex offset")->setEnabled(editable);
+ childSetEnabled("tex offset",editable);
F32 offset_s = 0.f;
struct f4 : public LLSelectedTEGetFunctor<F32>
{
@@ -547,9 +549,9 @@ void LLPanelFace::getState()
}
} func;
identical = LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue( &func, offset_s );
- getChild<LLUICtrl>("TexOffsetU")->setValue(editable ? offset_s : 0);
- getChild<LLUICtrl>("TexOffsetU")->setTentative(!identical);
- getChildView("TexOffsetU")->setEnabled(editable);
+ childSetValue("TexOffsetU", editable ? offset_s : 0);
+ childSetTentative("TexOffsetU",!identical);
+ childSetEnabled("TexOffsetU",editable);
}
{
@@ -562,13 +564,14 @@ void LLPanelFace::getState()
}
} func;
identical = LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue( &func, offset_t );
- getChild<LLUICtrl>("TexOffsetV")->setValue(editable ? offset_t : 0);
- getChild<LLUICtrl>("TexOffsetV")->setTentative(!identical);
- getChildView("TexOffsetV")->setEnabled(editable);
+ childSetValue("TexOffsetV", editable ? offset_t : 0);
+ childSetTentative("TexOffsetV",!identical);
+ childSetEnabled("TexOffsetV",editable);
}
// Texture rotation
{
+ childSetEnabled("tex rotate",editable);
F32 rotation = 0.f;
struct f6 : public LLSelectedTEGetFunctor<F32>
{
@@ -578,9 +581,9 @@ void LLPanelFace::getState()
}
} func;
identical = LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue( &func, rotation );
- getChild<LLUICtrl>("TexRot")->setValue(editable ? rotation * RAD_TO_DEG : 0);
- getChild<LLUICtrl>("TexRot")->setTentative(!identical);
- getChildView("TexRot")->setEnabled(editable);
+ childSetValue("TexRot", editable ? rotation * RAD_TO_DEG : 0);
+ childSetTentative("TexRot",!identical);
+ childSetEnabled("TexRot",editable);
}
// Color swatch
@@ -606,13 +609,13 @@ void LLPanelFace::getState()
}
// Color transparency
{
- getChildView("color trans")->setEnabled(editable);
+ childSetEnabled("color trans",editable);
}
F32 transparency = (1.f - color.mV[VALPHA]) * 100.f;
{
- getChild<LLUICtrl>("ColorTrans")->setValue(editable ? transparency : 0);
- getChildView("ColorTrans")->setEnabled(editable);
+ childSetValue("ColorTrans", editable ? transparency : 0);
+ childSetEnabled("ColorTrans",editable);
}
{
@@ -626,10 +629,10 @@ void LLPanelFace::getState()
} func;
identical = LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue( &func, glow );
- getChild<LLUICtrl>("glow")->setValue(glow);
- getChildView("glow")->setEnabled(editable);
- getChild<LLUICtrl>("glow")->setTentative(!identical);
- getChildView("glow label")->setEnabled(editable);
+ childSetValue("glow",glow);
+ childSetEnabled("glow",editable);
+ childSetTentative("glow",!identical);
+ childSetEnabled("glow label",editable);
}
@@ -654,9 +657,9 @@ void LLPanelFace::getState()
{
llwarns << "failed childGetSelectionInterface for 'combobox shininess'" << llendl;
}
- getChildView("combobox shininess")->setEnabled(editable);
- getChild<LLUICtrl>("combobox shininess")->setTentative(!identical);
- getChildView("label shininess")->setEnabled(editable);
+ childSetEnabled("combobox shininess",editable);
+ childSetTentative("combobox shininess",!identical);
+ childSetEnabled("label shininess",editable);
}
{
@@ -679,9 +682,9 @@ void LLPanelFace::getState()
{
llwarns << "failed childGetSelectionInterface for 'combobox bumpiness'" << llendl;
}
- getChildView("combobox bumpiness")->setEnabled(editable);
- getChild<LLUICtrl>("combobox bumpiness")->setTentative(!identical);
- getChildView("label bumpiness")->setEnabled(editable);
+ childSetEnabled("combobox bumpiness",editable);
+ childSetTentative("combobox bumpiness",!identical);
+ childSetEnabled("label bumpiness",editable);
}
{
@@ -705,14 +708,19 @@ void LLPanelFace::getState()
{
llwarns << "failed childGetSelectionInterface for 'combobox texgen'" << llendl;
}
- getChildView("combobox texgen")->setEnabled(editable);
- getChild<LLUICtrl>("combobox texgen")->setTentative(!identical);
- getChildView("tex gen")->setEnabled(editable);
+ childSetEnabled("combobox texgen",editable);
+ childSetTentative("combobox texgen",!identical);
+ childSetEnabled("tex gen",editable);
if (selected_texgen == 1)
{
- getChild<LLUICtrl>("TexScaleU")->setValue(2.0f * getChild<LLUICtrl>("TexScaleU")->getValue().asReal() );
- getChild<LLUICtrl>("TexScaleV")->setValue(2.0f * getChild<LLUICtrl>("TexScaleV")->getValue().asReal() );
+ childSetText("tex scale",getString("string repeats per meter"));
+ childSetValue("TexScaleU", 2.0f * childGetValue("TexScaleU").asReal() );
+ childSetValue("TexScaleV", 2.0f * childGetValue("TexScaleV").asReal() );
+ }
+ else
+ {
+ childSetText("tex scale",getString("string repeats per face"));
}
}
@@ -728,14 +736,14 @@ void LLPanelFace::getState()
} func;
identical = LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue( &func, fullbrightf );
- getChild<LLUICtrl>("checkbox fullbright")->setValue((S32)fullbrightf);
- getChildView("checkbox fullbright")->setEnabled(editable);
- getChild<LLUICtrl>("checkbox fullbright")->setTentative(!identical);
+ childSetValue("checkbox fullbright",(S32)fullbrightf);
+ childSetEnabled("checkbox fullbright",editable);
+ childSetTentative("checkbox fullbright",!identical);
}
// Repeats per meter label
{
- getChildView("rpt")->setEnabled(editable);
+ childSetEnabled("rpt",editable);
}
// Repeats per meter
@@ -755,14 +763,14 @@ void LLPanelFace::getState()
} func;
identical = LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue( &func, repeats );
- getChild<LLUICtrl>("rptctrl")->setValue(editable ? repeats : 0);
- getChild<LLUICtrl>("rptctrl")->setTentative(!identical);
+ childSetValue("rptctrl", editable ? repeats : 0);
+ childSetTentative("rptctrl",!identical);
LLComboBox* mComboTexGen = getChild<LLComboBox>("combobox texgen");
if (mComboTexGen)
{
BOOL enabled = editable && (!mComboTexGen || mComboTexGen->getCurrentIndex() != 1);
- getChildView("rptctrl")->setEnabled(enabled);
- getChildView("button apply")->setEnabled(enabled);
+ childSetEnabled("rptctrl",enabled);
+ childSetEnabled("button apply",enabled);
}
}
}
@@ -786,19 +794,21 @@ void LLPanelFace::getState()
mColorSwatch->setFallbackImageName("locked_image.j2c" );
mColorSwatch->setValid(FALSE);
}
- getChildView("color trans")->setEnabled(FALSE);
- getChildView("rpt")->setEnabled(FALSE);
- getChildView("tex offset")->setEnabled(FALSE);
- getChildView("tex gen")->setEnabled(FALSE);
- getChildView("label shininess")->setEnabled(FALSE);
- getChildView("label bumpiness")->setEnabled(FALSE);
-
- getChildView("textbox autofix")->setEnabled(FALSE);
-
- getChildView("button align")->setEnabled(FALSE);
- getChildView("button apply")->setEnabled(FALSE);
- //getChildView("has media")->setEnabled(FALSE);
- //getChildView("media info set")->setEnabled(FALSE);
+ childSetEnabled("color trans",FALSE);
+ childSetEnabled("rpt",FALSE);
+ childSetEnabled("tex scale",FALSE);
+ childSetEnabled("tex offset",FALSE);
+ childSetEnabled("tex rotate",FALSE);
+ childSetEnabled("tex gen",FALSE);
+ childSetEnabled("label shininess",FALSE);
+ childSetEnabled("label bumpiness",FALSE);
+
+ childSetEnabled("textbox autofix",FALSE);
+
+ childSetEnabled("button align",FALSE);
+ childSetEnabled("button apply",FALSE);
+ //childSetEnabled("has media", FALSE);
+ //childSetEnabled("media info set", FALSE);
}
}
@@ -928,7 +938,7 @@ void LLPanelFace::onClickApply(void* userdata)
gFocusMgr.setKeyboardFocus( NULL );
//F32 repeats_per_meter = self->mCtrlRepeatsPerMeter->get();
- F32 repeats_per_meter = (F32)self->getChild<LLUICtrl>("rptctrl")->getValue().asReal();//self->mCtrlRepeatsPerMeter->get();
+ F32 repeats_per_meter = (F32)self->childGetValue( "rptctrl" ).asReal();//self->mCtrlRepeatsPerMeter->get();
LLSelectMgr::getInstance()->selectionTexScaleAutofit( repeats_per_meter );
}
diff --git a/indra/newview/llpanelgenerictip.cpp b/indra/newview/llpanelgenerictip.cpp
index 2660814afc..e71e57130f 100644
--- a/indra/newview/llpanelgenerictip.cpp
+++ b/indra/newview/llpanelgenerictip.cpp
@@ -38,7 +38,7 @@ LLPanelGenericTip::LLPanelGenericTip(
{
LLUICtrlFactory::getInstance()->buildPanel(this, "panel_generic_tip.xml");
- getChild<LLUICtrl>("message")->setValue(notification->getMessage());
+ childSetValue("message", notification->getMessage());
S32 max_line_count = gSavedSettings.getS32("TipToastMessageLineCount");
diff --git a/indra/newview/llpanelgroup.cpp b/indra/newview/llpanelgroup.cpp
index e42057e93a..347937af01 100644
--- a/indra/newview/llpanelgroup.cpp
+++ b/indra/newview/llpanelgroup.cpp
@@ -419,14 +419,19 @@ void LLPanelGroup::setGroupID(const LLUUID& group_id)
getChild<LLUICtrl>("prepend_founded_by")->setVisible(!is_null_group_id);
- LLAccordionCtrl* tab_ctrl = getChild<LLAccordionCtrl>("groups_accordion");
- tab_ctrl->reset();
+ LLAccordionCtrl* tab_ctrl = findChild<LLAccordionCtrl>("group_accordion");
+ if(tab_ctrl)
+ tab_ctrl->reset();
- LLAccordionCtrlTab* tab_general = getChild<LLAccordionCtrlTab>("group_general_tab");
- LLAccordionCtrlTab* tab_roles = getChild<LLAccordionCtrlTab>("group_roles_tab");
- LLAccordionCtrlTab* tab_notices = getChild<LLAccordionCtrlTab>("group_notices_tab");
- LLAccordionCtrlTab* tab_land = getChild<LLAccordionCtrlTab>("group_land_tab");
+ LLAccordionCtrlTab* tab_general = findChild<LLAccordionCtrlTab>("group_general_tab");
+ LLAccordionCtrlTab* tab_roles = findChild<LLAccordionCtrlTab>("group_roles_tab");
+ LLAccordionCtrlTab* tab_notices = findChild<LLAccordionCtrlTab>("group_notices_tab");
+ LLAccordionCtrlTab* tab_land = findChild<LLAccordionCtrlTab>("group_land_tab");
+
+ if(!tab_general || !tab_roles || !tab_notices || !tab_land)
+ return;
+
if(mButtonJoin)
mButtonJoin->setVisible(false);
@@ -487,8 +492,6 @@ void LLPanelGroup::setGroupID(const LLUUID& group_id)
button_chat->setVisible(is_member);
}
- tab_ctrl->arrange();
-
reposButtons();
update(GC_ALL);//show/hide "join" button if data is already ready
}
@@ -539,7 +542,6 @@ void LLPanelGroup::draw()
{
mRefreshTimer.stop();
childEnable("btn_refresh");
- childEnable("groups_accordion");
}
LLButton* button_apply = findChild<LLButton>("btn_apply");
@@ -568,8 +570,6 @@ void LLPanelGroup::refreshData()
// 5 second timeout
childDisable("btn_refresh");
- childDisable("groups_accordion");
-
mRefreshTimer.start();
mRefreshTimer.setTimerExpirySec(5);
}
diff --git a/indra/newview/llpanelgroupgeneral.cpp b/indra/newview/llpanelgroupgeneral.cpp
index 840b98213d..3c752f7606 100644
--- a/indra/newview/llpanelgroupgeneral.cpp
+++ b/indra/newview/llpanelgroupgeneral.cpp
@@ -178,7 +178,8 @@ BOOL LLPanelGroupGeneral::postBuild()
mComboActiveTitle = getChild<LLComboBox>("active_title", recurse);
if (mComboActiveTitle)
{
- mComboActiveTitle->setCommitCallback(onCommitAny, this);
+ mComboActiveTitle->setCommitCallback(onCommitTitle, this);
+ mComboActiveTitle->resetDirty();
}
mIncompleteMemberDataStr = getString("incomplete_member_data_str");
@@ -271,6 +272,16 @@ void LLPanelGroupGeneral::onCommitEnrollment(LLUICtrl* ctrl, void* data)
}
// static
+void LLPanelGroupGeneral::onCommitTitle(LLUICtrl* ctrl, void* data)
+{
+ LLPanelGroupGeneral* self = (LLPanelGroupGeneral*)data;
+ if (self->mGroupID.isNull() || !self->mAllowEdit) return;
+ LLGroupMgr::getInstance()->sendGroupTitleUpdate(self->mGroupID,self->mComboActiveTitle->getCurrentID());
+ self->update(GC_TITLES);
+ self->mComboActiveTitle->resetDirty();
+}
+
+// static
void LLPanelGroupGeneral::onClickInfo(void *userdata)
{
LLPanelGroupGeneral *self = (LLPanelGroupGeneral *)userdata;
@@ -339,13 +350,6 @@ void LLPanelGroupGeneral::draw()
bool LLPanelGroupGeneral::apply(std::string& mesg)
{
- if (!mGroupID.isNull() && mAllowEdit && mComboActiveTitle && mComboActiveTitle->isDirty())
- {
- LLGroupMgr::getInstance()->sendGroupTitleUpdate(mGroupID,mComboActiveTitle->getCurrentID());
- update(GC_TITLES);
- mComboActiveTitle->resetDirty();
- }
-
BOOL has_power_in_group = gAgent.hasPowerInGroup(mGroupID,GP_GROUP_CHANGE_IDENTITY);
if (has_power_in_group || mGroupID.isNull())
diff --git a/indra/newview/llpanelgroupgeneral.h b/indra/newview/llpanelgroupgeneral.h
index cbf173f845..3a2079d228 100644
--- a/indra/newview/llpanelgroupgeneral.h
+++ b/indra/newview/llpanelgroupgeneral.h
@@ -71,6 +71,7 @@ private:
static void onFocusEdit(LLFocusableElement* ctrl, void* data);
static void onCommitAny(LLUICtrl* ctrl, void* data);
static void onCommitUserOnly(LLUICtrl* ctrl, void* data);
+ static void onCommitTitle(LLUICtrl* ctrl, void* data);
static void onCommitEnrollment(LLUICtrl* ctrl, void* data);
static void onClickInfo(void* userdata);
static void onReceiveNotices(LLUICtrl* ctrl, void* data);
diff --git a/indra/newview/llpanelgrouplandmoney.cpp b/indra/newview/llpanelgrouplandmoney.cpp
index d4736d22ae..3514664f01 100644
--- a/indra/newview/llpanelgrouplandmoney.cpp
+++ b/indra/newview/llpanelgrouplandmoney.cpp
@@ -365,7 +365,7 @@ void LLPanelGroupLandMoney::impl::setYourContributionTextField(int contrib)
void LLPanelGroupLandMoney::impl::setYourMaxContributionTextBox(int max)
{
- mPanel.getChild<LLUICtrl>("your_contribution_max_value")->setTextArg("[AMOUNT]", llformat("%d", max));
+ mPanel.childSetTextArg("your_contribution_max_value", "[AMOUNT]", llformat("%d", max));
}
//static
@@ -427,14 +427,14 @@ void LLPanelGroupLandMoney::impl::processGroupLand(LLMessageSystem* msg)
S32 total_contribution;
msg->getS32("QueryData", "ActualArea", total_contribution, 0);
- mPanel.getChild<LLUICtrl>("total_contributed_land_value")->setTextArg("[AREA]", llformat("%d", total_contribution));
+ mPanel.childSetTextArg("total_contributed_land_value", "[AREA]", llformat("%d", total_contribution));
S32 committed;
msg->getS32("QueryData", "BillableArea", committed, 0);
- mPanel.getChild<LLUICtrl>("total_land_in_use_value")->setTextArg("[AREA]", llformat("%d", committed));
+ mPanel.childSetTextArg("total_land_in_use_value", "[AREA]", llformat("%d", committed));
S32 available = total_contribution - committed;
- mPanel.getChild<LLUICtrl>("land_available_value")->setTextArg("[AREA]", llformat("%d", available));
+ mPanel.childSetTextArg("land_available_value", "[AREA]", llformat("%d", available));
if ( mGroupOverLimitTextp && mGroupOverLimitIconp )
{
diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp
index 7489c02d8d..9dc31f770f 100644
--- a/indra/newview/llpanelimcontrolpanel.cpp
+++ b/indra/newview/llpanelimcontrolpanel.cpp
@@ -83,7 +83,7 @@ void LLPanelChatControlPanel::updateCallButton()
if (!session)
{
- getChildView("call_btn")->setEnabled(false);
+ childSetEnabled("call_btn", false);
return;
}
@@ -93,14 +93,14 @@ void LLPanelChatControlPanel::updateCallButton()
BOOL enable_connect = session_initialized
&& voice_enabled
&& callback_enabled;
- getChildView("call_btn")->setEnabled(enable_connect);
+ childSetEnabled("call_btn", enable_connect);
}
void LLPanelChatControlPanel::updateButtons(bool is_call_started)
{
- getChildView("end_call_btn_panel")->setVisible( is_call_started);
- getChildView("voice_ctrls_btn_panel")->setVisible( is_call_started);
- getChildView("call_btn_panel")->setVisible( ! is_call_started);
+ childSetVisible("end_call_btn_panel", is_call_started);
+ childSetVisible("voice_ctrls_btn_panel", is_call_started);
+ childSetVisible("call_btn_panel", ! is_call_started);
updateCallButton();
}
@@ -156,7 +156,7 @@ BOOL LLPanelIMControlPanel::postBuild()
childSetAction("share_btn", boost::bind(&LLPanelIMControlPanel::onShareButtonClicked, this));
childSetAction("teleport_btn", boost::bind(&LLPanelIMControlPanel::onTeleportButtonClicked, this));
childSetAction("pay_btn", boost::bind(&LLPanelIMControlPanel::onPayButtonClicked, this));
- getChildView("add_friend_btn")->setEnabled(!LLAvatarActions::isFriend(getChild<LLAvatarIconCtrl>("avatar_icon")->getAvatarId()));
+ childSetEnabled("add_friend_btn", !LLAvatarActions::isFriend(getChild<LLAvatarIconCtrl>("avatar_icon")->getAvatarId()));
setFocusReceivedCallback(boost::bind(&LLPanelIMControlPanel::onFocusReceived, this));
@@ -209,12 +209,12 @@ void LLPanelIMControlPanel::setSessionId(const LLUUID& session_id)
LLAvatarTracker::instance().addParticularFriendObserver(mAvatarID, this);
// Disable "Add friend" button for friends.
- getChildView("add_friend_btn")->setEnabled(!LLAvatarActions::isFriend(mAvatarID));
+ childSetEnabled("add_friend_btn", !LLAvatarActions::isFriend(mAvatarID));
// Disable "Teleport" button if friend is offline
if(LLAvatarActions::isFriend(mAvatarID))
{
- getChildView("teleport_btn")->setEnabled(LLAvatarTracker::instance().isBuddyOnline(mAvatarID));
+ childSetEnabled("teleport_btn", LLAvatarTracker::instance().isBuddyOnline(mAvatarID));
}
getChild<LLAvatarIconCtrl>("avatar_icon")->setValue(mAvatarID);
@@ -225,24 +225,24 @@ void LLPanelIMControlPanel::setSessionId(const LLUUID& session_id)
im_model.findIMSession(session_id);
if( im_session && !im_session->mOtherParticipantIsAvatar )
{
- getChildView("view_profile_btn")->setEnabled(FALSE);
- getChildView("add_friend_btn")->setEnabled(FALSE);
+ childSetEnabled("view_profile_btn", FALSE);
+ childSetEnabled("add_friend_btn", FALSE);
- getChildView("share_btn")->setEnabled(FALSE);
- getChildView("teleport_btn")->setEnabled(FALSE);
- getChildView("pay_btn")->setEnabled(FALSE);
+ childSetEnabled("share_btn", FALSE);
+ childSetEnabled("teleport_btn", FALSE);
+ childSetEnabled("pay_btn", FALSE);
}
}
//virtual
void LLPanelIMControlPanel::changed(U32 mask)
{
- getChildView("add_friend_btn")->setEnabled(!LLAvatarActions::isFriend(mAvatarID));
+ childSetEnabled("add_friend_btn", !LLAvatarActions::isFriend(mAvatarID));
// Disable "Teleport" button if friend is offline
if(LLAvatarActions::isFriend(mAvatarID))
{
- getChildView("teleport_btn")->setEnabled(LLAvatarTracker::instance().isBuddyOnline(mAvatarID));
+ childSetEnabled("teleport_btn", LLAvatarTracker::instance().isBuddyOnline(mAvatarID));
}
}
diff --git a/indra/newview/llpanelland.cpp b/indra/newview/llpanelland.cpp
index 04c1a86f69..e5c598d019 100644
--- a/indra/newview/llpanelland.cpp
+++ b/indra/newview/llpanelland.cpp
@@ -58,14 +58,15 @@ public:
BOOL LLPanelLandInfo::postBuild()
{
- childSetAction("button buy land",boost::bind(onClickClaim));
- childSetAction("button abandon land", boost::bind(onClickRelease));
- childSetAction("button subdivide land", boost::bind(onClickDivide));
- childSetAction("button join land", boost::bind(onClickJoin));
- childSetAction("button about land", boost::bind(onClickAbout));
+
+ childSetAction("button buy land",onClickClaim,this);
+ childSetAction("button abandon land",onClickRelease,this);
+ childSetAction("button subdivide land",onClickDivide,this);
+ childSetAction("button join land",onClickJoin,this);
+ childSetAction("button about land",onClickAbout,this);
mCheckShowOwners = getChild<LLCheckBoxCtrl>("checkbox show owners");
- getChild<LLUICtrl>("checkbox show owners")->setValue(gSavedSettings.getBOOL("ShowParcelOwners"));
+ childSetValue("checkbox show owners", gSavedSettings.getBOOL("ShowParcelOwners"));
return TRUE;
}
@@ -119,17 +120,17 @@ void LLPanelLandInfo::refresh()
if (!parcel || !regionp)
{
// nothing selected, disable panel
- getChildView("label_area_price")->setVisible(false);
- getChildView("label_area")->setVisible(false);
+ childSetVisible("label_area_price",false);
+ childSetVisible("label_area",false);
//mTextPrice->setText(LLStringUtil::null);
- getChild<LLUICtrl>("textbox price")->setValue(LLStringUtil::null);
+ childSetText("textbox price",LLStringUtil::null);
- getChildView("button buy land")->setEnabled(FALSE);
- getChildView("button abandon land")->setEnabled(FALSE);
- getChildView("button subdivide land")->setEnabled(FALSE);
- getChildView("button join land")->setEnabled(FALSE);
- getChildView("button about land")->setEnabled(FALSE);
+ childSetEnabled("button buy land",FALSE);
+ childSetEnabled("button abandon land",FALSE);
+ childSetEnabled("button subdivide land",FALSE);
+ childSetEnabled("button join land",FALSE);
+ childSetEnabled("button about land",FALSE);
}
else
{
@@ -147,11 +148,11 @@ void LLPanelLandInfo::refresh()
if (is_public)
{
- getChildView("button buy land")->setEnabled(TRUE);
+ childSetEnabled("button buy land",TRUE);
}
else
{
- getChildView("button buy land")->setEnabled(can_buy);
+ childSetEnabled("button buy land",can_buy);
}
BOOL owner_release = LLViewerParcelMgr::isParcelOwnedByAgent(parcel, GP_LAND_RELEASE);
@@ -163,16 +164,16 @@ void LLPanelLandInfo::refresh()
BOOL manager_divideable = ( gAgent.canManageEstate()
&& ((parcel->getOwnerID() == regionp->getOwner()) || owner_divide) );
- getChildView("button abandon land")->setEnabled(owner_release || manager_releaseable || gAgent.isGodlike());
+ childSetEnabled("button abandon land",owner_release || manager_releaseable || gAgent.isGodlike());
// only mainland sims are subdividable by owner
if (regionp->getRegionFlags() && REGION_FLAGS_ALLOW_PARCEL_CHANGES)
{
- getChildView("button subdivide land")->setEnabled(owner_divide || manager_divideable || gAgent.isGodlike());
+ childSetEnabled("button subdivide land",owner_divide || manager_divideable || gAgent.isGodlike());
}
else
{
- getChildView("button subdivide land")->setEnabled(manager_divideable || gAgent.isGodlike());
+ childSetEnabled("button subdivide land",manager_divideable || gAgent.isGodlike());
}
// To join land, must have something selected,
@@ -183,15 +184,15 @@ void LLPanelLandInfo::refresh()
//&& LLViewerParcelMgr::getInstance()->getSelfCount() > 1
&& !LLViewerParcelMgr::getInstance()->getParcelSelection()->getWholeParcelSelected())
{
- getChildView("button join land")->setEnabled(TRUE);
+ childSetEnabled("button join land",TRUE);
}
else
{
lldebugs << "Invalid selection for joining land" << llendl;
- getChildView("button join land")->setEnabled(FALSE);
+ childSetEnabled("button join land",FALSE);
}
- getChildView("button about land")->setEnabled(TRUE);
+ childSetEnabled("button about land",TRUE);
// show pricing information
S32 area;
@@ -206,48 +207,48 @@ void LLPanelLandInfo::refresh()
&dwell);
if(is_public || (is_for_sale && LLViewerParcelMgr::getInstance()->getParcelSelection()->getWholeParcelSelected()))
{
- getChild<LLUICtrl>("label_area_price")->setTextArg("[PRICE]", llformat("%d",claim_price));
- getChild<LLUICtrl>("label_area_price")->setTextArg("[AREA]", llformat("%d",area));
- getChildView("label_area_price")->setVisible(true);
- getChildView("label_area")->setVisible(false);
+ childSetTextArg("label_area_price","[PRICE]", llformat("%d",claim_price));
+ childSetTextArg("label_area_price","[AREA]", llformat("%d",area));
+ childSetVisible("label_area_price",true);
+ childSetVisible("label_area",false);
}
else
{
- getChildView("label_area_price")->setVisible(false);
- getChild<LLUICtrl>("label_area")->setTextArg("[AREA]", llformat("%d",area));
- getChildView("label_area")->setVisible(true);
+ childSetVisible("label_area_price",false);
+ childSetTextArg("label_area","[AREA]", llformat("%d",area));
+ childSetVisible("label_area",true);
}
}
}
//static
-void LLPanelLandInfo::onClickClaim()
+void LLPanelLandInfo::onClickClaim(void*)
{
LLViewerParcelMgr::getInstance()->startBuyLand();
}
//static
-void LLPanelLandInfo::onClickRelease()
+void LLPanelLandInfo::onClickRelease(void*)
{
LLViewerParcelMgr::getInstance()->startReleaseLand();
}
// static
-void LLPanelLandInfo::onClickDivide()
+void LLPanelLandInfo::onClickDivide(void*)
{
LLViewerParcelMgr::getInstance()->startDivideLand();
}
// static
-void LLPanelLandInfo::onClickJoin()
+void LLPanelLandInfo::onClickJoin(void*)
{
LLViewerParcelMgr::getInstance()->startJoinLand();
}
//static
-void LLPanelLandInfo::onClickAbout()
+void LLPanelLandInfo::onClickAbout(void*)
{
// Promote the rectangle selection to a parcel selection
if (!LLViewerParcelMgr::getInstance()->getParcelSelection()->getWholeParcelSelected())
diff --git a/indra/newview/llpanelland.h b/indra/newview/llpanelland.h
index 2ab1618d47..7051289393 100644
--- a/indra/newview/llpanelland.h
+++ b/indra/newview/llpanelland.h
@@ -49,13 +49,22 @@ public:
LLCheckBoxCtrl *mCheckShowOwners;
protected:
- static void onClickClaim();
- static void onClickRelease();
- static void onClickDivide();
- static void onClickJoin();
- static void onClickAbout();
+ static void onClickClaim(void*);
+ static void onClickRelease(void*);
+ static void onClickDivide(void*);
+ static void onClickJoin(void*);
+ static void onClickAbout(void*);
protected:
+ //LLTextBox* mTextPriceLabel;
+ //LLTextBox* mTextPrice;
+
+ //LLButton* mBtnClaimLand;
+ //LLButton* mBtnReleaseLand;
+ //LLButton* mBtnDivideLand;
+ //LLButton* mBtnJoinLand;
+ //LLButton* mBtnAbout;
+
virtual BOOL postBuild();
static LLPanelLandSelectObserver* sObserver;
diff --git a/indra/newview/llpanellandmarkinfo.cpp b/indra/newview/llpanellandmarkinfo.cpp
index b69cee9586..e6281f4605 100644
--- a/indra/newview/llpanellandmarkinfo.cpp
+++ b/indra/newview/llpanellandmarkinfo.cpp
@@ -117,54 +117,11 @@ void LLPanelLandmarkInfo::setInfoType(EInfoType type)
switch(type)
{
case CREATE_LANDMARK:
- {
mCurrentTitle = getString("title_create_landmark");
mLandmarkTitle->setVisible(FALSE);
mLandmarkTitleEditor->setVisible(TRUE);
mNotesEditor->setEnabled(TRUE);
-
- LLViewerParcelMgr* parcel_mgr = LLViewerParcelMgr::getInstance();
- std::string name = parcel_mgr->getAgentParcelName();
- LLVector3 agent_pos = gAgent.getPositionAgent();
-
- if (name.empty())
- {
- S32 region_x = llround(agent_pos.mV[VX]);
- S32 region_y = llround(agent_pos.mV[VY]);
- S32 region_z = llround(agent_pos.mV[VZ]);
-
- std::string region_name;
- LLViewerRegion* region = parcel_mgr->getSelectionRegion();
- if (region)
- {
- region_name = region->getName();
- }
- else
- {
- region_name = getString("unknown");
- }
-
- mLandmarkTitleEditor->setText(llformat("%s (%d, %d, %d)",
- region_name.c_str(), region_x, region_y, region_z));
- }
- else
- {
- mLandmarkTitleEditor->setText(name);
- }
-
- std::string desc;
- LLAgentUI::buildLocationString(desc, LLAgentUI::LOCATION_FORMAT_FULL, agent_pos);
- mNotesEditor->setText(desc);
-
- // Moved landmark creation here from LLPanelLandmarkInfo::processParcelInfo()
- // because we use only agent's current coordinates instead of waiting for
- // remote parcel request to complete.
- if (!LLLandmarkActions::landmarkAlreadyExists())
- {
- createLandmark(LLUUID());
- }
- }
break;
case LANDMARK:
@@ -229,6 +186,28 @@ void LLPanelLandmarkInfo::processParcelInfo(const LLParcelData& parcel_data)
info["global_y"] = parcel_data.global_y;
info["global_z"] = parcel_data.global_z;
notifyParent(info);
+
+ if (mInfoType == CREATE_LANDMARK)
+ {
+ if (parcel_data.name.empty())
+ {
+ mLandmarkTitleEditor->setText(llformat("%s (%d, %d, %d)",
+ parcel_data.sim_name.c_str(), region_x, region_y, region_z));
+ }
+ else
+ {
+ mLandmarkTitleEditor->setText(parcel_data.name);
+ }
+
+ std::string desc;
+ LLAgentUI::buildLocationString(desc, LLAgentUI::LOCATION_FORMAT_FULL, gAgent.getPositionAgent());
+ mNotesEditor->setText(desc);
+
+ if (!LLLandmarkActions::landmarkAlreadyExists())
+ {
+ createLandmark(mFolderCombo->getValue().asUUID());
+ }
+ }
}
void LLPanelLandmarkInfo::displayItemInfo(const LLInventoryItem* pItem)
diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp
index 43814ac652..d825071825 100644
--- a/indra/newview/llpanellandmarks.cpp
+++ b/indra/newview/llpanellandmarks.cpp
@@ -716,8 +716,8 @@ void LLLandmarksPanel::updateListCommands()
bool trash_enabled = isActionEnabled("delete");
// keep Options & Add Landmark buttons always enabled
- mListCommands->getChildView(ADD_FOLDER_BUTTON_NAME)->setEnabled(add_folder_enabled);
- mListCommands->getChildView(TRASH_BUTTON_NAME)->setEnabled(trash_enabled);
+ mListCommands->childSetEnabled(ADD_FOLDER_BUTTON_NAME, add_folder_enabled);
+ mListCommands->childSetEnabled(TRASH_BUTTON_NAME, trash_enabled);
}
void LLLandmarksPanel::onActionsButtonClick()
diff --git a/indra/newview/llpanellandmedia.cpp b/indra/newview/llpanellandmedia.cpp
index f17defda55..ef15f971c9 100644
--- a/indra/newview/llpanellandmedia.cpp
+++ b/indra/newview/llpanellandmedia.cpp
@@ -139,7 +139,7 @@ void LLPanelLandMedia::refresh()
mMediaURLEdit->setText(parcel->getMediaURL());
mMediaURLEdit->setEnabled( FALSE );
- getChild<LLUICtrl>("current_url")->setValue(parcel->getMediaCurrentURL());
+ childSetText("current_url", parcel->getMediaCurrentURL());
mMediaDescEdit->setText(parcel->getMediaDesc());
mMediaDescEdit->setEnabled( can_change_media );
@@ -151,7 +151,7 @@ void LLPanelLandMedia::refresh()
}
setMediaType(mime_type);
mMediaTypeCombo->setEnabled( can_change_media );
- getChild<LLUICtrl>("mime_type")->setValue(mime_type);
+ childSetText("mime_type", mime_type);
mMediaUrlCheck->set( parcel->getObscureMedia() );
mMediaUrlCheck->setEnabled( can_change_media );
@@ -249,7 +249,7 @@ void LLPanelLandMedia::setMediaType(const std::string& mime_type)
// localizable - "none" for example (see EXT-6542)
mime_str = LLMIMETypes::getDefaultMimeTypeTranslation();
}
- getChild<LLUICtrl>("mime_type")->setValue(mime_str);
+ childSetText("mime_type", mime_str);
}
void LLPanelLandMedia::setMediaURL(const std::string& media_url)
@@ -263,7 +263,7 @@ void LLPanelLandMedia::setMediaURL(const std::string& media_url)
mMediaURLEdit->onCommit();
// LLViewerParcelMedia::sendMediaNavigateMessage(media_url);
- getChild<LLUICtrl>("current_url")->setValue(media_url);
+ childSetText("current_url", media_url);
}
std::string LLPanelLandMedia::getMediaURL()
{
@@ -274,11 +274,11 @@ std::string LLPanelLandMedia::getMediaURL()
void LLPanelLandMedia::onCommitType(LLUICtrl *ctrl, void *userdata)
{
LLPanelLandMedia *self = (LLPanelLandMedia *)userdata;
- std::string current_type = LLMIMETypes::widgetType(self->getChild<LLUICtrl>("mime_type")->getValue().asString());
+ std::string current_type = LLMIMETypes::widgetType(self->childGetText("mime_type"));
std::string new_type = self->mMediaTypeCombo->getValue();
if(current_type != new_type)
{
- self->getChild<LLUICtrl>("mime_type")->setValue(LLMIMETypes::findDefaultMimeType(new_type));
+ self->childSetText("mime_type", LLMIMETypes::findDefaultMimeType(new_type));
}
onCommitAny(ctrl, userdata);
@@ -298,7 +298,7 @@ void LLPanelLandMedia::onCommitAny(LLUICtrl*, void *userdata)
// Extract data from UI
std::string media_url = self->mMediaURLEdit->getText();
std::string media_desc = self->mMediaDescEdit->getText();
- std::string mime_type = self->getChild<LLUICtrl>("mime_type")->getValue().asString();
+ std::string mime_type = self->childGetText("mime_type");
U8 media_auto_scale = self->mMediaAutoScaleCheck->get();
U8 media_loop = self->mMediaLoopCheck->get();
U8 obscure_media = self->mMediaUrlCheck->get();
@@ -307,7 +307,7 @@ void LLPanelLandMedia::onCommitAny(LLUICtrl*, void *userdata)
LLUUID media_id = self->mMediaTextureCtrl->getImageAssetID();
- self->getChild<LLUICtrl>("mime_type")->setValue(mime_type);
+ self->childSetText("mime_type", mime_type);
// Remove leading/trailing whitespace (common when copying/pasting)
LLStringUtil::trim(media_url);
@@ -348,7 +348,7 @@ void LLPanelLandMedia::onResetBtn(void *userdata)
LLParcel* parcel = self->mParcel->getParcel();
// LLViewerMedia::navigateHome();
self->refresh();
- self->getChild<LLUICtrl>("current_url")->setValue(parcel->getMediaURL());
+ self->childSetText("current_url", parcel->getMediaURL());
// LLViewerParcelMedia::sendMediaNavigateMessage(parcel->getMediaURL());
}
diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp
index be1afbd8d7..3af38f35ef 100644
--- a/indra/newview/llpanellogin.cpp
+++ b/indra/newview/llpanellogin.cpp
@@ -205,7 +205,7 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
}
#if !USE_VIEWER_AUTH
- getChild<LLLineEditor>("username_edit")->setPrevalidate(LLTextValidate::validateASCIIPrintableNoPipe);
+ childSetPrevalidate("username_edit", LLTextValidate::validateASCIIPrintableNoPipe);
getChild<LLLineEditor>("password_edit")->setKeystrokeCallback(onPassKey, this);
// change z sort of clickable text to be behind buttons
@@ -435,8 +435,8 @@ void LLPanelLogin::giveFocus()
if( sInstance )
{
// Grab focus and move cursor to first blank input field
- std::string username = sInstance->getChild<LLUICtrl>("username_edit")->getValue().asString();
- std::string pass = sInstance->getChild<LLUICtrl>("password_edit")->getValue().asString();
+ std::string username = sInstance->childGetText("username_edit");
+ std::string pass = sInstance->childGetText("password_edit");
BOOL have_username = !username.empty();
BOOL have_pass = !pass.empty();
@@ -466,7 +466,7 @@ void LLPanelLogin::giveFocus()
// static
void LLPanelLogin::showLoginWidgets()
{
- sInstance->getChildView("login_widgets")->setVisible( true);
+ sInstance->childSetVisible("login_widgets", true);
LLMediaCtrl* web_browser = sInstance->getChild<LLMediaCtrl>("login_html");
sInstance->reshapeBrowser();
// *TODO: Append all the usual login parameters, like first_login=Y etc.
@@ -508,16 +508,16 @@ void LLPanelLogin::setFields(LLPointer<LLCredential> credential,
LLSD identifier = credential->getIdentifier();
if((std::string)identifier["type"] == "agent")
{
- sInstance->getChild<LLUICtrl>("username_edit")->setValue((std::string)identifier["first_name"] + " " +
+ sInstance->childSetText("username_edit", (std::string)identifier["first_name"] + " " +
(std::string)identifier["last_name"]);
}
else if((std::string)identifier["type"] == "account")
{
- sInstance->getChild<LLUICtrl>("username_edit")->setValue((std::string)identifier["account_name"]);
+ sInstance->childSetText("username_edit", (std::string)identifier["account_name"]);
}
else
{
- sInstance->getChild<LLUICtrl>("username_edit")->setValue(std::string());
+ sInstance->childSetText("username_edit", std::string());
}
// if the password exists in the credential, set the password field with
// a filler to get some stars
@@ -533,13 +533,13 @@ void LLPanelLogin::setFields(LLPointer<LLCredential> credential,
// fill it with MAX_PASSWORD characters so we get a
// nice row of asterixes.
const std::string filler("123456789!123456");
- sInstance->getChild<LLUICtrl>("password_edit")->setValue(std::string("123456789!123456"));
+ sInstance->childSetText("password_edit", std::string("123456789!123456"));
}
else
{
- sInstance->getChild<LLUICtrl>("password_edit")->setValue(std::string());
+ sInstance->childSetText("password_edit", std::string());
}
- sInstance->getChild<LLUICtrl>("remember_check")->setValue(remember);
+ sInstance->childSetValue("remember_check", remember);
}
@@ -566,9 +566,9 @@ void LLPanelLogin::getFields(LLPointer<LLCredential>& credential,
authenticator = credential->getAuthenticator();
}
- std::string username = sInstance->getChild<LLUICtrl>("username_edit")->getValue().asString();
+ std::string username = sInstance->childGetText("username_edit");
LLStringUtil::trim(username);
- std::string password = sInstance->getChild<LLUICtrl>("password_edit")->getValue().asString();
+ std::string password = sInstance->childGetText("password_edit");
LL_INFOS2("Credentials", "Authentication") << "retrieving username:" << username << LL_ENDL;
// determine if the username is a first/last form or not.
@@ -615,7 +615,7 @@ void LLPanelLogin::getFields(LLPointer<LLCredential>& credential,
}
}
credential = gSecAPIHandler->createCredential(LLGridManager::getInstance()->getGrid(), identifier, authenticator);
- remember = sInstance->getChild<LLUICtrl>("remember_check")->getValue();
+ remember = sInstance->childGetValue("remember_check");
}
// static
@@ -643,9 +643,9 @@ BOOL LLPanelLogin::areCredentialFieldsDirty()
}
else
{
- std::string username = sInstance->getChild<LLUICtrl>("username_edit")->getValue().asString();
+ std::string username = sInstance->childGetText("username_edit");
LLStringUtil::trim(username);
- std::string password = sInstance->getChild<LLUICtrl>("password_edit")->getValue().asString();
+ std::string password = sInstance->childGetText("password_edit");
LLLineEditor* ctrl = sInstance->getChild<LLLineEditor>("username_edit");
if(ctrl && ctrl->isDirty())
{
@@ -693,12 +693,12 @@ void LLPanelLogin::updateLocationCombo( bool force_visible )
if ( ! force_visible )
show_start = gSavedSettings.getBOOL("ShowStartLocation");
- sInstance->getChildView("start_location_combo")->setVisible( show_start);
- sInstance->getChildView("start_location_text")->setVisible( show_start);
+ sInstance->childSetVisible("start_location_combo", show_start);
+ sInstance->childSetVisible("start_location_text", show_start);
BOOL show_server = gSavedSettings.getBOOL("ForceShowGrid");
- sInstance->getChildView("server_combo_text")->setVisible( show_server);
- sInstance->getChildView("server_combo")->setVisible( show_server);
+ sInstance->childSetVisible("server_combo_text", show_server);
+ sInstance->childSetVisible("server_combo", show_server);
}
// static
@@ -958,7 +958,7 @@ void LLPanelLogin::onClickConnect(void *)
return;
}
updateStartSLURL();
- std::string username = sInstance->getChild<LLUICtrl>("username_edit")->getValue().asString();
+ std::string username = sInstance->childGetText("username_edit");
if(username.empty())
@@ -1073,7 +1073,7 @@ void LLPanelLogin::updateServer()
if(sInstance && !sInstance->areCredentialFieldsDirty())
{
LLPointer<LLCredential> credential = gSecAPIHandler->loadCredential(LLGridManager::getInstance()->getGrid());
- bool remember = sInstance->getChild<LLUICtrl>("remember_check")->getValue();
+ bool remember = sInstance->childGetValue("remember_check");
sInstance->setFields(credential, remember);
}
// grid changed so show new splash screen (possibly)
@@ -1167,6 +1167,6 @@ void LLPanelLogin::updateLoginPanelLinks()
// need to call through sInstance, as it's called from onSelectServer, which
// is static.
- sInstance->getChildView("create_new_account_text")->setVisible( system_grid);
- sInstance->getChildView("forgot_password_text")->setVisible( system_grid);
+ sInstance->childSetVisible("create_new_account_text", system_grid);
+ sInstance->childSetVisible("forgot_password_text", system_grid);
}
diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp
index 27e054af34..f5e33034a3 100644
--- a/indra/newview/llpanelmaininventory.cpp
+++ b/indra/newview/llpanelmaininventory.cpp
@@ -39,7 +39,6 @@
#include "llinventorypanel.h"
#include "llfiltereditor.h"
#include "llfloaterreg.h"
-#include "lloutfitobserver.h"
#include "llpreviewtexture.h"
#include "llresmgr.h"
#include "llscrollcontainer.h"
@@ -485,7 +484,7 @@ void LLPanelMainInventory::onFilterEdit(const std::string& search_string )
void LLPanelMainInventory::onFilterSelected()
{
// Find my index
- mActivePanel = (LLInventoryPanel*)getChild<LLTabContainer>("inventory filter tabs")->getCurrentPanel();
+ mActivePanel = (LLInventoryPanel*)childGetVisibleTab("inventory filter tabs");
if (!mActivePanel)
{
@@ -493,7 +492,7 @@ void LLPanelMainInventory::onFilterSelected()
}
BOOL recent_active = ("Recent Items" == mActivePanel->getName());
- getChildView("add_btn_panel")->setVisible( !recent_active);
+ childSetVisible("add_btn_panel", !recent_active);
setFilterSubString(mFilterSubString);
LLInventoryFilter* filter = mActivePanel->getFilter();
@@ -585,7 +584,7 @@ void LLPanelMainInventory::updateItemcountText()
{
text = getString("ItemcountUnknown");
}
- getChild<LLUICtrl>("ItemcountText")->setValue(text);
+ childSetText("ItemcountText",text);
}
void LLPanelMainInventory::setFilterTextFromFilter()
@@ -652,7 +651,7 @@ void LLFloaterInventoryFinder::onCheckSinceLogoff(LLUICtrl *ctrl, void *user_dat
LLFloaterInventoryFinder *self = (LLFloaterInventoryFinder *)user_data;
if (!self) return;
- bool since_logoff= self->getChild<LLUICtrl>("check_since_logoff")->getValue();
+ bool since_logoff= self->childGetValue("check_since_logoff");
if (!since_logoff &&
!( self->mSpinSinceDays->get() || self->mSpinSinceHours->get() ) )
@@ -692,7 +691,7 @@ void LLFloaterInventoryFinder::onTimeAgo(LLUICtrl *ctrl, void *user_data)
{
since_logoff = false;
}
- self->getChild<LLUICtrl>("check_since_logoff")->setValue(since_logoff);
+ self->childSetValue("check_since_logoff", since_logoff);
}
void LLFloaterInventoryFinder::changeFilter(LLInventoryFilter* filter)
@@ -715,20 +714,20 @@ void LLFloaterInventoryFinder::updateElementsFromFilter()
// update the ui elements
setTitle(mFilter->getName());
- getChild<LLUICtrl>("check_animation")->setValue((S32) (filter_types & 0x1 << LLInventoryType::IT_ANIMATION));
-
- getChild<LLUICtrl>("check_calling_card")->setValue((S32) (filter_types & 0x1 << LLInventoryType::IT_CALLINGCARD));
- getChild<LLUICtrl>("check_clothing")->setValue((S32) (filter_types & 0x1 << LLInventoryType::IT_WEARABLE));
- getChild<LLUICtrl>("check_gesture")->setValue((S32) (filter_types & 0x1 << LLInventoryType::IT_GESTURE));
- getChild<LLUICtrl>("check_landmark")->setValue((S32) (filter_types & 0x1 << LLInventoryType::IT_LANDMARK));
- getChild<LLUICtrl>("check_notecard")->setValue((S32) (filter_types & 0x1 << LLInventoryType::IT_NOTECARD));
- getChild<LLUICtrl>("check_object")->setValue((S32) (filter_types & 0x1 << LLInventoryType::IT_OBJECT));
- getChild<LLUICtrl>("check_script")->setValue((S32) (filter_types & 0x1 << LLInventoryType::IT_LSL));
- getChild<LLUICtrl>("check_sound")->setValue((S32) (filter_types & 0x1 << LLInventoryType::IT_SOUND));
- getChild<LLUICtrl>("check_texture")->setValue((S32) (filter_types & 0x1 << LLInventoryType::IT_TEXTURE));
- getChild<LLUICtrl>("check_snapshot")->setValue((S32) (filter_types & 0x1 << LLInventoryType::IT_SNAPSHOT));
- getChild<LLUICtrl>("check_show_empty")->setValue(show_folders == LLInventoryFilter::SHOW_ALL_FOLDERS);
- getChild<LLUICtrl>("check_since_logoff")->setValue(mFilter->isSinceLogoff());
+ childSetValue("check_animation", (S32) (filter_types & 0x1 << LLInventoryType::IT_ANIMATION));
+
+ childSetValue("check_calling_card", (S32) (filter_types & 0x1 << LLInventoryType::IT_CALLINGCARD));
+ childSetValue("check_clothing", (S32) (filter_types & 0x1 << LLInventoryType::IT_WEARABLE));
+ childSetValue("check_gesture", (S32) (filter_types & 0x1 << LLInventoryType::IT_GESTURE));
+ childSetValue("check_landmark", (S32) (filter_types & 0x1 << LLInventoryType::IT_LANDMARK));
+ childSetValue("check_notecard", (S32) (filter_types & 0x1 << LLInventoryType::IT_NOTECARD));
+ childSetValue("check_object", (S32) (filter_types & 0x1 << LLInventoryType::IT_OBJECT));
+ childSetValue("check_script", (S32) (filter_types & 0x1 << LLInventoryType::IT_LSL));
+ childSetValue("check_sound", (S32) (filter_types & 0x1 << LLInventoryType::IT_SOUND));
+ childSetValue("check_texture", (S32) (filter_types & 0x1 << LLInventoryType::IT_TEXTURE));
+ childSetValue("check_snapshot", (S32) (filter_types & 0x1 << LLInventoryType::IT_SNAPSHOT));
+ childSetValue("check_show_empty", show_folders == LLInventoryFilter::SHOW_ALL_FOLDERS);
+ childSetValue("check_since_logoff", mFilter->isSinceLogoff());
mSpinSinceHours->set((F32)(hours % 24));
mSpinSinceDays->set((F32)(hours / 24));
}
@@ -739,32 +738,32 @@ void LLFloaterInventoryFinder::draw()
U32 filter = 0xffffffff;
BOOL filtered_by_all_types = TRUE;
- if (!getChild<LLUICtrl>("check_animation")->getValue())
+ if (!childGetValue("check_animation"))
{
filter &= ~(0x1 << LLInventoryType::IT_ANIMATION);
filtered_by_all_types = FALSE;
}
- if (!getChild<LLUICtrl>("check_calling_card")->getValue())
+ if (!childGetValue("check_calling_card"))
{
filter &= ~(0x1 << LLInventoryType::IT_CALLINGCARD);
filtered_by_all_types = FALSE;
}
- if (!getChild<LLUICtrl>("check_clothing")->getValue())
+ if (!childGetValue("check_clothing"))
{
filter &= ~(0x1 << LLInventoryType::IT_WEARABLE);
filtered_by_all_types = FALSE;
}
- if (!getChild<LLUICtrl>("check_gesture")->getValue())
+ if (!childGetValue("check_gesture"))
{
filter &= ~(0x1 << LLInventoryType::IT_GESTURE);
filtered_by_all_types = FALSE;
}
- if (!getChild<LLUICtrl>("check_landmark")->getValue())
+ if (!childGetValue("check_landmark"))
{
@@ -772,38 +771,38 @@ void LLFloaterInventoryFinder::draw()
filtered_by_all_types = FALSE;
}
- if (!getChild<LLUICtrl>("check_notecard")->getValue())
+ if (!childGetValue("check_notecard"))
{
filter &= ~(0x1 << LLInventoryType::IT_NOTECARD);
filtered_by_all_types = FALSE;
}
- if (!getChild<LLUICtrl>("check_object")->getValue())
+ if (!childGetValue("check_object"))
{
filter &= ~(0x1 << LLInventoryType::IT_OBJECT);
filter &= ~(0x1 << LLInventoryType::IT_ATTACHMENT);
filtered_by_all_types = FALSE;
}
- if (!getChild<LLUICtrl>("check_script")->getValue())
+ if (!childGetValue("check_script"))
{
filter &= ~(0x1 << LLInventoryType::IT_LSL);
filtered_by_all_types = FALSE;
}
- if (!getChild<LLUICtrl>("check_sound")->getValue())
+ if (!childGetValue("check_sound"))
{
filter &= ~(0x1 << LLInventoryType::IT_SOUND);
filtered_by_all_types = FALSE;
}
- if (!getChild<LLUICtrl>("check_texture")->getValue())
+ if (!childGetValue("check_texture"))
{
filter &= ~(0x1 << LLInventoryType::IT_TEXTURE);
filtered_by_all_types = FALSE;
}
- if (!getChild<LLUICtrl>("check_snapshot")->getValue())
+ if (!childGetValue("check_snapshot"))
{
filter &= ~(0x1 << LLInventoryType::IT_SNAPSHOT);
filtered_by_all_types = FALSE;
@@ -843,12 +842,12 @@ void LLFloaterInventoryFinder::draw()
BOOL LLFloaterInventoryFinder::getCheckShowEmpty()
{
- return getChild<LLUICtrl>("check_show_empty")->getValue();
+ return childGetValue("check_show_empty");
}
BOOL LLFloaterInventoryFinder::getCheckSinceLogoff()
{
- return getChild<LLUICtrl>("check_since_logoff")->getValue();
+ return childGetValue("check_since_logoff");
}
void LLFloaterInventoryFinder::onCloseBtn(void* user_data)
@@ -863,17 +862,17 @@ void LLFloaterInventoryFinder::selectAllTypes(void* user_data)
LLFloaterInventoryFinder* self = (LLFloaterInventoryFinder*)user_data;
if(!self) return;
- self->getChild<LLUICtrl>("check_animation")->setValue(TRUE);
- self->getChild<LLUICtrl>("check_calling_card")->setValue(TRUE);
- self->getChild<LLUICtrl>("check_clothing")->setValue(TRUE);
- self->getChild<LLUICtrl>("check_gesture")->setValue(TRUE);
- self->getChild<LLUICtrl>("check_landmark")->setValue(TRUE);
- self->getChild<LLUICtrl>("check_notecard")->setValue(TRUE);
- self->getChild<LLUICtrl>("check_object")->setValue(TRUE);
- self->getChild<LLUICtrl>("check_script")->setValue(TRUE);
- self->getChild<LLUICtrl>("check_sound")->setValue(TRUE);
- self->getChild<LLUICtrl>("check_texture")->setValue(TRUE);
- self->getChild<LLUICtrl>("check_snapshot")->setValue(TRUE);
+ self->childSetValue("check_animation", TRUE);
+ self->childSetValue("check_calling_card", TRUE);
+ self->childSetValue("check_clothing", TRUE);
+ self->childSetValue("check_gesture", TRUE);
+ self->childSetValue("check_landmark", TRUE);
+ self->childSetValue("check_notecard", TRUE);
+ self->childSetValue("check_object", TRUE);
+ self->childSetValue("check_script", TRUE);
+ self->childSetValue("check_sound", TRUE);
+ self->childSetValue("check_texture", TRUE);
+ self->childSetValue("check_snapshot", TRUE);
}
//static
@@ -882,17 +881,17 @@ void LLFloaterInventoryFinder::selectNoTypes(void* user_data)
LLFloaterInventoryFinder* self = (LLFloaterInventoryFinder*)user_data;
if(!self) return;
- self->getChild<LLUICtrl>("check_animation")->setValue(FALSE);
- self->getChild<LLUICtrl>("check_calling_card")->setValue(FALSE);
- self->getChild<LLUICtrl>("check_clothing")->setValue(FALSE);
- self->getChild<LLUICtrl>("check_gesture")->setValue(FALSE);
- self->getChild<LLUICtrl>("check_landmark")->setValue(FALSE);
- self->getChild<LLUICtrl>("check_notecard")->setValue(FALSE);
- self->getChild<LLUICtrl>("check_object")->setValue(FALSE);
- self->getChild<LLUICtrl>("check_script")->setValue(FALSE);
- self->getChild<LLUICtrl>("check_sound")->setValue(FALSE);
- self->getChild<LLUICtrl>("check_texture")->setValue(FALSE);
- self->getChild<LLUICtrl>("check_snapshot")->setValue(FALSE);
+ self->childSetValue("check_animation", FALSE);
+ self->childSetValue("check_calling_card", FALSE);
+ self->childSetValue("check_clothing", FALSE);
+ self->childSetValue("check_gesture", FALSE);
+ self->childSetValue("check_landmark", FALSE);
+ self->childSetValue("check_notecard", FALSE);
+ self->childSetValue("check_object", FALSE);
+ self->childSetValue("check_script", FALSE);
+ self->childSetValue("check_sound", FALSE);
+ self->childSetValue("check_texture", FALSE);
+ self->childSetValue("check_snapshot", FALSE);
}
//////////////////////////////////////////////////////////////////////////////////
@@ -915,9 +914,6 @@ void LLPanelMainInventory::initListCommandsHandlers()
mEnableCallbackRegistrar.add("Inventory.GearDefault.Enable", boost::bind(&LLPanelMainInventory::isActionEnabled, this, _2));
mMenuGearDefault = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_inventory_gear_default.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
mMenuAdd = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_inventory_add.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
-
- // Update the trash button when selected item(s) get worn or taken off.
- LLOutfitObserver::instance().addCOFChangedCallback(boost::bind(&LLPanelMainInventory::updateListCommands, this));
}
void LLPanelMainInventory::updateListCommands()
diff --git a/indra/newview/llpanelme.cpp b/indra/newview/llpanelme.cpp
index 5cd4cea96d..50f0a14995 100644
--- a/indra/newview/llpanelme.cpp
+++ b/indra/newview/llpanelme.cpp
@@ -140,10 +140,10 @@ void LLPanelMe::onSaveChangesClicked()
data.avatar_id = gAgent.getID();
data.image_id = mEditPanel->getChild<LLTextureCtrl>(PICKER_SECOND_LIFE)->getImageAssetID();
data.fl_image_id = mEditPanel->getChild<LLTextureCtrl>(PICKER_FIRST_LIFE)->getImageAssetID();
- data.about_text = mEditPanel->getChild<LLUICtrl>("sl_description_edit")->getValue().asString();
- data.fl_about_text = mEditPanel->getChild<LLUICtrl>("fl_description_edit")->getValue().asString();
- data.profile_url = mEditPanel->getChild<LLUICtrl>("homepage_edit")->getValue().asString();
- data.allow_publish = mEditPanel->getChild<LLUICtrl>("show_in_search_checkbox")->getValue();
+ data.about_text = mEditPanel->childGetValue("sl_description_edit").asString();
+ data.fl_about_text = mEditPanel->childGetValue("fl_description_edit").asString();
+ data.profile_url = mEditPanel->childGetValue("homepage_edit").asString();
+ data.allow_publish = mEditPanel->childGetValue("show_in_search_checkbox");
LLAvatarPropertiesProcessor::getInstance()->sendAvatarPropertiesUpdate(&data);
togglePanel(mEditPanel); // close
@@ -199,20 +199,20 @@ void LLPanelMyProfileEdit::processProfileProperties(const LLAvatarData* avatar_d
// 'Home page' was hidden in LLPanelAvatarProfile::fillCommonData() to fix EXT-4734
// Show 'Home page' in Edit My Profile (EXT-4873)
- getChildView("homepage_edit")->setVisible( true);
+ childSetVisible("homepage_edit", true);
fillPartnerData(avatar_data);
fillAccountStatus(avatar_data);
- getChild<LLUICtrl>("show_in_search_checkbox")->setValue((BOOL)(avatar_data->flags & AVATAR_ALLOW_PUBLISH));
+ childSetValue("show_in_search_checkbox", (BOOL)(avatar_data->flags & AVATAR_ALLOW_PUBLISH));
std::string first, last;
BOOL found = gCacheName->getName(avatar_data->avatar_id, first, last);
if (found)
{
- getChild<LLUICtrl>("name_text")->setTextArg("[FIRST]", first);
- getChild<LLUICtrl>("name_text")->setTextArg("[LAST]", last);
+ childSetTextArg("name_text", "[FIRST]", first);
+ childSetTextArg("name_text", "[LAST]", last);
}
}
@@ -220,8 +220,8 @@ BOOL LLPanelMyProfileEdit::postBuild()
{
initTexturePickerMouseEvents();
- getChild<LLUICtrl>("partner_edit_link")->setTextArg("[URL]", getString("partner_edit_link_url"));
- getChild<LLUICtrl>("my_account_link")->setTextArg("[URL]", getString("my_account_link_url"));
+ childSetTextArg("partner_edit_link", "[URL]", getString("partner_edit_link_url"));
+ childSetTextArg("my_account_link", "[URL]", getString("my_account_link_url"));
return LLPanelAvatarProfile::postBuild();
}
@@ -250,8 +250,8 @@ void LLPanelMyProfileEdit::resetData()
{
LLPanelMyProfile::resetData();
- getChild<LLUICtrl>("name_text")->setTextArg("[FIRST]", LLStringUtil::null);
- getChild<LLUICtrl>("name_text")->setTextArg("[LAST]", LLStringUtil::null);
+ childSetTextArg("name_text", "[FIRST]", LLStringUtil::null);
+ childSetTextArg("name_text", "[LAST]", LLStringUtil::null);
}
void LLPanelMyProfileEdit::onTexturePickerMouseEnter(LLUICtrl* ctrl)
@@ -265,10 +265,10 @@ void LLPanelMyProfileEdit::onTexturePickerMouseLeave(LLUICtrl* ctrl)
void LLPanelMyProfileEdit::enableEditing(bool enable)
{
- getChildView("2nd_life_pic")->setEnabled(enable);
- getChildView("real_world_pic")->setEnabled(enable);
- getChildView("sl_description_edit")->setEnabled(enable);
- getChildView("fl_description_edit")->setEnabled(enable);
- getChildView("homepage_edit")->setEnabled(enable);
- getChildView("show_in_search_checkbox")->setEnabled(enable);
+ childSetEnabled("2nd_life_pic", enable);
+ childSetEnabled("real_world_pic", enable);
+ childSetEnabled("sl_description_edit", enable);
+ childSetEnabled("fl_description_edit", enable);
+ childSetEnabled("homepage_edit", enable);
+ childSetEnabled("show_in_search_checkbox", enable);
}
diff --git a/indra/newview/llpanelmediasettingsgeneral.cpp b/indra/newview/llpanelmediasettingsgeneral.cpp
index 92c8365a70..3d79e104af 100644
--- a/indra/newview/llpanelmediasettingsgeneral.cpp
+++ b/indra/newview/llpanelmediasettingsgeneral.cpp
@@ -125,13 +125,13 @@ void LLPanelMediaSettingsGeneral::draw()
// enable/disable pixel values image entry based on auto scale checkbox
if ( mAutoScale->getValue().asBoolean() == false )
{
- getChildView( LLMediaEntry::WIDTH_PIXELS_KEY )->setEnabled( true );
- getChildView( LLMediaEntry::HEIGHT_PIXELS_KEY )->setEnabled( true );
+ childSetEnabled( LLMediaEntry::WIDTH_PIXELS_KEY, true );
+ childSetEnabled( LLMediaEntry::HEIGHT_PIXELS_KEY, true );
}
else
{
- getChildView( LLMediaEntry::WIDTH_PIXELS_KEY )->setEnabled( false );
- getChildView( LLMediaEntry::HEIGHT_PIXELS_KEY )->setEnabled( false );
+ childSetEnabled( LLMediaEntry::WIDTH_PIXELS_KEY, false );
+ childSetEnabled( LLMediaEntry::HEIGHT_PIXELS_KEY, false );
};
// enable/disable UI based on type of media
@@ -152,17 +152,17 @@ void LLPanelMediaSettingsGeneral::draw()
bool show_time_controls = media_plugin->pluginSupportsMediaTime();
if ( show_time_controls )
{
- getChildView( LLMediaEntry::CURRENT_URL_KEY )->setEnabled( false );
+ childSetEnabled( LLMediaEntry::CURRENT_URL_KEY, false );
reset_button_is_active = false;
- getChildView("current_url_label")->setEnabled(false );
- getChildView( LLMediaEntry::AUTO_LOOP_KEY )->setEnabled( true );
+ childSetEnabled( "current_url_label", false );
+ childSetEnabled( LLMediaEntry::AUTO_LOOP_KEY, true );
}
else
{
- getChildView( LLMediaEntry::CURRENT_URL_KEY )->setEnabled( true );
+ childSetEnabled( LLMediaEntry::CURRENT_URL_KEY, true );
reset_button_is_active = true;
- getChildView("current_url_label")->setEnabled(true );
- getChildView( LLMediaEntry::AUTO_LOOP_KEY )->setEnabled( false );
+ childSetEnabled( "current_url_label", true );
+ childSetEnabled( LLMediaEntry::AUTO_LOOP_KEY, false );
};
};
};
@@ -179,18 +179,18 @@ void LLPanelMediaSettingsGeneral::draw()
// user has perms to press reset button and it is active
if ( user_can_press_reset )
{
- getChildView("current_url_reset_btn")->setEnabled(true );
+ childSetEnabled( "current_url_reset_btn", true );
}
// user does not has perms to press reset button and it is active
else
{
- getChildView("current_url_reset_btn")->setEnabled(false );
+ childSetEnabled( "current_url_reset_btn", false );
};
}
else
// reset button is inactive so we just slam it to off - other states don't matter
{
- getChildView("current_url_reset_btn")->setEnabled(false );
+ childSetEnabled( "current_url_reset_btn", false );
};
}
diff --git a/indra/newview/llpanelmediasettingspermissions.cpp b/indra/newview/llpanelmediasettingspermissions.cpp
index 339376cbf6..9a0d2569d5 100644
--- a/indra/newview/llpanelmediasettingspermissions.cpp
+++ b/indra/newview/llpanelmediasettingspermissions.cpp
@@ -93,7 +93,7 @@ void LLPanelMediaSettingsPermissions::draw()
// housekeeping
LLPanel::draw();
- getChild<LLUICtrl>("perms_group_name")->setValue(LLStringUtil::null);
+ childSetText("perms_group_name",LLStringUtil::null);
LLUUID group_id;
BOOL groups_identical = LLSelectMgr::getInstance()->selectGetGroup(group_id);
if (groups_identical)
@@ -101,6 +101,7 @@ void LLPanelMediaSettingsPermissions::draw()
if(mPermsGroupName)
{
mPermsGroupName->setNameID(group_id, true);
+ mPermsGroupName->setEnabled(true);
};
}
else
@@ -109,6 +110,7 @@ void LLPanelMediaSettingsPermissions::draw()
{
mPermsGroupName->setNameID(LLUUID::null, TRUE);
mPermsGroupName->refresh(LLUUID::null, LLStringUtil::null, LLStringUtil::null, true);
+ mPermsGroupName->setEnabled(false);
};
};
}
@@ -134,12 +136,6 @@ void LLPanelMediaSettingsPermissions::clearValues( void* userdata, bool editable
self->mPermsGroupControl->setEnabled(editable);
self->mPermsWorldInteract->setEnabled(editable);
self->mPermsWorldControl->setEnabled(editable);
-
- self->getChild< LLTextBox >("controls_label")->setEnabled(editable);
- self->getChild< LLTextBox >("owner_label")->setEnabled(editable);
- self->getChild< LLTextBox >("group_label")->setEnabled(editable);
- self->getChild< LLNameBox >("perms_group_name")->setEnabled(editable);
- self->getChild< LLTextBox >("anyone_label")->setEnabled(editable);
}
////////////////////////////////////////////////////////////////////////////////
@@ -214,11 +210,13 @@ void LLPanelMediaSettingsPermissions::initValues( void* userdata, const LLSD& me
self->mPermsWorldControl->setEnabled(false);
}
- self->getChild< LLTextBox >("controls_label")->setEnabled(editable);
- self->getChild< LLTextBox >("owner_label")->setEnabled(editable);
- self->getChild< LLTextBox >("group_label")->setEnabled(editable);
- self->getChild< LLNameBox >("perms_group_name")->setEnabled(editable);
- self->getChild< LLTextBox >("anyone_label")->setEnabled(editable);
+
+ self->childSetEnabled("media_perms_label_owner", editable );
+ self->childSetText("media_perms_label_owner", LLTrans::getString("Media Perms Owner") );
+ self->childSetEnabled("media_perms_label_group", editable );
+ self->childSetText("media_perms_label_group", LLTrans::getString("Media Perms Group") );
+ self->childSetEnabled("media_perms_label_anyone", editable );
+ self->childSetText("media_perms_label_anyone", LLTrans::getString("Media Perms Anyone") );
}
////////////////////////////////////////////////////////////////////////////////
diff --git a/indra/newview/llpanelobject.cpp b/indra/newview/llpanelobject.cpp
index d756a1b931..bc00d75533 100644
--- a/indra/newview/llpanelobject.cpp
+++ b/indra/newview/llpanelobject.cpp
@@ -458,17 +458,17 @@ void LLPanelObject::getState( )
BOOL editable = root_objectp->permModify();
// Select Single Message
- getChildView("select_single")->setVisible( FALSE);
- getChildView("edit_object")->setVisible( FALSE);
+ childSetVisible("select_single", FALSE);
+ childSetVisible("edit_object", FALSE);
if (!editable || single_volume || selected_count <= 1)
{
- getChildView("edit_object")->setVisible( TRUE);
- getChildView("edit_object")->setEnabled(TRUE);
+ childSetVisible("edit_object", TRUE);
+ childSetEnabled("edit_object", TRUE);
}
else
{
- getChildView("select_single")->setVisible( TRUE);
- getChildView("select_single")->setEnabled(TRUE);
+ childSetVisible("select_single", TRUE);
+ childSetEnabled("select_single", TRUE);
}
// Lock checkbox - only modifiable if you own the object.
BOOL self_owned = (gAgent.getID() == owner_id);
@@ -987,19 +987,19 @@ void LLPanelObject::getState( )
mLabelSkew ->setEnabled( enabled );
mSpinSkew ->setEnabled( enabled );
- getChildView("scale_hole")->setVisible( FALSE);
- getChildView("scale_taper")->setVisible( FALSE);
+ childSetVisible("scale_hole", FALSE);
+ childSetVisible("scale_taper", FALSE);
if (top_size_x_visible || top_size_y_visible)
{
if (size_is_hole)
{
- getChildView("scale_hole")->setVisible( TRUE);
- getChildView("scale_hole")->setEnabled(enabled);
+ childSetVisible("scale_hole", TRUE);
+ childSetEnabled("scale_hole", enabled);
}
else
{
- getChildView("scale_taper")->setVisible( TRUE);
- getChildView("scale_taper")->setEnabled(enabled);
+ childSetVisible("scale_taper", TRUE);
+ childSetEnabled("scale_taper", enabled);
}
}
@@ -1010,27 +1010,27 @@ void LLPanelObject::getState( )
mSpinShearX ->setEnabled( enabled );
mSpinShearY ->setEnabled( enabled );
- getChildView("advanced_cut")->setVisible( FALSE);
- getChildView("advanced_dimple")->setVisible( FALSE);
- getChildView("advanced_slice")->setVisible( FALSE);
+ childSetVisible("advanced_cut", FALSE);
+ childSetVisible("advanced_dimple", FALSE);
+ childSetVisible("advanced_slice", FALSE);
if (advanced_cut_visible)
{
if (advanced_is_dimple)
{
- getChildView("advanced_dimple")->setVisible( TRUE);
- getChildView("advanced_dimple")->setEnabled(enabled);
+ childSetVisible("advanced_dimple", TRUE);
+ childSetEnabled("advanced_dimple", enabled);
}
else if (advanced_is_slice)
{
- getChildView("advanced_slice")->setVisible( TRUE);
- getChildView("advanced_slice")->setEnabled(enabled);
+ childSetVisible("advanced_slice", TRUE);
+ childSetEnabled("advanced_slice", enabled);
}
else
{
- getChildView("advanced_cut")->setVisible( TRUE);
- getChildView("advanced_cut")->setEnabled(enabled);
+ childSetVisible("advanced_cut", TRUE);
+ childSetEnabled("advanced_cut", enabled);
}
}
@@ -1913,15 +1913,15 @@ void LLPanelObject::clearCtrls()
mLabelRadiusOffset->setEnabled( FALSE );
mLabelRevolutions->setEnabled( FALSE );
- getChildView("select_single")->setVisible( FALSE);
- getChildView("edit_object")->setVisible( TRUE);
- getChildView("edit_object")->setEnabled(FALSE);
+ childSetVisible("select_single", FALSE);
+ childSetVisible("edit_object", TRUE);
+ childSetEnabled("edit_object", FALSE);
- getChildView("scale_hole")->setEnabled(FALSE);
- getChildView("scale_taper")->setEnabled(FALSE);
- getChildView("advanced_cut")->setEnabled(FALSE);
- getChildView("advanced_dimple")->setEnabled(FALSE);
- getChildView("advanced_slice")->setVisible( FALSE);
+ childSetEnabled("scale_hole", FALSE);
+ childSetEnabled("scale_taper", FALSE);
+ childSetEnabled("advanced_cut", FALSE);
+ childSetEnabled("advanced_dimple", FALSE);
+ childSetVisible("advanced_slice", FALSE);
}
//
diff --git a/indra/newview/llpanelonlinestatus.cpp b/indra/newview/llpanelonlinestatus.cpp
index 2f1300e0f2..08204e7e4d 100644
--- a/indra/newview/llpanelonlinestatus.cpp
+++ b/indra/newview/llpanelonlinestatus.cpp
@@ -39,8 +39,8 @@ LLPanelOnlineStatus::LLPanelOnlineStatus(
"panel_online_status_toast.xml");
- getChild<LLUICtrl>("avatar_icon")->setValue(notification->getPayload()["FROM_ID"]);
- getChild<LLUICtrl>("message")->setValue(notification->getMessage());
+ childSetValue("avatar_icon", notification->getPayload()["FROM_ID"]);
+ childSetValue("message", notification->getMessage());
if (notification->getPayload().has("respond_on_mousedown")
&& notification->getPayload()["respond_on_mousedown"])
diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp
index c9380bf6e6..d67b95a70e 100644
--- a/indra/newview/llpaneloutfitedit.cpp
+++ b/indra/newview/llpaneloutfitedit.cpp
@@ -36,7 +36,6 @@
#include "lloutfitobserver.h"
#include "llcofwearables.h"
#include "llfilteredwearablelist.h"
-#include "llfolderviewitem.h"
#include "llinventory.h"
#include "llinventoryitemslist.h"
#include "llviewercontrol.h"
@@ -80,11 +79,6 @@ const U64 ALL_ITEMS_MASK = WEARABLE_MASK | ATTACHMENT_MASK;
static const std::string REVERT_BTN("revert_btn");
-
-///////////////////////////////////////////////////////////////////////////////
-// LLShopURLDispatcher
-///////////////////////////////////////////////////////////////////////////////
-
class LLShopURLDispatcher
{
public:
@@ -144,10 +138,6 @@ std::string LLShopURLDispatcher::resolveURL(LLAssetType::EType asset_type, ESex
return gSavedSettings.getString(setting_name);
}
-///////////////////////////////////////////////////////////////////////////////
-// LLPanelOutfitEditGearMenu
-///////////////////////////////////////////////////////////////////////////////
-
class LLPanelOutfitEditGearMenu
{
public:
@@ -163,6 +153,7 @@ public:
if (menu)
{
populateCreateWearableSubmenus(menu);
+ menu->buildDrawLabels();
}
return menu;
@@ -211,147 +202,6 @@ private:
}
};
-///////////////////////////////////////////////////////////////////////////////
-// LLAddWearablesGearMenu
-///////////////////////////////////////////////////////////////////////////////
-
-class LLAddWearablesGearMenu : public LLInitClass<LLAddWearablesGearMenu>
-{
-public:
- static LLMenuGL* create(LLWearableItemsList* flat_list, LLInventoryPanel* inventory_panel)
- {
- LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
- LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable_registrar;
-
- llassert(flat_list);
- llassert(inventory_panel);
-
- LLHandle<LLView> flat_list_handle = flat_list->getHandle();
- LLHandle<LLPanel> inventory_panel_handle = inventory_panel->getHandle();
-
- registrar.add("AddWearable.Gear.Sort", boost::bind(onSort, flat_list_handle, inventory_panel_handle, _2));
- enable_registrar.add("AddWearable.Gear.Check", boost::bind(onCheck, flat_list_handle, inventory_panel_handle, _2));
- enable_registrar.add("AddWearable.Gear.Visible", boost::bind(onVisible, inventory_panel_handle, _2));
-
- LLMenuGL* menu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>(
- "menu_add_wearable_gear.xml",
- LLMenuGL::sMenuContainer, LLViewerMenuHolderGL::child_registry_t::instance());
-
- return menu;
- }
-
-private:
- static void onSort(LLHandle<LLView> flat_list_handle,
- LLHandle<LLPanel> inventory_panel_handle,
- LLSD::String sort_order_str)
- {
- if (flat_list_handle.isDead() || inventory_panel_handle.isDead()) return;
-
- LLWearableItemsList* flat_list = dynamic_cast<LLWearableItemsList*>(flat_list_handle.get());
- LLInventoryPanel* inventory_panel = dynamic_cast<LLInventoryPanel*>(inventory_panel_handle.get());
-
- if (!flat_list || !inventory_panel) return;
-
- LLWearableItemsList::ESortOrder sort_order;
-
- if ("by_most_recent" == sort_order_str)
- {
- sort_order = LLWearableItemsList::E_SORT_BY_MOST_RECENT;
- }
- else if ("by_name" == sort_order_str)
- {
- sort_order = LLWearableItemsList::E_SORT_BY_NAME;
- }
- else if ("by_type" == sort_order_str)
- {
- sort_order = LLWearableItemsList::E_SORT_BY_TYPE_NAME;
- }
- else
- {
- llwarns << "Unrecognized sort order action" << llendl;
- return;
- }
-
- if (inventory_panel->getVisible())
- {
- inventory_panel->setSortOrder(sort_order);
- }
- else
- {
- flat_list->setSortOrder(sort_order);
- }
- }
-
- static bool onCheck(LLHandle<LLView> flat_list_handle,
- LLHandle<LLPanel> inventory_panel_handle,
- LLSD::String sort_order_str)
- {
- if (flat_list_handle.isDead() || inventory_panel_handle.isDead()) return false;
-
- LLWearableItemsList* flat_list = dynamic_cast<LLWearableItemsList*>(flat_list_handle.get());
- LLInventoryPanel* inventory_panel = dynamic_cast<LLInventoryPanel*>(inventory_panel_handle.get());
-
- if (!inventory_panel || !flat_list) return false;
-
- // Inventory panel uses its own sort order independent from
- // flat list view so this flag is used to distinguish between
- // currently visible "tree" or "flat" representation of inventory.
- bool inventory_tree_visible = inventory_panel->getVisible();
-
- if (inventory_tree_visible)
- {
- U32 sort_order = inventory_panel->getSortOrder();
-
- if ("by_most_recent" == sort_order_str)
- {
- return LLWearableItemsList::E_SORT_BY_MOST_RECENT & sort_order;
- }
- else if ("by_name" == sort_order_str)
- {
- // If inventory panel is not sorted by date then it is sorted by name.
- return LLWearableItemsList::E_SORT_BY_MOST_RECENT & ~sort_order;
- }
- llwarns << "Unrecognized inventory panel sort order" << llendl;
- }
- else
- {
- LLWearableItemsList::ESortOrder sort_order = flat_list->getSortOrder();
-
- if ("by_most_recent" == sort_order_str)
- {
- return LLWearableItemsList::E_SORT_BY_MOST_RECENT == sort_order;
- }
- else if ("by_name" == sort_order_str)
- {
- return LLWearableItemsList::E_SORT_BY_NAME == sort_order;
- }
- else if ("by_type" == sort_order_str)
- {
- return LLWearableItemsList::E_SORT_BY_TYPE_NAME == sort_order;
- }
- llwarns << "Unrecognized wearable list sort order" << llendl;
- }
- return false;
- }
-
- static bool onVisible(LLHandle<LLPanel> inventory_panel_handle,
- LLSD::String sort_order_str)
- {
- if (inventory_panel_handle.isDead()) return false;
-
- LLInventoryPanel* inventory_panel = dynamic_cast<LLInventoryPanel*>(inventory_panel_handle.get());
-
- // Enable sorting by type only for the flat list of items
- // because inventory panel doesn't support this kind of sorting.
- return ( "by_type" == sort_order_str )
- && ( !inventory_panel || !inventory_panel->getVisible() );
- }
-};
-
-///////////////////////////////////////////////////////////////////////////////
-// LLCOFDragAndDropObserver
-///////////////////////////////////////////////////////////////////////////////
-
class LLCOFDragAndDropObserver : public LLInventoryAddItemByAssetObserver
{
public:
@@ -387,17 +237,12 @@ void LLCOFDragAndDropObserver::done()
LLAppearanceMgr::instance().updateAppearanceFromCOF();
}
-///////////////////////////////////////////////////////////////////////////////
-// LLPanelOutfitEdit
-///////////////////////////////////////////////////////////////////////////////
-
LLPanelOutfitEdit::LLPanelOutfitEdit()
: LLPanel(),
mSearchFilter(NULL),
mCOFWearables(NULL),
mInventoryItemsPanel(NULL),
mGearMenu(NULL),
- mAddWearablesGearMenu(NULL),
mCOFDragAndDropObserver(NULL),
mInitialized(false),
mAddWearablesPanel(NULL),
@@ -450,7 +295,7 @@ BOOL LLPanelOutfitEdit::postBuild()
mListViewItemTypes.push_back(new LLFilterItem(getString("Filter.All"), new LLFindNonLinksByMask(ALL_ITEMS_MASK)));
mListViewItemTypes.push_back(new LLFilterItem(getString("Filter.Clothing"), new LLIsTypeActual(LLAssetType::AT_CLOTHING)));
mListViewItemTypes.push_back(new LLFilterItem(getString("Filter.Bodyparts"), new LLIsTypeActual(LLAssetType::AT_BODYPART)));
- mListViewItemTypes.push_back(new LLFilterItem(getString("Filter.Objects"), new LLFindNonLinksByMask(ATTACHMENT_MASK)));;
+ mListViewItemTypes.push_back(new LLFilterItem(getString("Filter.Objects"), new LLFindByMask(ATTACHMENT_MASK)));;
mListViewItemTypes.push_back(new LLFilterItem(LLTrans::getString("shape"), new LLFindActualWearablesOfType(LLWearableType::WT_SHAPE)));
mListViewItemTypes.push_back(new LLFilterItem(LLTrans::getString("skin"), new LLFindActualWearablesOfType(LLWearableType::WT_SKIN)));
mListViewItemTypes.push_back(new LLFilterItem(LLTrans::getString("hair"), new LLFindActualWearablesOfType(LLWearableType::WT_HAIR)));
@@ -475,9 +320,7 @@ BOOL LLPanelOutfitEdit::postBuild()
childSetCommitCallback("filter_button", boost::bind(&LLPanelOutfitEdit::showWearablesFilter, this), NULL);
childSetCommitCallback("folder_view_btn", boost::bind(&LLPanelOutfitEdit::showWearablesFolderView, this), NULL);
- childSetCommitCallback("folder_view_btn", boost::bind(&LLPanelOutfitEdit::saveListSelection, this), NULL);
childSetCommitCallback("list_view_btn", boost::bind(&LLPanelOutfitEdit::showWearablesListView, this), NULL);
- childSetCommitCallback("list_view_btn", boost::bind(&LLPanelOutfitEdit::saveListSelection, this), NULL);
childSetCommitCallback("wearables_gear_menu_btn", boost::bind(&LLPanelOutfitEdit::onGearButtonClick, this, _1), NULL);
childSetCommitCallback("gear_menu_btn", boost::bind(&LLPanelOutfitEdit::onGearButtonClick, this, _1), NULL);
childSetCommitCallback("shop_btn_1", boost::bind(&LLPanelOutfitEdit::onShopButtonClicked, this), NULL);
@@ -537,26 +380,12 @@ BOOL LLPanelOutfitEdit::postBuild()
childSetAction(REVERT_BTN, boost::bind(&LLAppearanceMgr::wearBaseOutfit, LLAppearanceMgr::getInstance()));
- /*
- * By default AT_CLOTHING are sorted by (in in MY OUTFITS):
- * - by type (types order determined in LLWearableType::EType)
- * - each LLWearableType::EType by outer layer on top
- *
- * In Add More panel AT_CLOTHING should be sorted in a such way:
- * - by type (types order determined in LLWearableType::EType)
- * - each LLWearableType::EType by name (EXT-8205)
- */
- mWearableListViewItemsComparator = new LLWearableItemTypeNameComparator();
- mWearableListViewItemsComparator->setOrder(LLAssetType::AT_CLOTHING, LLWearableItemTypeNameComparator::ORDER_RANK_1, false, true);
-
mWearablesListViewPanel = getChild<LLPanel>("filtered_wearables_panel");
- mWearableItemsList = getChild<LLWearableItemsList>("list_view");
+ mWearableItemsList = getChild<LLInventoryItemsList>("list_view");
mWearableItemsList->setCommitOnSelectionChange(true);
mWearableItemsList->setCommitCallback(boost::bind(&LLPanelOutfitEdit::updatePlusButton, this));
mWearableItemsList->setDoubleClickCallback(boost::bind(&LLPanelOutfitEdit::onPlusBtnClicked, this));
- mWearableItemsList->setComparator(mWearableListViewItemsComparator);
-
mSaveComboBtn.reset(new LLSaveOutfitComboBtn(this));
return TRUE;
}
@@ -594,46 +423,35 @@ void LLPanelOutfitEdit::showAddWearablesPanel(bool show_add_wearables)
{
mAddWearablesPanel->setVisible(show_add_wearables);
- getChild<LLUICtrl>("show_add_wearables_btn")->setValue(show_add_wearables);
+ childSetValue("show_add_wearables_btn", show_add_wearables);
updateFiltersVisibility();
- getChildView("filter_button")->setVisible( show_add_wearables);
+ childSetVisible("filter_button", show_add_wearables);
//search filter should be disabled
if (!show_add_wearables)
{
- getChild<LLUICtrl>("filter_button")->setValue(false);
+ childSetValue("filter_button", false);
mFolderViewFilterCmbBox->setVisible(false);
mListViewFilterCmbBox->setVisible(false);
showWearablesFilter();
- /*
- * By default AT_CLOTHING are sorted by (in in MY OUTFITS):
- * - by type (types order determined in LLWearableType::EType)
- * - each LLWearableType::EType by outer layer on top
- *
- * In Add More panel AT_CLOTHING should be sorted in a such way:
- * - by type (types order determined in LLWearableType::EType)
- * - each LLWearableType::EType by name (EXT-8205)
- */
- mWearableItemsList->setSortOrder(LLWearableItemsList::E_SORT_BY_TYPE_NAME);
-
// Reset mWearableItemsList position to top. See EXT-8180.
mWearableItemsList->goToTop();
}
//switching button bars
- getChildView("no_add_wearables_button_bar")->setVisible( !show_add_wearables);
- getChildView("add_wearables_button_bar")->setVisible( show_add_wearables);
+ childSetVisible("no_add_wearables_button_bar", !show_add_wearables);
+ childSetVisible("add_wearables_button_bar", show_add_wearables);
}
void LLPanelOutfitEdit::showWearablesFilter()
{
- bool filter_visible = getChild<LLUICtrl>("filter_button")->getValue();
+ bool filter_visible = childGetValue("filter_button");
- getChildView("filter_panel")->setVisible( filter_visible);
+ childSetVisible("filter_panel", filter_visible);
if(!filter_visible)
{
@@ -650,7 +468,9 @@ void LLPanelOutfitEdit::showWearablesListView()
{
if(switchPanels(mInventoryItemsPanel, mWearablesListViewPanel))
{
- updateWearablesPanelVerbButtons();
+ mFolderViewBtn->setToggleState(FALSE);
+ mFolderViewBtn->setImageOverlay(getString("folder_view_off"), mFolderViewBtn->getImageOverlayHAlign());
+ mListViewBtn->setImageOverlay(getString("list_view_on"), mListViewBtn->getImageOverlayHAlign());
updateFiltersVisibility();
}
mListViewBtn->setToggleState(TRUE);
@@ -660,7 +480,9 @@ void LLPanelOutfitEdit::showWearablesFolderView()
{
if(switchPanels(mWearablesListViewPanel, mInventoryItemsPanel))
{
- updateWearablesPanelVerbButtons();
+ mListViewBtn->setToggleState(FALSE);
+ mListViewBtn->setImageOverlay(getString("list_view_off"), mListViewBtn->getImageOverlayHAlign());
+ mFolderViewBtn->setImageOverlay(getString("folder_view_on"), mFolderViewBtn->getImageOverlayHAlign());
updateFiltersVisibility();
}
mFolderViewBtn->setToggleState(TRUE);
@@ -801,17 +623,8 @@ void LLPanelOutfitEdit::onShopButtonClicked()
if (isAgentAvatarValid())
{
// try to get wearable type from 'Add More' panel first (EXT-7639)
- selection_info_t selection_info = getAddMorePanelSelectionType();
-
- LLWearableType::EType type = selection_info.first;
+ LLWearableType::EType type = getAddMorePanelSelectionType();
- if (selection_info.second > 1)
- {
- // the second argument is not important in this case: generic market place will be opened
- url = url_resolver.resolveURL(LLWearableType::WT_NONE, SEX_FEMALE);
- }
- else
- {
if (type == LLWearableType::WT_NONE)
{
type = getCOFWearablesSelectionType();
@@ -827,9 +640,7 @@ void LLPanelOutfitEdit::onShopButtonClicked()
if (url.empty())
{
- url = url_resolver.resolveURL(
- mCOFWearables->getExpandedAccordionAssetType(), sex);
- }
+ url = url_resolver.resolveURL(mCOFWearables->getExpandedAccordionAssetType(), sex);
}
}
else
@@ -868,9 +679,9 @@ LLWearableType::EType LLPanelOutfitEdit::getCOFWearablesSelectionType() const
return type;
}
-LLPanelOutfitEdit::selection_info_t LLPanelOutfitEdit::getAddMorePanelSelectionType() const
+LLWearableType::EType LLPanelOutfitEdit::getAddMorePanelSelectionType() const
{
- selection_info_t result = std::make_pair(LLWearableType::WT_NONE, 0);
+ LLWearableType::EType type = LLWearableType::WT_NONE;
if (mAddWearablesPanel != NULL && mAddWearablesPanel->getVisible())
{
@@ -878,11 +689,9 @@ LLPanelOutfitEdit::selection_info_t LLPanelOutfitEdit::getAddMorePanelSelectionT
{
std::set<LLUUID> selected_uuids = mInventoryItemsPanel->getRootFolder()->getSelectionList();
- result.second = selected_uuids.size();
-
- if (result.second == 1)
+ if (selected_uuids.size() == 1)
{
- result.first = getWearableTypeByItemUUID(*(selected_uuids.begin()));
+ type = getWearableTypeByItemUUID(*(selected_uuids.begin()));
}
}
else if (mWearableItemsList != NULL && mWearableItemsList->getVisible())
@@ -890,16 +699,14 @@ LLPanelOutfitEdit::selection_info_t LLPanelOutfitEdit::getAddMorePanelSelectionT
std::vector<LLUUID> selected_uuids;
mWearableItemsList->getSelectedUUIDs(selected_uuids);
- result.second = selected_uuids.size();
-
- if (result.second == 1)
+ if (selected_uuids.size() == 1)
{
- result.first = getWearableTypeByItemUUID(selected_uuids.front());
+ type = getWearableTypeByItemUUID(selected_uuids.front());
}
}
}
- return result;
+ return type;
}
LLWearableType::EType LLPanelOutfitEdit::getWearableTypeByItemUUID(const LLUUID& item_uuid) const
@@ -936,7 +743,7 @@ void LLPanelOutfitEdit::updatePlusButton()
}
// If any of the selected items are not wearable (due to already being worn OR being of the wrong type), disable the add button.
- uuid_vec_t::iterator unwearable_item = std::find_if(selected_items.begin(), selected_items.end(), !boost::bind(&get_can_item_be_worn, _1));
+ uuid_vec_t::iterator unwearable_item = std::find_if(selected_items.begin(), selected_items.end(), !boost::bind(& get_can_item_be_worn, _1));
bool can_add = ( unwearable_item == selected_items.end() );
mPlusBtn->setEnabled(can_add);
@@ -1184,7 +991,7 @@ void LLPanelOutfitEdit::updateVerbs()
bool has_baseoutfit = LLAppearanceMgr::getInstance()->getBaseOutfitUUID().notNull();
mSaveComboBtn->setSaveBtnEnabled(!outfit_locked && outfit_is_dirty);
- getChildView(REVERT_BTN)->setEnabled(outfit_is_dirty && has_baseoutfit);
+ childSetEnabled(REVERT_BTN, outfit_is_dirty && has_baseoutfit);
mSaveComboBtn->setMenuItemEnabled("save_outfit", !outfit_locked && outfit_is_dirty);
@@ -1221,33 +1028,13 @@ void LLPanelOutfitEdit::resetAccordionState()
void LLPanelOutfitEdit::onGearButtonClick(LLUICtrl* clicked_button)
{
- LLMenuGL* menu = NULL;
-
- if (mAddWearablesPanel->getVisible())
+ if(!mGearMenu)
{
- if (!mAddWearablesGearMenu)
- {
- mAddWearablesGearMenu = LLAddWearablesGearMenu::create(mWearableItemsList, mInventoryItemsPanel);
- }
-
- menu = mAddWearablesGearMenu;
- }
- else
- {
- if (!mGearMenu)
- {
- mGearMenu = LLPanelOutfitEditGearMenu::create();
- }
-
- menu = mGearMenu;
+ mGearMenu = LLPanelOutfitEditGearMenu::create();
}
- if (!menu) return;
-
- menu->arrangeAndClear(); // update menu height
- S32 menu_y = menu->getRect().getHeight() + clicked_button->getRect().getHeight();
- menu->buildDrawLabels();
- LLMenuGL::showPopup(clicked_button, menu, 0, menu_y);
+ S32 menu_y = mGearMenu->getRect().getHeight() + clicked_button->getRect().getHeight();
+ LLMenuGL::showPopup(clicked_button, mGearMenu, 0, menu_y);
}
void LLPanelOutfitEdit::onAddMoreButtonClicked()
@@ -1339,62 +1126,5 @@ void LLPanelOutfitEdit::onCOFChanged()
update();
}
-void LLPanelOutfitEdit::updateWearablesPanelVerbButtons()
-{
- if(mWearablesListViewPanel->getVisible())
- {
- mFolderViewBtn->setToggleState(FALSE);
- mFolderViewBtn->setImageOverlay(getString("folder_view_off"), mFolderViewBtn->getImageOverlayHAlign());
- mListViewBtn->setImageOverlay(getString("list_view_on"), mListViewBtn->getImageOverlayHAlign());
- }
- else if(mInventoryItemsPanel->getVisible())
- {
- mListViewBtn->setToggleState(FALSE);
- mListViewBtn->setImageOverlay(getString("list_view_off"), mListViewBtn->getImageOverlayHAlign());
- mFolderViewBtn->setImageOverlay(getString("folder_view_on"), mFolderViewBtn->getImageOverlayHAlign());
- }
-}
-
-void LLPanelOutfitEdit::saveListSelection()
-{
- if(mWearablesListViewPanel->getVisible())
- {
- std::set<LLUUID> selected_ids = mInventoryItemsPanel->getRootFolder()->getSelectionList();
-
- if(!selected_ids.size()) return;
-
- for (std::set<LLUUID>::const_iterator item_id = selected_ids.begin(); item_id != selected_ids.end(); ++item_id)
- {
- mWearableItemsList->selectItemByUUID(*item_id, true);
- }
- mWearableItemsList->scrollToShowFirstSelectedItem();
- }
- else if(mInventoryItemsPanel->getVisible())
- {
- std::vector<LLUUID> selected_ids;
- mWearableItemsList->getSelectedUUIDs(selected_ids);
-
- if(!selected_ids.size()) return;
-
- mInventoryItemsPanel->clearSelection();
- LLFolderView* root = mInventoryItemsPanel->getRootFolder();
-
- if(!root) return;
-
- for(std::vector<LLUUID>::const_iterator item_id = selected_ids.begin(); item_id != selected_ids.end(); ++item_id)
- {
- LLFolderViewItem* item = root->getItemByID(*item_id);
- if (!item) continue;
-
- LLFolderViewFolder* parent = item->getParentFolder();
- if(parent)
- {
- parent->setOpenArrangeRecursively(TRUE, LLFolderViewFolder::RECURSE_UP);
- }
- mInventoryItemsPanel->getRootFolder()->changeSelection(item, TRUE);
- }
- mInventoryItemsPanel->getRootFolder()->scrollToShowSelection();
- }
-}
// EOF
diff --git a/indra/newview/llpaneloutfitedit.h b/indra/newview/llpaneloutfitedit.h
index 2dca986e33..836bba8c44 100644
--- a/indra/newview/llpaneloutfitedit.h
+++ b/indra/newview/llpaneloutfitedit.h
@@ -37,8 +37,8 @@
#include "llremoteparcelrequest.h"
#include "llinventory.h"
#include "llinventoryfunctions.h"
+#include "llinventoryitemslist.h"
#include "llinventorymodel.h"
-#include "llwearableitemslist.h"
class LLButton;
class LLCOFWearables;
@@ -58,7 +58,6 @@ class LLMenuGL;
class LLFindNonLinksByMask;
class LLFindWearablesOfType;
class LLSaveOutfitComboBtn;
-class LLWearableItemTypeNameComparator;
class LLPanelOutfitEdit : public LLPanel
{
@@ -195,17 +194,8 @@ private:
void getCurrentItemUUID(LLUUID& selected_id);
void onCOFChanged();
- /**
- * Method preserves selection while switching between folder/list view modes
- */
- void saveListSelection();
-
- void updateWearablesPanelVerbButtons();
-
- typedef std::pair<LLWearableType::EType, size_t> selection_info_t;
-
LLWearableType::EType getCOFWearablesSelectionType() const;
- selection_info_t getAddMorePanelSelectionType() const;
+ LLWearableType::EType getAddMorePanelSelectionType() const;
LLWearableType::EType getWearableTypeByItemUUID(const LLUUID& item_uuid) const;
LLTextBox* mCurrentOutfitName;
@@ -224,9 +214,8 @@ private:
LLComboBox* mListViewFilterCmbBox;
LLFilteredWearableListManager* mWearableListManager;
- LLWearableItemsList* mWearableItemsList;
+ LLInventoryItemsList* mWearableItemsList;
LLPanel* mWearablesListViewPanel;
- LLWearableItemTypeNameComparator* mWearableListViewItemsComparator;
LLCOFDragAndDropObserver* mCOFDragAndDropObserver;
@@ -235,7 +224,6 @@ private:
LLCOFWearables* mCOFWearables;
LLMenuGL* mGearMenu;
- LLMenuGL* mAddWearablesGearMenu;
bool mInitialized;
std::auto_ptr<LLSaveOutfitComboBtn> mSaveComboBtn;
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index 8627274e80..1c4476ca49 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -266,7 +266,6 @@ public:
friend class LLInventoryFriendCardObserver;
LLFriendListUpdater(callback_t cb)
: LLAvatarListUpdater(cb, FRIEND_LIST_UPDATE_TIMEOUT)
- , mIsActive(false)
{
LLAvatarTracker::instance().addObserver(this);
@@ -285,12 +284,9 @@ public:
/*virtual*/ void changed(U32 mask)
{
- if (mIsActive)
- {
- // events can arrive quickly in bulk - we need not process EVERY one of them -
- // so we wait a short while to let others pile-in, and process them in aggregate.
- mEventTimer.start();
- }
+ // events can arrive quickly in bulk - we need not process EVERY one of them -
+ // so we wait a short while to let others pile-in, and process them in aggregate.
+ mEventTimer.start();
// save-up all the mask-bits which have come-in
mMask |= mask;
@@ -299,12 +295,8 @@ public:
/*virtual*/ BOOL tick()
{
- if (!mIsActive) return FALSE;
-
if (mMask & (LLFriendObserver::ADD | LLFriendObserver::REMOVE | LLFriendObserver::ONLINE))
- {
updateList();
- }
// Stop updates.
mEventTimer.stop();
@@ -313,20 +305,9 @@ public:
return FALSE;
}
- // virtual
- void setActive(bool active)
- {
- mIsActive = active;
- if (active)
- {
- tick();
- }
- }
-
private:
U32 mMask;
LLInventoryFriendCardObserver* mInvObserver;
- bool mIsActive;
/**
* This class is intended for updating Friend List when Inventory Friend Card is added/removed.
@@ -509,25 +490,22 @@ void LLPanelPeople::onFriendsAccordionExpandedCollapsed(LLUICtrl* ctrl, const LL
BOOL LLPanelPeople::postBuild()
{
+ setVisibleCallback(boost::bind(&LLPanelPeople::onVisibilityChange, this, _2));
+
mFilterEditor = getChild<LLFilterEditor>("filter_input");
mFilterEditor->setCommitCallback(boost::bind(&LLPanelPeople::onFilterEdit, this, _2));
mTabContainer = getChild<LLTabContainer>("tabs");
mTabContainer->setCommitCallback(boost::bind(&LLPanelPeople::onTabSelected, this, _2));
- LLPanel* friends_tab = getChild<LLPanel>(FRIENDS_TAB_NAME);
- // updater is active only if panel is visible to user.
- friends_tab->setVisibleCallback(boost::bind(&Updater::setActive, mFriendListUpdater, _2));
- mOnlineFriendList = friends_tab->getChild<LLAvatarList>("avatars_online");
- mAllFriendList = friends_tab->getChild<LLAvatarList>("avatars_all");
+ mOnlineFriendList = getChild<LLPanel>(FRIENDS_TAB_NAME)->getChild<LLAvatarList>("avatars_online");
+ mAllFriendList = getChild<LLPanel>(FRIENDS_TAB_NAME)->getChild<LLAvatarList>("avatars_all");
mOnlineFriendList->setNoItemsCommentText(getString("no_friends_online"));
mOnlineFriendList->setShowIcons("FriendsListShowIcons");
mAllFriendList->setNoItemsCommentText(getString("no_friends"));
mAllFriendList->setShowIcons("FriendsListShowIcons");
- LLPanel* nearby_tab = getChild<LLPanel>(NEARBY_TAB_NAME);
- nearby_tab->setVisibleCallback(boost::bind(&Updater::setActive, mNearbyListUpdater, _2));
- mNearbyList = nearby_tab->getChild<LLAvatarList>("avatar_list");
+ mNearbyList = getChild<LLPanel>(NEARBY_TAB_NAME)->getChild<LLAvatarList>("avatar_list");
mNearbyList->setNoItemsCommentText(getString("no_one_near"));
mNearbyList->setNoItemsMsg(getString("no_one_near"));
mNearbyList->setNoFilteredItemsMsg(getString("no_one_filtered_near"));
@@ -816,8 +794,8 @@ void LLPanelPeople::updateButtons()
}
LLPanel* groups_panel = mTabContainer->getCurrentPanel();
- groups_panel->getChildView("activate_btn")->setEnabled(item_selected && !cur_group_active); // "none" or a non-active group selected
- groups_panel->getChildView("minus_btn")->setEnabled(item_selected && selected_id.notNull());
+ groups_panel->childSetEnabled("activate_btn", item_selected && !cur_group_active); // "none" or a non-active group selected
+ groups_panel->childSetEnabled("minus_btn", item_selected && selected_id.notNull());
}
else
{
@@ -833,10 +811,10 @@ void LLPanelPeople::updateButtons()
LLPanel* cur_panel = mTabContainer->getCurrentPanel();
if (cur_panel)
{
- cur_panel->getChildView("add_friend_btn")->setEnabled(!is_friend);
+ cur_panel->childSetEnabled("add_friend_btn", !is_friend);
if (friends_tab_active)
{
- cur_panel->getChildView("del_btn")->setEnabled(multiple_selected);
+ cur_panel->childSetEnabled("del_btn", multiple_selected);
}
}
}
@@ -971,6 +949,28 @@ void LLPanelPeople::setSortOrder(LLAvatarList* list, ESortOrder order, bool save
}
}
+void LLPanelPeople::onVisibilityChange(const LLSD& new_visibility)
+{
+ if (new_visibility.asBoolean() == FALSE)
+ {
+ // Don't update anything while we're invisible.
+ mNearbyListUpdater->setActive(FALSE);
+ }
+ else
+ {
+ reSelectedCurrentTab();
+ }
+}
+
+// Make the tab-container re-select current tab
+// for onTabSelected() callback to get called.
+// (currently this is needed to reactivate nearby list updates
+// when we get visible)
+void LLPanelPeople::reSelectedCurrentTab()
+{
+ mTabContainer->selectTab(mTabContainer->getCurrentPanelIndex());
+}
+
bool LLPanelPeople::isRealGroup()
{
return getCurrentItemID() != LLUUID::null;
@@ -1018,6 +1018,7 @@ void LLPanelPeople::onFilterEdit(const std::string& search_string)
void LLPanelPeople::onTabSelected(const LLSD& param)
{
std::string tab_name = getChild<LLPanel>(param.asString())->getName();
+ mNearbyListUpdater->setActive(tab_name == NEARBY_TAB_NAME);
updateButtons();
showFriendsAccordionsIfNeeded();
@@ -1381,6 +1382,8 @@ void LLPanelPeople::onOpen(const LLSD& key)
if (!tab_name.empty())
mTabContainer->selectTabByName(tab_name);
+ else
+ reSelectedCurrentTab();
}
bool LLPanelPeople::notifyChildren(const LLSD& info)
diff --git a/indra/newview/llpanelpeople.h b/indra/newview/llpanelpeople.h
index 3b8b736be1..e931537042 100644
--- a/indra/newview/llpanelpeople.h
+++ b/indra/newview/llpanelpeople.h
@@ -85,6 +85,10 @@ private:
void showGroupMenu(LLMenuGL* menu);
void setSortOrder(LLAvatarList* list, ESortOrder order, bool save = true);
+ void onVisibilityChange( const LLSD& new_visibility);
+
+ void reSelectedCurrentTab();
+
// UI callbacks
void onFilterEdit(const std::string& search_string);
void onTabSelected(const LLSD& param);
diff --git a/indra/newview/llpanelpermissions.cpp b/indra/newview/llpanelpermissions.cpp
index e35574be6c..0317d1050c 100644
--- a/indra/newview/llpanelpermissions.cpp
+++ b/indra/newview/llpanelpermissions.cpp
@@ -136,9 +136,9 @@ LLPanelPermissions::LLPanelPermissions() :
BOOL LLPanelPermissions::postBuild()
{
childSetCommitCallback("Object Name",LLPanelPermissions::onCommitName,this);
- getChild<LLLineEditor>("Object Name")->setPrevalidate(LLTextValidate::validateASCIIPrintableNoPipe);
+ childSetPrevalidate("Object Name",LLTextValidate::validateASCIIPrintableNoPipe);
childSetCommitCallback("Object Description",LLPanelPermissions::onCommitDesc,this);
- getChild<LLLineEditor>("Object Description")->setPrevalidate(LLTextValidate::validateASCIIPrintableNoPipe);
+ childSetPrevalidate("Object Description",LLTextValidate::validateASCIIPrintableNoPipe);
getChild<LLUICtrl>("button set group")->setCommitCallback(boost::bind(&LLPanelPermissions::onClickGroup,this));
@@ -177,81 +177,81 @@ LLPanelPermissions::~LLPanelPermissions()
void LLPanelPermissions::disableAll()
{
- getChildView("perm_modify")->setEnabled(FALSE);
- getChild<LLUICtrl>("perm_modify")->setValue(LLStringUtil::null);
-
- getChildView("Creator:")->setEnabled(FALSE);
- getChild<LLUICtrl>("Creator Name")->setValue(LLStringUtil::null);
- getChildView("Creator Name")->setEnabled(FALSE);
-
- getChildView("Owner:")->setEnabled(FALSE);
- getChild<LLUICtrl>("Owner Name")->setValue(LLStringUtil::null);
- getChildView("Owner Name")->setEnabled(FALSE);
-
- getChildView("Group:")->setEnabled(FALSE);
- getChild<LLUICtrl>("Group Name Proxy")->setValue(LLStringUtil::null);
- getChildView("Group Name Proxy")->setEnabled(FALSE);
- getChildView("button set group")->setEnabled(FALSE);
-
- getChild<LLUICtrl>("Object Name")->setValue(LLStringUtil::null);
- getChildView("Object Name")->setEnabled(FALSE);
- getChildView("Name:")->setEnabled(FALSE);
- getChild<LLUICtrl>("Group Name")->setValue(LLStringUtil::null);
- getChildView("Group Name")->setEnabled(FALSE);
- getChildView("Description:")->setEnabled(FALSE);
- getChild<LLUICtrl>("Object Description")->setValue(LLStringUtil::null);
- getChildView("Object Description")->setEnabled(FALSE);
-
- getChildView("Permissions:")->setEnabled(FALSE);
+ childSetEnabled("perm_modify", FALSE);
+ childSetText("perm_modify", LLStringUtil::null);
+
+ childSetEnabled("Creator:", FALSE);
+ childSetText("Creator Name", LLStringUtil::null);
+ childSetEnabled("Creator Name", FALSE);
+
+ childSetEnabled("Owner:", FALSE);
+ childSetText("Owner Name", LLStringUtil::null);
+ childSetEnabled("Owner Name", FALSE);
+
+ childSetEnabled("Group:", FALSE);
+ childSetText("Group Name Proxy", LLStringUtil::null);
+ childSetEnabled("Group Name Proxy", FALSE);
+ childSetEnabled("button set group", FALSE);
+
+ childSetText("Object Name", LLStringUtil::null);
+ childSetEnabled("Object Name", FALSE);
+ childSetEnabled("Name:", FALSE);
+ childSetText("Group Name", LLStringUtil::null);
+ childSetEnabled("Group Name", FALSE);
+ childSetEnabled("Description:", FALSE);
+ childSetText("Object Description", LLStringUtil::null);
+ childSetEnabled("Object Description", FALSE);
+
+ childSetEnabled("Permissions:", FALSE);
- getChild<LLUICtrl>("checkbox share with group")->setValue(FALSE);
- getChildView("checkbox share with group")->setEnabled(FALSE);
- getChildView("button deed")->setEnabled(FALSE);
+ childSetValue("checkbox share with group", FALSE);
+ childSetEnabled("checkbox share with group", FALSE);
+ childSetEnabled("button deed", FALSE);
- getChild<LLUICtrl>("checkbox allow everyone move")->setValue(FALSE);
- getChildView("checkbox allow everyone move")->setEnabled(FALSE);
- getChild<LLUICtrl>("checkbox allow everyone copy")->setValue(FALSE);
- getChildView("checkbox allow everyone copy")->setEnabled(FALSE);
+ childSetValue("checkbox allow everyone move", FALSE);
+ childSetEnabled("checkbox allow everyone move", FALSE);
+ childSetValue("checkbox allow everyone copy", FALSE);
+ childSetEnabled("checkbox allow everyone copy", FALSE);
//Next owner can:
- getChildView("Next owner can:")->setEnabled(FALSE);
- getChild<LLUICtrl>("checkbox next owner can modify")->setValue(FALSE);
- getChildView("checkbox next owner can modify")->setEnabled(FALSE);
- getChild<LLUICtrl>("checkbox next owner can copy")->setValue(FALSE);
- getChildView("checkbox next owner can copy")->setEnabled(FALSE);
- getChild<LLUICtrl>("checkbox next owner can transfer")->setValue(FALSE);
- getChildView("checkbox next owner can transfer")->setEnabled(FALSE);
+ childSetEnabled("Next owner can:", FALSE);
+ childSetValue("checkbox next owner can modify", FALSE);
+ childSetEnabled("checkbox next owner can modify", FALSE);
+ childSetValue("checkbox next owner can copy", FALSE);
+ childSetEnabled("checkbox next owner can copy", FALSE);
+ childSetValue("checkbox next owner can transfer", FALSE);
+ childSetEnabled("checkbox next owner can transfer", FALSE);
//checkbox for sale
- getChild<LLUICtrl>("checkbox for sale")->setValue(FALSE);
- getChildView("checkbox for sale")->setEnabled(FALSE);
+ childSetValue("checkbox for sale", FALSE);
+ childSetEnabled("checkbox for sale", FALSE);
//checkbox include in search
- getChild<LLUICtrl>("search_check")->setValue(FALSE);
- getChildView("search_check")->setEnabled(FALSE);
+ childSetValue("search_check", FALSE);
+ childSetEnabled("search_check", FALSE);
LLComboBox* combo_sale_type = getChild<LLComboBox>("sale type");
combo_sale_type->setValue(LLSaleInfo::FS_COPY);
combo_sale_type->setEnabled(FALSE);
- getChildView("Cost")->setEnabled(FALSE);
- getChild<LLUICtrl>("Cost")->setValue(getString("Cost Default"));
- getChild<LLUICtrl>("Edit Cost")->setValue(LLStringUtil::null);
- getChildView("Edit Cost")->setEnabled(FALSE);
+ childSetEnabled("Cost", FALSE);
+ childSetText("Cost", getString("Cost Default"));
+ childSetText("Edit Cost", LLStringUtil::null);
+ childSetEnabled("Edit Cost", FALSE);
- getChildView("label click action")->setEnabled(FALSE);
+ childSetEnabled("label click action", FALSE);
LLComboBox* combo_click_action = getChild<LLComboBox>("clickaction");
if (combo_click_action)
{
combo_click_action->setEnabled(FALSE);
combo_click_action->clear();
}
- getChildView("B:")->setVisible( FALSE);
- getChildView("O:")->setVisible( FALSE);
- getChildView("G:")->setVisible( FALSE);
- getChildView("E:")->setVisible( FALSE);
- getChildView("N:")->setVisible( FALSE);
- getChildView("F:")->setVisible( FALSE);
+ childSetVisible("B:", FALSE);
+ childSetVisible("O:", FALSE);
+ childSetVisible("G:", FALSE);
+ childSetVisible("E:", FALSE);
+ childSetVisible("N:", FALSE);
+ childSetVisible("F:", FALSE);
}
void LLPanelPermissions::refresh()
@@ -317,23 +317,23 @@ void LLPanelPermissions::refresh()
{
++string_index;
}
- getChildView("perm_modify")->setEnabled(TRUE);
- getChild<LLUICtrl>("perm_modify")->setValue(MODIFY_INFO_STRINGS[string_index]);
+ childSetEnabled("perm_modify", TRUE);
+ childSetText("perm_modify", MODIFY_INFO_STRINGS[string_index]);
- getChildView("Permissions:")->setEnabled(TRUE);
+ childSetEnabled("Permissions:", TRUE);
// Update creator text field
- getChildView("Creator:")->setEnabled(TRUE);
+ childSetEnabled("Creator:", TRUE);
BOOL creators_identical;
std::string creator_name;
creators_identical = LLSelectMgr::getInstance()->selectGetCreator(mCreatorID,
creator_name);
- getChild<LLUICtrl>("Creator Name")->setValue(creator_name);
- getChildView("Creator Name")->setEnabled(TRUE);
+ childSetText("Creator Name", creator_name);
+ childSetEnabled("Creator Name", TRUE);
// Update owner text field
- getChildView("Owner:")->setEnabled(TRUE);
+ childSetEnabled("Owner:", TRUE);
std::string owner_name;
const BOOL owners_identical = LLSelectMgr::getInstance()->selectGetOwner(mOwnerID, owner_name);
@@ -358,12 +358,12 @@ void LLPanelPermissions::refresh()
}
}
}
- getChild<LLUICtrl>("Owner Name")->setValue(owner_name);
- getChildView("Owner Name")->setEnabled(TRUE);
+ childSetText("Owner Name", owner_name);
+ childSetEnabled("Owner Name", TRUE);
// update group text field
- getChildView("Group:")->setEnabled(TRUE);
- getChild<LLUICtrl>("Group Name")->setValue(LLStringUtil::null);
+ childSetEnabled("Group:", TRUE);
+ childSetText("Group Name", LLStringUtil::null);
LLUUID group_id;
BOOL groups_identical = LLSelectMgr::getInstance()->selectGetGroup(group_id);
if (groups_identical)
@@ -384,18 +384,18 @@ void LLPanelPermissions::refresh()
}
}
- getChildView("button set group")->setEnabled(owners_identical && (mOwnerID == gAgent.getID()));
+ childSetEnabled("button set group", owners_identical && (mOwnerID == gAgent.getID()));
- getChildView("Name:")->setEnabled(TRUE);
+ childSetEnabled("Name:", TRUE);
LLLineEditor* LineEditorObjectName = getChild<LLLineEditor>("Object Name");
- getChildView("Description:")->setEnabled(TRUE);
+ childSetEnabled("Description:", TRUE);
LLLineEditor* LineEditorObjectDesc = getChild<LLLineEditor>("Object Description");
if (is_one_object)
{
if (keyboard_focus_view != LineEditorObjectName)
{
- getChild<LLUICtrl>("Object Name")->setValue(nodep->mName);
+ childSetText("Object Name",nodep->mName);
}
if (LineEditorObjectDesc)
@@ -408,7 +408,7 @@ void LLPanelPermissions::refresh()
}
else
{
- getChild<LLUICtrl>("Object Name")->setValue(LLStringUtil::null);
+ childSetText("Object Name", LLStringUtil::null);
LineEditorObjectDesc->setText(LLStringUtil::null);
}
@@ -420,13 +420,13 @@ void LLPanelPermissions::refresh()
}
if (edit_name_desc)
{
- getChildView("Object Name")->setEnabled(TRUE);
- getChildView("Object Description")->setEnabled(TRUE);
+ childSetEnabled("Object Name", TRUE);
+ childSetEnabled("Object Description", TRUE);
}
else
{
- getChildView("Object Name")->setEnabled(FALSE);
- getChildView("Object Description")->setEnabled(FALSE);
+ childSetEnabled("Object Name", FALSE);
+ childSetEnabled("Object Description", FALSE);
}
S32 total_sale_price = 0;
@@ -448,9 +448,9 @@ void LLPanelPermissions::refresh()
if (!owners_identical)
{
- getChildView("Cost")->setEnabled(FALSE);
- getChild<LLUICtrl>("Edit Cost")->setValue(LLStringUtil::null);
- getChildView("Edit Cost")->setEnabled(FALSE);
+ childSetEnabled("Cost", FALSE);
+ childSetText("Edit Cost", LLStringUtil::null);
+ childSetEnabled("Edit Cost", FALSE);
}
// You own these objects.
else if (self_owned || (group_owned && gAgent.hasPowerInGroup(group_id,GP_OBJECT_SET_SALE)))
@@ -458,11 +458,11 @@ void LLPanelPermissions::refresh()
// If there are multiple items for sale then set text to PRICE PER UNIT.
if (num_for_sale > 1)
{
- getChild<LLUICtrl>("Cost")->setValue(getString("Cost Per Unit"));
+ childSetText("Cost", getString("Cost Per Unit"));
}
else
{
- getChild<LLUICtrl>("Cost")->setValue(getString("Cost Default"));
+ childSetText("Cost", getString("Cost Default"));
}
LLSpinCtrl *edit_price = getChild<LLSpinCtrl>("Edit Cost");
@@ -486,35 +486,35 @@ void LLPanelPermissions::refresh()
// The edit fields are only enabled if you can sell this object
// and the sale price is not mixed.
BOOL enable_edit = (num_for_sale && can_transfer) ? !is_for_sale_mixed : FALSE;
- getChildView("Cost")->setEnabled(enable_edit);
- getChildView("Edit Cost")->setEnabled(enable_edit);
+ childSetEnabled("Cost", enable_edit);
+ childSetEnabled("Edit Cost", enable_edit);
}
// Someone, not you, owns these objects.
else if (!public_owned)
{
- getChildView("Cost")->setEnabled(FALSE);
- getChildView("Edit Cost")->setEnabled(FALSE);
+ childSetEnabled("Cost", FALSE);
+ childSetEnabled("Edit Cost", FALSE);
// Don't show a price if none of the items are for sale.
if (num_for_sale)
- getChild<LLUICtrl>("Edit Cost")->setValue(llformat("%d",total_sale_price));
+ childSetText("Edit Cost", llformat("%d",total_sale_price));
else
- getChild<LLUICtrl>("Edit Cost")->setValue(LLStringUtil::null);
+ childSetText("Edit Cost", LLStringUtil::null);
// If multiple items are for sale, set text to TOTAL PRICE.
if (num_for_sale > 1)
- getChild<LLUICtrl>("Cost")->setValue(getString("Cost Total"));
+ childSetText("Cost", getString("Cost Total"));
else
- getChild<LLUICtrl>("Cost")->setValue(getString("Cost Default"));
+ childSetText("Cost", getString("Cost Default"));
}
// This is a public object.
else
{
- getChildView("Cost")->setEnabled(FALSE);
- getChild<LLUICtrl>("Cost")->setValue(getString("Cost Default"));
+ childSetEnabled("Cost", FALSE);
+ childSetText("Cost", getString("Cost Default"));
- getChild<LLUICtrl>("Edit Cost")->setValue(LLStringUtil::null);
- getChildView("Edit Cost")->setEnabled(FALSE);
+ childSetText("Edit Cost", LLStringUtil::null);
+ childSetEnabled("Edit Cost", FALSE);
}
// Enable and disable the permissions checkboxes
@@ -556,20 +556,20 @@ void LLPanelPermissions::refresh()
{
if (valid_base_perms)
{
- getChild<LLUICtrl>("B:")->setValue("B: " + mask_to_string(base_mask_on));
- getChildView("B:")->setVisible( TRUE);
+ childSetText("B:", "B: " + mask_to_string(base_mask_on));
+ childSetVisible("B:", TRUE);
- getChild<LLUICtrl>("O:")->setValue("O: " + mask_to_string(owner_mask_on));
- getChildView("O:")->setVisible( TRUE);
+ childSetText("O:", "O: " + mask_to_string(owner_mask_on));
+ childSetVisible("O:", TRUE);
- getChild<LLUICtrl>("G:")->setValue("G: " + mask_to_string(group_mask_on));
- getChildView("G:")->setVisible( TRUE);
+ childSetText("G:", "G: " + mask_to_string(group_mask_on));
+ childSetVisible("G:", TRUE);
- getChild<LLUICtrl>("E:")->setValue("E: " + mask_to_string(everyone_mask_on));
- getChildView("E:")->setVisible( TRUE);
+ childSetText("E:", "E: " + mask_to_string(everyone_mask_on));
+ childSetVisible("E:", TRUE);
- getChild<LLUICtrl>("N:")->setValue("N: " + mask_to_string(next_owner_mask_on));
- getChildView("N:")->setVisible( TRUE);
+ childSetText("N:", "N: " + mask_to_string(next_owner_mask_on));
+ childSetVisible("N:", TRUE);
}
U32 flag_mask = 0x0;
@@ -578,17 +578,17 @@ void LLPanelPermissions::refresh()
if (objectp->permCopy()) flag_mask |= PERM_COPY;
if (objectp->permTransfer()) flag_mask |= PERM_TRANSFER;
- getChild<LLUICtrl>("F:")->setValue("F:" + mask_to_string(flag_mask));
- getChildView("F:")->setVisible( TRUE);
+ childSetText("F:", "F:" + mask_to_string(flag_mask));
+ childSetVisible("F:", TRUE);
}
else
{
- getChildView("B:")->setVisible( FALSE);
- getChildView("O:")->setVisible( FALSE);
- getChildView("G:")->setVisible( FALSE);
- getChildView("E:")->setVisible( FALSE);
- getChildView("N:")->setVisible( FALSE);
- getChildView("F:")->setVisible( FALSE);
+ childSetVisible("B:", FALSE);
+ childSetVisible("O:", FALSE);
+ childSetVisible("G:", FALSE);
+ childSetVisible("E:", FALSE);
+ childSetVisible("N:", FALSE);
+ childSetVisible("F:", FALSE);
}
BOOL has_change_perm_ability = FALSE;
@@ -608,65 +608,65 @@ void LLPanelPermissions::refresh()
if (!has_change_perm_ability && !has_change_sale_ability && !root_selected)
{
// ...must select root to choose permissions
- getChild<LLUICtrl>("perm_modify")->setValue(getString("text modify warning"));
+ childSetValue("perm_modify", getString("text modify warning"));
}
if (has_change_perm_ability)
{
- getChildView("checkbox share with group")->setEnabled(TRUE);
- getChildView("checkbox allow everyone move")->setEnabled(owner_mask_on & PERM_MOVE);
- getChildView("checkbox allow everyone copy")->setEnabled(owner_mask_on & PERM_COPY && owner_mask_on & PERM_TRANSFER);
+ childSetEnabled("checkbox share with group", TRUE);
+ childSetEnabled("checkbox allow everyone move", owner_mask_on & PERM_MOVE);
+ childSetEnabled("checkbox allow everyone copy", owner_mask_on & PERM_COPY && owner_mask_on & PERM_TRANSFER);
}
else
{
- getChildView("checkbox share with group")->setEnabled(FALSE);
- getChildView("checkbox allow everyone move")->setEnabled(FALSE);
- getChildView("checkbox allow everyone copy")->setEnabled(FALSE);
+ childSetEnabled("checkbox share with group", FALSE);
+ childSetEnabled("checkbox allow everyone move", FALSE);
+ childSetEnabled("checkbox allow everyone copy", FALSE);
}
if (has_change_sale_ability && (owner_mask_on & PERM_TRANSFER))
{
- getChildView("checkbox for sale")->setEnabled(can_transfer || (!can_transfer && num_for_sale));
+ childSetEnabled("checkbox for sale", can_transfer || (!can_transfer && num_for_sale));
// Set the checkbox to tentative if the prices of each object selected
// are not the same.
- getChild<LLUICtrl>("checkbox for sale")->setTentative( is_for_sale_mixed);
- getChildView("sale type")->setEnabled(num_for_sale && can_transfer && !is_sale_price_mixed);
+ childSetTentative("checkbox for sale", is_for_sale_mixed);
+ childSetEnabled("sale type", num_for_sale && can_transfer && !is_sale_price_mixed);
- getChildView("Next owner can:")->setEnabled(TRUE);
- getChildView("checkbox next owner can modify")->setEnabled(base_mask_on & PERM_MODIFY);
- getChildView("checkbox next owner can copy")->setEnabled(base_mask_on & PERM_COPY);
- getChildView("checkbox next owner can transfer")->setEnabled(next_owner_mask_on & PERM_COPY);
+ childSetEnabled("Next owner can:", TRUE);
+ childSetEnabled("checkbox next owner can modify", base_mask_on & PERM_MODIFY);
+ childSetEnabled("checkbox next owner can copy", base_mask_on & PERM_COPY);
+ childSetEnabled("checkbox next owner can transfer", next_owner_mask_on & PERM_COPY);
}
else
{
- getChildView("checkbox for sale")->setEnabled(FALSE);
- getChildView("sale type")->setEnabled(FALSE);
+ childSetEnabled("checkbox for sale", FALSE);
+ childSetEnabled("sale type", FALSE);
- getChildView("Next owner can:")->setEnabled(FALSE);
- getChildView("checkbox next owner can modify")->setEnabled(FALSE);
- getChildView("checkbox next owner can copy")->setEnabled(FALSE);
- getChildView("checkbox next owner can transfer")->setEnabled(FALSE);
+ childSetEnabled("Next owner can:", FALSE);
+ childSetEnabled("checkbox next owner can modify", FALSE);
+ childSetEnabled("checkbox next owner can copy", FALSE);
+ childSetEnabled("checkbox next owner can transfer", FALSE);
}
if (valid_group_perms)
{
if ((group_mask_on & PERM_COPY) && (group_mask_on & PERM_MODIFY) && (group_mask_on & PERM_MOVE))
{
- getChild<LLUICtrl>("checkbox share with group")->setValue(TRUE);
- getChild<LLUICtrl>("checkbox share with group")->setTentative( FALSE);
- getChildView("button deed")->setEnabled(gAgent.hasPowerInGroup(group_id, GP_OBJECT_DEED) && (owner_mask_on & PERM_TRANSFER) && !group_owned && can_transfer);
+ childSetValue("checkbox share with group", TRUE);
+ childSetTentative("checkbox share with group", FALSE);
+ childSetEnabled("button deed", gAgent.hasPowerInGroup(group_id, GP_OBJECT_DEED) && (owner_mask_on & PERM_TRANSFER) && !group_owned && can_transfer);
}
else if ((group_mask_off & PERM_COPY) && (group_mask_off & PERM_MODIFY) && (group_mask_off & PERM_MOVE))
{
- getChild<LLUICtrl>("checkbox share with group")->setValue(FALSE);
- getChild<LLUICtrl>("checkbox share with group")->setTentative( FALSE);
- getChildView("button deed")->setEnabled(FALSE);
+ childSetValue("checkbox share with group", FALSE);
+ childSetTentative("checkbox share with group", FALSE);
+ childSetEnabled("button deed", FALSE);
}
else
{
- getChild<LLUICtrl>("checkbox share with group")->setValue(TRUE);
- getChild<LLUICtrl>("checkbox share with group")->setTentative( TRUE);
- getChildView("button deed")->setEnabled(gAgent.hasPowerInGroup(group_id, GP_OBJECT_DEED) && (group_mask_on & PERM_MOVE) && (owner_mask_on & PERM_TRANSFER) && !group_owned && can_transfer);
+ childSetValue("checkbox share with group", TRUE);
+ childSetTentative("checkbox share with group", TRUE);
+ childSetEnabled("button deed", gAgent.hasPowerInGroup(group_id, GP_OBJECT_DEED) && (group_mask_on & PERM_MOVE) && (owner_mask_on & PERM_TRANSFER) && !group_owned && can_transfer);
}
}
@@ -675,35 +675,35 @@ void LLPanelPermissions::refresh()
// Move
if (everyone_mask_on & PERM_MOVE)
{
- getChild<LLUICtrl>("checkbox allow everyone move")->setValue(TRUE);
- getChild<LLUICtrl>("checkbox allow everyone move")->setTentative( FALSE);
+ childSetValue("checkbox allow everyone move", TRUE);
+ childSetTentative("checkbox allow everyone move", FALSE);
}
else if (everyone_mask_off & PERM_MOVE)
{
- getChild<LLUICtrl>("checkbox allow everyone move")->setValue(FALSE);
- getChild<LLUICtrl>("checkbox allow everyone move")->setTentative( FALSE);
+ childSetValue("checkbox allow everyone move", FALSE);
+ childSetTentative("checkbox allow everyone move", FALSE);
}
else
{
- getChild<LLUICtrl>("checkbox allow everyone move")->setValue(TRUE);
- getChild<LLUICtrl>("checkbox allow everyone move")->setTentative( TRUE);
+ childSetValue("checkbox allow everyone move", TRUE);
+ childSetTentative("checkbox allow everyone move", TRUE);
}
// Copy == everyone can't copy
if (everyone_mask_on & PERM_COPY)
{
- getChild<LLUICtrl>("checkbox allow everyone copy")->setValue(TRUE);
- getChild<LLUICtrl>("checkbox allow everyone copy")->setTentative( !can_copy || !can_transfer);
+ childSetValue("checkbox allow everyone copy", TRUE);
+ childSetTentative("checkbox allow everyone copy", !can_copy || !can_transfer);
}
else if (everyone_mask_off & PERM_COPY)
{
- getChild<LLUICtrl>("checkbox allow everyone copy")->setValue(FALSE);
- getChild<LLUICtrl>("checkbox allow everyone copy")->setTentative( FALSE);
+ childSetValue("checkbox allow everyone copy", FALSE);
+ childSetTentative("checkbox allow everyone copy", FALSE);
}
else
{
- getChild<LLUICtrl>("checkbox allow everyone copy")->setValue(TRUE);
- getChild<LLUICtrl>("checkbox allow everyone copy")->setTentative( TRUE);
+ childSetValue("checkbox allow everyone copy", TRUE);
+ childSetTentative("checkbox allow everyone copy", TRUE);
}
}
@@ -712,52 +712,52 @@ void LLPanelPermissions::refresh()
// Modify == next owner canot modify
if (next_owner_mask_on & PERM_MODIFY)
{
- getChild<LLUICtrl>("checkbox next owner can modify")->setValue(TRUE);
- getChild<LLUICtrl>("checkbox next owner can modify")->setTentative( FALSE);
+ childSetValue("checkbox next owner can modify", TRUE);
+ childSetTentative("checkbox next owner can modify", FALSE);
}
else if (next_owner_mask_off & PERM_MODIFY)
{
- getChild<LLUICtrl>("checkbox next owner can modify")->setValue(FALSE);
- getChild<LLUICtrl>("checkbox next owner can modify")->setTentative( FALSE);
+ childSetValue("checkbox next owner can modify", FALSE);
+ childSetTentative("checkbox next owner can modify", FALSE);
}
else
{
- getChild<LLUICtrl>("checkbox next owner can modify")->setValue(TRUE);
- getChild<LLUICtrl>("checkbox next owner can modify")->setTentative( TRUE);
+ childSetValue("checkbox next owner can modify", TRUE);
+ childSetTentative("checkbox next owner can modify", TRUE);
}
// Copy == next owner cannot copy
if (next_owner_mask_on & PERM_COPY)
{
- getChild<LLUICtrl>("checkbox next owner can copy")->setValue(TRUE);
- getChild<LLUICtrl>("checkbox next owner can copy")->setTentative( !can_copy);
+ childSetValue("checkbox next owner can copy", TRUE);
+ childSetTentative("checkbox next owner can copy", !can_copy);
}
else if (next_owner_mask_off & PERM_COPY)
{
- getChild<LLUICtrl>("checkbox next owner can copy")->setValue(FALSE);
- getChild<LLUICtrl>("checkbox next owner can copy")->setTentative( FALSE);
+ childSetValue("checkbox next owner can copy", FALSE);
+ childSetTentative("checkbox next owner can copy", FALSE);
}
else
{
- getChild<LLUICtrl>("checkbox next owner can copy")->setValue(TRUE);
- getChild<LLUICtrl>("checkbox next owner can copy")->setTentative( TRUE);
+ childSetValue("checkbox next owner can copy", TRUE);
+ childSetTentative("checkbox next owner can copy", TRUE);
}
// Transfer == next owner cannot transfer
if (next_owner_mask_on & PERM_TRANSFER)
{
- getChild<LLUICtrl>("checkbox next owner can transfer")->setValue(TRUE);
- getChild<LLUICtrl>("checkbox next owner can transfer")->setTentative( !can_transfer);
+ childSetValue("checkbox next owner can transfer", TRUE);
+ childSetTentative("checkbox next owner can transfer", !can_transfer);
}
else if (next_owner_mask_off & PERM_TRANSFER)
{
- getChild<LLUICtrl>("checkbox next owner can transfer")->setValue(FALSE);
- getChild<LLUICtrl>("checkbox next owner can transfer")->setTentative( FALSE);
+ childSetValue("checkbox next owner can transfer", FALSE);
+ childSetTentative("checkbox next owner can transfer", FALSE);
}
else
{
- getChild<LLUICtrl>("checkbox next owner can transfer")->setValue(TRUE);
- getChild<LLUICtrl>("checkbox next owner can transfer")->setTentative( TRUE);
+ childSetValue("checkbox next owner can transfer", TRUE);
+ childSetTentative("checkbox next owner can transfer", TRUE);
}
}
@@ -779,7 +779,7 @@ void LLPanelPermissions::refresh()
combo_sale_type->setTentative( TRUE); // unfortunately this doesn't do anything at the moment.
}
- getChild<LLUICtrl>("checkbox for sale")->setValue((num_for_sale != 0));
+ childSetValue("checkbox for sale", (num_for_sale != 0));
// HACK: There are some old objects in world that are set for sale,
// but are no-transfer. We need to let users turn for-sale off, but only
@@ -789,7 +789,7 @@ void LLPanelPermissions::refresh()
{
if (num_for_sale && has_change_sale_ability)
{
- getChildView("checkbox for sale")->setEnabled(true);
+ childSetEnabled("checkbox for sale", true);
}
}
@@ -797,9 +797,9 @@ void LLPanelPermissions::refresh()
const BOOL all_volume = LLSelectMgr::getInstance()->selectionAllPCode( LL_PCODE_VOLUME );
bool include_in_search;
const BOOL all_include_in_search = LLSelectMgr::getInstance()->selectionGetIncludeInSearch(&include_in_search);
- getChildView("search_check")->setEnabled(has_change_sale_ability && all_volume);
- getChild<LLUICtrl>("search_check")->setValue(include_in_search);
- getChild<LLUICtrl>("search_check")->setTentative( !all_include_in_search);
+ childSetEnabled("search_check", has_change_sale_ability && all_volume);
+ childSetValue("search_check", include_in_search);
+ childSetTentative("search_check", !all_include_in_search);
// Click action (touch, sit, buy)
U8 click_action = 0;
@@ -812,8 +812,8 @@ void LLPanelPermissions::refresh()
combo_click_action->setValue(LLSD(combo_value));
}
}
- getChildView("label click action")->setEnabled(is_perm_modify && all_volume);
- getChildView("clickaction")->setEnabled(is_perm_modify && all_volume);
+ childSetEnabled("label click action", is_perm_modify && all_volume);
+ childSetEnabled("clickaction", is_perm_modify && all_volume);
}
diff --git a/indra/newview/llpanelpick.cpp b/indra/newview/llpanelpick.cpp
index 7615a93a49..baff995d5c 100644
--- a/indra/newview/llpanelpick.cpp
+++ b/indra/newview/llpanelpick.cpp
@@ -244,13 +244,13 @@ void LLPanelPickInfo::resetControls()
{
if(getAvatarId() == gAgent.getID())
{
- getChildView("edit_btn")->setEnabled(TRUE);
- getChildView("edit_btn")->setVisible( TRUE);
+ childSetEnabled("edit_btn", TRUE);
+ childSetVisible("edit_btn", TRUE);
}
else
{
- getChildView("edit_btn")->setEnabled(FALSE);
- getChildView("edit_btn")->setVisible( FALSE);
+ childSetEnabled("edit_btn", FALSE);
+ childSetVisible("edit_btn", FALSE);
}
}
@@ -303,17 +303,17 @@ void LLPanelPickInfo::setSnapshotId(const LLUUID& id)
void LLPanelPickInfo::setPickName(const std::string& name)
{
- getChild<LLUICtrl>(XML_NAME)->setValue(name);
+ childSetValue(XML_NAME, name);
}
void LLPanelPickInfo::setPickDesc(const std::string& desc)
{
- getChild<LLUICtrl>(XML_DESC)->setValue(desc);
+ childSetValue(XML_DESC, desc);
}
void LLPanelPickInfo::setPickLocation(const std::string& location)
{
- getChild<LLUICtrl>(XML_LOCATION)->setValue(location);
+ childSetValue(XML_LOCATION, location);
}
void LLPanelPickInfo::onClickMap()
@@ -396,8 +396,8 @@ void LLPanelPickEdit::onOpen(const LLSD& key)
}
setParcelID(parcel_id);
- getChild<LLUICtrl>("pick_name")->setValue(pick_name.empty() ? region_name : pick_name);
- getChild<LLUICtrl>("pick_desc")->setValue(pick_desc);
+ childSetValue("pick_name", pick_name.empty() ? region_name : pick_name);
+ childSetValue("pick_desc", pick_desc);
setSnapshotId(snapshot_id);
setPickLocation(createLocationText(getLocationNotice(), pick_name, region_name, getPosGlobal()));
@@ -425,8 +425,8 @@ void LLPanelPickEdit::setPickData(const LLPickData* pick_data)
mNeedData = false;
setParcelID(pick_data->parcel_id);
- getChild<LLUICtrl>("pick_name")->setValue(pick_data->name);
- getChild<LLUICtrl>("pick_desc")->setValue(pick_data->desc);
+ childSetValue("pick_name", pick_data->name);
+ childSetValue("pick_desc", pick_data->desc);
setSnapshotId(pick_data->snapshot_id);
setPosGlobal(pick_data->pos_global);
setPickLocation(createLocationText(LLStringUtil::null, pick_data->name,
@@ -508,8 +508,8 @@ void LLPanelPickEdit::sendUpdate()
//legacy var need to be deleted
pick_data.top_pick = FALSE;
pick_data.parcel_id = mParcelId;
- pick_data.name = getChild<LLUICtrl>(XML_NAME)->getValue().asString();
- pick_data.desc = getChild<LLUICtrl>(XML_DESC)->getValue().asString();
+ pick_data.name = childGetValue(XML_NAME).asString();
+ pick_data.desc = childGetValue(XML_DESC).asString();
pick_data.snapshot_id = mSnapshotCtrl->getImageAssetID();
pick_data.pos_global = getPosGlobal();
pick_data.sort_order = 0;
@@ -544,7 +544,7 @@ void LLPanelPickEdit::resetData()
void LLPanelPickEdit::enableSaveButton(bool enable)
{
- getChildView(XML_BTN_SAVE)->setEnabled(enable);
+ childSetEnabled(XML_BTN_SAVE, enable);
}
void LLPanelPickEdit::onClickSetLocation()
diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp
index a5c3c9faef..ff069e34b7 100644
--- a/indra/newview/llpanelpicks.cpp
+++ b/indra/newview/llpanelpicks.cpp
@@ -212,7 +212,7 @@ void LLPanelPicks::updateData()
mNoPicks = false;
mNoClassifieds = false;
- getChild<LLUICtrl>("picks_panel_text")->setValue(LLTrans::getString("PicksClassifiedsLoadingText"));
+ childSetValue("picks_panel_text", LLTrans::getString("PicksClassifiedsLoadingText"));
mPicksList->clear();
LLAvatarPropertiesProcessor::getInstance()->sendAvatarPicksRequest(getAvatarId());
@@ -231,7 +231,7 @@ void LLPanelPicks::processProperties(void* data, EAvatarProcessorType type)
{
std::string name, second_name;
gCacheName->getName(getAvatarId(),name,second_name);
- getChild<LLUICtrl>("pick_title")->setTextArg("[NAME]", name);
+ childSetTextArg("pick_title", "[NAME]",name);
// Save selection, to be able to edit same item after saving changes. See EXT-3023.
LLUUID selected_id = mPicksList->getSelectedValue()[PICK_ID];
@@ -318,11 +318,11 @@ void LLPanelPicks::processProperties(void* data, EAvatarProcessorType type)
{
if(getAvatarId() == gAgentID)
{
- getChild<LLUICtrl>("picks_panel_text")->setValue(LLTrans::getString("NoPicksClassifiedsText"));
+ childSetValue("picks_panel_text", LLTrans::getString("NoPicksClassifiedsText"));
}
else
{
- getChild<LLUICtrl>("picks_panel_text")->setValue(LLTrans::getString("NoAvatarPicksClassifiedsText"));
+ childSetValue("picks_panel_text", LLTrans::getString("NoAvatarPicksClassifiedsText"));
}
}
}
@@ -454,22 +454,22 @@ void LLPanelPicks::onOpen(const LLSD& key)
BOOL self = (gAgent.getID() == id);
// only agent can edit her picks
- getChildView("edit_panel")->setEnabled(self);
- getChildView("edit_panel")->setVisible( self);
+ childSetEnabled("edit_panel", self);
+ childSetVisible("edit_panel", self);
// Disable buttons when viewing profile for first time
if(getAvatarId() != id)
{
- getChildView(XML_BTN_INFO)->setEnabled(FALSE);
- getChildView(XML_BTN_TELEPORT)->setEnabled(FALSE);
- getChildView(XML_BTN_SHOW_ON_MAP)->setEnabled(FALSE);
+ childSetEnabled(XML_BTN_INFO,FALSE);
+ childSetEnabled(XML_BTN_TELEPORT,FALSE);
+ childSetEnabled(XML_BTN_SHOW_ON_MAP,FALSE);
}
// and see a special title - set as invisible by default in xml file
if (self)
{
- getChildView("pick_title")->setVisible( !self);
- getChildView("pick_title_agent")->setVisible( self);
+ childSetVisible("pick_title", !self);
+ childSetVisible("pick_title_agent", self);
mPopupMenu->setItemVisible("pick_delete", TRUE);
mPopupMenu->setItemVisible("pick_edit", TRUE);
@@ -664,17 +664,17 @@ void LLPanelPicks::updateButtons()
if (getAvatarId() == gAgentID)
{
- getChildView(XML_BTN_DELETE)->setEnabled(has_selected);
+ childSetEnabled(XML_BTN_DELETE, has_selected);
}
- getChildView(XML_BTN_INFO)->setEnabled(has_selected);
- getChildView(XML_BTN_TELEPORT)->setEnabled(has_selected);
- getChildView(XML_BTN_SHOW_ON_MAP)->setEnabled(has_selected);
+ childSetEnabled(XML_BTN_INFO, has_selected);
+ childSetEnabled(XML_BTN_TELEPORT, has_selected);
+ childSetEnabled(XML_BTN_SHOW_ON_MAP, has_selected);
LLClassifiedItem* c_item = dynamic_cast<LLClassifiedItem*>(mClassifiedsList->getSelectedItem());
if(c_item)
{
- getChildView(XML_BTN_INFO)->setEnabled(isClassifiedPublished(c_item));
+ childSetEnabled(XML_BTN_INFO, isClassifiedPublished(c_item));
}
}
@@ -695,7 +695,8 @@ void LLPanelPicks::buildPickPanel()
void LLPanelPicks::onClickPlusBtn()
{
- LLRect rect(getChildView(XML_BTN_NEW)->getRect());
+ LLRect rect;
+ childGetRect(XML_BTN_NEW, rect);
mPlusMenu->updateParent(LLMenuGL::sMenuContainer);
mPlusMenu->setButtonRect(rect, this);
@@ -1073,7 +1074,7 @@ void LLPickItem::init(LLPickData* pick_data)
void LLPickItem::setPickName(const std::string& name)
{
mPickName = name;
- getChild<LLUICtrl>("picture_name")->setValue(name);
+ childSetValue("picture_name",name);
}
@@ -1094,7 +1095,7 @@ const LLUUID& LLPickItem::getSnapshotId()
void LLPickItem::setPickDesc(const std::string& descr)
{
- getChild<LLUICtrl>("picture_descr")->setValue(descr);
+ childSetValue("picture_descr",descr);
}
void LLPickItem::setPickId(const LLUUID& id)
@@ -1114,7 +1115,7 @@ const LLVector3d& LLPickItem::getPosGlobal()
const std::string LLPickItem::getDescription()
{
- return getChild<LLUICtrl>("picture_descr")->getValue().asString();
+ return childGetValue("picture_descr").asString();
}
void LLPickItem::update()
@@ -1141,15 +1142,10 @@ void LLPickItem::processProperties(void *data, EAvatarProcessorType type)
LLAvatarPropertiesProcessor::instance().removeObserver(mCreatorID, this);
}
-void set_child_visible(LLView* parent, const std::string& child_name, bool visible)
-{
- parent->getChildView(child_name)->setVisible(visible);
-}
-
BOOL LLPickItem::postBuild()
{
- setMouseEnterCallback(boost::bind(&set_child_visible, this, "hovered_icon", true));
- setMouseLeaveCallback(boost::bind(&set_child_visible, this, "hovered_icon", false));
+ setMouseEnterCallback(boost::bind(&LLPanelPickInfo::childSetVisible, this, "hovered_icon", true));
+ setMouseLeaveCallback(boost::bind(&LLPanelPickInfo::childSetVisible, this, "hovered_icon", false));
return TRUE;
}
@@ -1157,7 +1153,7 @@ void LLPickItem::setValue(const LLSD& value)
{
if (!value.isMap()) return;;
if (!value.has("selected")) return;
- getChildView("selected_icon")->setVisible( value["selected"]);
+ childSetVisible("selected_icon", value["selected"]);
}
//////////////////////////////////////////////////////////////////////////
@@ -1203,8 +1199,8 @@ void LLClassifiedItem::processProperties(void* data, EAvatarProcessorType type)
BOOL LLClassifiedItem::postBuild()
{
- setMouseEnterCallback(boost::bind(&set_child_visible, this, "hovered_icon", true));
- setMouseLeaveCallback(boost::bind(&set_child_visible, this, "hovered_icon", false));
+ setMouseEnterCallback(boost::bind(&LLPanelPickInfo::childSetVisible, this, "hovered_icon", true));
+ setMouseLeaveCallback(boost::bind(&LLPanelPickInfo::childSetVisible, this, "hovered_icon", false));
return TRUE;
}
@@ -1212,7 +1208,7 @@ void LLClassifiedItem::setValue(const LLSD& value)
{
if (!value.isMap()) return;;
if (!value.has("selected")) return;
- getChildView("selected_icon")->setVisible( value["selected"]);
+ childSetVisible("selected_icon", value["selected"]);
}
void LLClassifiedItem::fillIn(LLPanelClassifiedEdit* panel)
@@ -1235,22 +1231,22 @@ void LLClassifiedItem::fillIn(LLPanelClassifiedEdit* panel)
void LLClassifiedItem::setClassifiedName(const std::string& name)
{
- getChild<LLUICtrl>("name")->setValue(name);
+ childSetValue("name", name);
}
void LLClassifiedItem::setDescription(const std::string& desc)
{
- getChild<LLUICtrl>("description")->setValue(desc);
+ childSetValue("description", desc);
}
void LLClassifiedItem::setSnapshotId(const LLUUID& snapshot_id)
{
- getChild<LLUICtrl>("picture")->setValue(snapshot_id);
+ childSetValue("picture", snapshot_id);
}
LLUUID LLClassifiedItem::getSnapshotId()
{
- return getChild<LLUICtrl>("picture")->getValue();
+ return childGetValue("picture");
}
//EOF
diff --git a/indra/newview/llpanelpicks.h b/indra/newview/llpanelpicks.h
index 526ba48dcb..79a291a622 100644
--- a/indra/newview/llpanelpicks.h
+++ b/indra/newview/llpanelpicks.h
@@ -269,11 +269,11 @@ public:
void setClassifiedName (const std::string& name);
- std::string getClassifiedName() { return getChild<LLUICtrl>("name")->getValue().asString(); }
+ std::string getClassifiedName() { return childGetValue("name").asString(); }
void setDescription(const std::string& desc);
- std::string getDescription() { return getChild<LLUICtrl>("description")->getValue().asString(); }
+ std::string getDescription() { return childGetValue("description").asString(); }
void setSnapshotId(const LLUUID& snapshot_id);
diff --git a/indra/newview/llpanelplace.cpp b/indra/newview/llpanelplace.cpp
new file mode 100644
index 0000000000..a06c00b705
--- /dev/null
+++ b/indra/newview/llpanelplace.cpp
@@ -0,0 +1,421 @@
+/**
+ * @file llpanelplace.cpp
+ * @brief Display of a place in the Find directory.
+ *
+ * $LicenseInfo:firstyear=2004&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llpanelplace.h"
+
+#include "llviewercontrol.h"
+#include "llqueryflags.h"
+#include "llui.h"
+#include "llsecondlifeurls.h"
+#include "llfloater.h"
+#include "llfloaterreg.h"
+#include "llregionhandle.h"
+
+#include "llagent.h"
+#include "llviewerwindow.h"
+#include "llbutton.h"
+#include "llfloaterworldmap.h"
+#include "lllineeditor.h"
+#include "llnotificationsutil.h"
+#include "lluiconstants.h"
+#include "lltextbox.h"
+#include "lltexteditor.h"
+#include "lltexturectrl.h"
+#include "lltrans.h"
+#include "llworldmap.h"
+#include "llviewerregion.h"
+#include "llvoavatarself.h"
+#include "lluictrlfactory.h"
+//#include "llviewermenu.h" // create_landmark()
+#include "llweb.h"
+#include "llsdutil.h"
+#include "llsdutil_math.h"
+
+LLPanelPlace::LLPanelPlace()
+: LLPanel(),
+ mParcelID(),
+ mRequestedID(),
+ mRegionID(),
+ mPosGlobal(),
+ mPosRegion(),
+ mAuctionID(0),
+ mLandmarkAssetID()
+{}
+
+LLPanelPlace::~LLPanelPlace()
+{
+ if (mParcelID.notNull())
+ {
+ LLRemoteParcelInfoProcessor::getInstance()->removeObserver(mParcelID, this);
+ }
+}
+
+BOOL LLPanelPlace::postBuild()
+{
+ // Since this is only used in the directory browser, always
+ // disable the snapshot control. Otherwise clicking on it will
+ // open a texture picker.
+ mSnapshotCtrl = getChild<LLTextureCtrl>("snapshot_ctrl");
+ mSnapshotCtrl->setEnabled(FALSE);
+
+ mNameEditor = getChild<LLTextBox>("name_editor");
+ // Text boxes appear to have a " " in them by default. This breaks the
+ // emptiness test for filling in data from the network. Slam to empty.
+ mNameEditor->setText( LLStringUtil::null );
+
+ mDescEditor = getChild<LLTextEditor>("desc_editor");
+
+ mInfoEditor = getChild<LLTextBox>("info_editor");
+ mLandTypeEditor = getChild<LLTextBox>("land_type_display");
+
+ mLocationDisplay = getChild<LLTextBox>("location_editor");
+
+ mTeleportBtn = getChild<LLButton>( "teleport_btn");
+ mTeleportBtn->setClickedCallback(onClickTeleport, this);
+
+ mMapBtn = getChild<LLButton>( "map_btn");
+ mMapBtn->setClickedCallback(onClickMap, this);
+
+ //mLandmarkBtn = getChild<LLButton>( "landmark_btn");
+ //mLandmarkBtn->setClickedCallback(onClickLandmark, this);
+
+ mAuctionBtn = getChild<LLButton>( "auction_btn");
+ mAuctionBtn->setClickedCallback(onClickAuction, this);
+
+ // Default to no auction button. We'll show it if we get an auction id
+ mAuctionBtn->setVisible(FALSE);
+
+ // Temporary text to explain why the description panel is blank.
+ // mDescEditor->setText("Parcel information not available without server update");
+
+ return TRUE;
+}
+
+void LLPanelPlace::displayItemInfo(const LLInventoryItem* pItem)
+{
+ if (pItem)
+ {
+ mNameEditor->setText(pItem->getName());
+ mDescEditor->setText(pItem->getDescription());
+ }
+}
+
+// Use this for search directory clicks, because we are totally
+// recycling the panel and don't need to use what's there.
+//
+// For SLURL clicks, don't call this, because we need to cache
+// the location info from the user.
+void LLPanelPlace::resetLocation()
+{
+ mParcelID.setNull();
+ mRequestedID.setNull();
+ mRegionID.setNull();
+ mLandmarkAssetID.setNull();
+ mPosGlobal.clearVec();
+ mPosRegion.clearVec();
+ mAuctionID = 0;
+ mNameEditor->setText( LLStringUtil::null );
+ mDescEditor->setText( LLStringUtil::null );
+ mInfoEditor->setText( LLStringUtil::null );
+ mLandTypeEditor->setText( LLStringUtil::null );
+ mLocationDisplay->setText( LLStringUtil::null );
+}
+
+
+// Set the name and clear other bits of info. Used for SLURL clicks
+void LLPanelPlace::resetName(const std::string& name)
+{
+ setName(name);
+ if(mDescEditor)
+ {
+ mDescEditor->setText( LLStringUtil::null );
+ }
+ if(mNameEditor)
+ {
+ llinfos << "Clearing place name" << llendl;
+ mNameEditor->setText( LLStringUtil::null );
+ }
+ if(mInfoEditor)
+ {
+ mInfoEditor->setText( LLStringUtil::null );
+ }
+ if(mLandTypeEditor)
+ {
+ mLandTypeEditor->setText( LLStringUtil::null );
+ }
+}
+
+//virtual
+void LLPanelPlace::setParcelID(const LLUUID& parcel_id)
+{
+ mParcelID = parcel_id;
+ sendParcelInfoRequest();
+}
+
+void LLPanelPlace::setSnapshot(const LLUUID& snapshot_id)
+{
+ mSnapshotCtrl->setImageAssetID(snapshot_id);
+}
+
+void LLPanelPlace::setLocationString(const std::string& location)
+{
+ mLocationDisplay->setText(location);
+}
+
+void LLPanelPlace::setLandTypeString(const std::string& land_type)
+{
+ mLandTypeEditor->setText(land_type);
+}
+
+void LLPanelPlace::sendParcelInfoRequest()
+{
+ if (mParcelID != mRequestedID)
+ {
+ //ext-4655, remove now incase this gets called twice without a remove
+ LLRemoteParcelInfoProcessor::getInstance()->removeObserver(mRequestedID, this);
+
+ LLRemoteParcelInfoProcessor::getInstance()->addObserver(mParcelID, this);
+ LLRemoteParcelInfoProcessor::getInstance()->sendParcelInfoRequest(mParcelID);
+
+ mRequestedID = mParcelID;
+ }
+}
+
+//virtual
+void LLPanelPlace::setErrorStatus(U32 status, const std::string& reason)
+{
+ // We only really handle 404 and 499 errors
+ std::string error_text;
+ if(status == 404)
+ {
+ error_text = getString("server_error_text");
+ }
+ else if(status == 499)
+ {
+ error_text = getString("server_forbidden_text");
+ }
+ mDescEditor->setText(error_text);
+}
+
+//virtual
+void LLPanelPlace::processParcelInfo(const LLParcelData& parcel_data)
+{
+ mAuctionID = parcel_data.auction_id;
+
+ if(parcel_data.snapshot_id.notNull())
+ {
+ mSnapshotCtrl->setImageAssetID(parcel_data.snapshot_id);
+ }
+
+ if( !parcel_data.name.empty()
+ && mNameEditor && mNameEditor->getText().empty())
+ {
+ mNameEditor->setText(parcel_data.name);
+ }
+
+ if( !parcel_data.desc.empty()
+ && mDescEditor && mDescEditor->getText().empty())
+ {
+ mDescEditor->setText(parcel_data.desc);
+ }
+
+ std::string info_text;
+ LLUIString traffic = getString("traffic_text");
+ traffic.setArg("[TRAFFIC]", llformat("%d ", (int)parcel_data.dwell));
+ info_text = traffic;
+ LLUIString area = getString("area_text");
+ area.setArg("[AREA]", llformat("%d", parcel_data.actual_area));
+ info_text += area;
+ if (parcel_data.flags & DFQ_FOR_SALE)
+ {
+ LLUIString forsale = getString("forsale_text");
+ forsale.setArg("[PRICE]", llformat("%d", parcel_data.sale_price));
+ info_text += forsale;
+ }
+ if (parcel_data.auction_id != 0)
+ {
+ LLUIString auction = getString("auction_text");
+ auction.setArg("[ID]", llformat("%010d ", parcel_data.auction_id));
+ info_text += auction;
+ }
+ if (mInfoEditor)
+ {
+ mInfoEditor->setText(info_text);
+ }
+
+ // HACK: Flag 0x2 == adult region,
+ // Flag 0x1 == mature region, otherwise assume PG
+ std::string rating = LLViewerRegion::accessToString(SIM_ACCESS_PG);
+ if (parcel_data.flags & 0x2)
+ {
+ rating = LLViewerRegion::accessToString(SIM_ACCESS_ADULT);
+ }
+ else if (parcel_data.flags & 0x1)
+ {
+ rating = LLViewerRegion::accessToString(SIM_ACCESS_MATURE);
+ }
+
+ // Just use given region position for display
+ S32 region_x = llround(mPosRegion.mV[0]);
+ S32 region_y = llround(mPosRegion.mV[1]);
+ S32 region_z = llround(mPosRegion.mV[2]);
+
+ // If the region position is zero, grab position from the global
+ if(mPosRegion.isExactlyZero())
+ {
+ region_x = llround(parcel_data.global_x) % REGION_WIDTH_UNITS;
+ region_y = llround(parcel_data.global_y) % REGION_WIDTH_UNITS;
+ region_z = llround(parcel_data.global_z);
+ }
+
+ if(mPosGlobal.isExactlyZero())
+ {
+ mPosGlobal.setVec(parcel_data.global_x, parcel_data.global_y, parcel_data.global_z);
+ }
+
+ std::string location = llformat("%s %d, %d, %d (%s)",
+ parcel_data.sim_name.c_str(), region_x, region_y, region_z, rating.c_str());
+ if (mLocationDisplay)
+ {
+ mLocationDisplay->setText(location);
+ }
+
+ BOOL show_auction = (parcel_data.auction_id > 0);
+ mAuctionBtn->setVisible(show_auction);
+}
+
+
+void LLPanelPlace::displayParcelInfo(const LLVector3& pos_region,
+ const LLUUID& landmark_asset_id,
+ const LLUUID& region_id,
+ const LLVector3d& pos_global)
+{
+ LLSD body;
+ mPosRegion = pos_region;
+ mPosGlobal = pos_global;
+ mLandmarkAssetID = landmark_asset_id;
+ std::string url = gAgent.getRegion()->getCapability("RemoteParcelRequest");
+ if (!url.empty())
+ {
+ body["location"] = ll_sd_from_vector3(pos_region);
+ if (!region_id.isNull())
+ {
+ body["region_id"] = region_id;
+ }
+ if (!pos_global.isExactlyZero())
+ {
+ U64 region_handle = to_region_handle(pos_global);
+ body["region_handle"] = ll_sd_from_U64(region_handle);
+ }
+ LLHTTPClient::post(url, body, new LLRemoteParcelRequestResponder(getObserverHandle()));
+ }
+ else
+ {
+ mDescEditor->setText(getString("server_update_text"));
+ }
+ mSnapshotCtrl->setImageAssetID(LLUUID::null);
+}
+
+// static
+void LLPanelPlace::onClickTeleport(void* data)
+{
+ LLPanelPlace* self = (LLPanelPlace*)data;
+
+ LLView* parent_viewp = self->getParent();
+ LLFloater* parent_floaterp = dynamic_cast<LLFloater*>(parent_viewp);
+ if (parent_floaterp)
+ {
+ parent_floaterp->closeFloater();
+ }
+ // LLFloater* parent_floaterp = (LLFloater*)self->getParent();
+ parent_viewp->setVisible(false);
+ LLFloaterWorldMap* worldmap_instance = LLFloaterWorldMap::getInstance();
+ if(self->mLandmarkAssetID.notNull() && worldmap_instance)
+ {
+ gAgent.teleportViaLandmark(self->mLandmarkAssetID);
+ worldmap_instance->trackLandmark(self->mLandmarkAssetID);
+
+ }
+ else if (!self->mPosGlobal.isExactlyZero() && worldmap_instance)
+ {
+ gAgent.teleportViaLocation(self->mPosGlobal);
+ worldmap_instance->trackLocation(self->mPosGlobal);
+ }
+}
+
+// static
+void LLPanelPlace::onClickMap(void* data)
+{
+ LLPanelPlace* self = (LLPanelPlace*)data;
+ LLFloaterWorldMap* worldmap_instance = LLFloaterWorldMap::getInstance();
+
+ if (!self->mPosGlobal.isExactlyZero() && worldmap_instance)
+ {
+ worldmap_instance->trackLocation(self->mPosGlobal);
+ LLFloaterReg::showInstance("world_map", "center");
+ }
+}
+
+// static
+/*
+void LLPanelPlace::onClickLandmark(void* data)
+{
+ LLPanelPlace* self = (LLPanelPlace*)data;
+
+ create_landmark(self->mNameEditor->getText(), "", self->mPosGlobal);
+}
+*/
+
+
+// static
+void LLPanelPlace::onClickAuction(void* data)
+{
+ LLPanelPlace* self = (LLPanelPlace*)data;
+ LLSD args;
+ args["AUCTION_ID"] = self->mAuctionID;
+
+ LLNotificationsUtil::add("GoToAuctionPage", args);
+}
+/*
+// static
+bool LLPanelPlace::callbackAuctionWebPage(const LLSD& notification, const LLSD& response)
+{
+ S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+ if (0 == option)
+ {
+ std::string url;
+ url = LLNotifications::instance().getGlobalString("AUCTION_URL") + llformat("%010d", response["auction_id"].asInteger());
+
+ llinfos << "Loading auction page " << url << llendl;
+
+ LLWeb::loadURL(url);
+ }
+ return false;
+}
+*/
+
diff --git a/indra/newview/llpanelplace.h b/indra/newview/llpanelplace.h
new file mode 100644
index 0000000000..5afe1aa485
--- /dev/null
+++ b/indra/newview/llpanelplace.h
@@ -0,0 +1,114 @@
+/**
+ * @file llpanelplace.h
+ * @brief Display of a place in the Find directory.
+ *
+ * $LicenseInfo:firstyear=2004&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLPANELPLACE_H
+#define LL_LLPANELPLACE_H
+
+#include "llpanel.h"
+
+#include "v3dmath.h"
+#include "lluuid.h"
+
+#include "llremoteparcelrequest.h"
+
+class LLButton;
+class LLTextBox;
+class LLLineEditor;
+class LLTextEditor;
+class LLTextureCtrl;
+class LLMessageSystem;
+class LLInventoryItem;
+
+class LLPanelPlace : public LLPanel, LLRemoteParcelInfoObserver
+{
+public:
+ LLPanelPlace();
+ /*virtual*/ ~LLPanelPlace();
+
+ /*virtual*/ BOOL postBuild();
+
+ void resetLocation();
+ // Ignore all old location 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.
+
+ void displayItemInfo(const LLInventoryItem* pItem);
+ void setRegionID(const LLUUID& region_id) { mRegionID = region_id; }
+ void setSnapshot(const LLUUID& snapshot_id);
+ void setLocationString(const std::string& location);
+ void setLandTypeString(const std::string& land_type);
+ /*virtual*/ void setErrorStatus(U32 status, const std::string& reason);
+ void resetName(const std::string& name);
+
+ void sendParcelInfoRequest();
+ void displayParcelInfo(const LLVector3& pos_region,
+ const LLUUID& landmark_asset_id,
+ const LLUUID& region_id,
+ const LLVector3d& pos_global);
+ /*virtual*/ void processParcelInfo(const LLParcelData& parcel_data);
+
+ LLTextureCtrl *getSnapshotCtrl() const { return mSnapshotCtrl; }
+
+protected:
+ static void onClickTeleport(void* data);
+ static void onClickMap(void* data);
+ //static void onClickLandmark(void* data);
+ static void onClickAuction(void* data);
+
+ // Go to auction web page if user clicked OK
+ static bool callbackAuctionWebPage(const LLSD& notification, const LLSD& response);
+
+protected:
+ LLUUID mParcelID;
+ LLUUID mRequestedID;
+ LLUUID mRegionID;
+ LLUUID mLandmarkAssetID;
+ // Absolute position of the location for teleport, may not
+ // be available (hence zero)
+ LLVector3d mPosGlobal;
+ // Region-local position for teleport, always available.
+ LLVector3 mPosRegion;
+ // Zero if this is not an auction
+ S32 mAuctionID;
+
+ LLTextureCtrl* mSnapshotCtrl;
+
+ LLTextBox* mNameEditor;
+ LLTextEditor* mDescEditor;
+ LLTextBox* mInfoEditor;
+ LLTextBox* mLandTypeEditor;
+ LLTextBox* mLocationDisplay; //not calling it "editor" because it isn't
+
+ LLButton* mTeleportBtn;
+ LLButton* mMapBtn;
+ //LLButton* mLandmarkBtn;
+ LLButton* mAuctionBtn;
+};
+
+#endif // LL_LLPANELPLACE_H
diff --git a/indra/newview/llpanelplaceinfo.cpp b/indra/newview/llpanelplaceinfo.cpp
index bbaffda2f2..1076e17e1d 100644
--- a/indra/newview/llpanelplaceinfo.cpp
+++ b/indra/newview/llpanelplaceinfo.cpp
@@ -98,11 +98,11 @@ void LLPanelPlaceInfo::resetLocation()
mPosRegion.clearVec();
std::string loading = LLTrans::getString("LoadingData");
+ mMaturityRatingIcon->setValue(loading);
mMaturityRatingText->setValue(loading);
mRegionName->setText(loading);
mParcelName->setText(loading);
mDescEditor->setText(loading);
- mMaturityRatingIcon->setValue(LLUUID::null);
mSnapshotCtrl->setImageAssetID(LLUUID::null);
}
@@ -184,21 +184,7 @@ void LLPanelPlaceInfo::setErrorStatus(U32 status, const std::string& reason)
{
error_text = getString("server_forbidden_text");
}
- else
- {
- error_text = getString("server_error_text");
- }
-
mDescEditor->setText(error_text);
-
- std::string not_available = getString("not_available");
- mMaturityRatingText->setValue(not_available);
- mRegionName->setText(not_available);
- mParcelName->setText(not_available);
- mMaturityRatingIcon->setValue(LLUUID::null);
-
- // Enable "Back" button that was disabled when parcel request was sent.
- getChild<LLButton>("back_btn")->setEnabled(TRUE);
}
// virtual
diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp
index 5aed1e55e3..e244a6255e 100644
--- a/indra/newview/llpanelplaces.cpp
+++ b/indra/newview/llpanelplaces.cpp
@@ -49,7 +49,6 @@
#include "llagent.h"
#include "llagentpicksinfo.h"
#include "llavatarpropertiesprocessor.h"
-#include "llcommandhandler.h"
#include "llfloaterworldmap.h"
#include "llinventorybridge.h"
#include "llinventoryobserver.h"
@@ -62,7 +61,6 @@
#include "llpanelplaceprofile.h"
#include "llpanelteleporthistory.h"
#include "llremoteparcelrequest.h"
-#include "llsidetray.h"
#include "llteleporthistorystorage.h"
#include "lltoggleablemenu.h"
#include "llviewerinventory.h"
@@ -72,7 +70,6 @@
#include "llviewerregion.h"
#include "llviewerwindow.h"
-// Constants
static const S32 LANDMARK_FOLDERS_MENU_WIDTH = 250;
static const F32 PLACE_INFO_UPDATE_INTERVAL = 3.0;
static const std::string AGENT_INFO_TYPE = "agent";
@@ -81,40 +78,6 @@ static const std::string LANDMARK_INFO_TYPE = "landmark";
static const std::string REMOTE_PLACE_INFO_TYPE = "remote_place";
static const std::string TELEPORT_HISTORY_INFO_TYPE = "teleport_history";
-// Support for secondlife:///app/parcel/{UUID}/about SLapps
-class LLParcelHandler : public LLCommandHandler
-{
-public:
- // requires trusted browser to trigger
- LLParcelHandler() : LLCommandHandler("parcel", UNTRUSTED_THROTTLE) { }
- bool handle(const LLSD& params, const LLSD& query_map,
- LLMediaCtrl* web)
- {
- if (params.size() < 2)
- {
- return false;
- }
- LLUUID parcel_id;
- if (!parcel_id.set(params[0], FALSE))
- {
- return false;
- }
- if (params[1].asString() == "about")
- {
- if (parcel_id.notNull())
- {
- LLSD key;
- key["type"] = "remote_place";
- key["id"] = parcel_id;
- LLSideTray::getInstance()->showPanel("panel_places", key);
- return true;
- }
- }
- return false;
- }
-};
-LLParcelHandler gParcelHandler;
-
// Helper functions
static bool is_agent_in_selected_parcel(LLParcel* parcel);
static void onSLURLBuilt(std::string& slurl);
diff --git a/indra/newview/llpanelprofileview.cpp b/indra/newview/llpanelprofileview.cpp
index c0f504fef6..55cf58c2d0 100644
--- a/indra/newview/llpanelprofileview.cpp
+++ b/indra/newview/llpanelprofileview.cpp
@@ -117,8 +117,8 @@ BOOL LLPanelProfileView::postBuild()
getTabContainer()[PANEL_NOTES] = getChild<LLPanelAvatarNotes>(PANEL_NOTES);
//*TODO remove this, according to style guide we don't use status combobox
- getTabContainer()[PANEL_PROFILE]->getChildView("online_me_status_text")->setVisible( FALSE);
- getTabContainer()[PANEL_PROFILE]->getChildView("status_combo")->setVisible( FALSE);
+ getTabContainer()[PANEL_PROFILE]->childSetVisible("online_me_status_text", FALSE);
+ getTabContainer()[PANEL_PROFILE]->childSetVisible("status_combo", FALSE);
mStatusText = getChild<LLTextBox>("status");
mStatusText->setVisible(false);
diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp
index a7cbf52290..ba6d942838 100644
--- a/indra/newview/llpanelteleporthistory.cpp
+++ b/indra/newview/llpanelteleporthistory.cpp
@@ -164,7 +164,7 @@ void LLTeleportHistoryFlatItem::setValue(const LLSD& value)
{
if (!value.isMap()) return;;
if (!value.has("selected")) return;
- getChildView("selected_icon")->setVisible( value["selected"]);
+ childSetVisible("selected_icon", value["selected"]);
}
void LLTeleportHistoryFlatItem::setHighlightedText(const std::string& text)
@@ -188,7 +188,7 @@ void LLTeleportHistoryFlatItem::updateTitle()
void LLTeleportHistoryFlatItem::onMouseEnter(S32 x, S32 y, MASK mask)
{
- getChildView("hovered_icon")->setVisible( true);
+ childSetVisible("hovered_icon", true);
mProfileBtn->setVisible(true);
LLPanel::onMouseEnter(x, y, mask);
@@ -196,7 +196,7 @@ void LLTeleportHistoryFlatItem::onMouseEnter(S32 x, S32 y, MASK mask)
void LLTeleportHistoryFlatItem::onMouseLeave(S32 x, S32 y, MASK mask)
{
- getChildView("hovered_icon")->setVisible( false);
+ childSetVisible("hovered_icon", false);
mProfileBtn->setVisible(false);
LLPanel::onMouseLeave(x, y, mask);
diff --git a/indra/newview/llpaneltopinfobar.cpp b/indra/newview/llpaneltopinfobar.cpp
index 0d17fb3e82..15f7195b1a 100644
--- a/indra/newview/llpaneltopinfobar.cpp
+++ b/indra/newview/llpaneltopinfobar.cpp
@@ -155,8 +155,6 @@ BOOL LLPanelTopInfoBar::postBuild()
mParcelMgrConnection = LLViewerParcelMgr::getInstance()->addAgentParcelChangedCallback(
boost::bind(&LLPanelTopInfoBar::onAgentParcelChange, this));
- setVisibleCallback(boost::bind(&LLPanelTopInfoBar::onVisibilityChange, this, _2));
-
return TRUE;
}
@@ -170,27 +168,6 @@ void LLPanelTopInfoBar::onNavBarShowParcelPropertiesCtrlChanged()
setParcelInfoText(new_text);
}
-// when panel is shown, all minimized floaters should be shifted downwards to prevent overlapping of
-// PanelTopInfoBar. See EXT-7951.
-void LLPanelTopInfoBar::onVisibilityChange(const LLSD& show)
-{
- // this height is used as a vertical offset for ALREADY MINIMIZED floaters
- // when PanelTopInfoBar visibility changes
- S32 height = getRect().getHeight();
-
- // this vertical offset is used for a start minimize position of floaters that
- // are NOT MIMIMIZED YET
- S32 minimize_pos_offset = 0;
-
- if (show.asBoolean())
- {
- height = minimize_pos_offset = -height;
- }
-
- gFloaterView->shiftFloaters(0, height);
- gFloaterView->setMinimizePositionVerticalOffset(minimize_pos_offset);
-}
-
void LLPanelTopInfoBar::draw()
{
updateParcelInfoText();
diff --git a/indra/newview/llpaneltopinfobar.h b/indra/newview/llpaneltopinfobar.h
index db922ef424..cf608b88e1 100644
--- a/indra/newview/llpaneltopinfobar.h
+++ b/indra/newview/llpaneltopinfobar.h
@@ -52,11 +52,6 @@ public:
*/
void handleLoginComplete();
- /**
- * Called when the top info bar gets shown or hidden
- */
- void onVisibilityChange(const LLSD& show);
-
private:
class LLParcelChangeObserver;
diff --git a/indra/newview/llpanelvolume.cpp b/indra/newview/llpanelvolume.cpp
index 065c4d0b92..faf260881e 100644
--- a/indra/newview/llpanelvolume.cpp
+++ b/indra/newview/llpanelvolume.cpp
@@ -79,21 +79,21 @@ BOOL LLPanelVolume::postBuild()
{
childSetCommitCallback("Flexible1D Checkbox Ctrl",onCommitIsFlexible,this);
childSetCommitCallback("FlexNumSections",onCommitFlexible,this);
- getChild<LLUICtrl>("FlexNumSections")->setValidateBeforeCommit(precommitValidate);
+ childSetValidate("FlexNumSections",precommitValidate);
childSetCommitCallback("FlexGravity",onCommitFlexible,this);
- getChild<LLUICtrl>("FlexGravity")->setValidateBeforeCommit(precommitValidate);
+ childSetValidate("FlexGravity",precommitValidate);
childSetCommitCallback("FlexFriction",onCommitFlexible,this);
- getChild<LLUICtrl>("FlexFriction")->setValidateBeforeCommit(precommitValidate);
+ childSetValidate("FlexFriction",precommitValidate);
childSetCommitCallback("FlexWind",onCommitFlexible,this);
- getChild<LLUICtrl>("FlexWind")->setValidateBeforeCommit(precommitValidate);
+ childSetValidate("FlexWind",precommitValidate);
childSetCommitCallback("FlexTension",onCommitFlexible,this);
- getChild<LLUICtrl>("FlexTension")->setValidateBeforeCommit(precommitValidate);
+ childSetValidate("FlexTension",precommitValidate);
childSetCommitCallback("FlexForceX",onCommitFlexible,this);
- getChild<LLUICtrl>("FlexForceX")->setValidateBeforeCommit(precommitValidate);
+ childSetValidate("FlexForceX",precommitValidate);
childSetCommitCallback("FlexForceY",onCommitFlexible,this);
- getChild<LLUICtrl>("FlexForceY")->setValidateBeforeCommit(precommitValidate);
+ childSetValidate("FlexForceY",precommitValidate);
childSetCommitCallback("FlexForceZ",onCommitFlexible,this);
- getChild<LLUICtrl>("FlexForceZ")->setValidateBeforeCommit(precommitValidate);
+ childSetValidate("FlexForceZ",precommitValidate);
}
// LIGHT Parameters
@@ -115,18 +115,18 @@ BOOL LLPanelVolume::postBuild()
}
childSetCommitCallback("Light Intensity",onCommitLight,this);
- getChild<LLUICtrl>("Light Intensity")->setValidateBeforeCommit(precommitValidate);
+ childSetValidate("Light Intensity",precommitValidate);
childSetCommitCallback("Light Radius",onCommitLight,this);
- getChild<LLUICtrl>("Light Radius")->setValidateBeforeCommit(precommitValidate);
+ childSetValidate("Light Radius",precommitValidate);
childSetCommitCallback("Light Falloff",onCommitLight,this);
- getChild<LLUICtrl>("Light Falloff")->setValidateBeforeCommit(precommitValidate);
+ childSetValidate("Light Falloff",precommitValidate);
childSetCommitCallback("Light FOV", onCommitLight, this);
- getChild<LLUICtrl>("Light FOV")->setValidateBeforeCommit( precommitValidate);
+ childSetValidate("Light FOV", precommitValidate);
childSetCommitCallback("Light Focus", onCommitLight, this);
- getChild<LLUICtrl>("Light Focus")->setValidateBeforeCommit( precommitValidate);
+ childSetValidate("Light Focus", precommitValidate);
childSetCommitCallback("Light Ambiance", onCommitLight, this);
- getChild<LLUICtrl>("Light Ambiance")->setValidateBeforeCommit( precommitValidate);
+ childSetValidate("Light Ambiance", precommitValidate);
}
// Start with everyone disabled
@@ -204,25 +204,25 @@ void LLPanelVolume::getState( )
// Select Single Message
if (single_volume)
{
- getChildView("edit_object")->setVisible(true);
- getChildView("edit_object")->setEnabled(true);
- getChildView("select_single")->setVisible(false);
+ childSetVisible("edit_object",true);
+ childSetEnabled("edit_object",true);
+ childSetVisible("select_single",false);
}
else
{
- getChildView("edit_object")->setVisible(false);
- getChildView("select_single")->setVisible(true);
- getChildView("select_single")->setEnabled(true);
+ childSetVisible("edit_object",false);
+ childSetVisible("select_single",true);
+ childSetEnabled("select_single",true);
}
// Light properties
BOOL is_light = volobjp && volobjp->getIsLight();
- getChild<LLUICtrl>("Light Checkbox Ctrl")->setValue(is_light);
- getChildView("Light Checkbox Ctrl")->setEnabled(editable && single_volume && volobjp);
+ childSetValue("Light Checkbox Ctrl",is_light);
+ childSetEnabled("Light Checkbox Ctrl",editable && single_volume && volobjp);
if (is_light && editable && single_volume)
{
- getChildView("label color")->setEnabled(true);
+ childSetEnabled("label color",true);
//mLabelColor ->setEnabled( TRUE );
LLColorSwatchCtrl* LightColorSwatch = getChild<LLColorSwatchCtrl>("colorswatch");
if(LightColorSwatch)
@@ -240,22 +240,22 @@ void LLPanelVolume::getState( )
LightTextureCtrl->setImageAssetID(volobjp->getLightTextureID());
}
- getChildView("Light Intensity")->setEnabled(true);
- getChildView("Light Radius")->setEnabled(true);
- getChildView("Light Falloff")->setEnabled(true);
+ childSetEnabled("Light Intensity",true);
+ childSetEnabled("Light Radius",true);
+ childSetEnabled("Light Falloff",true);
- getChildView("Light FOV")->setEnabled(true);
- getChildView("Light Focus")->setEnabled(true);
- getChildView("Light Ambiance")->setEnabled(true);
+ childSetEnabled("Light FOV", true);
+ childSetEnabled("Light Focus", true);
+ childSetEnabled("Light Ambiance", true);
- getChild<LLUICtrl>("Light Intensity")->setValue(volobjp->getLightIntensity());
- getChild<LLUICtrl>("Light Radius")->setValue(volobjp->getLightRadius());
- getChild<LLUICtrl>("Light Falloff")->setValue(volobjp->getLightFalloff());
+ childSetValue("Light Intensity",volobjp->getLightIntensity());
+ childSetValue("Light Radius",volobjp->getLightRadius());
+ childSetValue("Light Falloff",volobjp->getLightFalloff());
LLVector3 params = volobjp->getSpotLightParams();
- getChild<LLUICtrl>("Light FOV")->setValue(params.mV[0]);
- getChild<LLUICtrl>("Light Focus")->setValue(params.mV[1]);
- getChild<LLUICtrl>("Light Ambiance")->setValue(params.mV[2]);
+ childSetValue("Light FOV", params.mV[0]);
+ childSetValue("Light Focus", params.mV[1]);
+ childSetValue("Light Ambiance", params.mV[2]);
mLightSavedColor = volobjp->getLightColor();
}
@@ -265,7 +265,7 @@ void LLPanelVolume::getState( )
getChild<LLSpinCtrl>("Light Radius", true)->clear();
getChild<LLSpinCtrl>("Light Falloff", true)->clear();
- getChildView("label color")->setEnabled(false);
+ childSetEnabled("label color",false);
LLColorSwatchCtrl* LightColorSwatch = getChild<LLColorSwatchCtrl>("colorswatch");
if(LightColorSwatch)
{
@@ -279,56 +279,56 @@ void LLPanelVolume::getState( )
LightTextureCtrl->setValid(FALSE);
}
- getChildView("Light Intensity")->setEnabled(false);
- getChildView("Light Radius")->setEnabled(false);
- getChildView("Light Falloff")->setEnabled(false);
+ childSetEnabled("Light Intensity",false);
+ childSetEnabled("Light Radius",false);
+ childSetEnabled("Light Falloff",false);
- getChildView("Light FOV")->setEnabled(false);
- getChildView("Light Focus")->setEnabled(false);
- getChildView("Light Ambiance")->setEnabled(false);
+ childSetEnabled("Light FOV",false);
+ childSetEnabled("Light Focus",false);
+ childSetEnabled("Light Ambiance",false);
}
// Flexible properties
BOOL is_flexible = volobjp && volobjp->isFlexible();
- getChild<LLUICtrl>("Flexible1D Checkbox Ctrl")->setValue(is_flexible);
+ childSetValue("Flexible1D Checkbox Ctrl",is_flexible);
if (is_flexible || (volobjp && volobjp->canBeFlexible()))
{
- getChildView("Flexible1D Checkbox Ctrl")->setEnabled(editable && single_volume && volobjp);
+ childSetEnabled("Flexible1D Checkbox Ctrl", editable && single_volume && volobjp);
}
else
{
- getChildView("Flexible1D Checkbox Ctrl")->setEnabled(false);
+ childSetEnabled("Flexible1D Checkbox Ctrl", false);
}
if (is_flexible && editable && single_volume)
{
- getChildView("FlexNumSections")->setVisible(true);
- getChildView("FlexGravity")->setVisible(true);
- getChildView("FlexTension")->setVisible(true);
- getChildView("FlexFriction")->setVisible(true);
- getChildView("FlexWind")->setVisible(true);
- getChildView("FlexForceX")->setVisible(true);
- getChildView("FlexForceY")->setVisible(true);
- getChildView("FlexForceZ")->setVisible(true);
-
- getChildView("FlexNumSections")->setEnabled(true);
- getChildView("FlexGravity")->setEnabled(true);
- getChildView("FlexTension")->setEnabled(true);
- getChildView("FlexFriction")->setEnabled(true);
- getChildView("FlexWind")->setEnabled(true);
- getChildView("FlexForceX")->setEnabled(true);
- getChildView("FlexForceY")->setEnabled(true);
- getChildView("FlexForceZ")->setEnabled(true);
+ childSetVisible("FlexNumSections",true);
+ childSetVisible("FlexGravity",true);
+ childSetVisible("FlexTension",true);
+ childSetVisible("FlexFriction",true);
+ childSetVisible("FlexWind",true);
+ childSetVisible("FlexForceX",true);
+ childSetVisible("FlexForceY",true);
+ childSetVisible("FlexForceZ",true);
+
+ childSetEnabled("FlexNumSections",true);
+ childSetEnabled("FlexGravity",true);
+ childSetEnabled("FlexTension",true);
+ childSetEnabled("FlexFriction",true);
+ childSetEnabled("FlexWind",true);
+ childSetEnabled("FlexForceX",true);
+ childSetEnabled("FlexForceY",true);
+ childSetEnabled("FlexForceZ",true);
LLFlexibleObjectData *attributes = (LLFlexibleObjectData *)objectp->getParameterEntry(LLNetworkData::PARAMS_FLEXIBLE);
- getChild<LLUICtrl>("FlexNumSections")->setValue((F32)attributes->getSimulateLOD());
- getChild<LLUICtrl>("FlexGravity")->setValue(attributes->getGravity());
- getChild<LLUICtrl>("FlexTension")->setValue(attributes->getTension());
- getChild<LLUICtrl>("FlexFriction")->setValue(attributes->getAirFriction());
- getChild<LLUICtrl>("FlexWind")->setValue(attributes->getWindSensitivity());
- getChild<LLUICtrl>("FlexForceX")->setValue(attributes->getUserForce().mV[VX]);
- getChild<LLUICtrl>("FlexForceY")->setValue(attributes->getUserForce().mV[VY]);
- getChild<LLUICtrl>("FlexForceZ")->setValue(attributes->getUserForce().mV[VZ]);
+ childSetValue("FlexNumSections",(F32)attributes->getSimulateLOD());
+ childSetValue("FlexGravity",attributes->getGravity());
+ childSetValue("FlexTension",attributes->getTension());
+ childSetValue("FlexFriction",attributes->getAirFriction());
+ childSetValue("FlexWind",attributes->getWindSensitivity());
+ childSetValue("FlexForceX",attributes->getUserForce().mV[VX]);
+ childSetValue("FlexForceY",attributes->getUserForce().mV[VY]);
+ childSetValue("FlexForceZ",attributes->getUserForce().mV[VZ]);
}
else
{
@@ -341,14 +341,14 @@ void LLPanelVolume::getState( )
getChild<LLSpinCtrl>("FlexForceY", true)->clear();
getChild<LLSpinCtrl>("FlexForceZ", true)->clear();
- getChildView("FlexNumSections")->setEnabled(false);
- getChildView("FlexGravity")->setEnabled(false);
- getChildView("FlexTension")->setEnabled(false);
- getChildView("FlexFriction")->setEnabled(false);
- getChildView("FlexWind")->setEnabled(false);
- getChildView("FlexForceX")->setEnabled(false);
- getChildView("FlexForceY")->setEnabled(false);
- getChildView("FlexForceZ")->setEnabled(false);
+ childSetEnabled("FlexNumSections",false);
+ childSetEnabled("FlexGravity",false);
+ childSetEnabled("FlexTension",false);
+ childSetEnabled("FlexFriction",false);
+ childSetEnabled("FlexWind",false);
+ childSetEnabled("FlexForceX",false);
+ childSetEnabled("FlexForceY",false);
+ childSetEnabled("FlexForceZ",false);
}
mObject = objectp;
@@ -378,11 +378,11 @@ void LLPanelVolume::refresh()
BOOL visible = LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_DEFERRED) > 0 ? TRUE : FALSE;
- getChildView("label texture")->setVisible( visible);
- getChildView("Light FOV")->setVisible( visible);
- getChildView("Light Focus")->setVisible( visible);
- getChildView("Light Ambiance")->setVisible( visible);
- getChildView("light texture control")->setVisible( visible);
+ childSetVisible("label texture", visible);
+ childSetVisible("Light FOV", visible);
+ childSetVisible("Light Focus", visible);
+ childSetVisible("Light Ambiance", visible);
+ childSetVisible("light texture control", visible);
}
@@ -397,13 +397,13 @@ void LLPanelVolume::clearCtrls()
{
LLPanel::clearCtrls();
- getChildView("select_single")->setEnabled(false);
- getChildView("select_single")->setVisible(true);
- getChildView("edit_object")->setEnabled(false);
- getChildView("edit_object")->setVisible(false);
- getChildView("Light Checkbox Ctrl")->setEnabled(false);
- getChildView("label color")->setEnabled(false);
- getChildView("label color")->setEnabled(false);
+ childSetEnabled("select_single",false);
+ childSetVisible("select_single",true);
+ childSetEnabled("edit_object",false);
+ childSetVisible("edit_object",false);
+ childSetEnabled("Light Checkbox Ctrl",false);
+ childSetEnabled("label color",false);
+ childSetEnabled("label color",false);
LLColorSwatchCtrl* LightColorSwatch = getChild<LLColorSwatchCtrl>("colorswatch");
if(LightColorSwatch)
{
@@ -417,19 +417,19 @@ void LLPanelVolume::clearCtrls()
LightTextureCtrl->setValid( FALSE );
}
- getChildView("Light Intensity")->setEnabled(false);
- getChildView("Light Radius")->setEnabled(false);
- getChildView("Light Falloff")->setEnabled(false);
-
- getChildView("Flexible1D Checkbox Ctrl")->setEnabled(false);
- getChildView("FlexNumSections")->setEnabled(false);
- getChildView("FlexGravity")->setEnabled(false);
- getChildView("FlexTension")->setEnabled(false);
- getChildView("FlexFriction")->setEnabled(false);
- getChildView("FlexWind")->setEnabled(false);
- getChildView("FlexForceX")->setEnabled(false);
- getChildView("FlexForceY")->setEnabled(false);
- getChildView("FlexForceZ")->setEnabled(false);
+ childSetEnabled("Light Intensity",false);
+ childSetEnabled("Light Radius",false);
+ childSetEnabled("Light Falloff",false);
+
+ childSetEnabled("Flexible1D Checkbox Ctrl",false);
+ childSetEnabled("FlexNumSections",false);
+ childSetEnabled("FlexGravity",false);
+ childSetEnabled("FlexTension",false);
+ childSetEnabled("FlexFriction",false);
+ childSetEnabled("FlexWind",false);
+ childSetEnabled("FlexForceX",false);
+ childSetEnabled("FlexForceY",false);
+ childSetEnabled("FlexForceZ",false);
}
//
@@ -445,7 +445,7 @@ void LLPanelVolume::sendIsLight()
}
LLVOVolume *volobjp = (LLVOVolume *)objectp;
- BOOL value = getChild<LLUICtrl>("Light Checkbox Ctrl")->getValue();
+ BOOL value = childGetValue("Light Checkbox Ctrl");
volobjp->setIsLight(value);
llinfos << "update light sent" << llendl;
}
@@ -459,7 +459,7 @@ void LLPanelVolume::sendIsFlexible()
}
LLVOVolume *volobjp = (LLVOVolume *)objectp;
- BOOL is_flexible = getChild<LLUICtrl>("Flexible1D Checkbox Ctrl")->getValue();
+ BOOL is_flexible = childGetValue("Flexible1D Checkbox Ctrl");
//BOOL is_flexible = mCheckFlexible1D->get();
if (is_flexible)
@@ -551,9 +551,9 @@ void LLPanelVolume::onCommitLight( LLUICtrl* ctrl, void* userdata )
LLVOVolume *volobjp = (LLVOVolume *)objectp;
- volobjp->setLightIntensity((F32)self->getChild<LLUICtrl>("Light Intensity")->getValue().asReal());
- volobjp->setLightRadius((F32)self->getChild<LLUICtrl>("Light Radius")->getValue().asReal());
- volobjp->setLightFalloff((F32)self->getChild<LLUICtrl>("Light Falloff")->getValue().asReal());
+ volobjp->setLightIntensity((F32)self->childGetValue("Light Intensity").asReal());
+ volobjp->setLightRadius((F32)self->childGetValue("Light Radius").asReal());
+ volobjp->setLightFalloff((F32)self->childGetValue("Light Falloff").asReal());
LLColorSwatchCtrl* LightColorSwatch = self->getChild<LLColorSwatchCtrl>("colorswatch");
if(LightColorSwatch)
@@ -568,29 +568,29 @@ void LLPanelVolume::onCommitLight( LLUICtrl* ctrl, void* userdata )
LLUUID id = LightTextureCtrl->getImageAssetID();
if (id.notNull())
{
- if (!volobjp->isLightSpotlight())
+ if (volobjp->getLightTextureID().isNull())
{ //this commit is making this a spot light, set UI to default params
volobjp->setLightTextureID(id);
LLVector3 spot_params = volobjp->getSpotLightParams();
- self->getChild<LLUICtrl>("Light FOV")->setValue(spot_params.mV[0]);
- self->getChild<LLUICtrl>("Light Focus")->setValue(spot_params.mV[1]);
- self->getChild<LLUICtrl>("Light Ambiance")->setValue(spot_params.mV[2]);
+ self->childSetValue("Light FOV", spot_params.mV[0]);
+ self->childSetValue("Light Focus", spot_params.mV[1]);
+ self->childSetValue("Light Ambiance", spot_params.mV[2]);
}
else
{ //modifying existing params
LLVector3 spot_params;
- spot_params.mV[0] = (F32) self->getChild<LLUICtrl>("Light FOV")->getValue().asReal();
- spot_params.mV[1] = (F32) self->getChild<LLUICtrl>("Light Focus")->getValue().asReal();
- spot_params.mV[2] = (F32) self->getChild<LLUICtrl>("Light Ambiance")->getValue().asReal();
+ spot_params.mV[0] = (F32) self->childGetValue("Light FOV").asReal();
+ spot_params.mV[1] = (F32) self->childGetValue("Light Focus").asReal();
+ spot_params.mV[2] = (F32) self->childGetValue("Light Ambiance").asReal();
volobjp->setSpotLightParams(spot_params);
}
}
- else if (volobjp->isLightSpotlight())
+ else if (volobjp->getLightTextureID().notNull())
{ //no longer a spot light
volobjp->setLightTextureID(id);
- //self->getChildView("Light FOV")->setEnabled(FALSE);
- //self->getChildView("Light Focus")->setEnabled(FALSE);
- //self->getChildView("Light Ambiance")->setEnabled(FALSE);
+ //self->childDisable("Light FOV");
+ //self->childDisable("Light Focus");
+ //self->childDisable("Light Ambiance");
}
}
@@ -623,14 +623,14 @@ void LLPanelVolume::onCommitFlexible( LLUICtrl* ctrl, void* userdata )
new_attributes = *attributes;
- new_attributes.setSimulateLOD(self->getChild<LLUICtrl>("FlexNumSections")->getValue().asInteger());//(S32)self->mSpinSections->get());
- new_attributes.setGravity((F32)self->getChild<LLUICtrl>("FlexGravity")->getValue().asReal());
- new_attributes.setTension((F32)self->getChild<LLUICtrl>("FlexTension")->getValue().asReal());
- new_attributes.setAirFriction((F32)self->getChild<LLUICtrl>("FlexFriction")->getValue().asReal());
- new_attributes.setWindSensitivity((F32)self->getChild<LLUICtrl>("FlexWind")->getValue().asReal());
- F32 fx = (F32)self->getChild<LLUICtrl>("FlexForceX")->getValue().asReal();
- F32 fy = (F32)self->getChild<LLUICtrl>("FlexForceY")->getValue().asReal();
- F32 fz = (F32)self->getChild<LLUICtrl>("FlexForceZ")->getValue().asReal();
+ new_attributes.setSimulateLOD(self->childGetValue("FlexNumSections").asInteger());//(S32)self->mSpinSections->get());
+ new_attributes.setGravity((F32)self->childGetValue("FlexGravity").asReal());
+ new_attributes.setTension((F32)self->childGetValue("FlexTension").asReal());
+ new_attributes.setAirFriction((F32)self->childGetValue("FlexFriction").asReal());
+ new_attributes.setWindSensitivity((F32)self->childGetValue("FlexWind").asReal());
+ F32 fx = (F32)self->childGetValue("FlexForceX").asReal();
+ F32 fy = (F32)self->childGetValue("FlexForceY").asReal();
+ F32 fz = (F32)self->childGetValue("FlexForceZ").asReal();
LLVector3 force(fx,fy,fz);
new_attributes.setUserForce(force);
diff --git a/indra/newview/llpanelwearing.cpp b/indra/newview/llpanelwearing.cpp
index a6bc34c62e..8b1682b901 100644
--- a/indra/newview/llpanelwearing.cpp
+++ b/indra/newview/llpanelwearing.cpp
@@ -82,58 +82,9 @@ protected:
{
LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
- functor_t take_off = boost::bind(&LLAppearanceMgr::removeItemFromAvatar, LLAppearanceMgr::getInstance(), _1);
-
registrar.add("Wearing.Edit", boost::bind(&edit_outfit));
- registrar.add("Wearing.TakeOff", boost::bind(handleMultiple, take_off, mUUIDs));
- registrar.add("Wearing.Detach", boost::bind(handleMultiple, take_off, mUUIDs));
-
- LLContextMenu* menu = createFromFile("menu_wearing_tab.xml");
-
- updateMenuItemsVisibility(menu);
- return menu;
- }
-
- void updateMenuItemsVisibility(LLContextMenu* menu)
- {
- bool bp_selected = false; // true if body parts selected
- bool clothes_selected = false;
- bool attachments_selected = false;
-
- // See what types of wearables are selected.
- for (uuid_vec_t::const_iterator it = mUUIDs.begin(); it != mUUIDs.end(); ++it)
- {
- LLViewerInventoryItem* item = gInventory.getItem(*it);
-
- if (!item)
- {
- llwarns << "Invalid item" << llendl;
- continue;
- }
-
- LLAssetType::EType type = item->getType();
- if (type == LLAssetType::AT_CLOTHING)
- {
- clothes_selected = true;
- }
- else if (type == LLAssetType::AT_BODYPART)
- {
- bp_selected = true;
- }
- else if (type == LLAssetType::AT_OBJECT)
- {
- attachments_selected = true;
- }
- }
-
- // Enable/disable some menu items depending on the selection.
- bool allow_detach = !bp_selected && !clothes_selected && attachments_selected;
- bool allow_take_off = !bp_selected && clothes_selected && !attachments_selected;
-
- menu->setItemVisible("take_off", allow_take_off);
- menu->setItemVisible("detach", allow_detach);
- menu->setItemVisible("edit_outfit_separator", allow_take_off || allow_detach);
+ return createFromFile("menu_wearing_tab.xml");
}
};
diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp
index c8aa9ac91e..49850748ee 100644
--- a/indra/newview/llparticipantlist.cpp
+++ b/indra/newview/llparticipantlist.cpp
@@ -689,11 +689,11 @@ void LLParticipantList::LLParticipantListMenu::show(LLView* spawning_view, const
if (is_muted)
{
- LLMenuGL::sMenuContainer->getChildView("ModerateVoiceMuteSelected")->setVisible( false);
+ LLMenuGL::sMenuContainer->childSetVisible("ModerateVoiceMuteSelected", false);
}
else
{
- LLMenuGL::sMenuContainer->getChildView("ModerateVoiceUnMuteSelected")->setVisible( false);
+ LLMenuGL::sMenuContainer->childSetVisible("ModerateVoiceUnMuteSelected", false);
}
}
diff --git a/indra/newview/llpreview.cpp b/indra/newview/llpreview.cpp
index 69542764d2..4f3a2a4044 100644
--- a/indra/newview/llpreview.cpp
+++ b/indra/newview/llpreview.cpp
@@ -143,12 +143,12 @@ void LLPreview::onCommit()
}
LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item);
- new_item->setDescription(getChild<LLUICtrl>("desc")->getValue().asString());
+ new_item->setDescription(childGetText("desc"));
- std::string new_name = getChild<LLUICtrl>("name")->getValue().asString();
+ std::string new_name = childGetText("name");
if ( (new_item->getName() != new_name) && !new_name.empty())
{
- new_item->rename(getChild<LLUICtrl>("name")->getValue().asString());
+ new_item->rename(childGetText("name"));
}
if(mObjectUUID.notNull())
@@ -180,7 +180,7 @@ void LLPreview::onCommit()
{
LLSelectMgr::getInstance()->deselectAll();
LLSelectMgr::getInstance()->addAsIndividual( obj, SELECT_ALL_TES, FALSE );
- LLSelectMgr::getInstance()->selectionSetObjectDescription( getChild<LLUICtrl>("desc")->getValue().asString() );
+ LLSelectMgr::getInstance()->selectionSetObjectDescription( childGetText("desc") );
LLSelectMgr::getInstance()->deselectAll();
}
@@ -226,10 +226,10 @@ void LLPreview::refreshFromItem()
LLUIString title = getString("Title", args);
setTitle(title.getString());
}
- getChild<LLUICtrl>("desc")->setValue(item->getDescription());
+ childSetText("desc",item->getDescription());
BOOL can_agent_manipulate = item->getPermissions().allowModifyBy(gAgent.getID());
- getChildView("desc")->setEnabled(can_agent_manipulate);
+ childSetEnabled("desc",can_agent_manipulate);
}
// static
diff --git a/indra/newview/llpreviewanim.cpp b/indra/newview/llpreviewanim.cpp
index b328f65349..a998452888 100644
--- a/indra/newview/llpreviewanim.cpp
+++ b/indra/newview/llpreviewanim.cpp
@@ -54,8 +54,8 @@ void LLPreviewAnim::endAnimCallback( void *userdata )
delete handlep; // done with the handle
if (self)
{
- self->getChild<LLUICtrl>("Anim play btn")->setValue(FALSE);
- self->getChild<LLUICtrl>("Anim audition btn")->setValue(FALSE);
+ self->childSetValue("Anim play btn", FALSE);
+ self->childSetValue("Anim audition btn", FALSE);
}
}
@@ -66,14 +66,14 @@ BOOL LLPreviewAnim::postBuild()
if(item)
{
gAgentAvatarp->createMotion(item->getAssetUUID()); // preload the animation
- getChild<LLUICtrl>("desc")->setValue(item->getDescription());
+ childSetText("desc", item->getDescription());
}
childSetAction("Anim play btn",playAnim, this);
childSetAction("Anim audition btn",auditionAnim, this);
childSetCommitCallback("desc", LLPreview::onText, this);
- getChild<LLLineEditor>("desc")->setPrevalidate(&LLTextValidate::validateASCIIPrintableNoPipe);
+ childSetPrevalidate("desc", &LLTextValidate::validateASCIIPrintableNoPipe);
return LLPreview::postBuild();
}
@@ -115,7 +115,7 @@ void LLPreviewAnim::playAnim( void *userdata )
btn->toggleState();
}
- if (self->getChild<LLUICtrl>("Anim play btn")->getValue().asBoolean() )
+ if (self->childGetValue("Anim play btn").asBoolean() )
{
self->mPauseRequest = NULL;
gAgent.sendAnimationRequest(itemID, ANIM_REQUEST_START);
@@ -149,7 +149,7 @@ void LLPreviewAnim::auditionAnim( void *userdata )
btn->toggleState();
}
- if (self->getChild<LLUICtrl>("Anim audition btn")->getValue().asBoolean() )
+ if (self->childGetValue("Anim audition btn").asBoolean() )
{
self->mPauseRequest = NULL;
gAgentAvatarp->startMotion(item->getAssetUUID());
diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp
index 3f4edbaf97..a8da9e5129 100644
--- a/indra/newview/llpreviewgesture.cpp
+++ b/indra/newview/llpreviewgesture.cpp
@@ -476,11 +476,11 @@ BOOL LLPreviewGesture::postBuild()
if (item)
{
- getChild<LLUICtrl>("desc")->setValue(item->getDescription());
- getChild<LLLineEditor>("desc")->setPrevalidate(&LLTextValidate::validateASCIIPrintableNoPipe);
+ childSetText("desc", item->getDescription());
+ childSetPrevalidate("desc", &LLTextValidate::validateASCIIPrintableNoPipe);
- getChild<LLUICtrl>("name")->setValue(item->getName());
- getChild<LLLineEditor>("name")->setPrevalidate(&LLTextValidate::validateASCIIPrintableNoPipe);
+ childSetText("name", item->getName());
+ childSetPrevalidate("name", &LLTextValidate::validateASCIIPrintableNoPipe);
}
return LLPreview::postBuild();
@@ -622,7 +622,7 @@ void LLPreviewGesture::refresh()
if (mPreviewGesture || !is_complete)
{
- getChildView("desc")->setEnabled(FALSE);
+ childSetEnabled("desc", FALSE);
//mDescEditor->setEnabled(FALSE);
mTriggerEditor->setEnabled(FALSE);
mReplaceText->setEnabled(FALSE);
@@ -653,7 +653,7 @@ void LLPreviewGesture::refresh()
BOOL modifiable = item->getPermissions().allowModifyBy(gAgent.getID());
- getChildView("desc")->setEnabled(modifiable);
+ childSetEnabled("desc", modifiable);
mTriggerEditor->setEnabled(TRUE);
mLibraryList->setEnabled(modifiable);
mStepList->setEnabled(modifiable);
diff --git a/indra/newview/llpreviewnotecard.cpp b/indra/newview/llpreviewnotecard.cpp
index e85a6a7094..2089beba26 100644
--- a/indra/newview/llpreviewnotecard.cpp
+++ b/indra/newview/llpreviewnotecard.cpp
@@ -85,20 +85,20 @@ BOOL LLPreviewNotecard::postBuild()
ed->makePristine();
childSetAction("Save", onClickSave, this);
- getChildView("lock")->setVisible( FALSE);
+ childSetVisible("lock", FALSE);
childSetAction("Delete", onClickDelete, this);
- getChildView("Delete")->setEnabled(false);
+ childSetEnabled("Delete", false);
const LLInventoryItem* item = getItem();
childSetCommitCallback("desc", LLPreview::onText, this);
if (item)
{
- getChild<LLUICtrl>("desc")->setValue(item->getDescription());
- getChildView("Delete")->setEnabled(true);
+ childSetText("desc", item->getDescription());
+ childSetEnabled("Delete", true);
}
- getChild<LLLineEditor>("desc")->setPrevalidate(&LLTextValidate::validateASCIIPrintableNoPipe);
+ childSetPrevalidate("desc", &LLTextValidate::validateASCIIPrintableNoPipe);
return LLPreview::postBuild();
}
@@ -114,10 +114,10 @@ void LLPreviewNotecard::setEnabled( BOOL enabled )
LLViewerTextEditor* editor = getChild<LLViewerTextEditor>("Notecard Editor");
- getChildView("Notecard Editor")->setEnabled(enabled);
- getChildView("lock")->setVisible( !enabled);
- getChildView("desc")->setEnabled(enabled);
- getChildView("Save")->setEnabled(enabled && editor && (!editor->isPristine()));
+ childSetEnabled("Notecard Editor", enabled);
+ childSetVisible("lock", !enabled);
+ childSetEnabled("desc", enabled);
+ childSetEnabled("Save", enabled && editor && (!editor->isPristine()));
}
@@ -126,7 +126,7 @@ void LLPreviewNotecard::draw()
LLViewerTextEditor* editor = getChild<LLViewerTextEditor>("Notecard Editor");
BOOL changed = !editor->isPristine();
- getChildView("Save")->setEnabled(changed && getEnabled());
+ childSetEnabled("Save", changed && getEnabled());
LLPreview::draw();
}
@@ -277,7 +277,7 @@ void LLPreviewNotecard::loadAsset()
GP_OBJECT_MANIPULATE))
{
editor->setEnabled(FALSE);
- getChildView("lock")->setVisible( TRUE);
+ childSetVisible("lock", TRUE);
}
}
else
diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp
index d280cf1625..5cb93e823d 100644
--- a/indra/newview/llpreviewscript.cpp
+++ b/indra/newview/llpreviewscript.cpp
@@ -213,7 +213,7 @@ void LLFloaterScriptSearch::onBtnSearch(void *userdata)
void LLFloaterScriptSearch::handleBtnSearch()
{
LLCheckBoxCtrl* caseChk = getChild<LLCheckBoxCtrl>("case_text");
- mEditorCore->mEditor->selectNext(getChild<LLUICtrl>("search_text")->getValue().asString(), caseChk->get());
+ mEditorCore->mEditor->selectNext(childGetText("search_text"), caseChk->get());
}
// static
@@ -226,7 +226,7 @@ void LLFloaterScriptSearch::onBtnReplace(void *userdata)
void LLFloaterScriptSearch::handleBtnReplace()
{
LLCheckBoxCtrl* caseChk = getChild<LLCheckBoxCtrl>("case_text");
- mEditorCore->mEditor->replaceText(getChild<LLUICtrl>("search_text")->getValue().asString(), getChild<LLUICtrl>("replace_text")->getValue().asString(), caseChk->get());
+ mEditorCore->mEditor->replaceText(childGetText("search_text"), childGetText("replace_text"), caseChk->get());
}
// static
@@ -239,7 +239,7 @@ void LLFloaterScriptSearch::onBtnReplaceAll(void *userdata)
void LLFloaterScriptSearch::handleBtnReplaceAll()
{
LLCheckBoxCtrl* caseChk = getChild<LLCheckBoxCtrl>("case_text");
- mEditorCore->mEditor->replaceTextAll(getChild<LLUICtrl>("search_text")->getValue().asString(), getChild<LLUICtrl>("replace_text")->getValue().asString(), caseChk->get());
+ mEditorCore->mEditor->replaceTextAll(childGetText("search_text"), childGetText("replace_text"), caseChk->get());
}
@@ -451,7 +451,7 @@ bool LLScriptEdCore::hasChanged()
void LLScriptEdCore::draw()
{
BOOL script_changed = hasChanged();
- getChildView("Save_btn")->setEnabled(script_changed);
+ childSetEnabled("Save_btn", script_changed);
if( mEditor->hasFocus() )
{
@@ -463,11 +463,11 @@ void LLScriptEdCore::draw()
args["[LINE]"] = llformat ("%d", line);
args["[COLUMN]"] = llformat ("%d", column);
cursor_pos = LLTrans::getString("CursorPos", args);
- getChild<LLUICtrl>("line_col")->setValue(cursor_pos);
+ childSetText("line_col", cursor_pos);
}
else
{
- getChild<LLUICtrl>("line_col")->setValue(LLStringUtil::null);
+ childSetText("line_col", LLStringUtil::null);
}
updateDynamicHelp();
@@ -660,7 +660,7 @@ void LLScriptEdCore::onBtnDynamicHelp()
if (parent)
parent->addDependentFloater(live_help_floater, TRUE);
live_help_floater->childSetCommitCallback("lock_check", onCheckLock, this);
- live_help_floater->getChild<LLUICtrl>("lock_check")->setValue(gSavedSettings.getBOOL("ScriptHelpFollowsCursor"));
+ live_help_floater->childSetValue("lock_check", gSavedSettings.getBOOL("ScriptHelpFollowsCursor"));
live_help_floater->childSetCommitCallback("history_combo", onHelpComboCommit, this);
live_help_floater->childSetAction("back_btn", onClickBack, this);
live_help_floater->childSetAction("fwd_btn", onClickForward, this);
@@ -953,10 +953,10 @@ BOOL LLPreviewLSL::postBuild()
llassert(item);
if (item)
{
- getChild<LLUICtrl>("desc")->setValue(item->getDescription());
+ childSetText("desc", item->getDescription());
}
childSetCommitCallback("desc", LLPreview::onText, this);
- getChild<LLLineEditor>("desc")->setPrevalidate(&LLTextValidate::validateASCIIPrintableNoPipe);
+ childSetPrevalidate("desc", &LLTextValidate::validateASCIIPrintableNoPipe);
return LLPreview::postBuild();
}
@@ -1034,8 +1034,8 @@ void LLPreviewLSL::loadAsset()
mScriptEd->mFunctions->setEnabled(FALSE);
mAssetStatus = PREVIEW_ASSET_LOADED;
}
- getChildView("lock")->setVisible( !is_modifiable);
- mScriptEd->getChildView("Insert...")->setEnabled(is_modifiable);
+ childSetVisible("lock", !is_modifiable);
+ mScriptEd->childSetEnabled("Insert...", is_modifiable);
}
else
{
@@ -1423,14 +1423,14 @@ LLLiveLSLEditor::LLLiveLSLEditor(const LLSD& key) :
BOOL LLLiveLSLEditor::postBuild()
{
childSetCommitCallback("running", LLLiveLSLEditor::onRunningCheckboxClicked, this);
- getChildView("running")->setEnabled(FALSE);
+ childSetEnabled("running", FALSE);
childSetAction("Reset",&LLLiveLSLEditor::onReset,this);
- getChildView("Reset")->setEnabled(TRUE);
+ childSetEnabled("Reset", TRUE);
mMonoCheckbox = getChild<LLCheckBoxCtrl>("mono");
childSetCommitCallback("mono", &LLLiveLSLEditor::onMonoCheckboxClicked, this);
- getChildView("mono")->setEnabled(FALSE);
+ childSetEnabled("mono", FALSE);
mScriptEd->mEditor->makePristine();
mScriptEd->mEditor->setFocus(TRUE);
diff --git a/indra/newview/llpreviewsound.cpp b/indra/newview/llpreviewsound.cpp
index 6b53b45990..bacdf20cae 100644
--- a/indra/newview/llpreviewsound.cpp
+++ b/indra/newview/llpreviewsound.cpp
@@ -54,7 +54,7 @@ BOOL LLPreviewSound::postBuild()
const LLInventoryItem* item = getItem();
if (item)
{
- getChild<LLUICtrl>("desc")->setValue(item->getDescription());
+ childSetText("desc", item->getDescription());
if (gAudiop)
gAudiop->preloadSound(item->getAssetUUID()); // preload the sound
}
@@ -69,7 +69,7 @@ BOOL LLPreviewSound::postBuild()
button->setSoundFlags(LLView::SILENT);
childSetCommitCallback("desc", LLPreview::onText, this);
- getChild<LLLineEditor>("desc")->setPrevalidate(&LLTextValidate::validateASCIIPrintableNoPipe);
+ childSetPrevalidate("desc", &LLTextValidate::validateASCIIPrintableNoPipe);
return LLPreview::postBuild();
}
diff --git a/indra/newview/llpreviewtexture.cpp b/indra/newview/llpreviewtexture.cpp
index 1155f35de8..2eb362cd7e 100644
--- a/indra/newview/llpreviewtexture.cpp
+++ b/indra/newview/llpreviewtexture.cpp
@@ -99,7 +99,7 @@ BOOL LLPreviewTexture::postBuild()
{
getChild<LLButton>("Keep")->setLabel(getString("Copy"));
childSetAction("Keep",LLPreview::onBtnCopyToInv,this);
- getChildView("Discard")->setVisible( false);
+ childSetVisible("Discard", false);
}
else if (mShowKeepDiscard)
{
@@ -108,13 +108,13 @@ BOOL LLPreviewTexture::postBuild()
}
else
{
- getChildView("Keep")->setVisible( false);
- getChildView("Discard")->setVisible( false);
+ childSetVisible("Keep", false);
+ childSetVisible("Discard", false);
}
childSetAction("save_tex_btn", LLPreviewTexture::onSaveAsBtn, this);
- getChildView("save_tex_btn")->setVisible( true);
- getChildView("save_tex_btn")->setEnabled(canSaveAs());
+ childSetVisible("save_tex_btn", true);
+ childSetEnabled("save_tex_btn", canSaveAs());
if (!mCopyToInv)
{
@@ -123,8 +123,8 @@ BOOL LLPreviewTexture::postBuild()
if (item)
{
childSetCommitCallback("desc", LLPreview::onText, this);
- getChild<LLUICtrl>("desc")->setValue(item->getDescription());
- getChild<LLLineEditor>("desc")->setPrevalidate(&LLTextValidate::validateASCIIPrintableNoPipe);
+ childSetText("desc", item->getDescription());
+ childSetPrevalidate("desc", &LLTextValidate::validateASCIIPrintableNoPipe);
}
}
@@ -283,7 +283,8 @@ void LLPreviewTexture::reshape(S32 width, S32 height, BOOL called_from_parent)
{
LLPreview::reshape(width, height, called_from_parent);
- LLRect dim_rect(getChildView("dimensions")->getRect());
+ LLRect dim_rect;
+ childGetRect("dimensions", dim_rect);
S32 horiz_pad = 2 * (LLPANEL_BORDER_WIDTH + PREVIEW_PAD) + PREVIEW_RESIZE_HANDLE_SIZE;
@@ -405,11 +406,12 @@ void LLPreviewTexture::updateDimensions()
mUpdateDimensions = FALSE;
- getChild<LLUICtrl>("dimensions")->setTextArg("[WIDTH]", llformat("%d", mImage->getFullWidth()));
- getChild<LLUICtrl>("dimensions")->setTextArg("[HEIGHT]", llformat("%d", mImage->getFullHeight()));
+ childSetTextArg("dimensions", "[WIDTH]", llformat("%d", mImage->getFullWidth()));
+ childSetTextArg("dimensions", "[HEIGHT]", llformat("%d", mImage->getFullHeight()));
- LLRect dim_rect(getChildView("dimensions")->getRect());
+ LLRect dim_rect;
+ childGetRect("dimensions", dim_rect);
S32 horiz_pad = 2 * (LLPANEL_BORDER_WIDTH + PREVIEW_PAD) + PREVIEW_RESIZE_HANDLE_SIZE;
@@ -483,8 +485,9 @@ void LLPreviewTexture::updateDimensions()
// Hide the aspect ratio label if the window is too narrow
// Assumes the label should be to the right of the dimensions
- LLRect aspect_label_rect(getChildView("aspect_ratio")->getRect());
- getChildView("aspect_ratio")->setVisible( dim_rect.mRight < aspect_label_rect.mLeft);
+ LLRect aspect_label_rect;
+ childGetRect("aspect_ratio", aspect_label_rect);
+ childSetVisible("aspect_ratio", dim_rect.mRight < aspect_label_rect.mLeft);
}
@@ -541,7 +544,7 @@ void LLPreviewTexture::loadAsset()
mAssetStatus = PREVIEW_ASSET_LOADING;
mUpdateDimensions = TRUE;
updateDimensions();
- getChildView("save_tex_btn")->setEnabled(canSaveAs());
+ childSetEnabled("save_tex_btn", canSaveAs());
}
LLPreview::EAssetStatus LLPreviewTexture::getAssetStatus()
diff --git a/indra/newview/llremoteparcelrequest.cpp b/indra/newview/llremoteparcelrequest.cpp
index d63a48647d..27f871c017 100644
--- a/indra/newview/llremoteparcelrequest.cpp
+++ b/indra/newview/llremoteparcelrequest.cpp
@@ -30,6 +30,7 @@
#include "message.h"
+#include "llpanelplace.h"
#include "llpanel.h"
#include "llhttpclient.h"
#include "llsdserialize.h"
diff --git a/indra/newview/llsaveoutfitcombobtn.cpp b/indra/newview/llsaveoutfitcombobtn.cpp
index cbad85cfd3..bb084dc94d 100644
--- a/indra/newview/llsaveoutfitcombobtn.cpp
+++ b/indra/newview/llsaveoutfitcombobtn.cpp
@@ -88,5 +88,5 @@ void LLSaveOutfitComboBtn::setMenuItemEnabled(const std::string& item, bool enab
void LLSaveOutfitComboBtn::setSaveBtnEnabled(bool enabled)
{
- mParent->getChildView(SAVE_BTN)->setEnabled(enabled);
+ mParent->childSetEnabled(SAVE_BTN, enabled);
}
diff --git a/indra/newview/llscriptfloater.cpp b/indra/newview/llscriptfloater.cpp
index 2334f0cde5..00afb00ddc 100644
--- a/indra/newview/llscriptfloater.cpp
+++ b/indra/newview/llscriptfloater.cpp
@@ -26,7 +26,6 @@
#include "llviewerprecompiledheaders.h"
#include "llscriptfloater.h"
-#include "llagentcamera.h"
#include "llbottomtray.h"
#include "llchannelmanager.h"
@@ -66,7 +65,6 @@ LLScriptFloater::LLScriptFloater(const LLSD& key)
{
setMouseDownCallback(boost::bind(&LLScriptFloater::onMouseDown, this));
setOverlapsScreenChannel(true);
- mIsDockedStateForcedCallback = boost::bind(&LLAgentCamera::cameraMouselook, &gAgentCamera);
}
bool LLScriptFloater::toggle(const LLUUID& notification_id)
diff --git a/indra/newview/llscrollingpanelparam.cpp b/indra/newview/llscrollingpanelparam.cpp
index 2d8c9b0fec..504115896a 100644
--- a/indra/newview/llscrollingpanelparam.cpp
+++ b/indra/newview/llscrollingpanelparam.cpp
@@ -73,17 +73,17 @@ LLScrollingPanelParam::LLScrollingPanelParam( const LLPanel::Params& panel_param
mHintMin->setAllowsUpdates( FALSE );
mHintMax->setAllowsUpdates( FALSE );
- getChild<LLUICtrl>("param slider")->setValue(weightToPercent(param->getWeight()));
+ childSetValue("param slider", weightToPercent(param->getWeight()));
std::string display_name = LLTrans::getString(param->getDisplayName());
- getChild<LLUICtrl>("param slider")->setLabelArg("[DESC]", display_name);
- getChildView("param slider")->setEnabled(mAllowModify);
+ childSetLabelArg("param slider", "[DESC]", display_name);
+ childSetEnabled("param slider", mAllowModify);
childSetCommitCallback("param slider", LLScrollingPanelParam::onSliderMoved, this);
std::string min_name = LLTrans::getString(param->getMinDisplayName());
std::string max_name = LLTrans::getString(param->getMaxDisplayName());
- getChild<LLUICtrl>("min param text")->setValue(min_name);
- getChild<LLUICtrl>("max param text")->setValue(max_name);
+ childSetValue("min param text", min_name);
+ childSetValue("max param text", max_name);
LLButton* less = getChild<LLButton>("less");
if (less)
@@ -120,14 +120,14 @@ void LLScrollingPanelParam::updatePanel(BOOL allow_modify)
return;
}
F32 current_weight = mWearable->getVisualParamWeight( param->getID() );
- getChild<LLUICtrl>("param slider")->setValue(weightToPercent( current_weight ) );
+ childSetValue("param slider", weightToPercent( current_weight ) );
mHintMin->requestUpdate( sUpdateDelayFrames++ );
mHintMax->requestUpdate( sUpdateDelayFrames++ );
mAllowModify = allow_modify;
- getChildView("param slider")->setEnabled(mAllowModify);
- getChildView("less")->setEnabled(mAllowModify);
- getChildView("more")->setEnabled(mAllowModify);
+ childSetEnabled("param slider", mAllowModify);
+ childSetEnabled("less", mAllowModify);
+ childSetEnabled("more", mAllowModify);
}
void LLScrollingPanelParam::setVisible( BOOL visible )
@@ -153,16 +153,16 @@ void LLScrollingPanelParam::draw()
return;
}
- getChildView("less")->setVisible( mHintMin->getVisible());
- getChildView("more")->setVisible( mHintMax->getVisible());
+ childSetVisible("less", mHintMin->getVisible());
+ childSetVisible("more", mHintMax->getVisible());
// hide borders if texture has been loaded
- getChildView("left_border")->setVisible( !mHintMin->getVisible());
- getChildView("right_border")->setVisible( !mHintMax->getVisible());
+ childSetVisible("left_border", !mHintMin->getVisible());
+ childSetVisible("right_border", !mHintMax->getVisible());
// Draw all the children except for the labels
- getChildView("min param text")->setVisible( FALSE );
- getChildView("max param text")->setVisible( FALSE );
+ childSetVisible( "min param text", FALSE );
+ childSetVisible( "max param text", FALSE );
LLPanel::draw();
// Draw the hints over the "less" and "more" buttons.
@@ -184,10 +184,10 @@ void LLScrollingPanelParam::draw()
// Draw labels on top of the buttons
- getChildView("min param text")->setVisible( TRUE );
+ childSetVisible( "min param text", TRUE );
drawChild(getChild<LLView>("min param text"));
- getChildView("max param text")->setVisible( TRUE );
+ childSetVisible( "max param text", TRUE );
drawChild(getChild<LLView>("max param text"));
}
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index c9b60bf7f5..85ae37f9a8 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -3609,7 +3609,7 @@ void LLSelectMgr::selectionSetObjectSaleInfo(const LLSaleInfo& sale_info)
// Attachments
//----------------------------------------------------------------------
-void LLSelectMgr::sendAttach(U8 attachment_point, bool replace)
+void LLSelectMgr::sendAttach(U8 attachment_point)
{
LLViewerObject* attach_object = mSelectedObjects->getFirstRootObject();
@@ -3623,12 +3623,9 @@ void LLSelectMgr::sendAttach(U8 attachment_point, bool replace)
if (0 == attachment_point ||
get_if_there(gAgentAvatarp->mAttachmentPoints, (S32)attachment_point, (LLViewerJointAttachment*)NULL))
{
- if (!replace || attachment_point != 0)
- {
- // If we know the attachment point then we got here by clicking an
- // "Attach to..." context menu item, so we should add, not replace.
+
+ if (gSavedSettings.getBOOL("MultipleAttachments"))
attachment_point |= ATTACHMENT_ADD;
- }
sendListToRegions(
"ObjectAttach",
diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h
index e6db264377..fc9879b75a 100644
--- a/indra/newview/llselectmgr.h
+++ b/indra/newview/llselectmgr.h
@@ -606,7 +606,7 @@ public:
// verification only, if it doesn't match region info then sale is
// canceled
void sendBuy(const LLUUID& buyer_id, const LLUUID& category_id, const LLSaleInfo sale_info);
- void sendAttach(U8 attachment_point, bool replace);
+ void sendAttach(U8 attachment_point);
void sendDetach();
void sendDropAttachment();
void sendLink();
diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
index 7206e4fcaf..fe7950c058 100644
--- a/indra/newview/llsidepanelappearance.cpp
+++ b/indra/newview/llsidepanelappearance.cpp
@@ -468,7 +468,7 @@ void LLSidepanelAppearance::fetchInventory()
{
LLViewerObject* attached_object = (*attachment_iter);
if (!attached_object) continue;
- const LLUUID& item_id = attached_object->getAttachmentItemID();
+ const LLUUID& item_id = attached_object->getItemID();
if (item_id.isNull()) continue;
ids.push_back(item_id);
}
@@ -496,8 +496,8 @@ void LLSidepanelAppearance::inventoryFetched()
void LLSidepanelAppearance::setWearablesLoading(bool val)
{
- getChildView("wearables_loading_indicator")->setVisible( val);
- getChildView("edit_outfit_btn")->setVisible( !val);
+ childSetVisible("wearables_loading_indicator", val);
+ childSetVisible("edit_outfit_btn", !val);
if (!val)
{
diff --git a/indra/newview/llsidepaneliteminfo.cpp b/indra/newview/llsidepaneliteminfo.cpp
index 731079fb5d..d98398c484 100644
--- a/indra/newview/llsidepaneliteminfo.cpp
+++ b/indra/newview/llsidepaneliteminfo.cpp
@@ -104,9 +104,9 @@ BOOL LLSidepanelItemInfo::postBuild()
{
LLSidepanelInventorySubpanel::postBuild();
- getChild<LLLineEditor>("LabelItemName")->setPrevalidate(&LLTextValidate::validateASCIIPrintableNoPipe);
+ childSetPrevalidate("LabelItemName",&LLTextValidate::validateASCIIPrintableNoPipe);
getChild<LLUICtrl>("LabelItemName")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onCommitName,this));
- getChild<LLLineEditor>("LabelItemDesc")->setPrevalidate(&LLTextValidate::validateASCIIPrintableNoPipe);
+ childSetPrevalidate("LabelItemDesc",&LLTextValidate::validateASCIIPrintableNoPipe);
getChild<LLUICtrl>("LabelItemDesc")->setCommitCallback(boost::bind(&LLSidepanelItemInfo:: onCommitDescription, this));
// Creator information
getChild<LLUICtrl>("BtnCreator")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onClickCreator,this));
@@ -187,7 +187,7 @@ void LLSidepanelItemInfo::refresh()
for(size_t t=0; t<LL_ARRAY_SIZE(no_item_names); ++t)
{
- getChildView(no_item_names[t])->setEnabled(false);
+ childSetEnabled(no_item_names[t],false);
}
const std::string hide_names[]={
@@ -199,7 +199,7 @@ void LLSidepanelItemInfo::refresh()
};
for(size_t t=0; t<LL_ARRAY_SIZE(hide_names); ++t)
{
- getChildView(hide_names[t])->setVisible(false);
+ childSetVisible(hide_names[t],false);
}
}
@@ -211,7 +211,7 @@ void LLSidepanelItemInfo::refresh()
};
for(size_t t=0; t<LL_ARRAY_SIZE(no_edit_mode_names); ++t)
{
- getChildView(no_edit_mode_names[t])->setEnabled(false);
+ childSetEnabled(no_edit_mode_names[t],false);
}
}
@@ -259,13 +259,13 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item)
GP_OBJECT_MANIPULATE)
&& is_obj_modify && is_complete && not_in_trash;
- getChildView("LabelItemNameTitle")->setEnabled(TRUE);
- getChildView("LabelItemName")->setEnabled(is_modifiable && !is_calling_card); // for now, don't allow rename of calling cards
- getChild<LLUICtrl>("LabelItemName")->setValue(item->getName());
- getChildView("LabelItemDescTitle")->setEnabled(TRUE);
- getChildView("LabelItemDesc")->setEnabled(is_modifiable);
- getChildView("IconLocked")->setVisible(!is_modifiable);
- getChild<LLUICtrl>("LabelItemDesc")->setValue(item->getDescription());
+ childSetEnabled("LabelItemNameTitle",TRUE);
+ childSetEnabled("LabelItemName",is_modifiable && !is_calling_card); // for now, don't allow rename of calling cards
+ childSetText("LabelItemName",item->getName());
+ childSetEnabled("LabelItemDescTitle",TRUE);
+ childSetEnabled("LabelItemDesc",is_modifiable);
+ childSetVisible("IconLocked",!is_modifiable);
+ childSetText("LabelItemDesc",item->getDescription());
//////////////////
// CREATOR NAME //
@@ -277,17 +277,17 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item)
{
std::string name;
gCacheName->getFullName(item->getCreatorUUID(), name);
- getChildView("BtnCreator")->setEnabled(TRUE);
- getChildView("LabelCreatorTitle")->setEnabled(TRUE);
- getChildView("LabelCreatorName")->setEnabled(TRUE);
- getChild<LLUICtrl>("LabelCreatorName")->setValue(name);
+ childSetEnabled("BtnCreator",TRUE);
+ childSetEnabled("LabelCreatorTitle",TRUE);
+ childSetEnabled("LabelCreatorName",TRUE);
+ childSetText("LabelCreatorName",name);
}
else
{
- getChildView("BtnCreator")->setEnabled(FALSE);
- getChildView("LabelCreatorTitle")->setEnabled(FALSE);
- getChildView("LabelCreatorName")->setEnabled(FALSE);
- getChild<LLUICtrl>("LabelCreatorName")->setValue(getString("unknown"));
+ childSetEnabled("BtnCreator",FALSE);
+ childSetEnabled("LabelCreatorTitle",FALSE);
+ childSetEnabled("LabelCreatorName",FALSE);
+ childSetText("LabelCreatorName",getString("unknown"));
}
////////////////
@@ -304,17 +304,17 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item)
{
gCacheName->getFullName(perm.getOwner(), name);
}
- getChildView("BtnOwner")->setEnabled(TRUE);
- getChildView("LabelOwnerTitle")->setEnabled(TRUE);
- getChildView("LabelOwnerName")->setEnabled(TRUE);
- getChild<LLUICtrl>("LabelOwnerName")->setValue(name);
+ childSetEnabled("BtnOwner",TRUE);
+ childSetEnabled("LabelOwnerTitle",TRUE);
+ childSetEnabled("LabelOwnerName",TRUE);
+ childSetText("LabelOwnerName",name);
}
else
{
- getChildView("BtnOwner")->setEnabled(FALSE);
- getChildView("LabelOwnerTitle")->setEnabled(FALSE);
- getChildView("LabelOwnerName")->setEnabled(FALSE);
- getChild<LLUICtrl>("LabelOwnerName")->setValue(getString("public"));
+ childSetEnabled("BtnOwner",FALSE);
+ childSetEnabled("LabelOwnerTitle",FALSE);
+ childSetEnabled("LabelOwnerName",FALSE);
+ childSetText("LabelOwnerName",getString("public"));
}
////////////
@@ -323,11 +323,11 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item)
if (object)
{
- getChild<LLUICtrl>("origin")->setValue(getString("origin_inworld"));
+ childSetText("origin",getString("origin_inworld"));
}
else
{
- getChild<LLUICtrl>("origin")->setValue(getString("origin_inventory"));
+ childSetText("origin",getString("origin_inventory"));
}
//////////////////
@@ -337,7 +337,7 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item)
time_t time_utc = item->getCreationDate();
if (0 == time_utc)
{
- getChild<LLUICtrl>("LabelAcquiredDate")->setValue(getString("unknown"));
+ childSetText("LabelAcquiredDate",getString("unknown"));
}
else
{
@@ -345,7 +345,7 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item)
LLSD substitution;
substitution["datetime"] = (S32) time_utc;
LLStringUtil::format (timeStr, substitution);
- getChild<LLUICtrl>("LabelAcquiredDate")->setValue(timeStr);
+ childSetText ("LabelAcquiredDate", timeStr);
}
//////////////////////////////////////
@@ -388,12 +388,12 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item)
{
for(size_t t=0; t<LL_ARRAY_SIZE(perm_and_sale_items); ++t)
{
- getChildView(perm_and_sale_items[t])->setVisible(false);
+ childSetVisible(perm_and_sale_items[t],false);
}
for(size_t t=0; t<LL_ARRAY_SIZE(debug_items); ++t)
{
- getChildView(debug_items[t])->setVisible(false);
+ childSetVisible(debug_items[t],false);
}
return;
}
@@ -401,7 +401,7 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item)
{
for(size_t t=0; t<LL_ARRAY_SIZE(perm_and_sale_items); ++t)
{
- getChildView(perm_and_sale_items[t])->setVisible(true);
+ childSetVisible(perm_and_sale_items[t],true);
}
}
@@ -410,11 +410,11 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item)
///////////////////////
if(can_agent_manipulate)
{
- getChild<LLUICtrl>("OwnerLabel")->setValue(getString("you_can"));
+ childSetText("OwnerLabel",getString("you_can"));
}
else
{
- getChild<LLUICtrl>("OwnerLabel")->setValue(getString("owner_can"));
+ childSetText("OwnerLabel",getString("owner_can"));
}
U32 base_mask = perm.getMaskBase();
@@ -423,13 +423,13 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item)
U32 everyone_mask = perm.getMaskEveryone();
U32 next_owner_mask = perm.getMaskNextOwner();
- getChildView("OwnerLabel")->setEnabled(TRUE);
- getChildView("CheckOwnerModify")->setEnabled(FALSE);
- getChild<LLUICtrl>("CheckOwnerModify")->setValue(LLSD((BOOL)(owner_mask & PERM_MODIFY)));
- getChildView("CheckOwnerCopy")->setEnabled(FALSE);
- getChild<LLUICtrl>("CheckOwnerCopy")->setValue(LLSD((BOOL)(owner_mask & PERM_COPY)));
- getChildView("CheckOwnerTransfer")->setEnabled(FALSE);
- getChild<LLUICtrl>("CheckOwnerTransfer")->setValue(LLSD((BOOL)(owner_mask & PERM_TRANSFER)));
+ childSetEnabled("OwnerLabel",TRUE);
+ childSetEnabled("CheckOwnerModify",FALSE);
+ childSetValue("CheckOwnerModify",LLSD((BOOL)(owner_mask & PERM_MODIFY)));
+ childSetEnabled("CheckOwnerCopy",FALSE);
+ childSetValue("CheckOwnerCopy",LLSD((BOOL)(owner_mask & PERM_COPY)));
+ childSetEnabled("CheckOwnerTransfer",FALSE);
+ childSetValue("CheckOwnerTransfer",LLSD((BOOL)(owner_mask & PERM_TRANSFER)));
///////////////////////
// DEBUG PERMISSIONS //
@@ -453,39 +453,39 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item)
perm_string = "B: ";
perm_string += mask_to_string(base_mask);
- getChild<LLUICtrl>("BaseMaskDebug")->setValue(perm_string);
- getChildView("BaseMaskDebug")->setVisible(TRUE);
+ childSetText("BaseMaskDebug",perm_string);
+ childSetVisible("BaseMaskDebug",TRUE);
perm_string = "O: ";
perm_string += mask_to_string(owner_mask);
- getChild<LLUICtrl>("OwnerMaskDebug")->setValue(perm_string);
- getChildView("OwnerMaskDebug")->setVisible(TRUE);
+ childSetText("OwnerMaskDebug",perm_string);
+ childSetVisible("OwnerMaskDebug",TRUE);
perm_string = "G";
perm_string += overwrite_group ? "*: " : ": ";
perm_string += mask_to_string(group_mask);
- getChild<LLUICtrl>("GroupMaskDebug")->setValue(perm_string);
- getChildView("GroupMaskDebug")->setVisible(TRUE);
+ childSetText("GroupMaskDebug",perm_string);
+ childSetVisible("GroupMaskDebug",TRUE);
perm_string = "E";
perm_string += overwrite_everyone ? "*: " : ": ";
perm_string += mask_to_string(everyone_mask);
- getChild<LLUICtrl>("EveryoneMaskDebug")->setValue(perm_string);
- getChildView("EveryoneMaskDebug")->setVisible(TRUE);
+ childSetText("EveryoneMaskDebug",perm_string);
+ childSetVisible("EveryoneMaskDebug",TRUE);
perm_string = "N";
perm_string += slam_perm ? "*: " : ": ";
perm_string += mask_to_string(next_owner_mask);
- getChild<LLUICtrl>("NextMaskDebug")->setValue(perm_string);
- getChildView("NextMaskDebug")->setVisible(TRUE);
+ childSetText("NextMaskDebug",perm_string);
+ childSetVisible("NextMaskDebug",TRUE);
}
else
{
- getChildView("BaseMaskDebug")->setVisible(FALSE);
- getChildView("OwnerMaskDebug")->setVisible(FALSE);
- getChildView("GroupMaskDebug")->setVisible(FALSE);
- getChildView("EveryoneMaskDebug")->setVisible(FALSE);
- getChildView("NextMaskDebug")->setVisible(FALSE);
+ childSetVisible("BaseMaskDebug",FALSE);
+ childSetVisible("OwnerMaskDebug",FALSE);
+ childSetVisible("GroupMaskDebug",FALSE);
+ childSetVisible("EveryoneMaskDebug",FALSE);
+ childSetVisible("NextMaskDebug",FALSE);
}
/////////////
@@ -495,18 +495,18 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item)
// Check for ability to change values.
if (is_link || cannot_restrict_permissions)
{
- getChildView("CheckShareWithGroup")->setEnabled(FALSE);
- getChildView("CheckEveryoneCopy")->setEnabled(FALSE);
+ childSetEnabled("CheckShareWithGroup",FALSE);
+ childSetEnabled("CheckEveryoneCopy",FALSE);
}
else if (is_obj_modify && can_agent_manipulate)
{
- getChildView("CheckShareWithGroup")->setEnabled(TRUE);
- getChildView("CheckEveryoneCopy")->setEnabled((owner_mask & PERM_COPY) && (owner_mask & PERM_TRANSFER));
+ childSetEnabled("CheckShareWithGroup",TRUE);
+ childSetEnabled("CheckEveryoneCopy",(owner_mask & PERM_COPY) && (owner_mask & PERM_TRANSFER));
}
else
{
- getChildView("CheckShareWithGroup")->setEnabled(FALSE);
- getChildView("CheckEveryoneCopy")->setEnabled(FALSE);
+ childSetEnabled("CheckShareWithGroup",FALSE);
+ childSetEnabled("CheckEveryoneCopy",FALSE);
}
// Set values.
@@ -516,7 +516,7 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item)
if (is_group_copy && is_group_modify && is_group_move)
{
- getChild<LLUICtrl>("CheckShareWithGroup")->setValue(LLSD((BOOL)TRUE));
+ childSetValue("CheckShareWithGroup",LLSD((BOOL)TRUE));
LLCheckBoxCtrl* ctl = getChild<LLCheckBoxCtrl>("CheckShareWithGroup");
if(ctl)
@@ -526,7 +526,7 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item)
}
else if (!is_group_copy && !is_group_modify && !is_group_move)
{
- getChild<LLUICtrl>("CheckShareWithGroup")->setValue(LLSD((BOOL)FALSE));
+ childSetValue("CheckShareWithGroup",LLSD((BOOL)FALSE));
LLCheckBoxCtrl* ctl = getChild<LLCheckBoxCtrl>("CheckShareWithGroup");
if(ctl)
{
@@ -543,7 +543,7 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item)
}
}
- getChild<LLUICtrl>("CheckEveryoneCopy")->setValue(LLSD((BOOL)(everyone_mask & PERM_COPY)));
+ childSetValue("CheckEveryoneCopy",LLSD((BOOL)(everyone_mask & PERM_COPY)));
///////////////
// SALE INFO //
@@ -555,48 +555,48 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item)
if (is_obj_modify && can_agent_sell
&& gAgent.allowOperation(PERM_TRANSFER, perm, GP_OBJECT_MANIPULATE))
{
- getChildView("SaleLabel")->setEnabled(is_complete);
- getChildView("CheckPurchase")->setEnabled(is_complete);
+ childSetEnabled("SaleLabel",is_complete);
+ childSetEnabled("CheckPurchase",is_complete);
- getChildView("NextOwnerLabel")->setEnabled(TRUE);
- getChildView("CheckNextOwnerModify")->setEnabled((base_mask & PERM_MODIFY) && !cannot_restrict_permissions);
- getChildView("CheckNextOwnerCopy")->setEnabled((base_mask & PERM_COPY) && !cannot_restrict_permissions);
- getChildView("CheckNextOwnerTransfer")->setEnabled((next_owner_mask & PERM_COPY) && !cannot_restrict_permissions);
+ childSetEnabled("NextOwnerLabel",TRUE);
+ childSetEnabled("CheckNextOwnerModify",(base_mask & PERM_MODIFY) && !cannot_restrict_permissions);
+ childSetEnabled("CheckNextOwnerCopy",(base_mask & PERM_COPY) && !cannot_restrict_permissions);
+ childSetEnabled("CheckNextOwnerTransfer",(next_owner_mask & PERM_COPY) && !cannot_restrict_permissions);
- getChildView("TextPrice")->setEnabled(is_complete && is_for_sale);
- getChildView("Edit Cost")->setEnabled(is_complete && is_for_sale);
+ childSetEnabled("TextPrice",is_complete && is_for_sale);
+ childSetEnabled("Edit Cost",is_complete && is_for_sale);
}
else
{
- getChildView("SaleLabel")->setEnabled(FALSE);
- getChildView("CheckPurchase")->setEnabled(FALSE);
+ childSetEnabled("SaleLabel",FALSE);
+ childSetEnabled("CheckPurchase",FALSE);
- getChildView("NextOwnerLabel")->setEnabled(FALSE);
- getChildView("CheckNextOwnerModify")->setEnabled(FALSE);
- getChildView("CheckNextOwnerCopy")->setEnabled(FALSE);
- getChildView("CheckNextOwnerTransfer")->setEnabled(FALSE);
+ childSetEnabled("NextOwnerLabel",FALSE);
+ childSetEnabled("CheckNextOwnerModify",FALSE);
+ childSetEnabled("CheckNextOwnerCopy",FALSE);
+ childSetEnabled("CheckNextOwnerTransfer",FALSE);
- getChildView("TextPrice")->setEnabled(FALSE);
- getChildView("Edit Cost")->setEnabled(FALSE);
+ childSetEnabled("TextPrice",FALSE);
+ childSetEnabled("Edit Cost",FALSE);
}
// Set values.
- getChild<LLUICtrl>("CheckPurchase")->setValue(is_for_sale);
- getChildView("combobox sale copy")->setEnabled(is_for_sale);
- getChildView("Edit Cost")->setEnabled(is_for_sale);
- getChild<LLUICtrl>("CheckNextOwnerModify")->setValue(LLSD(BOOL(next_owner_mask & PERM_MODIFY)));
- getChild<LLUICtrl>("CheckNextOwnerCopy")->setValue(LLSD(BOOL(next_owner_mask & PERM_COPY)));
- getChild<LLUICtrl>("CheckNextOwnerTransfer")->setValue(LLSD(BOOL(next_owner_mask & PERM_TRANSFER)));
+ childSetValue("CheckPurchase", is_for_sale);
+ childSetEnabled("combobox sale copy", is_for_sale);
+ childSetEnabled("Edit Cost", is_for_sale);
+ childSetValue("CheckNextOwnerModify",LLSD(BOOL(next_owner_mask & PERM_MODIFY)));
+ childSetValue("CheckNextOwnerCopy",LLSD(BOOL(next_owner_mask & PERM_COPY)));
+ childSetValue("CheckNextOwnerTransfer",LLSD(BOOL(next_owner_mask & PERM_TRANSFER)));
if (is_for_sale)
{
S32 numerical_price;
numerical_price = sale_info.getSalePrice();
- getChild<LLUICtrl>("Edit Cost")->setValue(llformat("%d",numerical_price));
+ childSetText("Edit Cost",llformat("%d",numerical_price));
}
else
{
- getChild<LLUICtrl>("Edit Cost")->setValue(llformat("%d",0));
+ childSetText("Edit Cost",llformat("%d",0));
}
}
@@ -817,10 +817,10 @@ void LLSidepanelItemInfo::updateSaleInfo()
LLSaleInfo sale_info(item->getSaleInfo());
if(!gAgent.allowOperation(PERM_TRANSFER, item->getPermissions(), GP_OBJECT_SET_SALE))
{
- getChild<LLUICtrl>("CheckPurchase")->setValue(LLSD((BOOL)FALSE));
+ childSetValue("CheckPurchase",LLSD((BOOL)FALSE));
}
- if((BOOL)getChild<LLUICtrl>("CheckPurchase")->getValue())
+ if((BOOL)childGetValue("CheckPurchase"))
{
// turn on sale info
LLSaleInfo::EForSale sale_type = LLSaleInfo::FS_COPY;
diff --git a/indra/newview/llsidepaneltaskinfo.cpp b/indra/newview/llsidepaneltaskinfo.cpp
index 4552088cad..c55cc12401 100644
--- a/indra/newview/llsidepaneltaskinfo.cpp
+++ b/indra/newview/llsidepaneltaskinfo.cpp
@@ -101,9 +101,9 @@ BOOL LLSidepanelTaskInfo::postBuild()
mLabelGroupName = getChild<LLNameBox>("Group Name Proxy");
childSetCommitCallback("Object Name", LLSidepanelTaskInfo::onCommitName,this);
- getChild<LLLineEditor>("Object Name")->setPrevalidate(LLTextValidate::validateASCIIPrintableNoPipe);
+ childSetPrevalidate("Object Name", LLTextValidate::validateASCIIPrintableNoPipe);
childSetCommitCallback("Object Description", LLSidepanelTaskInfo::onCommitDesc,this);
- getChild<LLLineEditor>("Object Description")->setPrevalidate(LLTextValidate::validateASCIIPrintableNoPipe);
+ childSetPrevalidate("Object Description", LLTextValidate::validateASCIIPrintableNoPipe);
getChild<LLUICtrl>("button set group")->setCommitCallback(boost::bind(&LLSidepanelTaskInfo::onClickGroup,this));
childSetCommitCallback("checkbox share with group", &LLSidepanelTaskInfo::onCommitGroupShare,this);
childSetAction("button deed", &LLSidepanelTaskInfo::onClickDeedToGroup,this);
@@ -138,81 +138,81 @@ BOOL LLSidepanelTaskInfo::postBuild()
void LLSidepanelTaskInfo::disableAll()
{
- getChildView("perm_modify")->setEnabled(FALSE);
- getChild<LLUICtrl>("perm_modify")->setValue(LLStringUtil::null);
-
- getChildView("Creator:")->setEnabled(FALSE);
- getChild<LLUICtrl>("Creator Name")->setValue(LLStringUtil::null);
- getChildView("Creator Name")->setEnabled(FALSE);
-
- getChildView("Owner:")->setEnabled(FALSE);
- getChild<LLUICtrl>("Owner Name")->setValue(LLStringUtil::null);
- getChildView("Owner Name")->setEnabled(FALSE);
-
- getChildView("Group:")->setEnabled(FALSE);
- getChild<LLUICtrl>("Group Name")->setValue(LLStringUtil::null);
- getChildView("Group Name")->setEnabled(FALSE);
- getChildView("button set group")->setEnabled(FALSE);
-
- getChild<LLUICtrl>("Object Name")->setValue(LLStringUtil::null);
- getChildView("Object Name")->setEnabled(FALSE);
- getChildView("Name:")->setEnabled(FALSE);
- getChild<LLUICtrl>("Group Name")->setValue(LLStringUtil::null);
- getChildView("Group Name")->setEnabled(FALSE);
- getChildView("Description:")->setEnabled(FALSE);
- getChild<LLUICtrl>("Object Description")->setValue(LLStringUtil::null);
- getChildView("Object Description")->setEnabled(FALSE);
-
- getChildView("Permissions:")->setEnabled(FALSE);
+ childSetEnabled("perm_modify", FALSE);
+ childSetText("perm_modify", LLStringUtil::null);
+
+ childSetEnabled("Creator:", FALSE);
+ childSetText("Creator Name", LLStringUtil::null);
+ childSetEnabled("Creator Name", FALSE);
+
+ childSetEnabled("Owner:", FALSE);
+ childSetText("Owner Name", LLStringUtil::null);
+ childSetEnabled("Owner Name", FALSE);
+
+ childSetEnabled("Group:", FALSE);
+ childSetText("Group Name", LLStringUtil::null);
+ childSetEnabled("Group Name", FALSE);
+ childSetEnabled("button set group", FALSE);
+
+ childSetText("Object Name", LLStringUtil::null);
+ childSetEnabled("Object Name", FALSE);
+ childSetEnabled("Name:", FALSE);
+ childSetText("Group Name", LLStringUtil::null);
+ childSetEnabled("Group Name", FALSE);
+ childSetEnabled("Description:", FALSE);
+ childSetText("Object Description", LLStringUtil::null);
+ childSetEnabled("Object Description", FALSE);
+
+ childSetEnabled("Permissions:", FALSE);
- getChild<LLUICtrl>("checkbox share with group")->setValue(FALSE);
- getChildView("checkbox share with group")->setEnabled(FALSE);
- getChildView("button deed")->setEnabled(FALSE);
+ childSetValue("checkbox share with group", FALSE);
+ childSetEnabled("checkbox share with group", FALSE);
+ childSetEnabled("button deed", FALSE);
- getChild<LLUICtrl>("checkbox allow everyone move")->setValue(FALSE);
- getChildView("checkbox allow everyone move")->setEnabled(FALSE);
- getChild<LLUICtrl>("checkbox allow everyone copy")->setValue(FALSE);
- getChildView("checkbox allow everyone copy")->setEnabled(FALSE);
+ childSetValue("checkbox allow everyone move", FALSE);
+ childSetEnabled("checkbox allow everyone move", FALSE);
+ childSetValue("checkbox allow everyone copy", FALSE);
+ childSetEnabled("checkbox allow everyone copy", FALSE);
//Next owner can:
- getChildView("Next owner can:")->setEnabled(FALSE);
- getChild<LLUICtrl>("checkbox next owner can modify")->setValue(FALSE);
- getChildView("checkbox next owner can modify")->setEnabled(FALSE);
- getChild<LLUICtrl>("checkbox next owner can copy")->setValue(FALSE);
- getChildView("checkbox next owner can copy")->setEnabled(FALSE);
- getChild<LLUICtrl>("checkbox next owner can transfer")->setValue(FALSE);
- getChildView("checkbox next owner can transfer")->setEnabled(FALSE);
+ childSetEnabled("Next owner can:", FALSE);
+ childSetValue("checkbox next owner can modify", FALSE);
+ childSetEnabled("checkbox next owner can modify", FALSE);
+ childSetValue("checkbox next owner can copy", FALSE);
+ childSetEnabled("checkbox next owner can copy", FALSE);
+ childSetValue("checkbox next owner can transfer", FALSE);
+ childSetEnabled("checkbox next owner can transfer", FALSE);
//checkbox for sale
- getChild<LLUICtrl>("checkbox for sale")->setValue(FALSE);
- getChildView("checkbox for sale")->setEnabled(FALSE);
+ childSetValue("checkbox for sale", FALSE);
+ childSetEnabled("checkbox for sale", FALSE);
//checkbox include in search
- getChild<LLUICtrl>("search_check")->setValue(FALSE);
- getChildView("search_check")->setEnabled(FALSE);
+ childSetValue("search_check", FALSE);
+ childSetEnabled("search_check", FALSE);
LLComboBox* combo_sale_type = getChild<LLComboBox>("sale type");
combo_sale_type->setValue(LLSaleInfo::FS_COPY);
combo_sale_type->setEnabled(FALSE);
- getChildView("Cost")->setEnabled(FALSE);
- getChild<LLUICtrl>("Cost")->setValue(getString("Cost Default"));
- getChild<LLUICtrl>("Edit Cost")->setValue(LLStringUtil::null);
- getChildView("Edit Cost")->setEnabled(FALSE);
+ childSetEnabled("Cost", FALSE);
+ childSetText("Cost", getString("Cost Default"));
+ childSetText("Edit Cost", LLStringUtil::null);
+ childSetEnabled("Edit Cost", FALSE);
- getChildView("label click action")->setEnabled(FALSE);
+ childSetEnabled("label click action", FALSE);
LLComboBox* combo_click_action = getChild<LLComboBox>("clickaction");
if (combo_click_action)
{
combo_click_action->setEnabled(FALSE);
combo_click_action->clear();
}
- getChildView("B:")->setVisible( FALSE);
- getChildView("O:")->setVisible( FALSE);
- getChildView("G:")->setVisible( FALSE);
- getChildView("E:")->setVisible( FALSE);
- getChildView("N:")->setVisible( FALSE);
- getChildView("F:")->setVisible( FALSE);
+ childSetVisible("B:", FALSE);
+ childSetVisible("O:", FALSE);
+ childSetVisible("G:", FALSE);
+ childSetVisible("E:", FALSE);
+ childSetVisible("N:", FALSE);
+ childSetVisible("F:", FALSE);
mOpenBtn->setEnabled(FALSE);
mPayBtn->setEnabled(FALSE);
@@ -283,23 +283,23 @@ void LLSidepanelTaskInfo::refresh()
{
++string_index;
}
- getChildView("perm_modify")->setEnabled(TRUE);
- getChild<LLUICtrl>("perm_modify")->setValue(MODIFY_INFO_STRINGS[string_index]);
+ childSetEnabled("perm_modify", TRUE);
+ childSetText("perm_modify", MODIFY_INFO_STRINGS[string_index]);
- getChildView("Permissions:")->setEnabled(TRUE);
+ childSetEnabled("Permissions:", TRUE);
// Update creator text field
- getChildView("Creator:")->setEnabled(TRUE);
+ childSetEnabled("Creator:", TRUE);
BOOL creators_identical;
std::string creator_name;
creators_identical = LLSelectMgr::getInstance()->selectGetCreator(mCreatorID,
creator_name);
- getChild<LLUICtrl>("Creator Name")->setValue(creator_name);
- getChildView("Creator Name")->setEnabled(TRUE);
+ childSetText("Creator Name", creator_name);
+ childSetEnabled("Creator Name", TRUE);
// Update owner text field
- getChildView("Owner:")->setEnabled(TRUE);
+ childSetEnabled("Owner:", TRUE);
std::string owner_name;
const BOOL owners_identical = LLSelectMgr::getInstance()->selectGetOwner(mOwnerID, owner_name);
@@ -324,12 +324,12 @@ void LLSidepanelTaskInfo::refresh()
}
}
}
- getChild<LLUICtrl>("Owner Name")->setValue(owner_name);
- getChildView("Owner Name")->setEnabled(TRUE);
+ childSetText("Owner Name", owner_name);
+ childSetEnabled("Owner Name", TRUE);
// update group text field
- getChildView("Group:")->setEnabled(TRUE);
- getChild<LLUICtrl>("Group Name")->setValue(LLStringUtil::null);
+ childSetEnabled("Group:", TRUE);
+ childSetText("Group Name", LLStringUtil::null);
LLUUID group_id;
BOOL groups_identical = LLSelectMgr::getInstance()->selectGetGroup(group_id);
if (groups_identical)
@@ -350,18 +350,18 @@ void LLSidepanelTaskInfo::refresh()
}
}
- getChildView("button set group")->setEnabled(owners_identical && (mOwnerID == gAgent.getID()));
+ childSetEnabled("button set group", owners_identical && (mOwnerID == gAgent.getID()));
- getChildView("Name:")->setEnabled(TRUE);
+ childSetEnabled("Name:", TRUE);
LLLineEditor* LineEditorObjectName = getChild<LLLineEditor>("Object Name");
- getChildView("Description:")->setEnabled(TRUE);
+ childSetEnabled("Description:", TRUE);
LLLineEditor* LineEditorObjectDesc = getChild<LLLineEditor>("Object Description");
if (is_one_object)
{
if (!LineEditorObjectName->hasFocus())
{
- getChild<LLUICtrl>("Object Name")->setValue(nodep->mName);
+ childSetText("Object Name",nodep->mName);
}
if (LineEditorObjectDesc)
@@ -374,7 +374,7 @@ void LLSidepanelTaskInfo::refresh()
}
else
{
- getChild<LLUICtrl>("Object Name")->setValue(LLStringUtil::null);
+ childSetText("Object Name", LLStringUtil::null);
LineEditorObjectDesc->setText(LLStringUtil::null);
}
@@ -386,13 +386,13 @@ void LLSidepanelTaskInfo::refresh()
}
if (edit_name_desc)
{
- getChildView("Object Name")->setEnabled(TRUE);
- getChildView("Object Description")->setEnabled(TRUE);
+ childSetEnabled("Object Name", TRUE);
+ childSetEnabled("Object Description", TRUE);
}
else
{
- getChildView("Object Name")->setEnabled(FALSE);
- getChildView("Object Description")->setEnabled(FALSE);
+ childSetEnabled("Object Name", FALSE);
+ childSetEnabled("Object Description", FALSE);
}
S32 total_sale_price = 0;
@@ -414,9 +414,9 @@ void LLSidepanelTaskInfo::refresh()
if (!owners_identical)
{
- getChildView("Cost")->setEnabled(FALSE);
- getChild<LLUICtrl>("Edit Cost")->setValue(LLStringUtil::null);
- getChildView("Edit Cost")->setEnabled(FALSE);
+ childSetEnabled("Cost", FALSE);
+ childSetText("Edit Cost", LLStringUtil::null);
+ childSetEnabled("Edit Cost", FALSE);
}
// You own these objects.
else if (self_owned || (group_owned && gAgent.hasPowerInGroup(group_id,GP_OBJECT_SET_SALE)))
@@ -424,11 +424,11 @@ void LLSidepanelTaskInfo::refresh()
// If there are multiple items for sale then set text to PRICE PER UNIT.
if (num_for_sale > 1)
{
- getChild<LLUICtrl>("Cost")->setValue(getString("Cost Per Unit"));
+ childSetText("Cost", getString("Cost Per Unit"));
}
else
{
- getChild<LLUICtrl>("Cost")->setValue(getString("Cost Default"));
+ childSetText("Cost", getString("Cost Default"));
}
LLSpinCtrl *edit_price = getChild<LLSpinCtrl>("Edit Cost");
@@ -452,35 +452,35 @@ void LLSidepanelTaskInfo::refresh()
// The edit fields are only enabled if you can sell this object
// and the sale price is not mixed.
BOOL enable_edit = (num_for_sale && can_transfer) ? !is_for_sale_mixed : FALSE;
- getChildView("Cost")->setEnabled(enable_edit);
- getChildView("Edit Cost")->setEnabled(enable_edit);
+ childSetEnabled("Cost", enable_edit);
+ childSetEnabled("Edit Cost", enable_edit);
}
// Someone, not you, owns these objects.
else if (!public_owned)
{
- getChildView("Cost")->setEnabled(FALSE);
- getChildView("Edit Cost")->setEnabled(FALSE);
+ childSetEnabled("Cost", FALSE);
+ childSetEnabled("Edit Cost", FALSE);
// Don't show a price if none of the items are for sale.
if (num_for_sale)
- getChild<LLUICtrl>("Edit Cost")->setValue(llformat("%d",total_sale_price));
+ childSetText("Edit Cost", llformat("%d",total_sale_price));
else
- getChild<LLUICtrl>("Edit Cost")->setValue(LLStringUtil::null);
+ childSetText("Edit Cost", LLStringUtil::null);
// If multiple items are for sale, set text to TOTAL PRICE.
if (num_for_sale > 1)
- getChild<LLUICtrl>("Cost")->setValue(getString("Cost Total"));
+ childSetText("Cost", getString("Cost Total"));
else
- getChild<LLUICtrl>("Cost")->setValue(getString("Cost Default"));
+ childSetText("Cost", getString("Cost Default"));
}
// This is a public object.
else
{
- getChildView("Cost")->setEnabled(FALSE);
- getChild<LLUICtrl>("Cost")->setValue(getString("Cost Default"));
+ childSetEnabled("Cost", FALSE);
+ childSetText("Cost", getString("Cost Default"));
- getChild<LLUICtrl>("Edit Cost")->setValue(LLStringUtil::null);
- getChildView("Edit Cost")->setEnabled(FALSE);
+ childSetText("Edit Cost", LLStringUtil::null);
+ childSetEnabled("Edit Cost", FALSE);
}
// Enable and disable the permissions checkboxes
@@ -522,20 +522,20 @@ void LLSidepanelTaskInfo::refresh()
{
if (valid_base_perms)
{
- getChild<LLUICtrl>("B:")->setValue("B: " + mask_to_string(base_mask_on));
- getChildView("B:")->setVisible( TRUE);
+ childSetText("B:", "B: " + mask_to_string(base_mask_on));
+ childSetVisible("B:", TRUE);
- getChild<LLUICtrl>("O:")->setValue("O: " + mask_to_string(owner_mask_on));
- getChildView("O:")->setVisible( TRUE);
+ childSetText("O:", "O: " + mask_to_string(owner_mask_on));
+ childSetVisible("O:", TRUE);
- getChild<LLUICtrl>("G:")->setValue("G: " + mask_to_string(group_mask_on));
- getChildView("G:")->setVisible( TRUE);
+ childSetText("G:", "G: " + mask_to_string(group_mask_on));
+ childSetVisible("G:", TRUE);
- getChild<LLUICtrl>("E:")->setValue("E: " + mask_to_string(everyone_mask_on));
- getChildView("E:")->setVisible( TRUE);
+ childSetText("E:", "E: " + mask_to_string(everyone_mask_on));
+ childSetVisible("E:", TRUE);
- getChild<LLUICtrl>("N:")->setValue("N: " + mask_to_string(next_owner_mask_on));
- getChildView("N:")->setVisible( TRUE);
+ childSetText("N:", "N: " + mask_to_string(next_owner_mask_on));
+ childSetVisible("N:", TRUE);
}
U32 flag_mask = 0x0;
@@ -544,17 +544,17 @@ void LLSidepanelTaskInfo::refresh()
if (objectp->permCopy()) flag_mask |= PERM_COPY;
if (objectp->permTransfer()) flag_mask |= PERM_TRANSFER;
- getChild<LLUICtrl>("F:")->setValue("F:" + mask_to_string(flag_mask));
- getChildView("F:")->setVisible( TRUE);
+ childSetText("F:", "F:" + mask_to_string(flag_mask));
+ childSetVisible("F:", TRUE);
}
else
{
- getChildView("B:")->setVisible( FALSE);
- getChildView("O:")->setVisible( FALSE);
- getChildView("G:")->setVisible( FALSE);
- getChildView("E:")->setVisible( FALSE);
- getChildView("N:")->setVisible( FALSE);
- getChildView("F:")->setVisible( FALSE);
+ childSetVisible("B:", FALSE);
+ childSetVisible("O:", FALSE);
+ childSetVisible("G:", FALSE);
+ childSetVisible("E:", FALSE);
+ childSetVisible("N:", FALSE);
+ childSetVisible("F:", FALSE);
}
BOOL has_change_perm_ability = FALSE;
@@ -574,65 +574,65 @@ void LLSidepanelTaskInfo::refresh()
if (!has_change_perm_ability && !has_change_sale_ability && !root_selected)
{
// ...must select root to choose permissions
- getChild<LLUICtrl>("perm_modify")->setValue(getString("text modify warning"));
+ childSetValue("perm_modify", getString("text modify warning"));
}
if (has_change_perm_ability)
{
- getChildView("checkbox share with group")->setEnabled(TRUE);
- getChildView("checkbox allow everyone move")->setEnabled(owner_mask_on & PERM_MOVE);
- getChildView("checkbox allow everyone copy")->setEnabled(owner_mask_on & PERM_COPY && owner_mask_on & PERM_TRANSFER);
+ childSetEnabled("checkbox share with group", TRUE);
+ childSetEnabled("checkbox allow everyone move", owner_mask_on & PERM_MOVE);
+ childSetEnabled("checkbox allow everyone copy", owner_mask_on & PERM_COPY && owner_mask_on & PERM_TRANSFER);
}
else
{
- getChildView("checkbox share with group")->setEnabled(FALSE);
- getChildView("checkbox allow everyone move")->setEnabled(FALSE);
- getChildView("checkbox allow everyone copy")->setEnabled(FALSE);
+ childSetEnabled("checkbox share with group", FALSE);
+ childSetEnabled("checkbox allow everyone move", FALSE);
+ childSetEnabled("checkbox allow everyone copy", FALSE);
}
if (has_change_sale_ability && (owner_mask_on & PERM_TRANSFER))
{
- getChildView("checkbox for sale")->setEnabled(can_transfer || (!can_transfer && num_for_sale));
+ childSetEnabled("checkbox for sale", can_transfer || (!can_transfer && num_for_sale));
// Set the checkbox to tentative if the prices of each object selected
// are not the same.
- getChild<LLUICtrl>("checkbox for sale")->setTentative( is_for_sale_mixed);
- getChildView("sale type")->setEnabled(num_for_sale && can_transfer && !is_sale_price_mixed);
+ childSetTentative("checkbox for sale", is_for_sale_mixed);
+ childSetEnabled("sale type", num_for_sale && can_transfer && !is_sale_price_mixed);
- getChildView("Next owner can:")->setEnabled(TRUE);
- getChildView("checkbox next owner can modify")->setEnabled(base_mask_on & PERM_MODIFY);
- getChildView("checkbox next owner can copy")->setEnabled(base_mask_on & PERM_COPY);
- getChildView("checkbox next owner can transfer")->setEnabled(next_owner_mask_on & PERM_COPY);
+ childSetEnabled("Next owner can:", TRUE);
+ childSetEnabled("checkbox next owner can modify", base_mask_on & PERM_MODIFY);
+ childSetEnabled("checkbox next owner can copy", base_mask_on & PERM_COPY);
+ childSetEnabled("checkbox next owner can transfer", next_owner_mask_on & PERM_COPY);
}
else
{
- getChildView("checkbox for sale")->setEnabled(FALSE);
- getChildView("sale type")->setEnabled(FALSE);
+ childSetEnabled("checkbox for sale", FALSE);
+ childSetEnabled("sale type", FALSE);
- getChildView("Next owner can:")->setEnabled(FALSE);
- getChildView("checkbox next owner can modify")->setEnabled(FALSE);
- getChildView("checkbox next owner can copy")->setEnabled(FALSE);
- getChildView("checkbox next owner can transfer")->setEnabled(FALSE);
+ childSetEnabled("Next owner can:", FALSE);
+ childSetEnabled("checkbox next owner can modify", FALSE);
+ childSetEnabled("checkbox next owner can copy", FALSE);
+ childSetEnabled("checkbox next owner can transfer", FALSE);
}
if (valid_group_perms)
{
if ((group_mask_on & PERM_COPY) && (group_mask_on & PERM_MODIFY) && (group_mask_on & PERM_MOVE))
{
- getChild<LLUICtrl>("checkbox share with group")->setValue(TRUE);
- getChild<LLUICtrl>("checkbox share with group")->setTentative( FALSE);
- getChildView("button deed")->setEnabled(gAgent.hasPowerInGroup(group_id, GP_OBJECT_DEED) && (owner_mask_on & PERM_TRANSFER) && !group_owned && can_transfer);
+ childSetValue("checkbox share with group", TRUE);
+ childSetTentative("checkbox share with group", FALSE);
+ childSetEnabled("button deed", gAgent.hasPowerInGroup(group_id, GP_OBJECT_DEED) && (owner_mask_on & PERM_TRANSFER) && !group_owned && can_transfer);
}
else if ((group_mask_off & PERM_COPY) && (group_mask_off & PERM_MODIFY) && (group_mask_off & PERM_MOVE))
{
- getChild<LLUICtrl>("checkbox share with group")->setValue(FALSE);
- getChild<LLUICtrl>("checkbox share with group")->setTentative( FALSE);
- getChildView("button deed")->setEnabled(FALSE);
+ childSetValue("checkbox share with group", FALSE);
+ childSetTentative("checkbox share with group", FALSE);
+ childSetEnabled("button deed", FALSE);
}
else
{
- getChild<LLUICtrl>("checkbox share with group")->setValue(TRUE);
- getChild<LLUICtrl>("checkbox share with group")->setTentative( TRUE);
- getChildView("button deed")->setEnabled(gAgent.hasPowerInGroup(group_id, GP_OBJECT_DEED) && (group_mask_on & PERM_MOVE) && (owner_mask_on & PERM_TRANSFER) && !group_owned && can_transfer);
+ childSetValue("checkbox share with group", TRUE);
+ childSetTentative("checkbox share with group", TRUE);
+ childSetEnabled("button deed", gAgent.hasPowerInGroup(group_id, GP_OBJECT_DEED) && (group_mask_on & PERM_MOVE) && (owner_mask_on & PERM_TRANSFER) && !group_owned && can_transfer);
}
}
@@ -641,35 +641,35 @@ void LLSidepanelTaskInfo::refresh()
// Move
if (everyone_mask_on & PERM_MOVE)
{
- getChild<LLUICtrl>("checkbox allow everyone move")->setValue(TRUE);
- getChild<LLUICtrl>("checkbox allow everyone move")->setTentative( FALSE);
+ childSetValue("checkbox allow everyone move", TRUE);
+ childSetTentative("checkbox allow everyone move", FALSE);
}
else if (everyone_mask_off & PERM_MOVE)
{
- getChild<LLUICtrl>("checkbox allow everyone move")->setValue(FALSE);
- getChild<LLUICtrl>("checkbox allow everyone move")->setTentative( FALSE);
+ childSetValue("checkbox allow everyone move", FALSE);
+ childSetTentative("checkbox allow everyone move", FALSE);
}
else
{
- getChild<LLUICtrl>("checkbox allow everyone move")->setValue(TRUE);
- getChild<LLUICtrl>("checkbox allow everyone move")->setTentative( TRUE);
+ childSetValue("checkbox allow everyone move", TRUE);
+ childSetTentative("checkbox allow everyone move", TRUE);
}
// Copy == everyone can't copy
if (everyone_mask_on & PERM_COPY)
{
- getChild<LLUICtrl>("checkbox allow everyone copy")->setValue(TRUE);
- getChild<LLUICtrl>("checkbox allow everyone copy")->setTentative( !can_copy || !can_transfer);
+ childSetValue("checkbox allow everyone copy", TRUE);
+ childSetTentative("checkbox allow everyone copy", !can_copy || !can_transfer);
}
else if (everyone_mask_off & PERM_COPY)
{
- getChild<LLUICtrl>("checkbox allow everyone copy")->setValue(FALSE);
- getChild<LLUICtrl>("checkbox allow everyone copy")->setTentative( FALSE);
+ childSetValue("checkbox allow everyone copy", FALSE);
+ childSetTentative("checkbox allow everyone copy", FALSE);
}
else
{
- getChild<LLUICtrl>("checkbox allow everyone copy")->setValue(TRUE);
- getChild<LLUICtrl>("checkbox allow everyone copy")->setTentative( TRUE);
+ childSetValue("checkbox allow everyone copy", TRUE);
+ childSetTentative("checkbox allow everyone copy", TRUE);
}
}
@@ -678,52 +678,52 @@ void LLSidepanelTaskInfo::refresh()
// Modify == next owner canot modify
if (next_owner_mask_on & PERM_MODIFY)
{
- getChild<LLUICtrl>("checkbox next owner can modify")->setValue(TRUE);
- getChild<LLUICtrl>("checkbox next owner can modify")->setTentative( FALSE);
+ childSetValue("checkbox next owner can modify", TRUE);
+ childSetTentative("checkbox next owner can modify", FALSE);
}
else if (next_owner_mask_off & PERM_MODIFY)
{
- getChild<LLUICtrl>("checkbox next owner can modify")->setValue(FALSE);
- getChild<LLUICtrl>("checkbox next owner can modify")->setTentative( FALSE);
+ childSetValue("checkbox next owner can modify", FALSE);
+ childSetTentative("checkbox next owner can modify", FALSE);
}
else
{
- getChild<LLUICtrl>("checkbox next owner can modify")->setValue(TRUE);
- getChild<LLUICtrl>("checkbox next owner can modify")->setTentative( TRUE);
+ childSetValue("checkbox next owner can modify", TRUE);
+ childSetTentative("checkbox next owner can modify", TRUE);
}
// Copy == next owner cannot copy
if (next_owner_mask_on & PERM_COPY)
{
- getChild<LLUICtrl>("checkbox next owner can copy")->setValue(TRUE);
- getChild<LLUICtrl>("checkbox next owner can copy")->setTentative( !can_copy);
+ childSetValue("checkbox next owner can copy", TRUE);
+ childSetTentative("checkbox next owner can copy", !can_copy);
}
else if (next_owner_mask_off & PERM_COPY)
{
- getChild<LLUICtrl>("checkbox next owner can copy")->setValue(FALSE);
- getChild<LLUICtrl>("checkbox next owner can copy")->setTentative( FALSE);
+ childSetValue("checkbox next owner can copy", FALSE);
+ childSetTentative("checkbox next owner can copy", FALSE);
}
else
{
- getChild<LLUICtrl>("checkbox next owner can copy")->setValue(TRUE);
- getChild<LLUICtrl>("checkbox next owner can copy")->setTentative( TRUE);
+ childSetValue("checkbox next owner can copy", TRUE);
+ childSetTentative("checkbox next owner can copy", TRUE);
}
// Transfer == next owner cannot transfer
if (next_owner_mask_on & PERM_TRANSFER)
{
- getChild<LLUICtrl>("checkbox next owner can transfer")->setValue(TRUE);
- getChild<LLUICtrl>("checkbox next owner can transfer")->setTentative( !can_transfer);
+ childSetValue("checkbox next owner can transfer", TRUE);
+ childSetTentative("checkbox next owner can transfer", !can_transfer);
}
else if (next_owner_mask_off & PERM_TRANSFER)
{
- getChild<LLUICtrl>("checkbox next owner can transfer")->setValue(FALSE);
- getChild<LLUICtrl>("checkbox next owner can transfer")->setTentative( FALSE);
+ childSetValue("checkbox next owner can transfer", FALSE);
+ childSetTentative("checkbox next owner can transfer", FALSE);
}
else
{
- getChild<LLUICtrl>("checkbox next owner can transfer")->setValue(TRUE);
- getChild<LLUICtrl>("checkbox next owner can transfer")->setTentative( TRUE);
+ childSetValue("checkbox next owner can transfer", TRUE);
+ childSetTentative("checkbox next owner can transfer", TRUE);
}
}
@@ -745,7 +745,7 @@ void LLSidepanelTaskInfo::refresh()
combo_sale_type->setTentative( TRUE); // unfortunately this doesn't do anything at the moment.
}
- getChild<LLUICtrl>("checkbox for sale")->setValue((num_for_sale != 0));
+ childSetValue("checkbox for sale", (num_for_sale != 0));
// HACK: There are some old objects in world that are set for sale,
// but are no-transfer. We need to let users turn for-sale off, but only
@@ -755,7 +755,7 @@ void LLSidepanelTaskInfo::refresh()
{
if (num_for_sale && has_change_sale_ability)
{
- getChildView("checkbox for sale")->setEnabled(true);
+ childSetEnabled("checkbox for sale", true);
}
}
@@ -763,9 +763,9 @@ void LLSidepanelTaskInfo::refresh()
const BOOL all_volume = LLSelectMgr::getInstance()->selectionAllPCode( LL_PCODE_VOLUME );
bool include_in_search;
const BOOL all_include_in_search = LLSelectMgr::getInstance()->selectionGetIncludeInSearch(&include_in_search);
- getChildView("search_check")->setEnabled(has_change_sale_ability && all_volume);
- getChild<LLUICtrl>("search_check")->setValue(include_in_search);
- getChild<LLUICtrl>("search_check")->setTentative( !all_include_in_search);
+ childSetEnabled("search_check", has_change_sale_ability && all_volume);
+ childSetValue("search_check", include_in_search);
+ childSetTentative("search_check", !all_include_in_search);
// Click action (touch, sit, buy)
U8 click_action = 0;
@@ -777,8 +777,8 @@ void LLSidepanelTaskInfo::refresh()
ComboClickAction->setCurrentByIndex((S32)click_action);
}
}
- getChildView("label click action")->setEnabled(is_perm_modify && all_volume);
- getChildView("clickaction")->setEnabled(is_perm_modify && all_volume);
+ childSetEnabled("label click action", is_perm_modify && all_volume);
+ childSetEnabled("clickaction", is_perm_modify && all_volume);
if (!getIsEditing())
{
@@ -804,7 +804,7 @@ void LLSidepanelTaskInfo::refresh()
};
for (size_t t=0; t<LL_ARRAY_SIZE(no_item_names); ++t)
{
- getChildView(no_item_names[t])->setEnabled( FALSE);
+ childSetEnabled(no_item_names[t], FALSE);
}
}
updateVerbs();
diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp
index fb984a7c62..317b597a11 100644
--- a/indra/newview/llspatialpartition.cpp
+++ b/indra/newview/llspatialpartition.cpp
@@ -1508,7 +1508,6 @@ void LLSpatialGroup::checkOcclusion()
{
if (LLPipeline::sUseOcclusion > 1)
{
- LLFastTimer t(FTM_OCCLUSION_READBACK);
LLSpatialGroup* parent = getParent();
if (parent && parent->isOcclusionState(LLSpatialGroup::OCCLUDED))
{ //if the parent has been marked as occluded, the child is implicitly occluded
@@ -1516,6 +1515,7 @@ void LLSpatialGroup::checkOcclusion()
}
else if (isOcclusionState(QUERY_PENDING))
{ //otherwise, if a query is pending, read it back
+ LLFastTimer t(FTM_OCCLUSION_READBACK);
GLuint res = 1;
if (!isOcclusionState(DISCARD_QUERY) && mOcclusionQuery[LLViewerCamera::sCurCameraID])
{
@@ -1919,8 +1919,11 @@ public:
return;
}
- if ((mRes && group->isState(LLSpatialGroup::SKIP_FRUSTUM_CHECK)) ||
- mRes == 2)
+ if (mRes == 2)
+ {
+ //fully in, don't traverse further (won't effect extents
+ }
+ else if (mRes && group->isState(LLSpatialGroup::SKIP_FRUSTUM_CHECK))
{ //don't need to do frustum check
LLSpatialGroup::OctreeTraveler::traverse(n);
}
@@ -3415,23 +3418,11 @@ LLCullResult::LLCullResult()
void LLCullResult::clear()
{
mVisibleGroupsSize = 0;
- mVisibleGroupsEnd = mVisibleGroups.begin();
-
mAlphaGroupsSize = 0;
- mAlphaGroupsEnd = mAlphaGroups.begin();
-
mOcclusionGroupsSize = 0;
- mOcclusionGroupsEnd = mOcclusionGroups.begin();
-
mDrawableGroupsSize = 0;
- mDrawableGroupsEnd = mDrawableGroups.begin();
-
mVisibleListSize = 0;
- mVisibleListEnd = mVisibleList.begin();
-
mVisibleBridgeSize = 0;
- mVisibleBridgeEnd = mVisibleBridge.begin();
-
for (U32 i = 0; i < LLRenderPass::NUM_RENDER_TYPES; i++)
{
@@ -3440,7 +3431,6 @@ void LLCullResult::clear()
mRenderMap[i][j] = 0;
}
mRenderMapSize[i] = 0;
- mRenderMapEnd[i] = mRenderMap[i].begin();
}
}
@@ -3451,7 +3441,7 @@ LLCullResult::sg_list_t::iterator LLCullResult::beginVisibleGroups()
LLCullResult::sg_list_t::iterator LLCullResult::endVisibleGroups()
{
- return mVisibleGroupsEnd;
+ return mVisibleGroups.begin() + mVisibleGroupsSize;
}
LLCullResult::sg_list_t::iterator LLCullResult::beginAlphaGroups()
@@ -3461,7 +3451,7 @@ LLCullResult::sg_list_t::iterator LLCullResult::beginAlphaGroups()
LLCullResult::sg_list_t::iterator LLCullResult::endAlphaGroups()
{
- return mAlphaGroupsEnd;
+ return mAlphaGroups.begin() + mAlphaGroupsSize;
}
LLCullResult::sg_list_t::iterator LLCullResult::beginOcclusionGroups()
@@ -3471,7 +3461,7 @@ LLCullResult::sg_list_t::iterator LLCullResult::beginOcclusionGroups()
LLCullResult::sg_list_t::iterator LLCullResult::endOcclusionGroups()
{
- return mOcclusionGroupsEnd;
+ return mOcclusionGroups.begin() + mOcclusionGroupsSize;
}
LLCullResult::sg_list_t::iterator LLCullResult::beginDrawableGroups()
@@ -3481,7 +3471,7 @@ LLCullResult::sg_list_t::iterator LLCullResult::beginDrawableGroups()
LLCullResult::sg_list_t::iterator LLCullResult::endDrawableGroups()
{
- return mDrawableGroupsEnd;
+ return mDrawableGroups.begin() + mDrawableGroupsSize;
}
LLCullResult::drawable_list_t::iterator LLCullResult::beginVisibleList()
@@ -3491,7 +3481,7 @@ LLCullResult::drawable_list_t::iterator LLCullResult::beginVisibleList()
LLCullResult::drawable_list_t::iterator LLCullResult::endVisibleList()
{
- return mVisibleListEnd;
+ return mVisibleList.begin() + mVisibleListSize;
}
LLCullResult::bridge_list_t::iterator LLCullResult::beginVisibleBridge()
@@ -3501,7 +3491,7 @@ LLCullResult::bridge_list_t::iterator LLCullResult::beginVisibleBridge()
LLCullResult::bridge_list_t::iterator LLCullResult::endVisibleBridge()
{
- return mVisibleBridgeEnd;
+ return mVisibleBridge.begin() + mVisibleBridgeSize;
}
LLCullResult::drawinfo_list_t::iterator LLCullResult::beginRenderMap(U32 type)
@@ -3511,7 +3501,7 @@ LLCullResult::drawinfo_list_t::iterator LLCullResult::beginRenderMap(U32 type)
LLCullResult::drawinfo_list_t::iterator LLCullResult::endRenderMap(U32 type)
{
- return mRenderMapEnd[type];
+ return mRenderMap[type].begin() + mRenderMapSize[type];
}
void LLCullResult::pushVisibleGroup(LLSpatialGroup* group)
@@ -3525,7 +3515,6 @@ void LLCullResult::pushVisibleGroup(LLSpatialGroup* group)
mVisibleGroups.push_back(group);
}
++mVisibleGroupsSize;
- mVisibleGroupsEnd = mVisibleGroups.begin()+mVisibleGroupsSize;
}
void LLCullResult::pushAlphaGroup(LLSpatialGroup* group)
@@ -3539,7 +3528,6 @@ void LLCullResult::pushAlphaGroup(LLSpatialGroup* group)
mAlphaGroups.push_back(group);
}
++mAlphaGroupsSize;
- mAlphaGroupsEnd = mAlphaGroups.begin()+mAlphaGroupsSize;
}
void LLCullResult::pushOcclusionGroup(LLSpatialGroup* group)
@@ -3553,7 +3541,6 @@ void LLCullResult::pushOcclusionGroup(LLSpatialGroup* group)
mOcclusionGroups.push_back(group);
}
++mOcclusionGroupsSize;
- mOcclusionGroupsEnd = mOcclusionGroups.begin()+mOcclusionGroupsSize;
}
void LLCullResult::pushDrawableGroup(LLSpatialGroup* group)
@@ -3567,7 +3554,6 @@ void LLCullResult::pushDrawableGroup(LLSpatialGroup* group)
mDrawableGroups.push_back(group);
}
++mDrawableGroupsSize;
- mDrawableGroupsEnd = mDrawableGroups.begin()+mDrawableGroupsSize;
}
void LLCullResult::pushDrawable(LLDrawable* drawable)
@@ -3581,7 +3567,6 @@ void LLCullResult::pushDrawable(LLDrawable* drawable)
mVisibleList.push_back(drawable);
}
++mVisibleListSize;
- mVisibleListEnd = mVisibleList.begin()+mVisibleListSize;
}
void LLCullResult::pushBridge(LLSpatialBridge* bridge)
@@ -3595,7 +3580,6 @@ void LLCullResult::pushBridge(LLSpatialBridge* bridge)
mVisibleBridge.push_back(bridge);
}
++mVisibleBridgeSize;
- mVisibleBridgeEnd = mVisibleBridge.begin()+mVisibleBridgeSize;
}
void LLCullResult::pushDrawInfo(U32 type, LLDrawInfo* draw_info)
@@ -3609,7 +3593,6 @@ void LLCullResult::pushDrawInfo(U32 type, LLDrawInfo* draw_info)
mRenderMap[type].push_back(draw_info);
}
++mRenderMapSize[type];
- mRenderMapEnd[type] = mRenderMap[type].begin() + mRenderMapSize[type];
}
diff --git a/indra/newview/llspatialpartition.h b/indra/newview/llspatialpartition.h
index 1a25f3f85d..cc634b784c 100644
--- a/indra/newview/llspatialpartition.h
+++ b/indra/newview/llspatialpartition.h
@@ -338,11 +338,11 @@ public:
F32 mBuilt;
OctreeNode* mOctreeNode;
LLSpatialPartition* mSpatialPartition;
- LLVector3 mBounds[2]; // bounding box (center, size) of this node and all its children (tight fit to objects)
- LLVector3 mExtents[2]; // extents (min, max) of this node and all its children
+ LLVector3 mBounds[2];
+ LLVector3 mExtents[2];
- LLVector3 mObjectExtents[2]; // extents (min, max) of objects in this node
- LLVector3 mObjectBounds[2]; // bounding box (center, size) of objects in this node
+ LLVector3 mObjectExtents[2];
+ LLVector3 mObjectBounds[2];
LLPointer<LLVertexBuffer> mVertexBuffer;
F32* mOcclusionVerts;
@@ -526,19 +526,12 @@ private:
U32 mRenderMapSize[LLRenderPass::NUM_RENDER_TYPES];
sg_list_t mVisibleGroups;
- sg_list_t::iterator mVisibleGroupsEnd;
sg_list_t mAlphaGroups;
- sg_list_t::iterator mAlphaGroupsEnd;
sg_list_t mOcclusionGroups;
- sg_list_t::iterator mOcclusionGroupsEnd;
sg_list_t mDrawableGroups;
- sg_list_t::iterator mDrawableGroupsEnd;
drawable_list_t mVisibleList;
- drawable_list_t::iterator mVisibleListEnd;
bridge_list_t mVisibleBridge;
- bridge_list_t::iterator mVisibleBridgeEnd;
drawinfo_list_t mRenderMap[LLRenderPass::NUM_RENDER_TYPES];
- drawinfo_list_t::iterator mRenderMapEnd[LLRenderPass::NUM_RENDER_TYPES];
};
@@ -605,13 +598,14 @@ public:
//class for wrangling geometry out of volumes (implemented in LLVOVolume.cpp)
class LLVolumeGeometryManager: public LLGeometryManager
{
- public:
+public:
virtual ~LLVolumeGeometryManager() { }
virtual void rebuildGeom(LLSpatialGroup* group);
virtual void rebuildMesh(LLSpatialGroup* group);
virtual void getGeometry(LLSpatialGroup* group);
void genDrawInfo(LLSpatialGroup* group, U32 mask, std::vector<LLFace*>& faces, BOOL distance_sort = FALSE);
void registerFace(LLSpatialGroup* group, LLFace* facep, U32 type);
+
};
//spatial partition that uses volume geometry manager (implemented in LLVOVolume.cpp)
diff --git a/indra/newview/llspeakers.cpp b/indra/newview/llspeakers.cpp
index 196ed5e0bb..1c418feabd 100644
--- a/indra/newview/llspeakers.cpp
+++ b/indra/newview/llspeakers.cpp
@@ -68,10 +68,7 @@ LLSpeaker::LLSpeaker(const LLUUID& id, const std::string& name, const ESpeakerTy
void LLSpeaker::lookupName()
{
- if (mDisplayName.empty())
- {
- gCacheName->get(mID, FALSE, boost::bind(&LLSpeaker::onAvatarNameLookup, this, _1, _2, _3, _4));
- }
+ gCacheName->get(mID, FALSE, boost::bind(&LLSpeaker::onAvatarNameLookup, this, _1, _2, _3, _4));
}
void LLSpeaker::onAvatarNameLookup(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group)
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 975d1f9f32..e6f93d34ac 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -112,6 +112,7 @@
#include "llinventorybridge.h"
#include "llinventorymodel.h"
#include "llinventorymodelbackgroundfetch.h"
+#include "llfriendcard.h"
#include "llkeyboard.h"
#include "llloginhandler.h" // gLoginHandler, SLURL support
#include "lllogininstance.h" // Host the login module.
@@ -121,6 +122,7 @@
#include "llfloaterevent.h"
#include "llpanelclassified.h"
#include "llpanelpick.h"
+#include "llpanelplace.h"
#include "llpanelgrouplandmoney.h"
#include "llpanelgroupnotices.h"
#include "llpreview.h"
@@ -1638,6 +1640,12 @@ bool idle_startup()
//all categories loaded. lets create "My Favorites" category
gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE,true);
+ // Checks whether "Friends" and "Friends/All" folders exist in "Calling Cards" folder,
+ // fetches their contents if needed and synchronizes it with buddies list.
+ // If the folders are not found they are created.
+ LLFriendCardsManager::instance().syncFriendCardsFolders();
+
+
// set up callbacks
llinfos << "Registering Callbacks" << llendl;
LLMessageSystem* msg = gMessageSystem;
@@ -2919,8 +2927,9 @@ bool process_login_success_response()
text = response["agent_region_access"].asString();
if (!text.empty())
{
- U32 preferredMaturity = (U32)LLAgent::convertTextToMaturity(text[0]);
-
+ U32 preferredMaturity =
+ llmin((U32)LLAgent::convertTextToMaturity(text[0]),
+ gSavedSettings.getU32("PreferredMaturity"));
gSavedSettings.setU32("PreferredMaturity", preferredMaturity);
}
// During the AO transition, this flag will be true. Then the flag will
@@ -3133,13 +3142,6 @@ bool process_login_success_response()
}
}
- // Set the location of the snapshot sharing config endpoint
- std::string snapshot_config_url = response["snapshot_config_url"];
- if(!snapshot_config_url.empty())
- {
- gSavedSettings.setString("SnapshotConfigURL", snapshot_config_url);
- }
-
// Start the process of fetching the OpenID session cookie for this user login
std::string openid_url = response["openid_url"];
if(!openid_url.empty())
diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp
index b622e98971..af011d8599 100644
--- a/indra/newview/llstatusbar.cpp
+++ b/indra/newview/llstatusbar.cpp
@@ -105,6 +105,8 @@ const F32 ICON_TIMER_EXPIRY = 3.f; // How long the balance and health icons sho
const F32 ICON_FLASH_FREQUENCY = 2.f;
const S32 TEXT_HEIGHT = 18;
+static void onClickHealth(void*);
+static void onClickScriptDebug(void*);
static void onClickVolume(void*);
std::vector<std::string> LLStatusBar::sDays;
@@ -187,6 +189,9 @@ BOOL LLStatusBar::postBuild()
gSavedSettings.getControl("MuteAudio")->getSignal()->connect(boost::bind(&LLStatusBar::onVolumeChanged, this, _2));
+ childSetAction("scriptout", onClickScriptDebug, this);
+ childSetAction("health", onClickHealth, this);
+
// Adding Net Stat Graph
S32 x = getRect().getWidth() - 2;
S32 y = 0;
@@ -224,7 +229,7 @@ BOOL LLStatusBar::postBuild()
mSGPacketLoss->mPerSec = FALSE;
addChild(mSGPacketLoss);
- getChild<LLTextBox>("stat_btn")->setClickedCallback(onClickStatGraph);
+ childSetActionTextbox("stat_btn", onClickStatGraph);
mPanelVolumePulldown = new LLPanelVolumePulldown();
addChild(mPanelVolumePulldown);
@@ -236,17 +241,14 @@ BOOL LLStatusBar::postBuild()
mPanelNearByMedia->setFollows(FOLLOWS_TOP|FOLLOWS_RIGHT);
mPanelNearByMedia->setVisible(FALSE);
- mScriptOut = getChildView("scriptout");
-
return TRUE;
}
// Per-frame updates of visibility
void LLStatusBar::refresh()
{
- static LLCachedControl<bool> show_net_stats(gSavedSettings, "ShowNetStats", false);
- bool net_stats_visible = show_net_stats;
-
+ bool net_stats_visible = gSavedSettings.getBOOL("ShowNetStats");
+
if (net_stats_visible)
{
// Adding Net Stat Meter back in
@@ -258,30 +260,26 @@ void LLStatusBar::refresh()
mSGBandwidth->setThreshold(2, bwtotal);
}
- // update clock every 10 seconds
- if(mClockUpdateTimer.getElapsedTimeF32() > 10.f)
- {
- mClockUpdateTimer.reset();
-
- // Get current UTC time, adjusted for the user's clock
- // being off.
- time_t utc_time;
- utc_time = time_corrected();
-
- std::string timeStr = getString("time");
- LLSD substitution;
- substitution["datetime"] = (S32) utc_time;
- LLStringUtil::format (timeStr, substitution);
- mTextTime->setText(timeStr);
-
- // set the tooltip to have the date
- std::string dtStr = getString("timeTooltip");
- LLStringUtil::format (dtStr, substitution);
- mTextTime->setToolTip (dtStr);
- }
+ // Get current UTC time, adjusted for the user's clock
+ // being off.
+ time_t utc_time;
+ utc_time = time_corrected();
+
+ std::string timeStr = getString("time");
+ LLSD substitution;
+ substitution["datetime"] = (S32) utc_time;
+ LLStringUtil::format (timeStr, substitution);
+ mTextTime->setText(timeStr);
+
+ // set the tooltip to have the date
+ std::string dtStr = getString("timeTooltip");
+ LLStringUtil::format (dtStr, substitution);
+ mTextTime->setToolTip (dtStr);
LLRect r;
const S32 MENU_RIGHT = gMenuBarView->getRightmostMenuEdge();
+ S32 x = MENU_RIGHT + MENU_PARCEL_SPACING;
+ S32 y = 0;
// reshape menu bar to its content's width
if (MENU_RIGHT != gMenuBarView->getRect().getWidth())
@@ -289,9 +287,48 @@ void LLStatusBar::refresh()
gMenuBarView->reshape(MENU_RIGHT, gMenuBarView->getRect().getHeight());
}
+ LLViewerRegion *region = gAgent.getRegion();
+ LLParcel *parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
+
+ LLRect buttonRect;
+
+ if (LLHUDIcon::iconsNearby())
+ {
+ childGetRect( "scriptout", buttonRect );
+ r.setOriginAndSize( x, y, buttonRect.getWidth(), buttonRect.getHeight());
+ childSetRect("scriptout",r);
+ childSetVisible("scriptout", true);
+ x += buttonRect.getWidth();
+ }
+ else
+ {
+ childSetVisible("scriptout", false);
+ }
+
+ if (gAgentCamera.getCameraMode() == CAMERA_MODE_MOUSELOOK &&
+ ((region && region->getAllowDamage()) || (parcel && parcel->getAllowDamage())))
+ {
+ // set visibility based on flashing
+ if( mHealthTimer->hasExpired() )
+ {
+ childSetVisible("health", true);
+ }
+ else
+ {
+ BOOL flash = S32(mHealthTimer->getElapsedSeconds() * ICON_FLASH_FREQUENCY) & 1;
+ childSetVisible("health", flash);
+ }
+
+ // Health
+ childGetRect( "health", buttonRect );
+ r.setOriginAndSize( x, y, buttonRect.getWidth(), buttonRect.getHeight());
+ childSetRect("health", r);
+ x += buttonRect.getWidth();
+ }
+
mSGBandwidth->setVisible(net_stats_visible);
mSGPacketLoss->setVisible(net_stats_visible);
- getChildView("stat_btn")->setEnabled(net_stats_visible);
+ childSetEnabled("stat_btn", net_stats_visible);
// update the master volume button state
bool mute_audio = LLAppViewer::instance()->getMasterSystemAudioMute();
@@ -456,6 +493,16 @@ void LLStatusBar::onClickBuyCurrency()
LLBuyCurrencyHTML::openCurrencyFloater();
}
+static void onClickHealth(void* )
+{
+ LLNotificationsUtil::add("NotSafe");
+}
+
+static void onClickScriptDebug(void*)
+{
+ LLFloaterScriptDebug::show(LLUUID::null);
+}
+
void LLStatusBar::onMouseEnterVolume()
{
LLButton* volbtn = getChild<LLButton>( "volume_btn" );
diff --git a/indra/newview/llstatusbar.h b/indra/newview/llstatusbar.h
index c8c86dfd8c..dc95e2b383 100644
--- a/indra/newview/llstatusbar.h
+++ b/indra/newview/llstatusbar.h
@@ -106,8 +106,6 @@ private:
LLButton *mBtnVolume;
LLButton *mMediaToggle;
- LLView* mScriptOut;
- LLFrameTimer mClockUpdateTimer;
S32 mBalance;
S32 mHealth;
diff --git a/indra/newview/llstylemap.cpp b/indra/newview/llstylemap.cpp
index 43fe37ac77..6ef42e37f8 100644
--- a/indra/newview/llstylemap.cpp
+++ b/indra/newview/llstylemap.cpp
@@ -40,12 +40,20 @@ const LLStyle::Params &LLStyleMap::lookupAgent(const LLUUID &source)
if (mMap.find(source) == mMap.end())
{
LLStyle::Params style_params;
- if (source != LLUUID::null)
+ if (source != LLUUID::null && source != gAgent.getID() )
{
style_params.color.control = "HTMLLinkColor";
style_params.readonly_color.control = "HTMLLinkColor";
- style_params.link_href = LLSLURL("agent", source, "inspect").getSLURLString();
+ style_params.link_href =
+ LLSLURL("agent", source, "inspect").getSLURLString();
}
+ else
+ {
+ // Make the resident's own name white and don't make the name clickable.
+ style_params.color = LLColor4::white;
+ style_params.readonly_color = LLColor4::white;
+ }
+
mMap[source] = style_params;
}
return mMap[source];
diff --git a/indra/newview/llsyswellitem.cpp b/indra/newview/llsyswellitem.cpp
index 4a107fefa8..9f8fc1810e 100644
--- a/indra/newview/llsyswellitem.cpp
+++ b/indra/newview/llsyswellitem.cpp
@@ -36,12 +36,14 @@
//---------------------------------------------------------------------------------
LLSysWellItem::LLSysWellItem(const Params& p) : LLPanel(p),
mTitle(NULL),
- mCloseBtn(NULL)
+ mCloseBtn(NULL),
+ mIcon(NULL)
{
LLUICtrlFactory::getInstance()->buildPanel(this, "panel_sys_well_item.xml");
mTitle = getChild<LLTextBox>("title");
mCloseBtn = getChild<LLButton>("close_btn");
+ mIcon = getChild<LLIconCtrl>("icon");
mTitle->setValue(p.title);
mCloseBtn->setClickedCallback(boost::bind(&LLSysWellItem::onClickCloseBtn,this));
diff --git a/indra/newview/llsyswellitem.h b/indra/newview/llsyswellitem.h
index d961708a01..54cfafe46e 100644
--- a/indra/newview/llsyswellitem.h
+++ b/indra/newview/llsyswellitem.h
@@ -73,6 +73,7 @@ private:
LLTextBox* mTitle;
LLButton* mCloseBtn;
+ LLIconCtrl* mIcon;
LLUUID mID;
};
diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp
index 500c2a7b86..0d7b67d31d 100644
--- a/indra/newview/lltexlayer.cpp
+++ b/indra/newview/lltexlayer.cpp
@@ -575,10 +575,6 @@ void LLTexLayerSetBuffer::doUpdate()
}
restartUpdateTimer();
-
- // need to swtich to using this layerset if this is the first update
- // after getting the lowest LOD
- mTexLayerSet->getAvatar()->updateMeshTextures();
// Print out notification that we uploaded this texture.
if (gSavedSettings.getBOOL("DebugAvatarRezTime"))
diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp
index 1625b4bafd..1056b93e3c 100644
--- a/indra/newview/lltexturectrl.cpp
+++ b/indra/newview/lltexturectrl.cpp
@@ -223,7 +223,7 @@ void LLFloaterTexturePicker::setImageID(const LLUUID& image_id)
if (itemp && !itemp->getPermissions().allowCopyBy(gAgent.getID()))
{
// no copy texture
- getChild<LLUICtrl>("apply_immediate_check")->setValue(FALSE);
+ childSetValue("apply_immediate_check", FALSE);
mNoCopyTextureSelected = TRUE;
}
mInventoryPanel->setSelection(item_id, TAKE_FOCUS_NO);
@@ -233,7 +233,7 @@ void LLFloaterTexturePicker::setImageID(const LLUUID& image_id)
void LLFloaterTexturePicker::setActive( BOOL active )
{
- if (!active && getChild<LLUICtrl>("Pipette")->getValue().asBoolean())
+ if (!active && childGetValue("Pipette").asBoolean())
{
stopUsingPipette();
}
@@ -245,7 +245,7 @@ void LLFloaterTexturePicker::setCanApplyImmediately(BOOL b)
mCanApplyImmediately = b;
if (!mCanApplyImmediately)
{
- getChild<LLUICtrl>("apply_immediate_check")->setValue(FALSE);
+ childSetValue("apply_immediate_check", FALSE);
}
updateFilterPermMask();
}
@@ -400,7 +400,7 @@ BOOL LLFloaterTexturePicker::postBuild()
childSetCommitCallback("show_folders_check", onShowFolders, this);
- getChildView("show_folders_check")->setVisible( FALSE);
+ childSetVisible("show_folders_check", FALSE);
mFilterEdit = getChild<LLFilterEditor>("inventory search editor");
mFilterEdit->setCommitCallback(boost::bind(&LLFloaterTexturePicker::onFilterEdit, this, _2));
@@ -439,12 +439,12 @@ BOOL LLFloaterTexturePicker::postBuild()
mNoCopyTextureSelected = FALSE;
- getChild<LLUICtrl>("apply_immediate_check")->setValue(gSavedSettings.getBOOL("ApplyTextureImmediately"));
+ childSetValue("apply_immediate_check", gSavedSettings.getBOOL("ApplyTextureImmediately"));
childSetCommitCallback("apply_immediate_check", onApplyImmediateCheck, this);
if (!mCanApplyImmediately)
{
- getChildView("show_folders_check")->setEnabled(FALSE);
+ childSetEnabled("show_folders_check", FALSE);
}
getChild<LLUICtrl>("Pipette")->setCommitCallback( boost::bind(&LLFloaterTexturePicker::onBtnPipette, this));
@@ -521,10 +521,10 @@ void LLFloaterTexturePicker::draw()
updateImageStats();
// if we're inactive, gray out "apply immediate" checkbox
- getChildView("show_folders_check")->setEnabled(mActive && mCanApplyImmediately && !mNoCopyTextureSelected);
- getChildView("Select")->setEnabled(mActive);
- getChildView("Pipette")->setEnabled(mActive);
- getChild<LLUICtrl>("Pipette")->setValue(LLToolMgr::getInstance()->getCurrentTool() == LLToolPipette::getInstance());
+ childSetEnabled("show_folders_check", mActive && mCanApplyImmediately && !mNoCopyTextureSelected);
+ childSetEnabled("Select", mActive);
+ childSetEnabled("Pipette", mActive);
+ childSetValue("Pipette", LLToolMgr::getInstance()->getCurrentTool() == LLToolPipette::getInstance());
//BOOL allow_copy = FALSE;
if( mOwner )
@@ -541,9 +541,9 @@ void LLFloaterTexturePicker::draw()
mTentativeLabel->setVisible( FALSE );
}
- getChildView("Default")->setEnabled(mImageAssetID != mOwner->getDefaultImageAssetID());
- getChildView("Blank")->setEnabled(mImageAssetID != mWhiteImageAssetID );
- getChildView("None")->setEnabled(mOwner->getAllowNoTexture() && !mImageAssetID.isNull() );
+ childSetEnabled("Default", mImageAssetID != mOwner->getDefaultImageAssetID());
+ childSetEnabled("Blank", mImageAssetID != mWhiteImageAssetID );
+ childSetEnabled("None", mOwner->getAllowNoTexture() && !mImageAssetID.isNull() );
LLFloater::draw();
@@ -673,13 +673,13 @@ const LLUUID& LLFloaterTexturePicker::findItemID(const LLUUID& asset_id, BOOL co
PermissionMask LLFloaterTexturePicker::getFilterPermMask()
{
- bool apply_immediate = getChild<LLUICtrl>("apply_immediate_check")->getValue().asBoolean();
+ bool apply_immediate = childGetValue("apply_immediate_check").asBoolean();
return apply_immediate ? mImmediateFilterPermMask : mNonImmediateFilterPermMask;
}
void LLFloaterTexturePicker::commitIfImmediateSet()
{
- bool apply_immediate = getChild<LLUICtrl>("apply_immediate_check")->getValue().asBoolean();
+ bool apply_immediate = childGetValue("apply_immediate_check").asBoolean();
if (!mNoCopyTextureSelected && apply_immediate && mOwner)
{
mOwner->onFloaterCommit(LLTextureCtrl::TEXTURE_CHANGE);
@@ -752,7 +752,7 @@ void LLFloaterTexturePicker::onBtnSelect(void* userdata)
void LLFloaterTexturePicker::onBtnPipette()
{
- BOOL pipette_active = getChild<LLUICtrl>("Pipette")->getValue().asBoolean();
+ BOOL pipette_active = childGetValue("Pipette").asBoolean();
pipette_active = !pipette_active;
if (pipette_active)
{
diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index 4e9ebce4d1..5996fe3da7 100644
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -48,7 +48,6 @@
#include "llviewertexturelist.h"
#include "llviewertexture.h"
#include "llviewerregion.h"
-#include "llviewerstats.h"
#include "llworld.h"
//////////////////////////////////////////////////////////////////////////////
@@ -145,7 +144,7 @@ public:
~LLTextureFetchWorker();
void relese() { --mActiveCount; }
- S32 callbackHttpGet(const LLChannelDescriptors& channels,
+ void callbackHttpGet(const LLChannelDescriptors& channels,
const LLIOPipe::buffer_ptr_t& buffer,
bool partial, bool success);
void callbackCacheRead(bool success, LLImageFormatted* image,
@@ -330,9 +329,8 @@ public:
worker->setGetStatus(status, reason);
// llwarns << "CURL GET FAILED, status:" << status << " reason:" << reason << llendl;
}
-
- S32 data_size = worker->callbackHttpGet(channels, buffer, partial, success);
- mFetcher->removeFromHTTPQueue(mID, data_size);
+ mFetcher->removeFromHTTPQueue(mID);
+ worker->callbackHttpGet(channels, buffer, partial, success);
}
else
{
@@ -591,7 +589,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
return true; // abort
}
}
- if(mImagePriority < F_ALMOST_ZERO)
+ if(mImagePriority < 1.0f)
{
if (mState == INIT || mState == LOAD_FROM_NETWORK || mState == LOAD_FROM_SIMULATOR)
{
@@ -846,10 +844,19 @@ bool LLTextureFetchWorker::doWork(S32 param)
{
if(mCanUseHTTP)
{
- //NOTE:
- //it seems ok to let sim control the UDP traffic
- //so there is no throttle for http here.
- //
+ // *TODO: Integrate this with llviewerthrottle
+ // Note: LLViewerThrottle uses dynamic throttling which makes sense for UDP,
+ // but probably not for Textures.
+ // Set the throttle to the entire bandwidth, assuming UDP packets will get priority
+ // when they are needed
+ //F32 max_bandwidth = mFetcher->mMaxBandwidth;
+ if (mFetcher->isHTTPThrottled(mDesiredSize))// ||
+ //mFetcher->getTextureBandwidth() > max_bandwidth)
+ {
+ // Make normal priority and return (i.e. wait until there is room in the queue)
+ setPriority(LLWorkerThread::PRIORITY_NORMAL | mWorkPriority);
+ return false;
+ }
mFetcher->removeFromNetworkQueue(this, false);
@@ -966,7 +973,6 @@ bool LLTextureFetchWorker::doWork(S32 param)
else
{
resetFormattedData();
- mState = DONE;
return true; // failed
}
}
@@ -1259,7 +1265,8 @@ bool LLTextureFetchWorker::deleteOK()
if ((haveWork() &&
// not ok to delete from these states
- ((mState >= WRITE_TO_CACHE && mState <= WAIT_ON_WRITE))))
+ ((mState == WAIT_HTTP_REQ) ||
+ (mState >= WRITE_TO_CACHE && mState <= WAIT_ON_WRITE))))
{
delete_ok = false;
}
@@ -1338,29 +1345,29 @@ bool LLTextureFetchWorker::processSimulatorPackets()
//////////////////////////////////////////////////////////////////////////////
-S32 LLTextureFetchWorker::callbackHttpGet(const LLChannelDescriptors& channels,
+void LLTextureFetchWorker::callbackHttpGet(const LLChannelDescriptors& channels,
const LLIOPipe::buffer_ptr_t& buffer,
bool partial, bool success)
{
- S32 data_size = 0 ;
-
LLMutexLock lock(&mWorkMutex);
if (mState != WAIT_HTTP_REQ)
{
llwarns << "callbackHttpGet for unrequested fetch worker: " << mID
<< " req=" << mSentRequest << " state= " << mState << llendl;
- return data_size;
+ return;
}
if (mLoaded)
{
llwarns << "Duplicate callback for " << mID.asString() << llendl;
- return data_size ; // ignore duplicate callback
+ return; // ignore duplicate callback
}
if (success)
{
// get length of stream:
- data_size = buffer->countAfter(channels.in(), NULL);
+ S32 data_size = buffer->countAfter(channels.in(), NULL);
+
+ gTextureList.sTextureBits += data_size * 8; // Approximate - does not include header bits
LL_DEBUGS("Texture") << "HTTP RECEIVED: " << mID.asString() << " Bytes: " << data_size << LL_ENDL;
if (data_size > 0)
@@ -1397,8 +1404,6 @@ S32 LLTextureFetchWorker::callbackHttpGet(const LLChannelDescriptors& channels,
}
mLoaded = TRUE;
setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
-
- return data_size ;
}
//////////////////////////////////////////////////////////////////////////////
@@ -1517,11 +1522,15 @@ LLTextureFetch::LLTextureFetch(LLTextureCache* cache, LLImageDecodeThread* image
mTextureCache(cache),
mImageDecodeThread(imagedecodethread),
mTextureBandwidth(0),
- mHTTPTextureBits(0),
mCurlGetRequest(NULL)
{
mMaxBandwidth = gSavedSettings.getF32("ThrottleBandwidthKBPS");
mTextureInfo.setUpLogging(gSavedSettings.getBOOL("LogTextureDownloadsToViewerLog"), gSavedSettings.getBOOL("LogTextureDownloadsToSimulator"), gSavedSettings.getU32("TextureLoggingThreshold"));
+
+ for(S32 i = 0 ; i < TOTAL_TEXTURE_TYPES; i++)
+ {
+ mHTTPThrottleFlag[i] = FALSE ;
+ }
}
LLTextureFetch::~LLTextureFetch()
@@ -1663,11 +1672,69 @@ void LLTextureFetch::addToHTTPQueue(const LLUUID& id)
mHTTPTextureQueue.insert(id);
}
-void LLTextureFetch::removeFromHTTPQueue(const LLUUID& id, S32 received_size)
+void LLTextureFetch::removeFromHTTPQueue(const LLUUID& id)
{
LLMutexLock lock(&mNetworkQueueMutex);
mHTTPTextureQueue.erase(id);
- mHTTPTextureBits += received_size * 8; // Approximate - does not include header bits
+}
+
+void LLTextureFetch::clearHTTPThrottleFlag()
+{
+ static const F32 WAIT_TIME = 0.3f ; //seconds.
+ static LLFrameTimer timer ;
+
+ if(timer.getElapsedTimeF32() < WAIT_TIME) //wait for WAIT_TIME
+ {
+ return ;
+ }
+ timer.reset() ;
+
+ LLMutexLock lock(&mNetworkQueueMutex);
+ for(S32 i = 0 ; i < TOTAL_TEXTURE_TYPES; i++)//reset the http throttle flags.
+ {
+ mHTTPThrottleFlag[i] = FALSE ;
+ }
+}
+
+//check if need to throttle this fetching request.
+//rule: if a request can not be inserted into the http queue due to a full queue,
+// block all future insertions of requests with larger fetching size requirement.
+//because:
+// later insertions are usually at lower priorities; and
+// small textures need chance to be fetched.
+bool LLTextureFetch::isHTTPThrottled(S32 requested_size)
+{
+ static const S32 SMALL_TEXTURE_MAX_SIZE = 64 * 64 * 4 ;
+ static const S32 MEDIUM_TEXTURE_MAX_SIZE = 256 * 256 * 4 ;
+ static const U32 MAX_HTTP_QUEUE_SIZE = 8 ;
+
+ //determine the class of the texture: SMALL, MEDIUM, or LARGE.
+ S32 type = LARGE_TEXTURE ;
+ if(requested_size <= SMALL_TEXTURE_MAX_SIZE)
+ {
+ type = SMALL_TEXTURE ;
+ }
+ else if(requested_size <= MEDIUM_TEXTURE_MAX_SIZE)
+ {
+ type = MEDIUM_TEXTURE ;
+ }
+
+ LLMutexLock lock(&mNetworkQueueMutex);
+
+ if(mHTTPTextureQueue.size() >= MAX_HTTP_QUEUE_SIZE)//if the http queue is full.
+ {
+ if(!mHTTPThrottleFlag[type + 1])
+ {
+ for(S32 i = type + 1 ; i < TOTAL_TEXTURE_TYPES; i++) //block all requests with fetching size larger than this request.
+ {
+ mHTTPThrottleFlag[i] = TRUE ;
+ }
+ }
+
+ return true ;
+ }
+
+ return mHTTPThrottleFlag[type] ; //true if this request can not be inserted to the http queue.
}
void LLTextureFetch::deleteRequest(const LLUUID& id, bool cancel)
@@ -1815,19 +1882,12 @@ bool LLTextureFetch::updateRequestPriority(const LLUUID& id, F32 priority)
//virtual
S32 LLTextureFetch::update(U32 max_time_ms)
{
+ S32 res;
+
static LLCachedControl<F32> band_width(gSavedSettings,"ThrottleBandwidthKBPS");
-
- {
- mNetworkQueueMutex.lock() ;
- mMaxBandwidth = band_width ;
-
- gTextureList.sTextureBits += mHTTPTextureBits ;
- mHTTPTextureBits = 0 ;
-
- mNetworkQueueMutex.unlock() ;
- }
-
- S32 res = LLWorkerThread::update(max_time_ms);
+ mMaxBandwidth = band_width ;
+
+ res = LLWorkerThread::update(max_time_ms);
if (!mDebugPause)
{
@@ -1843,6 +1903,7 @@ S32 LLTextureFetch::update(U32 max_time_ms)
lldebugs << "processed: " << processed << " messages." << llendl;
}
}
+ clearHTTPThrottleFlag();
return res;
}
diff --git a/indra/newview/lltexturefetch.h b/indra/newview/lltexturefetch.h
index 796109df06..f148eaa918 100644
--- a/indra/newview/lltexturefetch.h
+++ b/indra/newview/lltexturefetch.h
@@ -88,7 +88,9 @@ protected:
void addToNetworkQueue(LLTextureFetchWorker* worker);
void removeFromNetworkQueue(LLTextureFetchWorker* worker, bool cancel);
void addToHTTPQueue(const LLUUID& id);
- void removeFromHTTPQueue(const LLUUID& id, S32 received_size = 0);
+ void removeFromHTTPQueue(const LLUUID& id);
+ bool isHTTPThrottled(S32 requested_size);
+ void clearHTTPThrottleFlag();
void removeRequest(LLTextureFetchWorker* worker, bool cancel);
// Called from worker thread (during doWork)
void processCurlRequests();
@@ -128,7 +130,15 @@ private:
F32 mMaxBandwidth;
LLTextureInfo mTextureInfo;
- U32 mHTTPTextureBits;
+ enum
+ {
+ SMALL_TEXTURE = 0 , //size <= 64 * 64
+ MEDIUM_TEXTURE, //size <= 256 * 256
+ LARGE_TEXTURE, //size > 256 * 256
+ DUMMY,
+ TOTAL_TEXTURE_TYPES
+ };
+ BOOL mHTTPThrottleFlag[TOTAL_TEXTURE_TYPES];
};
#endif // LL_LLTEXTUREFETCH_H
diff --git a/indra/newview/lltoastgroupnotifypanel.cpp b/indra/newview/lltoastgroupnotifypanel.cpp
index 4c75b07ae8..a6adf48264 100644
--- a/indra/newview/lltoastgroupnotifypanel.cpp
+++ b/indra/newview/lltoastgroupnotifypanel.cpp
@@ -124,7 +124,7 @@ LLToastGroupNotifyPanel::LLToastGroupNotifyPanel(LLNotificationPtr& notification
pAttachLink->setValue(payload["inventory_name"]);
mInventoryOffer = new LLOfferInfo(payload["inventory_offer"]);
- getChild<LLTextBox>("attachment")->setClickedCallback(boost::bind(
+ childSetActionTextbox("attachment", boost::bind(
&LLToastGroupNotifyPanel::onClickAttachment, this));
LLUIImagePtr attachIconImg = LLInventoryIcon::getIcon(mInventoryOffer->mType,
diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index d8be70e546..60df98ee99 100644
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -1554,7 +1554,7 @@ BOOL LLToolPie::pickRightMouseDownCallback()
mute_msg = LLTrans::getString("MuteObject2");
}
- gMenuHolder->getChild<LLUICtrl>("Object Mute")->setValue(mute_msg);
+ gMenuHolder->childSetText("Object Mute", mute_msg);
gMenuObject->show(x, y);
showVisualContextMenuEffect();
diff --git a/indra/newview/llurldispatcher.cpp b/indra/newview/llurldispatcher.cpp
index bd4d3c2b78..123b47e97e 100644
--- a/indra/newview/llurldispatcher.cpp
+++ b/indra/newview/llurldispatcher.cpp
@@ -32,6 +32,7 @@
#include "llcommandhandler.h"
#include "llfloaterhelpbrowser.h"
#include "llfloaterreg.h"
+#include "llfloaterurldisplay.h"
#include "llfloaterworldmap.h"
#include "llpanellogin.h"
#include "llregionhandle.h"
@@ -176,6 +177,10 @@ bool LLURLDispatcherImpl::dispatchRegion(const LLSLURL& slurl, bool right_mouse)
return true;
}
+ // LLFloaterURLDisplay functionality moved to LLPanelPlaces in Side Tray.
+ //LLFloaterURLDisplay* slurl_displayp = LLFloaterReg::getTypedInstance<LLFloaterURLDisplay>("preview_url",LLSD());
+ //if(slurl_displayp) slurl_displayp->setName(region_name);
+
// Request a region handle by name
LLWorldMapMessage::getInstance()->sendNamedRegionRequest(slurl.getRegion(),
LLURLDispatcherImpl::regionNameCallback,
@@ -241,6 +246,21 @@ void LLURLDispatcherImpl::regionHandleCallback(U64 region_handle, const LLSLURL&
key["z"] = global_pos.mdV[VZ];
LLSideTray::getInstance()->showPanel("panel_places", key);
+
+ // LLFloaterURLDisplay functionality moved to LLPanelPlaces in Side Tray.
+
+// // display informational floater, allow user to click teleport btn
+// LLFloaterURLDisplay* slurl_displayp = LLFloaterReg::getTypedInstance<LLFloaterURLDisplay>("preview_url",LLSD());
+// if(slurl_displayp)
+// {
+// url_displayp->displayParcelInfo(region_handle, local_pos);
+// if(snapshot_id.notNull())
+// {
+// url_displayp->setSnapshotDisplay(snapshot_id);
+// }
+// std::string locationString = llformat("%s %d, %d, %d", region_name.c_str(), x, y, z);
+// url_displayp->setLocationString(locationString);
+// }
}
}
diff --git a/indra/newview/llviewchildren.cpp b/indra/newview/llviewchildren.cpp
index 5c5bbdc8f5..acc8d2359a 100644
--- a/indra/newview/llviewchildren.cpp
+++ b/indra/newview/llviewchildren.cpp
@@ -49,12 +49,12 @@ LLViewChildren::LLViewChildren(LLPanel& parent)
void LLViewChildren::show(const std::string& id, bool visible)
{
- mParent.getChildView(id)->setVisible(visible);
+ mParent.childSetVisible(id, visible);
}
void LLViewChildren::enable(const std::string& id, bool enabled)
{
- mParent.getChildView(id)->setEnabled(enabled);
+ mParent.childSetEnabled(id, enabled);
}
void LLViewChildren::setText(
diff --git a/indra/newview/llviewerattachmenu.cpp b/indra/newview/llviewerattachmenu.cpp
index db7dc3fea6..4847a3d721 100644
--- a/indra/newview/llviewerattachmenu.cpp
+++ b/indra/newview/llviewerattachmenu.cpp
@@ -116,7 +116,7 @@ void LLViewerAttachMenu::attachObjects(const uuid_vec_t& items, const std::strin
LLViewerInventoryItem* item = (LLViewerInventoryItem*)gInventory.getLinkedItem(id);
if(item && gInventory.isObjectDescendentOf(id, gInventory.getRootFolderID()))
{
- rez_attachment(item, attachmentp); // don't replace if called from an "Attach To..." menu
+ rez_attachment(item, attachmentp);
}
else if(item && item->isFinished())
{
diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
index 522b5a7dfa..ac2037ef68 100644
--- a/indra/newview/llviewercontrol.cpp
+++ b/indra/newview/llviewercontrol.cpp
@@ -37,7 +37,6 @@
#include "llagent.h"
#include "llagentcamera.h"
#include "llconsole.h"
-#include "lldrawpoolbump.h"
#include "lldrawpoolterrain.h"
#include "llflexibleobject.h"
#include "llfeaturemanager.h"
@@ -113,10 +112,6 @@ static bool handleTerrainDetailChanged(const LLSD& newvalue)
static bool handleSetShaderChanged(const LLSD& newvalue)
{
- // changing shader level may invalidate existing cached bump maps, as the shader type determines the format of the bump map it expects - clear and repopulate the bump cache
- gBumpImageList.destroyGL();
- gBumpImageList.restoreGL();
-
LLViewerShaderMgr::instance()->setShaders();
return true;
}
@@ -298,6 +293,15 @@ static bool handleWLSkyDetailChanged(const LLSD&)
return true;
}
+static bool handleRenderLightingDetailChanged(const LLSD& newvalue)
+{
+ if (gPipeline.isInit())
+ {
+ gPipeline.setLightingDetail(newvalue.asInteger());
+ }
+ return true;
+}
+
static bool handleResetVertexBuffersChanged(const LLSD&)
{
if (gPipeline.isInit())
@@ -494,10 +498,6 @@ void settings_setup_listeners()
gSavedSettings.getControl("RenderAvatarVP")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
gSavedSettings.getControl("VertexShaderEnable")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
gSavedSettings.getControl("RenderUIBuffer")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
- gSavedSettings.getControl("RenderSpecularResX")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
- gSavedSettings.getControl("RenderSpecularResY")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
- gSavedSettings.getControl("RenderSpecularExponent")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
- gSavedSettings.getControl("RenderFSAASamples")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
gSavedSettings.getControl("RenderShadowResolutionScale")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
gSavedSettings.getControl("RenderGlow")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
gSavedSettings.getControl("RenderGlow")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
@@ -518,8 +518,7 @@ void settings_setup_listeners()
gSavedSettings.getControl("RenderMaxPartCount")->getSignal()->connect(boost::bind(&handleMaxPartCountChanged, _2));
gSavedSettings.getControl("RenderDynamicLOD")->getSignal()->connect(boost::bind(&handleRenderDynamicLODChanged, _2));
gSavedSettings.getControl("RenderDebugTextureBind")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
- gSavedSettings.getControl("RenderAutoMaskAlphaDeferred")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
- gSavedSettings.getControl("RenderAutoMaskAlphaNonDeferred")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
+ gSavedSettings.getControl("RenderFastAlpha")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
gSavedSettings.getControl("RenderObjectBump")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
gSavedSettings.getControl("RenderMaxVBOSize")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
gSavedSettings.getControl("RenderUseFBO")->getSignal()->connect(boost::bind(&handleRenderUseFBOChanged, _2));
@@ -529,8 +528,7 @@ void settings_setup_listeners()
gSavedSettings.getControl("RenderDebugPipeline")->getSignal()->connect(boost::bind(&handleRenderDebugPipelineChanged, _2));
gSavedSettings.getControl("RenderResolutionDivisor")->getSignal()->connect(boost::bind(&handleRenderResolutionDivisorChanged, _2));
gSavedSettings.getControl("RenderDeferred")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
- gSavedSettings.getControl("RenderShadowDetail")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
- gSavedSettings.getControl("RenderDeferredSSAO")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
+ gSavedSettings.getControl("RenderDeferredShadow")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
gSavedSettings.getControl("RenderDeferredGI")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
gSavedSettings.getControl("TextureMemory")->getSignal()->connect(boost::bind(&handleVideoMemoryChanged, _2));
gSavedSettings.getControl("AuditTexture")->getSignal()->connect(boost::bind(&handleAuditTextureChanged, _2));
@@ -557,6 +555,7 @@ void settings_setup_listeners()
gSavedSettings.getControl("RenderVBOEnable")->getSignal()->connect(boost::bind(&handleRenderUseVBOChanged, _2));
gSavedSettings.getControl("RenderUseStreamVBO")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
gSavedSettings.getControl("WLSkyDetail")->getSignal()->connect(boost::bind(&handleWLSkyDetailChanged, _2));
+ gSavedSettings.getControl("RenderLightingDetail")->getSignal()->connect(boost::bind(&handleRenderLightingDetailChanged, _2));
gSavedSettings.getControl("NumpadControl")->getSignal()->connect(boost::bind(&handleNumpadControlChanged, _2));
gSavedSettings.getControl("JoystickAxis0")->getSignal()->connect(boost::bind(&handleJoystickChanged, _2));
gSavedSettings.getControl("JoystickAxis1")->getSignal()->connect(boost::bind(&handleJoystickChanged, _2));
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index d0ad918c58..8c59b52dc2 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -589,8 +589,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
LLPipeline::sUseOcclusion = 3;
}
- LLPipeline::sAutoMaskAlphaDeferred = gSavedSettings.getBOOL("RenderAutoMaskAlphaDeferred");
- LLPipeline::sAutoMaskAlphaNonDeferred = gSavedSettings.getBOOL("RenderAutoMaskAlphaNonDeferred");
+ LLPipeline::sFastAlpha = gSavedSettings.getBOOL("RenderFastAlpha");
LLPipeline::sUseFarClip = gSavedSettings.getBOOL("RenderUseFarClip");
LLVOAvatar::sMaxVisible = (U32)gSavedSettings.getS32("RenderAvatarMaxVisible");
LLPipeline::sDelayVBUpdate = gSavedSettings.getBOOL("RenderDelayVBUpdate");
@@ -862,6 +861,12 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
}
}
+ /// We copy the frame buffer straight into a texture here,
+ /// and then display it again with compositor effects.
+ /// Using render to texture would be faster/better, but I don't have a
+ /// grasp of their full display stack just yet.
+ // gPostProcess->apply(gViewerWindow->getWindowWidthRaw(), gViewerWindow->getWindowHeightRaw());
+
if (LLPipeline::sRenderDeferred && !LLPipeline::sUnderWaterRender)
{
gPipeline.renderDeferredLighting();
@@ -923,10 +928,9 @@ void render_hud_attachments()
bool render_particles = gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_PARTICLES) && gSavedSettings.getBOOL("RenderHUDParticles");
//only render hud objects
- gPipeline.pushRenderTypeMask();
-
+ U32 mask = gPipeline.getRenderTypeMask();
// turn off everything
- gPipeline.andRenderTypeMask(LLPipeline::END_RENDER_TYPES);
+ gPipeline.setRenderTypeMask(0);
// turn on HUD
gPipeline.toggleRenderType(LLPipeline::RENDER_TYPE_HUD);
// turn on HUD particles
@@ -980,8 +984,7 @@ void render_hud_attachments()
render_hud_elements();
//restore type mask
- gPipeline.popRenderTypeMask();
-
+ gPipeline.setRenderTypeMask(mask);
if (has_ui)
{
gPipeline.toggleRenderDebugFeature((void*) LLPipeline::RENDER_DEBUG_FEATURE_UI);
@@ -1106,7 +1109,7 @@ void render_ui(F32 zoom_factor, int subfield)
{
gPipeline.renderBloom(gSnapshot, zoom_factor, subfield);
}
-
+
render_hud_elements();
render_hud_attachments();
}
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index b572a8cff6..2cc8f233e4 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -75,6 +75,7 @@
#include "llfloaternotificationsconsole.h"
#include "llfloateropenobject.h"
#include "llfloaterpay.h"
+#include "llfloaterparcel.h"
#include "llfloaterperms.h"
#include "llfloaterpostcard.h"
#include "llfloaterpostprocess.h"
@@ -94,6 +95,7 @@
#include "llfloatertos.h"
#include "llfloatertopobjects.h"
#include "llfloateruipreview.h"
+#include "llfloaterurldisplay.h"
#include "llfloatervoicedevicesettings.h"
#include "llfloatervoiceeffect.h"
#include "llfloaterwater.h"
@@ -194,12 +196,14 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("openobject", "floater_openobject.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterOpenObject>);
LLFloaterReg::add("outgoing_call", "floater_outgoing_call.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLOutgoingCallDialog>);
+ LLFloaterReg::add("parcel_info", "floater_preview_url.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterParcelInfo>);
LLFloaterPayUtil::registerFloater();
LLFloaterReg::add("postcard", "floater_postcard.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPostcard>);
LLFloaterReg::add("preferences", "floater_preferences.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreference>);
LLFloaterReg::add("prefs_hardware_settings", "floater_hardware_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterHardwareSettings>);
LLFloaterReg::add("perm_prefs", "floater_perm_prefs.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPerms>);
+ LLFloaterReg::add("preview_url", "floater_preview_url.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterURLDisplay>);
LLFloaterReg::add("pref_joystick", "floater_joystick.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterJoystick>);
LLFloaterReg::add("pref_voicedevicesettings", "floater_device_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterVoiceDeviceSettings>);
LLFloaterReg::add("preview_anim", "floater_preview_animation.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLPreviewAnim>, "preview");
diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp
index 75a5b14154..efc5d87a53 100644
--- a/indra/newview/llviewerinventory.cpp
+++ b/indra/newview/llviewerinventory.cpp
@@ -930,7 +930,7 @@ void ModifiedCOFCallback::fire(const LLUUID& inv_item)
gAgentWearables.editWearableIfRequested(inv_item);
// TODO: camera mode may not be changed if a debug setting is tweaked
- if( gAgentCamera.cameraCustomizeAvatar() )
+ if(gAgentCamera.cameraCustomizeAvatar())
{
// If we're in appearance editing mode, the current tab may need to be refreshed
LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(LLSideTray::getInstance()->getPanel("sidepanel_appearance"));
diff --git a/indra/newview/llviewerjoint.cpp b/indra/newview/llviewerjoint.cpp
index 0cf5fe0ada..dada3ee3b9 100644
--- a/indra/newview/llviewerjoint.cpp
+++ b/indra/newview/llviewerjoint.cpp
@@ -434,13 +434,13 @@ void LLViewerJoint::updateFaceSizes(U32 &num_vertices, U32& num_indices, F32 pix
}
}
-void LLViewerJoint::updateFaceData(LLFace *face, F32 pixel_area, BOOL damp_wind, bool terse_update)
+void LLViewerJoint::updateFaceData(LLFace *face, F32 pixel_area, BOOL damp_wind)
{
for (child_list_t::iterator iter = mChildren.begin();
iter != mChildren.end(); ++iter)
{
LLViewerJoint* joint = (LLViewerJoint*)(*iter);
- joint->updateFaceData(face, pixel_area, damp_wind, terse_update);
+ joint->updateFaceData(face, pixel_area, damp_wind);
}
}
diff --git a/indra/newview/llviewerjoint.h b/indra/newview/llviewerjoint.h
index 76e3833acb..4a5ebf2081 100644
--- a/indra/newview/llviewerjoint.h
+++ b/indra/newview/llviewerjoint.h
@@ -120,7 +120,7 @@ public:
PickName getPickName() { return mPickName; }
virtual void updateFaceSizes(U32 &num_vertices, U32& num_indices, F32 pixel_area);
- virtual void updateFaceData(LLFace *face, F32 pixel_area, BOOL damp_wind = FALSE, bool terse_update = false);
+ virtual void updateFaceData(LLFace *face, F32 pixel_area, BOOL damp_wind = FALSE);
virtual BOOL updateLOD(F32 pixel_area, BOOL activate);
virtual void updateJointGeometry();
virtual void dump();
diff --git a/indra/newview/llviewerjointattachment.cpp b/indra/newview/llviewerjointattachment.cpp
index ecb7e2064d..01d07f93ef 100644
--- a/indra/newview/llviewerjointattachment.cpp
+++ b/indra/newview/llviewerjointattachment.cpp
@@ -29,11 +29,12 @@
#include "llviewerjointattachment.h"
#include "llagentconstants.h"
+
#include "llviewercontrol.h"
#include "lldrawable.h"
#include "llgl.h"
#include "llrender.h"
-#include "llvoavatarself.h"
+#include "llvoavatar.h"
#include "llvolume.h"
#include "pipeline.h"
#include "llspatialpartition.h"
@@ -157,9 +158,6 @@ void LLViewerJointAttachment::setupDrawable(LLViewerObject *object)
//-----------------------------------------------------------------------------
BOOL LLViewerJointAttachment::addObject(LLViewerObject* object)
{
- object->extractAttachmentItemID();
-
- // Same object reattached
if (isObjectAttached(object))
{
llinfos << "(same object re-attached)" << llendl;
@@ -167,19 +165,20 @@ BOOL LLViewerJointAttachment::addObject(LLViewerObject* object)
// Pass through anyway to let setupDrawable()
// re-connect object to the joint correctly
}
-
- // Two instances of the same inventory item attached --
- // Request detach, and kill the object in the meantime.
- if (getAttachedObject(object->getAttachmentItemID()))
- {
- llinfos << "(same object re-attached)" << llendl;
- object->markDead();
- // If this happens to be attached to self, then detach.
- LLVOAvatarSelf::detachAttachmentIntoInventory(object->getAttachmentItemID());
- return FALSE;
+ // Find the inventory item ID of the attached object
+ LLNameValue* item_id_nv = object->getNVPair("AttachItemID");
+ if( item_id_nv )
+ {
+ const char* s = item_id_nv->getString();
+ if( s )
+ {
+ LLUUID item_id;
+ item_id.set(s);
+ object->setItemID(item_id);
+ lldebugs << "getNVPair( AttachItemID ) = " << item_id << llendl;
+ }
}
-
mAttachedObjects.push_back(object);
setupDrawable(object);
@@ -202,7 +201,7 @@ BOOL LLViewerJointAttachment::addObject(LLViewerObject* object)
}
calcLOD();
mUpdateXform = TRUE;
-
+
return TRUE;
}
@@ -298,7 +297,7 @@ void LLViewerJointAttachment::removeObject(LLViewerObject *object)
{
mUpdateXform = FALSE;
}
- object->setAttachmentItemID(LLUUID::null);
+ object->setItemID(LLUUID::null);
}
//-----------------------------------------------------------------------------
@@ -424,7 +423,7 @@ const LLViewerObject *LLViewerJointAttachment::getAttachedObject(const LLUUID &o
++iter)
{
const LLViewerObject* attached_object = (*iter);
- if (attached_object->getAttachmentItemID() == object_id)
+ if (attached_object->getItemID() == object_id)
{
return attached_object;
}
@@ -439,7 +438,7 @@ LLViewerObject *LLViewerJointAttachment::getAttachedObject(const LLUUID &object_
++iter)
{
LLViewerObject* attached_object = (*iter);
- if (attached_object->getAttachmentItemID() == object_id)
+ if (attached_object->getItemID() == object_id)
{
return attached_object;
}
diff --git a/indra/newview/llviewerjointmesh.cpp b/indra/newview/llviewerjointmesh.cpp
index ae2aa41b3a..d2c29adf27 100644
--- a/indra/newview/llviewerjointmesh.cpp
+++ b/indra/newview/llviewerjointmesh.cpp
@@ -661,9 +661,7 @@ void LLViewerJointMesh::updateFaceSizes(U32 &num_vertices, U32& num_indices, F32
//-----------------------------------------------------------------------------
// updateFaceData()
//-----------------------------------------------------------------------------
-static LLFastTimer::DeclareTimer FTM_AVATAR_FACE("Avatar Face");
-
-void LLViewerJointMesh::updateFaceData(LLFace *face, F32 pixel_area, BOOL damp_wind, bool terse_update)
+void LLViewerJointMesh::updateFaceData(LLFace *face, F32 pixel_area, BOOL damp_wind)
{
mFace = face;
@@ -672,8 +670,6 @@ void LLViewerJointMesh::updateFaceData(LLFace *face, F32 pixel_area, BOOL damp_w
return;
}
- LLFastTimer t(FTM_AVATAR_FACE);
-
LLStrider<LLVector3> verticesp;
LLStrider<LLVector3> normalsp;
LLStrider<LLVector2> tex_coordsp;
@@ -692,98 +688,29 @@ void LLViewerJointMesh::updateFaceData(LLFace *face, F32 pixel_area, BOOL damp_w
face->mVertexBuffer->getIndexStrider(indicesp);
stop_glerror();
- verticesp += mMesh->mFaceVertexOffset;
- tex_coordsp += mMesh->mFaceVertexOffset;
- normalsp += mMesh->mFaceVertexOffset;
- vertex_weightsp += mMesh->mFaceVertexOffset;
- clothing_weightsp += mMesh->mFaceVertexOffset;
-
- const U32* __restrict coords = (U32*) mMesh->getCoords();
- const U32* __restrict tex_coords = (U32*) mMesh->getTexCoords();
- const U32* __restrict normals = (U32*) mMesh->getNormals();
- const U32* __restrict weights = (U32*) mMesh->getWeights();
- const U32* __restrict cloth_weights = (U32*) mMesh->getClothingWeights();
-
- const U32 num_verts = mMesh->getNumVertices();
-
- U32 i = 0;
-
- const U32 skip = verticesp.getSkip()/sizeof(U32);
-
- U32* __restrict v = (U32*) verticesp.get();
- U32* __restrict n = (U32*) normalsp.get();
-
- if (terse_update)
+ for (U16 i = 0; i < mMesh->getNumVertices(); i++)
{
- for (S32 i = num_verts; i > 0; --i)
+ verticesp[mMesh->mFaceVertexOffset + i] = *(mMesh->getCoords() + i);
+ tex_coordsp[mMesh->mFaceVertexOffset + i] = *(mMesh->getTexCoords() + i);
+ normalsp[mMesh->mFaceVertexOffset + i] = *(mMesh->getNormals() + i);
+ vertex_weightsp[mMesh->mFaceVertexOffset + i] = *(mMesh->getWeights() + i);
+ if (damp_wind)
{
- //morph target application only, only update positions and normals
- v[0] = coords[0];
- v[1] = coords[1];
- v[2] = coords[2];
- coords += 3;
- v += skip;
+ clothing_weightsp[mMesh->mFaceVertexOffset + i] = LLVector4(0,0,0,0);
}
-
- for (S32 i = num_verts; i > 0; --i)
+ else
{
- n[0] = normals[0];
- n[1] = normals[1];
- n[2] = normals[2];
- normals += 3;
- n += skip;
+ clothing_weightsp[mMesh->mFaceVertexOffset + i] = (*(mMesh->getClothingWeights() + i));
}
}
- else
- {
- U32* __restrict tc = (U32*) tex_coordsp.get();
- U32* __restrict vw = (U32*) vertex_weightsp.get();
- U32* __restrict cw = (U32*) clothing_weightsp.get();
-
- do
- {
- v[0] = *(coords++);
- v[1] = *(coords++);
- v[2] = *(coords++);
- v += skip;
-
- tc[0] = *(tex_coords++);
- tc[1] = *(tex_coords++);
- tc += skip;
-
- n[0] = *(normals++);
- n[1] = *(normals++);
- n[2] = *(normals++);
- n += skip;
-
- vw[0] = *(weights++);
- vw += skip;
-
- cw[0] = *(cloth_weights++);
- cw[1] = *(cloth_weights++);
- cw[2] = *(cloth_weights++);
- cw[3] = *(cloth_weights++);
- cw += skip;
- }
- while (++i < num_verts);
-
- const U32 idx_count = mMesh->getNumFaces()*3;
-
- indicesp += mMesh->mFaceIndexOffset;
-
- U16* __restrict idx = indicesp.get();
- S32* __restrict src_idx = (S32*) mMesh->getFaces();
-
- i = 0;
-
- const S32 offset = (S32) mMesh->mFaceVertexOffset;
-
- do
+ for (S32 i = 0; i < mMesh->getNumFaces(); i++)
+ {
+ for (U32 j = 0; j < 3; j++)
{
- *(idx++) = *(src_idx++)+offset;
+ U32 k = i*3+j+mMesh->mFaceIndexOffset;
+ indicesp[k] = mMesh->getFaces()[i][j] + mMesh->mFaceVertexOffset;
}
- while (++i < idx_count);
}
}
}
diff --git a/indra/newview/llviewerjointmesh.h b/indra/newview/llviewerjointmesh.h
index cab1205d61..1320bd03f9 100644
--- a/indra/newview/llviewerjointmesh.h
+++ b/indra/newview/llviewerjointmesh.h
@@ -134,7 +134,7 @@ public:
/*virtual*/ U32 drawShape( F32 pixelArea, BOOL first_pass, BOOL is_dummy );
/*virtual*/ void updateFaceSizes(U32 &num_vertices, U32& num_indices, F32 pixel_area);
- /*virtual*/ void updateFaceData(LLFace *face, F32 pixel_area, BOOL damp_wind = FALSE, bool terse_update = false);
+ /*virtual*/ void updateFaceData(LLFace *face, F32 pixel_area, BOOL damp_wind = FALSE);
/*virtual*/ BOOL updateLOD(F32 pixel_area, BOOL activate);
/*virtual*/ void updateJointGeometry();
/*virtual*/ void dump();
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index 283669aaef..47a98ff888 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -50,7 +50,6 @@
#include "llvoavatar.h"
#include "llvoavatarself.h"
#include "llviewerregion.h"
-#include "llwebsharing.h" // For LLWebSharing::setOpenIDCookie(), *TODO: find a better way to do this!
#include "llevent.h" // LLSimpleListener
#include "llnotificationsutil.h"
@@ -1313,9 +1312,6 @@ void LLViewerMedia::setOpenIDCookie()
}
getCookieStore()->setCookiesFromHost(sOpenIDCookie, authority.substr(host_start, host_end - host_start));
-
- // *HACK: Doing this here is nasty, find a better way.
- LLWebSharing::instance().setOpenIDCookie(sOpenIDCookie);
}
}
@@ -2190,8 +2186,7 @@ void LLViewerMediaImpl::navigateReload()
//////////////////////////////////////////////////////////////////////////////////////////
void LLViewerMediaImpl::navigateHome()
{
- bool rediscover_mimetype = mHomeMimeType.empty();
- navigateTo(mHomeURL, mHomeMimeType, rediscover_mimetype, false);
+ navigateTo(mHomeURL, "", true, false);
}
//////////////////////////////////////////////////////////////////////////////////////////
@@ -2303,8 +2298,6 @@ void LLViewerMediaImpl::navigateInternal()
// which is really not what we want.
LLSD headers = LLSD::emptyMap();
headers["Accept"] = "*/*";
- // Allow cookies in the response, to prevent a redirect loop when accessing join.secondlife.com
- headers["Cookie"] = "";
LLHTTPClient::getHeaderOnly( mMediaURL, new LLMimeDiscoveryResponder(this), headers, 10.0f);
}
else if("data" == scheme || "file" == scheme || "about" == scheme)
@@ -2913,23 +2906,14 @@ void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginCla
{
LL_DEBUGS("Media") << "MEDIA_EVENT_NAVIGATE_COMPLETE, uri is: " << plugin->getNavigateURI() << LL_ENDL;
- std::string url = plugin->getNavigateURI();
if(getNavState() == MEDIANAVSTATE_BEGUN)
{
- if(mCurrentMediaURL == url)
- {
- // This is a navigate that takes us to the same url as the previous navigate.
- setNavState(MEDIANAVSTATE_COMPLETE_BEFORE_LOCATION_CHANGED_SPURIOUS);
- }
- else
- {
- mCurrentMediaURL = url;
- setNavState(MEDIANAVSTATE_COMPLETE_BEFORE_LOCATION_CHANGED);
- }
+ mCurrentMediaURL = plugin->getNavigateURI();
+ setNavState(MEDIANAVSTATE_COMPLETE_BEFORE_LOCATION_CHANGED);
}
else if(getNavState() == MEDIANAVSTATE_SERVER_BEGUN)
{
- mCurrentMediaURL = url;
+ mCurrentMediaURL = plugin->getNavigateURI();
setNavState(MEDIANAVSTATE_SERVER_COMPLETE_BEFORE_LOCATION_CHANGED);
}
else
@@ -2943,24 +2927,14 @@ void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginCla
{
LL_DEBUGS("Media") << "MEDIA_EVENT_LOCATION_CHANGED, uri is: " << plugin->getLocation() << LL_ENDL;
- std::string url = plugin->getLocation();
-
if(getNavState() == MEDIANAVSTATE_BEGUN)
{
- if(mCurrentMediaURL == url)
- {
- // This is a navigate that takes us to the same url as the previous navigate.
- setNavState(MEDIANAVSTATE_FIRST_LOCATION_CHANGED_SPURIOUS);
- }
- else
- {
- mCurrentMediaURL = url;
- setNavState(MEDIANAVSTATE_FIRST_LOCATION_CHANGED);
- }
+ mCurrentMediaURL = plugin->getLocation();
+ setNavState(MEDIANAVSTATE_FIRST_LOCATION_CHANGED);
}
else if(getNavState() == MEDIANAVSTATE_SERVER_BEGUN)
{
- mCurrentMediaURL = url;
+ mCurrentMediaURL = plugin->getLocation();
setNavState(MEDIANAVSTATE_SERVER_FIRST_LOCATION_CHANGED);
}
else
@@ -3244,9 +3218,7 @@ void LLViewerMediaImpl::setNavState(EMediaNavState state)
case MEDIANAVSTATE_NONE: LL_DEBUGS("Media") << "Setting nav state to MEDIANAVSTATE_NONE" << llendl; break;
case MEDIANAVSTATE_BEGUN: LL_DEBUGS("Media") << "Setting nav state to MEDIANAVSTATE_BEGUN" << llendl; break;
case MEDIANAVSTATE_FIRST_LOCATION_CHANGED: LL_DEBUGS("Media") << "Setting nav state to MEDIANAVSTATE_FIRST_LOCATION_CHANGED" << llendl; break;
- case MEDIANAVSTATE_FIRST_LOCATION_CHANGED_SPURIOUS: LL_DEBUGS("Media") << "Setting nav state to MEDIANAVSTATE_FIRST_LOCATION_CHANGED_SPURIOUS" << llendl; break;
case MEDIANAVSTATE_COMPLETE_BEFORE_LOCATION_CHANGED: LL_DEBUGS("Media") << "Setting nav state to MEDIANAVSTATE_COMPLETE_BEFORE_LOCATION_CHANGED" << llendl; break;
- case MEDIANAVSTATE_COMPLETE_BEFORE_LOCATION_CHANGED_SPURIOUS: LL_DEBUGS("Media") << "Setting nav state to MEDIANAVSTATE_COMPLETE_BEFORE_LOCATION_CHANGED_SPURIOUS" << llendl; break;
case MEDIANAVSTATE_SERVER_SENT: LL_DEBUGS("Media") << "Setting nav state to MEDIANAVSTATE_SERVER_SENT" << llendl; break;
case MEDIANAVSTATE_SERVER_BEGUN: LL_DEBUGS("Media") << "Setting nav state to MEDIANAVSTATE_SERVER_BEGUN" << llendl; break;
case MEDIANAVSTATE_SERVER_FIRST_LOCATION_CHANGED: LL_DEBUGS("Media") << "Setting nav state to MEDIANAVSTATE_SERVER_FIRST_LOCATION_CHANGED" << llendl; break;
diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h
index e0cc26fa29..fbd0358302 100644
--- a/indra/newview/llviewermedia.h
+++ b/indra/newview/llviewermedia.h
@@ -231,7 +231,7 @@ public:
std::string getCurrentMediaURL();
std::string getHomeURL() { return mHomeURL; }
std::string getMediaEntryURL() { return mMediaEntryURL; }
- void setHomeURL(const std::string& home_url, const std::string& mime_type = LLStringUtil::null) { mHomeURL = home_url; mHomeMimeType = mime_type;};
+ void setHomeURL(const std::string& home_url) { mHomeURL = home_url; };
void clearCache();
std::string getMimeType() { return mMimeType; }
void scaleMouse(S32 *mouse_x, S32 *mouse_y);
@@ -356,9 +356,7 @@ public:
MEDIANAVSTATE_NONE, // State is outside what we need to track for navigation.
MEDIANAVSTATE_BEGUN, // a MEDIA_EVENT_NAVIGATE_BEGIN has been received which was not server-directed
MEDIANAVSTATE_FIRST_LOCATION_CHANGED, // first LOCATION_CHANGED event after a non-server-directed BEGIN
- MEDIANAVSTATE_FIRST_LOCATION_CHANGED_SPURIOUS, // Same as above, but the new URL is identical to the previously navigated URL.
MEDIANAVSTATE_COMPLETE_BEFORE_LOCATION_CHANGED, // we received a NAVIGATE_COMPLETE event before the first LOCATION_CHANGED
- MEDIANAVSTATE_COMPLETE_BEFORE_LOCATION_CHANGED_SPURIOUS,// Same as above, but the new URL is identical to the previously navigated URL.
MEDIANAVSTATE_SERVER_SENT, // server-directed nav has been requested, but MEDIA_EVENT_NAVIGATE_BEGIN hasn't been received yet
MEDIANAVSTATE_SERVER_BEGUN, // MEDIA_EVENT_NAVIGATE_BEGIN has been received which was server-directed
MEDIANAVSTATE_SERVER_FIRST_LOCATION_CHANGED, // first LOCATION_CHANGED event after a server-directed BEGIN
@@ -395,7 +393,6 @@ private:
bool mMovieImageHasMips;
std::string mMediaURL; // The last media url set with NavigateTo
std::string mHomeURL;
- std::string mHomeMimeType; // forced mime type for home url
std::string mMimeType;
std::string mCurrentMediaURL; // The most current media url from the plugin (via the "location changed" or "navigate complete" events).
std::string mCurrentMimeType; // The MIME type that caused the currently loaded plugin to be loaded.
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index c275068028..476e761c28 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -1077,8 +1077,6 @@ class LLAdvancedToggleWireframe : public view_listener_t
bool handleEvent(const LLSD& userdata)
{
gUseWireframe = !(gUseWireframe);
- LLPipeline::updateRenderDeferred();
- gPipeline.resetVertexBuffers();
return true;
}
};
@@ -2050,9 +2048,9 @@ class LLAdvancedEnableRenderDeferred: public view_listener_t
};
/////////////////////////////////////
-// Enable Deferred Rendering sub-options
+// Enable Global Illumination ///
/////////////////////////////////////
-class LLAdvancedEnableRenderDeferredOptions: public view_listener_t
+class LLAdvancedEnableRenderDeferredGI: public view_listener_t
{
bool handleEvent(const LLSD& userdata)
{
@@ -5848,7 +5846,6 @@ void handle_buy_land()
class LLObjectAttachToAvatar : public view_listener_t
{
public:
- LLObjectAttachToAvatar(bool replace) : mReplace(replace) {}
static void setObjectSelection(LLObjectSelectionHandle selection) { sObjectSelection = selection; }
private:
@@ -5862,38 +5859,22 @@ private:
LLViewerJointAttachment* attachment_point = NULL;
if (index > 0)
attachment_point = get_if_there(gAgentAvatarp->mAttachmentPoints, index, (LLViewerJointAttachment*)NULL);
- confirmReplaceAttachment(0, attachment_point);
+ confirm_replace_attachment(0, attachment_point);
}
return true;
}
- static void onNearAttachObject(BOOL success, void *user_data);
- void confirmReplaceAttachment(S32 option, LLViewerJointAttachment* attachment_point);
-
- struct CallbackData
- {
- CallbackData(LLViewerJointAttachment* point, bool replace) : mAttachmentPoint(point), mReplace(replace) {}
-
- LLViewerJointAttachment* mAttachmentPoint;
- bool mReplace;
- };
-
protected:
static LLObjectSelectionHandle sObjectSelection;
- bool mReplace;
};
LLObjectSelectionHandle LLObjectAttachToAvatar::sObjectSelection;
-// static
-void LLObjectAttachToAvatar::onNearAttachObject(BOOL success, void *user_data)
+void near_attach_object(BOOL success, void *user_data)
{
- if (!user_data) return;
- CallbackData* cb_data = static_cast<CallbackData*>(user_data);
-
if (success)
{
- const LLViewerJointAttachment *attachment = cb_data->mAttachmentPoint;
+ const LLViewerJointAttachment *attachment = (LLViewerJointAttachment *)user_data;
U8 attachment_id = 0;
if (attachment)
@@ -5913,15 +5894,12 @@ void LLObjectAttachToAvatar::onNearAttachObject(BOOL success, void *user_data)
// interpret 0 as "default location"
attachment_id = 0;
}
- LLSelectMgr::getInstance()->sendAttach(attachment_id, cb_data->mReplace);
+ LLSelectMgr::getInstance()->sendAttach(attachment_id);
}
LLObjectAttachToAvatar::setObjectSelection(NULL);
-
- delete cb_data;
}
-// static
-void LLObjectAttachToAvatar::confirmReplaceAttachment(S32 option, LLViewerJointAttachment* attachment_point)
+void confirm_replace_attachment(S32 option, void* user_data)
{
if (option == 0/*YES*/)
{
@@ -5946,9 +5924,7 @@ void LLObjectAttachToAvatar::confirmReplaceAttachment(S32 option, LLViewerJointA
delta = delta * 0.5f;
walkToSpot -= delta;
- // The callback will be called even if avatar fails to get close enough to the object, so we won't get a memory leak.
- CallbackData* user_data = new CallbackData(attachment_point, mReplace);
- gAgent.startAutoPilotGlobal(gAgent.getPosGlobalFromAgent(walkToSpot), "Attach", NULL, onNearAttachObject, user_data, stop_distance);
+ gAgent.startAutoPilotGlobal(gAgent.getPosGlobalFromAgent(walkToSpot), "Attach", NULL, near_attach_object, user_data, stop_distance);
gAgentCamera.clearFocusObject();
}
}
@@ -6068,7 +6044,7 @@ static bool onEnableAttachmentLabel(LLUICtrl* ctrl, const LLSD& data)
const LLViewerObject* attached_object = (*attachment_iter);
if (attached_object)
{
- LLViewerInventoryItem* itemp = gInventory.getItem(attached_object->getAttachmentItemID());
+ LLViewerInventoryItem* itemp = gInventory.getItem(attached_object->getItemID());
if (itemp)
{
label += std::string(" (") + itemp->getName() + std::string(")");
@@ -6187,14 +6163,14 @@ class LLAttachmentEnableDrop : public view_listener_t
{
// make sure item is in your inventory (it could be a delayed attach message being sent from the sim)
// so check to see if the item is in the inventory already
- item = gInventory.getItem((*attachment_iter)->getAttachmentItemID());
+ item = gInventory.getItem((*attachment_iter)->getItemID());
if (!item)
{
// Item does not exist, make an observer to enable the pie menu
// when the item finishes fetching worst case scenario
// if a fetch is already out there (being sent from a slow sim)
// we refetch and there are 2 fetches
- LLWornItemFetchedObserver* worn_item_fetched = new LLWornItemFetchedObserver((*attachment_iter)->getAttachmentItemID());
+ LLWornItemFetchedObserver* worn_item_fetched = new LLWornItemFetchedObserver((*attachment_iter)->getItemID());
worn_item_fetched->startFetch();
gInventory.addObserver(worn_item_fetched);
}
@@ -6541,7 +6517,7 @@ void handle_dump_attachments(void*)
!attached_object->mDrawable->isRenderType(0));
LLVector3 pos;
if (visible) pos = attached_object->mDrawable->getPosition();
- llinfos << "ATTACHMENT " << key << ": item_id=" << attached_object->getAttachmentItemID()
+ llinfos << "ATTACHMENT " << key << ": item_id=" << attached_object->getItemID()
<< (attached_object ? " present " : " absent ")
<< (visible ? "visible " : "invisible ")
<< " at " << pos
@@ -6552,7 +6528,7 @@ void handle_dump_attachments(void*)
}
-// these are used in the gl menus to set control values, generically.
+// these are used in the gl menus to set control values.
class LLToggleControl : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
@@ -6571,44 +6547,8 @@ class LLCheckControl : public view_listener_t
std::string callback_data = userdata.asString();
bool new_value = gSavedSettings.getBOOL(callback_data);
return new_value;
- }
-};
-
-// not so generic
-
-class LLAdvancedCheckRenderShadowOption: public view_listener_t
-{
- bool handleEvent(const LLSD& userdata)
- {
- std::string control_name = userdata.asString();
- S32 current_shadow_level = gSavedSettings.getS32(control_name);
- if (current_shadow_level == 0) // is off
- {
- return false;
- }
- else // is on
- {
- return true;
- }
- }
-};
+}
-class LLAdvancedClickRenderShadowOption: public view_listener_t
-{
- bool handleEvent(const LLSD& userdata)
- {
- std::string control_name = userdata.asString();
- S32 current_shadow_level = gSavedSettings.getS32(control_name);
- if (current_shadow_level == 0) // upgrade to level 2
- {
- gSavedSettings.setS32(control_name, 2);
- }
- else // downgrade to level 0
- {
- gSavedSettings.setS32(control_name, 0);
- }
- return true;
- }
};
void menu_toggle_attached_lights(void* user_data)
@@ -7933,7 +7873,7 @@ void initialize_menus()
// Help menu
// most items use the ShowFloater method
- // Advanced menu
+ // Advance menu
view_listener_t::addMenu(new LLAdvancedToggleConsole(), "Advanced.ToggleConsole");
view_listener_t::addMenu(new LLAdvancedCheckConsole(), "Advanced.CheckConsole");
view_listener_t::addMenu(new LLAdvancedDumpInfoToConsole(), "Advanced.DumpInfoToConsole");
@@ -7960,13 +7900,12 @@ void initialize_menus()
view_listener_t::addMenu(new LLAdvancedSelectedTextureInfo(), "Advanced.SelectedTextureInfo");
view_listener_t::addMenu(new LLAdvancedToggleWireframe(), "Advanced.ToggleWireframe");
view_listener_t::addMenu(new LLAdvancedCheckWireframe(), "Advanced.CheckWireframe");
- // Develop > Render
view_listener_t::addMenu(new LLAdvancedToggleTextureAtlas(), "Advanced.ToggleTextureAtlas");
view_listener_t::addMenu(new LLAdvancedCheckTextureAtlas(), "Advanced.CheckTextureAtlas");
view_listener_t::addMenu(new LLAdvancedEnableObjectObjectOcclusion(), "Advanced.EnableObjectObjectOcclusion");
view_listener_t::addMenu(new LLAdvancedEnableRenderFBO(), "Advanced.EnableRenderFBO");
view_listener_t::addMenu(new LLAdvancedEnableRenderDeferred(), "Advanced.EnableRenderDeferred");
- view_listener_t::addMenu(new LLAdvancedEnableRenderDeferredOptions(), "Advanced.EnableRenderDeferredOptions");
+ view_listener_t::addMenu(new LLAdvancedEnableRenderDeferredGI(), "Advanced.EnableRenderDeferredGI");
view_listener_t::addMenu(new LLAdvancedToggleRandomizeFramerate(), "Advanced.ToggleRandomizeFramerate");
view_listener_t::addMenu(new LLAdvancedCheckRandomizeFramerate(), "Advanced.CheckRandomizeFramerate");
view_listener_t::addMenu(new LLAdvancedTogglePeriodicSlowFrame(), "Advanced.TogglePeriodicSlowFrame");
@@ -7975,8 +7914,6 @@ void initialize_menus()
view_listener_t::addMenu(new LLAdvancedToggleFrameTest(), "Advanced.ToggleFrameTest");
view_listener_t::addMenu(new LLAdvancedCheckFrameTest(), "Advanced.CheckFrameTest");
view_listener_t::addMenu(new LLAdvancedHandleAttachedLightParticles(), "Advanced.HandleAttachedLightParticles");
- view_listener_t::addMenu(new LLAdvancedCheckRenderShadowOption(), "Advanced.CheckRenderShadowOption");
- view_listener_t::addMenu(new LLAdvancedClickRenderShadowOption(), "Advanced.ClickRenderShadowOption");
#ifdef TOGGLE_HACKED_GODLIKE_VIEWER
@@ -8133,8 +8070,7 @@ void initialize_menus()
commit.add("Object.Touch", boost::bind(&handle_object_touch));
commit.add("Object.SitOrStand", boost::bind(&handle_object_sit_or_stand));
commit.add("Object.Delete", boost::bind(&handle_object_delete));
- view_listener_t::addMenu(new LLObjectAttachToAvatar(true), "Object.AttachToAvatar");
- view_listener_t::addMenu(new LLObjectAttachToAvatar(false), "Object.AttachAddToAvatar");
+ view_listener_t::addMenu(new LLObjectAttachToAvatar(), "Object.AttachToAvatar");
view_listener_t::addMenu(new LLObjectReturn(), "Object.Return");
view_listener_t::addMenu(new LLObjectReportAbuse(), "Object.ReportAbuse");
view_listener_t::addMenu(new LLObjectMute(), "Object.Mute");
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 92c61ddefe..2a6b272741 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -3662,7 +3662,6 @@ const F32 THRESHOLD_HEAD_ROT_QDOT = 0.9997f; // ~= 2.5 degrees -- if its less th
const F32 MAX_HEAD_ROT_QDOT = 0.99999f; // ~= 0.5 degrees -- if its greater than this then no need to update head_rot
// between these values we delay the updates (but no more than one second)
-static LLFastTimer::DeclareTimer FTM_AGENT_UPDATE_SEND("Send Message");
void send_agent_update(BOOL force_send, BOOL send_reliable)
{
@@ -3821,7 +3820,6 @@ void send_agent_update(BOOL force_send, BOOL send_reliable)
if (duplicate_count < DUP_MSGS && !gDisconnected)
{
- LLFastTimer t(FTM_AGENT_UPDATE_SEND);
// Build the message
msg->newMessageFast(_PREHASH_AgentUpdate);
msg->nextBlockFast(_PREHASH_AgentData);
@@ -5313,10 +5311,10 @@ void process_economy_data(LLMessageSystem *msg, void** /*user_data*/)
LL_INFOS_ONCE("Messaging") << "EconomyData message arrived; upload cost is L$" << upload_cost << LL_ENDL;
- gMenuHolder->getChild<LLUICtrl>("Upload Image")->setLabelArg("[COST]", llformat("%d", upload_cost));
- gMenuHolder->getChild<LLUICtrl>("Upload Sound")->setLabelArg("[COST]", llformat("%d", upload_cost));
- gMenuHolder->getChild<LLUICtrl>("Upload Animation")->setLabelArg("[COST]", llformat("%d", upload_cost));
- gMenuHolder->getChild<LLUICtrl>("Bulk Upload")->setLabelArg("[COST]", llformat("%d", upload_cost));
+ gMenuHolder->childSetLabelArg("Upload Image", "[COST]", llformat("%d", upload_cost));
+ gMenuHolder->childSetLabelArg("Upload Sound", "[COST]", llformat("%d", upload_cost));
+ gMenuHolder->childSetLabelArg("Upload Animation", "[COST]", llformat("%d", upload_cost));
+ gMenuHolder->childSetLabelArg("Bulk Upload", "[COST]", llformat("%d", upload_cost));
}
void notify_cautioned_script_question(const LLSD& notification, const LLSD& response, S32 orig_questions, BOOL granted)
diff --git a/indra/newview/llviewernetwork.cpp b/indra/newview/llviewernetwork.cpp
index 7f7c245717..eade16a075 100644
--- a/indra/newview/llviewernetwork.cpp
+++ b/indra/newview/llviewernetwork.cpp
@@ -44,7 +44,6 @@ const char* DEFAULT_SLURL_BASE = "https://%s/region/";
const char* DEFAULT_APP_SLURL_BASE = "x-grid-location-info://%s/app";
LLGridManager::LLGridManager()
-: mIsInProductionGrid(false)
{
// by default, we use the 'grids.xml' file in the user settings directory
// this file is an LLSD file containing multiple grid definitions.
@@ -304,10 +303,6 @@ void LLGridManager::initialize(const std::string& grid_file)
addGrid(grid);
}
- gSavedSettings.getControl("CurrentGrid")->getSignal()->connect(boost::bind(&LLGridManager::updateIsInProductionGrid, this));
- // since above only triggers on changes, trigger the callback manually to initialize state
- updateIsInProductionGrid();
-
LL_DEBUGS("GridManager") << "Selected grid is " << mGrid << LL_ENDL;
setGridChoice(mGrid);
if(mGridList[mGrid][GRID_LOGIN_URI_VALUE].isArray())
@@ -559,30 +554,23 @@ std::string LLGridManager::getLoginPage()
return mGridList[mGrid][GRID_LOGIN_PAGE_VALUE];
}
-void LLGridManager::updateIsInProductionGrid()
+bool LLGridManager::isInProductionGrid()
{
- mIsInProductionGrid = false;
-
// *NOTE:Mani This used to compare GRID_INFO_AGNI to gGridChoice,
// but it seems that loginURI trumps that.
std::vector<std::string> uris;
getLoginURIs(uris);
- if (uris.empty())
+ if (uris.size() < 1)
{
- mIsInProductionGrid = true;
- return;
+ return 1;
}
LLStringUtil::toLower(uris[0]);
if((uris[0].find("agni") != std::string::npos))
{
- mIsInProductionGrid = true;
- return;
+ return true;
}
-}
-bool LLGridManager::isInProductionGrid()
-{
- return mIsInProductionGrid;
+ return false;
}
void LLGridManager::saveFavorites()
diff --git a/indra/newview/llviewernetwork.h b/indra/newview/llviewernetwork.h
index 15e25b4952..70b06b1dc2 100644
--- a/indra/newview/llviewernetwork.h
+++ b/indra/newview/llviewernetwork.h
@@ -131,8 +131,6 @@ public:
protected:
- void updateIsInProductionGrid();
-
// helper function for adding the predefined grids
void addSystemGrid(const std::string& label,
const std::string& name,
@@ -145,7 +143,6 @@ protected:
std::string mGrid;
std::string mGridFile;
LLSD mGridList;
- bool mIsInProductionGrid;
};
const S32 MAC_ADDRESS_BYTES = 6;
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index 25cc24da95..2a909f8781 100644
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -5227,28 +5227,3 @@ void LLViewerObject::resetChildrenPosition(const LLVector3& offset, BOOL simplif
return ;
}
-const LLUUID &LLViewerObject::getAttachmentItemID() const
-{
- return mAttachmentItemID;
-}
-
-void LLViewerObject::setAttachmentItemID(const LLUUID &id)
-{
- mAttachmentItemID = id;
-}
-
-const LLUUID &LLViewerObject::extractAttachmentItemID()
-{
- LLUUID item_id = LLUUID::null;
- LLNameValue* item_id_nv = getNVPair("AttachItemID");
- if( item_id_nv )
- {
- const char* s = item_id_nv->getString();
- if( s )
- {
- item_id.set(s);
- }
- }
- setAttachmentItemID(item_id);
- return getAttachmentItemID();
-}
diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h
index bcc2cb164f..c3c1b2d106 100644
--- a/indra/newview/llviewerobject.h
+++ b/indra/newview/llviewerobject.h
@@ -672,15 +672,11 @@ protected:
private:
static S32 sNumObjects;
- //--------------------------------------------------------------------
- // For objects that are attachments
- //--------------------------------------------------------------------
public:
- const LLUUID &getAttachmentItemID() const;
- void setAttachmentItemID(const LLUUID &id);
- const LLUUID &extractAttachmentItemID(); // find&set the inventory item ID of the attached object
+ const LLUUID &getItemID() const { return mAttachmentItemID; }
+ void setItemID(const LLUUID &id) { mAttachmentItemID = id; }
private:
- LLUUID mAttachmentItemID; // ItemID of the associated object is in user inventory.
+ LLUUID mAttachmentItemID; // ItemID when item is in user inventory.
};
///////////////////
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index d078c15316..4c2ea27253 100644
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -311,16 +311,10 @@ S32 LLViewerShaderMgr::getVertexShaderLevel(S32 type)
void LLViewerShaderMgr::setShaders()
{
- //setShaders might be called redundantly by gSavedSettings, so return on reentrance
- static bool reentrance = false;
-
- if (!gPipeline.mInitialized || !sInitialized || reentrance)
+ if (!gPipeline.mInitialized || !sInitialized)
{
return;
}
-
- reentrance = true;
-
// Make sure the compiled shader map is cleared before we recompile shaders.
mShaderObjects.clear();
@@ -368,11 +362,17 @@ void LLViewerShaderMgr::setShaders()
S32 wl_class = 2;
S32 water_class = 2;
S32 deferred_class = 0;
-
- if (LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") &&
- gSavedSettings.getBOOL("RenderDeferred"))
+ if (!(LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders")
+ && gSavedSettings.getBOOL("WindLightUseAtmosShaders")))
+ {
+ // user has disabled WindLight in their settings, downgrade
+ // windlight shaders to stub versions.
+ wl_class = 1;
+ }
+
+ if (LLPipeline::sRenderDeferred)
{
- if (gSavedSettings.getS32("RenderShadowDetail") > 0)
+ if (gSavedSettings.getBOOL("RenderDeferredShadow"))
{
if (gSavedSettings.getBOOL("RenderDeferredGI"))
{ //shadows + gi
@@ -387,24 +387,6 @@ void LLViewerShaderMgr::setShaders()
{ //no shadows
deferred_class = 1;
}
-
- //make sure framebuffer objects are enabled
- gSavedSettings.setBOOL("RenderUseFBO", TRUE);
-
- //make sure hardware skinning is enabled
- gSavedSettings.setBOOL("RenderAvatarVP", TRUE);
-
- //make sure atmospheric shaders are enabled
- gSavedSettings.setBOOL("WindLightUseAtmosShaders", TRUE);
- }
-
-
- if (!(LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders")
- && gSavedSettings.getBOOL("WindLightUseAtmosShaders")))
- {
- // user has disabled WindLight in their settings, downgrade
- // windlight shaders to stub versions.
- wl_class = 1;
}
if(!gSavedSettings.getBOOL("EnableRippleWater"))
@@ -529,8 +511,6 @@ void LLViewerShaderMgr::setShaders()
gViewerWindow->setCursor(UI_CURSOR_ARROW);
}
gPipeline.createGLBuffers();
-
- reentrance = false;
}
void LLViewerShaderMgr::unloadShaders()
@@ -987,21 +967,10 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
if (success)
{
- std::string fragment;
-
- if (gSavedSettings.getBOOL("RenderDeferredSSAO"))
- {
- fragment = "deferred/sunLightSSAOF.glsl";
- }
- else
- {
- fragment = "deferred/sunLightF.glsl";
- }
-
gDeferredSunProgram.mName = "Deferred Sun Shader";
gDeferredSunProgram.mShaderFiles.clear();
gDeferredSunProgram.mShaderFiles.push_back(make_pair("deferred/sunLightV.glsl", GL_VERTEX_SHADER_ARB));
- gDeferredSunProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB));
+ gDeferredSunProgram.mShaderFiles.push_back(make_pair("deferred/sunLightF.glsl", GL_FRAGMENT_SHADER_ARB));
gDeferredSunProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
success = gDeferredSunProgram.createShader(NULL, NULL);
}
diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp
index e55808597c..3e984b6fc3 100644
--- a/indra/newview/llviewerstats.cpp
+++ b/indra/newview/llviewerstats.cpp
@@ -594,7 +594,7 @@ void update_statistics(U32 frame_count)
}
}
LLViewerStats::getInstance()->setStat(LLViewerStats::ST_ENABLE_VBO, (F64)gSavedSettings.getBOOL("RenderVBOEnable"));
- LLViewerStats::getInstance()->setStat(LLViewerStats::ST_LIGHTING_DETAIL, (F64)gPipeline.getLightingDetail());
+ LLViewerStats::getInstance()->setStat(LLViewerStats::ST_LIGHTING_DETAIL, (F64)gSavedSettings.getS32("RenderLightingDetail"));
LLViewerStats::getInstance()->setStat(LLViewerStats::ST_DRAW_DIST, (F64)gSavedSettings.getF32("RenderFarClip"));
LLViewerStats::getInstance()->setStat(LLViewerStats::ST_CHAT_BUBBLES, (F64)gSavedSettings.getBOOL("UseChatBubbles"));
#if 0 // 1.9.2
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index 0ad54f238e..eeca8891c1 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -808,7 +808,7 @@ void LLViewerTexture::generateGLTexture()
LLImageGL* LLViewerTexture::getGLTexture() const
{
llassert(mGLTexturep.notNull()) ;
-
+
return mGLTexturep ;
}
@@ -1484,62 +1484,53 @@ void LLViewerFetchedTexture::setKnownDrawSize(S32 width, S32 height)
void LLViewerFetchedTexture::processTextureStats()
{
if(mFullyLoaded)
- {
- if(mDesiredDiscardLevel > mMinDesiredDiscardLevel)//need to load more
+ {
+ if(mDesiredDiscardLevel <= mMinDesiredDiscardLevel)//already loaded
{
- mDesiredDiscardLevel = llmin(mDesiredDiscardLevel, mMinDesiredDiscardLevel) ;
- mFullyLoaded = FALSE ;
+ return ;
}
+ mDesiredDiscardLevel = llmin(mDesiredDiscardLevel, mMinDesiredDiscardLevel) ;
+ mFullyLoaded = FALSE ;
+ return ;
}
- else
+
+ updateVirtualSize() ;
+
+ static LLCachedControl<bool> textures_fullres(gSavedSettings,"TextureLoadFullRes");
+
+ if (textures_fullres)
{
- updateVirtualSize() ;
-
- static LLCachedControl<bool> textures_fullres(gSavedSettings,"TextureLoadFullRes");
-
- if (textures_fullres)
- {
- mDesiredDiscardLevel = 0;
- }
- else if(!mFullWidth || !mFullHeight)
+ mDesiredDiscardLevel = 0;
+ }
+ else if(!mFullWidth || !mFullHeight)
+ {
+ mDesiredDiscardLevel = getMaxDiscardLevel() ;
+ }
+ else
+ {
+ if(!mKnownDrawWidth || !mKnownDrawHeight || mFullWidth <= mKnownDrawWidth || mFullHeight <= mKnownDrawHeight)
{
- mDesiredDiscardLevel = getMaxDiscardLevel() ;
- }
- else
- {
- if(!mKnownDrawWidth || !mKnownDrawHeight || mFullWidth <= mKnownDrawWidth || mFullHeight <= mKnownDrawHeight)
+ if (mFullWidth > MAX_IMAGE_SIZE_DEFAULT || mFullHeight > MAX_IMAGE_SIZE_DEFAULT)
{
- if (mFullWidth > MAX_IMAGE_SIZE_DEFAULT || mFullHeight > MAX_IMAGE_SIZE_DEFAULT)
- {
- mDesiredDiscardLevel = 1; // MAX_IMAGE_SIZE_DEFAULT = 1024 and max size ever is 2048
- }
- else
- {
- mDesiredDiscardLevel = 0;
- }
- }
- else if(mKnownDrawSizeChanged)//known draw size is set
- {
- mDesiredDiscardLevel = (S8)llmin(log((F32)mFullWidth / mKnownDrawWidth) / log_2,
- log((F32)mFullHeight / mKnownDrawHeight) / log_2) ;
- mDesiredDiscardLevel = llclamp(mDesiredDiscardLevel, (S8)0, (S8)getMaxDiscardLevel()) ;
- mDesiredDiscardLevel = llmin(mDesiredDiscardLevel, mMinDesiredDiscardLevel) ;
+ mDesiredDiscardLevel = 1; // MAX_IMAGE_SIZE_DEFAULT = 1024 and max size ever is 2048
}
- mKnownDrawSizeChanged = FALSE ;
-
- if(getDiscardLevel() >= 0 && (getDiscardLevel() <= mDesiredDiscardLevel))
+ else
{
- mFullyLoaded = TRUE ;
+ mDesiredDiscardLevel = 0;
}
}
- }
-
- if(mForceToSaveRawImage && mDesiredSavedRawDiscardLevel >= 0) //force to refetch the texture.
- {
- mDesiredDiscardLevel = llmin(mDesiredDiscardLevel, (S8)mDesiredSavedRawDiscardLevel) ;
- if(getDiscardLevel() < 0 || getDiscardLevel() > mDesiredDiscardLevel)
+ else if(mKnownDrawSizeChanged)//known draw size is set
+ {
+ mDesiredDiscardLevel = (S8)llmin(log((F32)mFullWidth / mKnownDrawWidth) / log_2,
+ log((F32)mFullHeight / mKnownDrawHeight) / log_2) ;
+ mDesiredDiscardLevel = llclamp(mDesiredDiscardLevel, (S8)0, (S8)getMaxDiscardLevel()) ;
+ mDesiredDiscardLevel = llmin(mDesiredDiscardLevel, mMinDesiredDiscardLevel) ;
+ }
+ mKnownDrawSizeChanged = FALSE ;
+
+ if(getDiscardLevel() >= 0 && (getDiscardLevel() <= mDesiredDiscardLevel))
{
- mFullyLoaded = FALSE ;
+ mFullyLoaded = TRUE ;
}
}
}
@@ -1722,11 +1713,6 @@ void LLViewerFetchedTexture::setDecodePriority(F32 priority)
llassert(!mInImageList);
mDecodePriority = priority;
-
- if(mDecodePriority < F_ALMOST_ZERO)
- {
- mStopFetchingTimer.reset() ;
- }
}
void LLViewerFetchedTexture::setAdditionalDecodePriority(F32 priority)
@@ -1918,12 +1904,7 @@ bool LLViewerFetchedTexture::updateFetch()
// llinfos << "Calling updateRequestPriority() with decode_priority = 0.0f" << llendl;
// calcDecodePriority();
// }
- static const F32 MAX_HOLD_TIME = 5.0f ; //seconds to wait before canceling fecthing if decode_priority is 0.f.
- if(decode_priority > 0.0f || mStopFetchingTimer.getElapsedTimeF32() > MAX_HOLD_TIME)
- {
- mStopFetchingTimer.reset() ;
- LLAppViewer::getTextureFetch()->updateRequestPriority(mID, decode_priority);
- }
+ LLAppViewer::getTextureFetch()->updateRequestPriority(mID, decode_priority);
}
}
@@ -2083,36 +2064,6 @@ void LLViewerFetchedTexture::setLoadedCallback( loaded_callback_func loaded_call
}
}
-void LLViewerFetchedTexture::clearCallbackEntryList()
-{
- if(mLoadedCallbackList.empty())
- {
- return ;
- }
-
- for(callback_list_t::iterator iter = mLoadedCallbackList.begin();
- iter != mLoadedCallbackList.end(); )
- {
- LLLoadedCallbackEntry *entryp = *iter;
-
- // We never finished loading the image. Indicate failure.
- // Note: this allows mLoadedCallbackUserData to be cleaned up.
- entryp->mCallback(FALSE, this, NULL, NULL, 0, TRUE, entryp->mUserData);
- iter = mLoadedCallbackList.erase(iter) ;
- delete entryp;
- }
- gTextureList.mCallbackList.erase(this);
-
- mMinDesiredDiscardLevel = MAX_DISCARD_LEVEL + 1;
- mLoadedCallbackDesiredDiscardLevel = S8_MAX ;
- if(mForceToSaveRawImage)
- {
- destroySavedRawImage() ;
- }
-
- return ;
-}
-
void LLViewerFetchedTexture::deleteCallbackEntry(const LLLoadedCallbackEntry::source_callback_list_t* callback_list)
{
if(mLoadedCallbackList.empty() || !callback_list)
@@ -2120,7 +2071,7 @@ void LLViewerFetchedTexture::deleteCallbackEntry(const LLLoadedCallbackEntry::so
return ;
}
- S32 desired_discard = S8_MAX ;
+ S32 desired_discard = INVALID_DISCARD_LEVEL ;
S32 desired_raw_discard = INVALID_DISCARD_LEVEL ;
for(callback_list_t::iterator iter = mLoadedCallbackList.begin();
iter != mLoadedCallbackList.end(); )
@@ -2174,7 +2125,7 @@ void LLViewerFetchedTexture::deleteCallbackEntry(const LLLoadedCallbackEntry::so
void LLViewerFetchedTexture::unpauseLoadedCallbacks(const LLLoadedCallbackEntry::source_callback_list_t* callback_list)
{
if(!callback_list)
-{
+ {
mPauseLoadedCallBacks = FALSE ;
return ;
}
@@ -2203,7 +2154,7 @@ void LLViewerFetchedTexture::unpauseLoadedCallbacks(const LLLoadedCallbackEntry:
void LLViewerFetchedTexture::pauseLoadedCallbacks(const LLLoadedCallbackEntry::source_callback_list_t* callback_list)
{
if(!callback_list)
-{
+ {
return ;
}
@@ -2690,12 +2641,6 @@ void LLViewerFetchedTexture::forceToSaveRawImage(S32 desired_discard, bool from_
}
void LLViewerFetchedTexture::destroySavedRawImage()
{
- clearCallbackEntryList() ;
- //if(mForceToSaveRawImage && mDesiredSavedRawDiscardLevel >= 0 && mDesiredSavedRawDiscardLevel < getDiscardLevel())
- //{
- // return ; //can not destroy the saved raw image before it is fully fetched, otherwise causing callbacks hanging there.
- //}
-
mSavedRawImage = NULL ;
mForceToSaveRawImage = FALSE ;
mSavedRawDiscardLevel = -1 ;
@@ -2946,7 +2891,7 @@ BOOL LLViewerLODTexture::isUpdateFrozen()
void LLViewerLODTexture::processTextureStats()
{
updateVirtualSize() ;
-
+
static LLCachedControl<bool> textures_fullres(gSavedSettings,"TextureLoadFullRes");
if (textures_fullres)
diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h
index 7cb8bea4c8..b8bdeedd03 100644
--- a/indra/newview/llviewertexture.h
+++ b/indra/newview/llviewertexture.h
@@ -386,7 +386,6 @@ public:
void unpauseLoadedCallbacks(const LLLoadedCallbackEntry::source_callback_list_t* callback_list);
bool doLoadedCallbacks();
void deleteCallbackEntry(const LLLoadedCallbackEntry::source_callback_list_t* callback_list);
- void clearCallbackEntryList() ;
void addToCreateTexture();
@@ -557,7 +556,6 @@ protected:
// Timers
LLFrameTimer mLastPacketTimer; // Time since last packet.
- LLFrameTimer mStopFetchingTimer; // Time since mDecodePriority == 0.f.
BOOL mInImageList; // TRUE if image is in list (in which case don't reset priority!)
BOOL mNeedsCreateTexture;
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 13db913f60..2981dc8c82 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -1342,7 +1342,7 @@ LLViewerWindow::LLViewerWindow(
gSavedSettings.getBOOL("DisableVerticalSync"),
!gNoRender,
ignore_pixel_depth,
- 0); //gSavedSettings.getU32("RenderFSAASamples"));
+ gSavedSettings.getU32("RenderFSAASamples"));
if (!LLAppViewer::instance()->restoreErrorTrap())
{
@@ -2476,6 +2476,17 @@ void LLViewerWindow::updateUI()
// only update mouse hover set when UI is visible (since we shouldn't send hover events to invisible UI
if (gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI))
{
+ // include all ancestors of captor_view as automatically having mouse
+ if (captor_view)
+ {
+ LLView* captor_parent_view = captor_view->getParent();
+ while(captor_parent_view)
+ {
+ mouse_hover_set.insert(captor_parent_view->getHandle());
+ captor_parent_view = captor_parent_view->getParent();
+ }
+ }
+
// aggregate visible views that contain mouse cursor in display order
LLPopupView::popup_list_t popups = mPopupView->getCurrentPopups();
@@ -3801,6 +3812,140 @@ void LLViewerWindow::playSnapshotAnimAndSound()
BOOL LLViewerWindow::thumbnailSnapshot(LLImageRaw *raw, S32 preview_width, S32 preview_height, BOOL show_ui, BOOL do_rebuild, ESnapshotType type)
{
return rawSnapshot(raw, preview_width, preview_height, FALSE, FALSE, show_ui, do_rebuild, type);
+
+ // *TODO below code was broken in deferred pipeline
+ /*
+ if ((!raw) || preview_width < 10 || preview_height < 10)
+ {
+ return FALSE;
+ }
+
+ if(gResizeScreenTexture) //the window is resizing
+ {
+ return FALSE ;
+ }
+
+ setCursor(UI_CURSOR_WAIT);
+
+ // Hide all the UI widgets first and draw a frame
+ BOOL prev_draw_ui = gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI);
+
+ if ( prev_draw_ui != show_ui)
+ {
+ LLPipeline::toggleRenderDebugFeature((void*)LLPipeline::RENDER_DEBUG_FEATURE_UI);
+ }
+
+ BOOL hide_hud = !gSavedSettings.getBOOL("RenderHUDInSnapshot") && LLPipeline::sShowHUDAttachments;
+ if (hide_hud)
+ {
+ LLPipeline::sShowHUDAttachments = FALSE;
+ }
+
+ S32 render_name = gSavedSettings.getS32("RenderName");
+ gSavedSettings.setS32("RenderName", 0);
+ LLVOAvatar::updateFreezeCounter(1) ; //pause avatar updating for one frame
+
+ S32 w = preview_width ;
+ S32 h = preview_height ;
+ LLVector2 display_scale = mDisplayScale ;
+ mDisplayScale.setVec((F32)w / mWindowRectRaw.getWidth(), (F32)h / mWindowRectRaw.getHeight()) ;
+ LLRect window_rect = mWindowRectRaw;
+ mWindowRectRaw.set(0, h, w, 0);
+
+ gDisplaySwapBuffers = FALSE;
+ gDepthDirty = TRUE;
+ glClearColor(0.f, 0.f, 0.f, 0.f);
+ glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
+ setup3DRender();
+
+ LLFontGL::setFontDisplay(FALSE) ;
+ LLHUDText::setDisplayText(FALSE) ;
+ if (type == SNAPSHOT_TYPE_OBJECT_ID)
+ {
+ gObjectList.renderPickList(gViewerWindow->getWindowRectScaled(), FALSE, FALSE);
+ }
+ else
+ {
+ display(do_rebuild, 1.0f, 0, TRUE);
+ render_ui();
+ }
+
+ S32 glformat, gltype, glpixel_length ;
+ if(SNAPSHOT_TYPE_DEPTH == type)
+ {
+ glpixel_length = 4 ;
+ glformat = GL_DEPTH_COMPONENT ;
+ gltype = GL_FLOAT ;
+ }
+ else
+ {
+ glpixel_length = 3 ;
+ glformat = GL_RGB ;
+ gltype = GL_UNSIGNED_BYTE ;
+ }
+
+ raw->resize(w, h, glpixel_length);
+ glReadPixels(0, 0, w, h, glformat, gltype, raw->getData());
+
+ if(SNAPSHOT_TYPE_DEPTH == type)
+ {
+ LLViewerCamera* camerap = LLViewerCamera::getInstance();
+ F32 depth_conversion_factor_1 = (camerap->getFar() + camerap->getNear()) / (2.f * camerap->getFar() * camerap->getNear());
+ F32 depth_conversion_factor_2 = (camerap->getFar() - camerap->getNear()) / (2.f * camerap->getFar() * camerap->getNear());
+
+ //calculate the depth
+ for (S32 y = 0 ; y < h ; y++)
+ {
+ for(S32 x = 0 ; x < w ; x++)
+ {
+ S32 i = (w * y + x) << 2 ;
+
+ F32 depth_float_i = *(F32*)(raw->getData() + i);
+
+ F32 linear_depth_float = 1.f / (depth_conversion_factor_1 - (depth_float_i * depth_conversion_factor_2));
+ U8 depth_byte = F32_to_U8(linear_depth_float, camerap->getNear(), camerap->getFar());
+ *(raw->getData() + i + 0) = depth_byte;
+ *(raw->getData() + i + 1) = depth_byte;
+ *(raw->getData() + i + 2) = depth_byte;
+ *(raw->getData() + i + 3) = 255;
+ }
+ }
+ }
+
+ LLFontGL::setFontDisplay(TRUE) ;
+ LLHUDText::setDisplayText(TRUE) ;
+ mDisplayScale.setVec(display_scale) ;
+ mWindowRectRaw = window_rect;
+ setup3DRender();
+ gDisplaySwapBuffers = FALSE;
+ gDepthDirty = TRUE;
+
+ // POST SNAPSHOT
+ if (!gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI))
+ {
+ LLPipeline::toggleRenderDebugFeature((void*)LLPipeline::RENDER_DEBUG_FEATURE_UI);
+ }
+
+ if (hide_hud)
+ {
+ LLPipeline::sShowHUDAttachments = TRUE;
+ }
+
+ setCursor(UI_CURSOR_ARROW);
+
+ if (do_rebuild)
+ {
+ // If we had to do a rebuild, that means that the lists of drawables to be rendered
+ // was empty before we started.
+ // Need to reset these, otherwise we call state sort on it again when render gets called the next time
+ // and we stand a good chance of crashing on rebuild because the render drawable arrays have multiple copies of
+ // objects on them.
+ gPipeline.resetDrawOrders();
+ }
+
+ gSavedSettings.setS32("RenderName", render_name);
+
+ return TRUE;*/
}
// Saves the image from the screen to the specified filename and path.
@@ -4445,26 +4590,23 @@ void LLViewerWindow::restartDisplay(BOOL show_progress_bar)
BOOL LLViewerWindow::changeDisplaySettings(LLCoordScreen size, BOOL disable_vsync, BOOL show_progress_bar)
{
- //BOOL was_maximized = gSavedSettings.getBOOL("WindowMaximized");
+ BOOL was_maximized = gSavedSettings.getBOOL("WindowMaximized");
//gResizeScreenTexture = TRUE;
- //U32 fsaa = gSavedSettings.getU32("RenderFSAASamples");
- //U32 old_fsaa = mWindow->getFSAASamples();
-
+ U32 fsaa = gSavedSettings.getU32("RenderFSAASamples");
+ U32 old_fsaa = mWindow->getFSAASamples();
// if not maximized, use the request size
if (!mWindow->getMaximized())
{
mWindow->setSize(size);
}
- //if (fsaa == old_fsaa)
+ if (fsaa == old_fsaa)
{
return TRUE;
}
-/*
-
// Close floaters that don't handle settings change
LLFloaterReg::hideInstance("snapshot");
@@ -4480,13 +4622,13 @@ BOOL LLViewerWindow::changeDisplaySettings(LLCoordScreen size, BOOL disable_vsyn
LLCoordScreen old_pos;
mWindow->getSize(&old_size);
- //mWindow->setFSAASamples(fsaa);
+ mWindow->setFSAASamples(fsaa);
result_first_try = mWindow->switchContext(false, size, disable_vsync);
if (!result_first_try)
{
// try to switch back
- //mWindow->setFSAASamples(old_fsaa);
+ mWindow->setFSAASamples(old_fsaa);
result_second_try = mWindow->switchContext(false, old_size, disable_vsync);
if (!result_second_try)
@@ -4540,8 +4682,6 @@ BOOL LLViewerWindow::changeDisplaySettings(LLCoordScreen size, BOOL disable_vsyn
gFocusMgr.setKeyboardFocus(keyboard_focus);
return success;
-
- */
}
F32 LLViewerWindow::getWorldViewAspectRatio() const
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 9af1198df1..89ce889a61 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -696,8 +696,10 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,
mBakedTextureDatas[i].mTextureIndex = LLVOAvatarDictionary::bakedToLocalTextureIndex((EBakedTextureIndex)i);
}
- mDirtyMesh = 2; // Dirty geometry, need to regenerate.
+ mDirtyMesh = TRUE; // Dirty geometry, need to regenerate.
mMeshTexturesDirty = FALSE;
+ mShadow0Facep = NULL;
+ mShadow1Facep = NULL;
mHeadp = NULL;
mIsBuilt = FALSE;
@@ -733,6 +735,12 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,
mRippleTimeLast = 0.f;
+ mShadowImagep = LLViewerTextureManager::getFetchedTextureFromFile("foot_shadow.j2c");
+
+ // GL NOT ACTIVE HERE
+ //gGL.getTexUnit(0)->bind(mShadowImagep.get());
+ //mShadowImagep->setAddressMode(LLTexUnit::TAM_CLAMP);
+
mInAir = FALSE;
mStepOnLand = TRUE;
@@ -1961,7 +1969,7 @@ void LLVOAvatar::updateMeshData()
}
if(num_vertices < 1)//skip empty meshes
{
- continue ;
+ break ;
}
if(last_v_num > 0)//put the last inserted part into next vertex buffer.
{
@@ -1983,8 +1991,6 @@ void LLVOAvatar::updateMeshData()
// resize immediately
facep->setSize(num_vertices, num_indices);
- bool terse_update = false;
-
if(facep->mVertexBuffer.isNull())
{
facep->mVertexBuffer = new LLVertexBufferAvatar();
@@ -1992,16 +1998,8 @@ void LLVOAvatar::updateMeshData()
}
else
{
- if (facep->mVertexBuffer->getRequestedIndices() == num_indices &&
- facep->mVertexBuffer->getRequestedVerts() == num_vertices)
- {
- terse_update = true;
- }
- else
- {
facep->mVertexBuffer->resizeBuffer(num_vertices, num_indices) ;
}
- }
facep->setGeomIndex(0);
facep->setIndicesIndex(0);
@@ -2015,7 +2013,7 @@ void LLVOAvatar::updateMeshData()
for(S32 k = j ; k < part_index ; k++)
{
- mMeshLOD[k]->updateFaceData(facep, mAdjustedPixelArea, k == MESH_ID_HAIR, terse_update);
+ mMeshLOD[k]->updateFaceData(facep, mAdjustedPixelArea, k == MESH_ID_HAIR);
}
stop_glerror();
@@ -2425,6 +2423,12 @@ void LLVOAvatar::idleUpdateMisc(bool detailed_update)
LLJoint::sNumUpdates = 0;
LLJoint::sNumTouches = 0;
+ // *NOTE: this is necessary for the floating name text above your head.
+ if (mDrawable.notNull())
+ {
+ gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_SHADOW, TRUE);
+ }
+
BOOL visible = isVisible() || mNeedsAnimUpdate;
// update attachments positions
@@ -2747,7 +2751,7 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last)
{
// update chat bubble
//--------------------------------------------------------------------
- // draw text label over character's head
+ // draw text label over characters head
//--------------------------------------------------------------------
if (mChatTimer.getElapsedTimeF32() > BUBBLE_CHAT_TIME)
{
@@ -3777,20 +3781,13 @@ U32 LLVOAvatar::renderSkinned(EAvatarRenderPass pass)
return num_indices;
}
- LLFace* face = mDrawable->getFace(0);
-
- bool needs_rebuild = !face || face->mVertexBuffer.isNull() || mDrawable->isState(LLDrawable::REBUILD_GEOMETRY);
-
- if (needs_rebuild || mDirtyMesh)
+ if (mDirtyMesh || mDrawable->isState(LLDrawable::REBUILD_GEOMETRY))
{ //LOD changed or new mesh created, allocate new vertex buffer if needed
- if (needs_rebuild || mDirtyMesh >= 2 || mVisibilityRank <= 4)
- {
updateMeshData();
- mDirtyMesh = 0;
+ mDirtyMesh = FALSE;
mNeedsSkin = TRUE;
mDrawable->clearState(LLDrawable::REBUILD_GEOMETRY);
}
- }
if (LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_AVATAR) <= 0)
{
@@ -4037,6 +4034,54 @@ U32 LLVOAvatar::renderRigid()
return num_indices;
}
+U32 LLVOAvatar::renderFootShadows()
+{
+ U32 num_indices = 0;
+
+ if (!mIsBuilt)
+ {
+ return 0;
+ }
+
+ if (isSelf() && (!gAgent.needsRenderAvatar() || !gAgent.needsRenderHead()))
+ {
+ return 0;
+ }
+
+ if (!mIsBuilt)
+ {
+ return 0;
+ }
+
+ // Don't render foot shadows if your lower body is completely invisible.
+ // (non-humanoid avatars rule!)
+ if (!isTextureVisible(TEX_LOWER_BAKED))
+ {
+ return 0;
+ }
+
+ // Update the shadow, tractor, and text label geometry.
+ if (mDrawable->isState(LLDrawable::REBUILD_SHADOW) && !isImpostor())
+ {
+ updateShadowFaces();
+ mDrawable->clearState(LLDrawable::REBUILD_SHADOW);
+ }
+
+ U32 foot_mask = LLVertexBuffer::MAP_VERTEX |
+ LLVertexBuffer::MAP_TEXCOORD0;
+
+ LLGLDepthTest test(GL_TRUE, GL_FALSE);
+ //render foot shadows
+ LLGLEnable blend(GL_BLEND);
+ gGL.getTexUnit(0)->bind(mShadowImagep, TRUE);
+ glColor4fv(mShadow0Facep->getRenderColor().mV);
+ mShadow0Facep->renderIndexed(foot_mask);
+ glColor4fv(mShadow1Facep->getRenderColor().mV);
+ mShadow1Facep->renderIndexed(foot_mask);
+
+ return num_indices;
+}
+
U32 LLVOAvatar::renderImpostor(LLColor4U color, S32 diffuse_channel)
{
if (!mImpostor.isComplete())
@@ -4162,6 +4207,11 @@ void LLVOAvatar::updateTextures()
{
setDebugText(llformat("%4.0f:%4.0f", fsqrtf(mMinPixelArea),fsqrtf(mMaxPixelArea)));
}
+
+ if( render_avatar )
+ {
+ mShadowImagep->addTextureStats(mPixelArea);
+ }
}
@@ -5428,7 +5478,7 @@ BOOL LLVOAvatar::updateJointLODs()
if (res)
{
sNumLODChangesThisFrame++;
- dirtyMesh(2);
+ dirtyMesh();
return TRUE;
}
}
@@ -5452,9 +5502,18 @@ LLDrawable *LLVOAvatar::createDrawable(LLPipeline *pipeline)
mDrawable->addFace(poolp, NULL);
mDrawable->setRenderType(LLPipeline::RENDER_TYPE_AVATAR);
+ LLFace *facep;
+
+ // Add faces for the foot shadows
+ facep = mDrawable->addFace((LLFacePool*) NULL, mShadowImagep);
+ mShadow0Facep = facep;
+
+ facep = mDrawable->addFace((LLFacePool*) NULL, mShadowImagep);
+ mShadow1Facep = facep;
+
mNumInitFaces = mDrawable->getNumFaces() ;
- dirtyMesh(2);
+ dirtyMesh();
return mDrawable;
}
@@ -5494,6 +5553,107 @@ BOOL LLVOAvatar::updateGeometry(LLDrawable *drawable)
}
//-----------------------------------------------------------------------------
+// updateShadowFaces()
+//-----------------------------------------------------------------------------
+void LLVOAvatar::updateShadowFaces()
+{
+ LLFace *face0p = mShadow0Facep;
+ LLFace *face1p = mShadow1Facep;
+
+ //
+ // render avatar shadows
+ //
+ if (mInAir || mUpdatePeriod >= IMPOSTOR_PERIOD)
+ {
+ face0p->setSize(0, 0);
+ face1p->setSize(0, 0);
+ return;
+ }
+
+ LLSprite sprite(mShadowImagep.notNull() ? mShadowImagep->getID() : LLUUID::null);
+ sprite.setFollow(FALSE);
+ const F32 cos_angle = gSky.getSunDirection().mV[2];
+ F32 cos_elev = sqrt(1 - cos_angle * cos_angle);
+ if (cos_angle < 0) cos_elev = -cos_elev;
+ sprite.setSize(0.4f + cos_elev * 0.8f, 0.3f);
+ LLVector3 sun_vec = gSky.mVOSkyp ? gSky.mVOSkyp->getToSun() : LLVector3(0.f, 0.f, 0.f);
+
+ if (mShadowImagep->hasGLTexture())
+ {
+ LLVector3 normal;
+ LLVector3d shadow_pos;
+ LLVector3 shadow_pos_agent;
+ F32 foot_height;
+
+ if (mFootLeftp)
+ {
+ LLVector3 joint_world_pos = mFootLeftp->getWorldPosition();
+ // this only does a ray straight down from the foot, as our client-side ray-tracing is very limited now
+ // but we make an explicit ray trace call in expectation of future improvements
+ resolveRayCollisionAgent(gAgent.getPosGlobalFromAgent(joint_world_pos),
+ gAgent.getPosGlobalFromAgent(gSky.getSunDirection() + joint_world_pos), shadow_pos, normal);
+ shadow_pos_agent = gAgent.getPosAgentFromGlobal(shadow_pos);
+ foot_height = joint_world_pos.mV[VZ] - shadow_pos_agent.mV[VZ];
+
+ // Pull sprite in direction of surface normal
+ shadow_pos_agent += normal * SHADOW_OFFSET_AMT;
+
+ // Render sprite
+ sprite.setNormal(normal);
+ if (isSelf() && gAgentCamera.getCameraMode() == CAMERA_MODE_MOUSELOOK)
+ {
+ sprite.setColor(0.f, 0.f, 0.f, 0.f);
+ }
+ else
+ {
+ sprite.setColor(0.f, 0.f, 0.f, clamp_rescale(foot_height, MIN_SHADOW_HEIGHT, MAX_SHADOW_HEIGHT, 0.5f, 0.f));
+ }
+ sprite.setPosition(shadow_pos_agent);
+
+ LLVector3 foot_to_knee = mKneeLeftp->getWorldPosition() - joint_world_pos;
+ //foot_to_knee.normalize();
+ foot_to_knee -= projected_vec(foot_to_knee, sun_vec);
+ sprite.setYaw(azimuth(sun_vec - foot_to_knee));
+
+ sprite.updateFace(*face0p);
+ }
+
+ if (mFootRightp)
+ {
+ LLVector3 joint_world_pos = mFootRightp->getWorldPosition();
+ // this only does a ray straight down from the foot, as our client-side ray-tracing is very limited now
+ // but we make an explicit ray trace call in expectation of future improvements
+ resolveRayCollisionAgent(gAgent.getPosGlobalFromAgent(joint_world_pos),
+ gAgent.getPosGlobalFromAgent(gSky.getSunDirection() + joint_world_pos), shadow_pos, normal);
+ shadow_pos_agent = gAgent.getPosAgentFromGlobal(shadow_pos);
+ foot_height = joint_world_pos.mV[VZ] - shadow_pos_agent.mV[VZ];
+
+ // Pull sprite in direction of surface normal
+ shadow_pos_agent += normal * SHADOW_OFFSET_AMT;
+
+ // Render sprite
+ sprite.setNormal(normal);
+ if (isSelf() && gAgentCamera.getCameraMode() == CAMERA_MODE_MOUSELOOK)
+ {
+ sprite.setColor(0.f, 0.f, 0.f, 0.f);
+ }
+ else
+ {
+ sprite.setColor(0.f, 0.f, 0.f, clamp_rescale(foot_height, MIN_SHADOW_HEIGHT, MAX_SHADOW_HEIGHT, 0.5f, 0.f));
+ }
+ sprite.setPosition(shadow_pos_agent);
+
+ LLVector3 foot_to_knee = mKneeRightp->getWorldPosition() - joint_world_pos;
+ //foot_to_knee.normalize();
+ foot_to_knee -= projected_vec(foot_to_knee, sun_vec);
+ sprite.setYaw(azimuth(sun_vec - foot_to_knee));
+
+ sprite.updateFace(*face1p);
+ }
+ }
+}
+
+//-----------------------------------------------------------------------------
// updateSexDependentLayerSets()
//-----------------------------------------------------------------------------
void LLVOAvatar::updateSexDependentLayerSets( BOOL upload_bake )
@@ -5508,12 +5668,9 @@ void LLVOAvatar::updateSexDependentLayerSets( BOOL upload_bake )
//-----------------------------------------------------------------------------
void LLVOAvatar::dirtyMesh()
{
- dirtyMesh(1);
-}
-void LLVOAvatar::dirtyMesh(S32 priority)
-{
- mDirtyMesh = llmax(mDirtyMesh, priority);
+ mDirtyMesh = TRUE;
}
+
//-----------------------------------------------------------------------------
// hideSkirt()
//-----------------------------------------------------------------------------
@@ -5547,7 +5704,6 @@ BOOL LLVOAvatar::setParent(LLViewerObject* parent)
void LLVOAvatar::addChild(LLViewerObject *childp)
{
- childp->extractAttachmentItemID(); // find the inventory item this object is associated with.
LLViewerObject::addChild(childp);
if (childp->mDrawable)
{
@@ -5637,15 +5793,6 @@ BOOL LLVOAvatar::canAttachMoreObjects() const
}
//-----------------------------------------------------------------------------
-// canAttachMoreObjects()
-// Returns true if we can attach <n> more objects.
-//-----------------------------------------------------------------------------
-BOOL LLVOAvatar::canAttachMoreObjects(U32 n) const
-{
- return (getNumAttachments() + n) <= MAX_AGENT_ATTACHMENTS;
-}
-
-//-----------------------------------------------------------------------------
// lazyAttach()
//-----------------------------------------------------------------------------
void LLVOAvatar::lazyAttach()
@@ -6097,14 +6244,10 @@ void LLVOAvatar::updateMeshTextures()
// When an avatar is changing clothes and not in Appearance mode,
// use the last-known good baked texture until it finish the first
// render of the new layerset.
-
- const BOOL layerset_invalid = !mBakedTextureDatas[i].mTexLayerSet
- || !mBakedTextureDatas[i].mTexLayerSet->getComposite()->isInitialized()
- || !mBakedTextureDatas[i].mTexLayerSet->isLocalTextureDataAvailable();
-
use_lkg_baked_layer[i] = (!is_layer_baked[i]
&& (mBakedTextureDatas[i].mLastTextureIndex != IMG_DEFAULT_AVATAR)
- && layerset_invalid);
+ && mBakedTextureDatas[i].mTexLayerSet
+ && !mBakedTextureDatas[i].mTexLayerSet->getComposite()->isInitialized());
if (use_lkg_baked_layer[i])
{
mBakedTextureDatas[i].mTexLayerSet->setUpdatesEnabled(TRUE);
@@ -7792,15 +7935,18 @@ BOOL LLVOAvatar::updateLOD()
BOOL res = updateJointLODs();
LLFace* facep = mDrawable->getFace(0);
- if (facep->mVertexBuffer.isNull())
+ if (facep->mVertexBuffer.isNull() ||
+ (LLVertexBuffer::sEnableVBOs &&
+ ((facep->mVertexBuffer->getUsage() == GL_STATIC_DRAW ? TRUE : FALSE) !=
+ (facep->getPool()->getVertexShaderLevel() > 0 ? TRUE : FALSE))))
{
- dirtyMesh(2);
+ mDirtyMesh = TRUE;
}
- if (mDirtyMesh >= 2 || mDrawable->isState(LLDrawable::REBUILD_GEOMETRY))
+ if (mDirtyMesh || mDrawable->isState(LLDrawable::REBUILD_GEOMETRY))
{ //LOD changed or new mesh created, allocate new vertex buffer if needed
updateMeshData();
- mDirtyMesh = 0;
+ mDirtyMesh = FALSE;
mNeedsSkin = TRUE;
mDrawable->clearState(LLDrawable::REBUILD_GEOMETRY);
}
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 6d9424c8be..0934f5df36 100644
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -336,6 +336,7 @@ private:
**/
public:
+ U32 renderFootShadows();
U32 renderImpostor(LLColor4U color = LLColor4U(255,255,255,255), S32 diffuse_channel = 0);
U32 renderRigid();
U32 renderSkinned(EAvatarRenderPass pass);
@@ -572,8 +573,7 @@ protected:
void releaseMeshData();
virtual void restoreMeshData();
private:
- void dirtyMesh(S32 priority); // Dirty the avatar mesh, with priority
- S32 mDirtyMesh; // 0 -- not dirty, 1 -- morphed, 2 -- LOD
+ BOOL mDirtyMesh;
BOOL mMeshTexturesDirty;
typedef std::multimap<std::string, LLPolyMesh*> polymesh_map_t;
@@ -681,7 +681,6 @@ public:
void rebuildHUD();
void resetHUDAttachments();
BOOL canAttachMoreObjects() const;
- BOOL canAttachMoreObjects(U32 n) const;
protected:
U32 getNumAttachments() const; // O(N), not O(1)
@@ -1044,7 +1043,7 @@ protected: // Shared with LLVOAvatarSelf
*******************************************************************************/
}; // LLVOAvatar
-extern const F32 SELF_ADDITIONAL_PRI;
extern const S32 MAX_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL;
+extern const F32 SELF_ADDITIONAL_PRI;
#endif // LL_VO_AVATAR_H
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index b6055d82e3..a28482b4de 100644
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -1010,44 +1010,6 @@ BOOL LLVOAvatarSelf::isWearingAttachment(const LLUUID& inv_item_id) const
}
//-----------------------------------------------------------------------------
-BOOL LLVOAvatarSelf::attachmentWasRequested(const LLUUID& inv_item_id) const
-{
- const F32 REQUEST_EXPIRATION_SECONDS = 5.0; // any request older than this is ignored/removed.
- std::map<LLUUID,LLTimer>::iterator it = mAttachmentRequests.find(inv_item_id);
- if (it != mAttachmentRequests.end())
- {
- const LLTimer& request_time = it->second;
- F32 request_time_elapsed = request_time.getElapsedTimeF32();
- if (request_time_elapsed > REQUEST_EXPIRATION_SECONDS)
- {
- mAttachmentRequests.erase(it);
- return FALSE;
- }
- else
- {
- return TRUE;
- }
- }
- else
- {
- return FALSE;
- }
-}
-
-//-----------------------------------------------------------------------------
-void LLVOAvatarSelf::addAttachmentRequest(const LLUUID& inv_item_id)
-{
- LLTimer current_time;
- mAttachmentRequests[inv_item_id] = current_time;
-}
-
-//-----------------------------------------------------------------------------
-void LLVOAvatarSelf::removeAttachmentRequest(const LLUUID& inv_item_id)
-{
- mAttachmentRequests.erase(inv_item_id);
-}
-
-//-----------------------------------------------------------------------------
// getWornAttachment()
//-----------------------------------------------------------------------------
LLViewerObject* LLVOAvatarSelf::getWornAttachment(const LLUUID& inv_item_id)
@@ -1099,10 +1061,8 @@ const LLViewerJointAttachment *LLVOAvatarSelf::attachObject(LLViewerObject *view
// Should just be the last object added
if (attachment->isObjectAttached(viewer_object))
{
- const LLUUID& attachment_id = viewer_object->getAttachmentItemID();
+ const LLUUID& attachment_id = viewer_object->getItemID();
LLAppearanceMgr::instance().registerAttachment(attachment_id);
- // Clear any pending requests once the attachment arrives.
- removeAttachmentRequest(attachment_id);
}
return attachment;
@@ -1111,7 +1071,7 @@ const LLViewerJointAttachment *LLVOAvatarSelf::attachObject(LLViewerObject *view
//virtual
BOOL LLVOAvatarSelf::detachObject(LLViewerObject *viewer_object)
{
- const LLUUID attachment_id = viewer_object->getAttachmentItemID();
+ const LLUUID attachment_id = viewer_object->getItemID();
if (LLVOAvatar::detachObject(viewer_object))
{
// the simulator should automatically handle permission revocation
@@ -1149,29 +1109,6 @@ BOOL LLVOAvatarSelf::detachObject(LLViewerObject *viewer_object)
return FALSE;
}
-// static
-BOOL LLVOAvatarSelf::detachAttachmentIntoInventory(const LLUUID &item_id)
-{
- LLInventoryItem* item = gInventory.getItem(item_id);
- if (item)
- {
- gMessageSystem->newMessageFast(_PREHASH_DetachAttachmentIntoInv);
- gMessageSystem->nextBlockFast(_PREHASH_ObjectData);
- gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
- gMessageSystem->addUUIDFast(_PREHASH_ItemID, item_id);
- gMessageSystem->sendReliable(gAgent.getRegion()->getHost());
-
- // this object might have been selected, so let the selection manager know it's gone now
- LLViewerObject *found_obj = gObjectList.findObject(item_id);
- if (found_obj)
- {
- LLSelectMgr::getInstance()->remove(found_obj);
- }
- return TRUE;
- }
- return FALSE;
-}
-
U32 LLVOAvatarSelf::getNumWearables(LLVOAvatarDefines::ETextureIndex i) const
{
LLWearableType::EType type = LLVOAvatarDictionary::getInstance()->getTEWearableType(i);
@@ -1682,15 +1619,15 @@ void LLVOAvatarSelf::setLocalTexture(ETextureIndex type, LLViewerTexture* src_te
if (isSelf())
{
if (gAgentAvatarp->isUsingBakedTextures())
- {
- requestLayerSetUpdate(type);
- }
+ {
+ requestLayerSetUpdate(type);
+ }
else
- {
- LLVisualParamHint::requestHintUpdates();
+ {
+ LLVisualParamHint::requestHintUpdates();
+ }
}
}
- }
else
{
tex->setLoadedCallback(onLocalTextureLoaded, desired_discard, TRUE, FALSE, new LLAvatarTexData(getID(), type), NULL);
@@ -2202,11 +2139,6 @@ void LLVOAvatarSelf::setNewBakedTexture( ETextureIndex te, const LLUUID& uuid )
void LLVOAvatarSelf::outputRezDiagnostics() const
{
- if(!gSavedSettings.getBOOL("DebugAvatarLocalTexLoadedTime"))
- {
- return ;
- }
-
const F32 final_time = mDebugSelfLoadTimer.getElapsedTimeF32();
llinfos << "REZTIME: Myself rez stats:" << llendl;
llinfos << "\t Time from avatar creation to load wearables: " << (S32)mDebugTimeWearablesLoaded << llendl;
diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h
index eb2475f666..02d0a28f46 100644
--- a/indra/newview/llvoavatarself.h
+++ b/indra/newview/llvoavatarself.h
@@ -285,18 +285,10 @@ protected:
public:
void updateAttachmentVisibility(U32 camera_mode);
BOOL isWearingAttachment(const LLUUID& inv_item_id) const;
- BOOL attachmentWasRequested(const LLUUID& inv_item_id) const;
- void addAttachmentRequest(const LLUUID& inv_item_id);
- void removeAttachmentRequest(const LLUUID& inv_item_id);
LLViewerObject* getWornAttachment(const LLUUID& inv_item_id);
const std::string getAttachedPointName(const LLUUID& inv_item_id) const;
/*virtual*/ const LLViewerJointAttachment *attachObject(LLViewerObject *viewer_object);
/*virtual*/ BOOL detachObject(LLViewerObject *viewer_object);
- static BOOL detachAttachmentIntoInventory(const LLUUID& item_id);
-
-private:
- // Track attachments that have been requested but have not arrived yet.
- mutable std::map<LLUUID,LLTimer> mAttachmentRequests;
//--------------------------------------------------------------------
// HUDs
diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp
index 7ae8c2c07d..a649c19014 100644
--- a/indra/newview/llvosky.cpp
+++ b/indra/newview/llvosky.cpp
@@ -969,10 +969,7 @@ void LLVOSky::calcAtmospherics(void)
}
temp2.mV[1] = llmax(0.f, lighty);
- if(temp2.mV[1] > 0.f)
- {
- temp2.mV[1] = 1.f / temp2.mV[1];
- }
+ temp2.mV[1] = 1.f / temp2.mV[1];
componentMultBy(sunlight, componentExp((light_atten * -1.f) * temp2.mV[1]));
// Distance
diff --git a/indra/newview/llvotree.cpp b/indra/newview/llvotree.cpp
index 37a974be28..3e0c65abff 100644
--- a/indra/newview/llvotree.cpp
+++ b/indra/newview/llvotree.cpp
@@ -442,35 +442,22 @@ void LLVOTree::render(LLAgent &agent)
void LLVOTree::setPixelAreaAndAngle(LLAgent &agent)
{
- LLVector3 center = getPositionAgent();//center of tree.
- LLVector3 viewer_pos_agent = gAgentCamera.getCameraPositionAgent();
- LLVector3 lookAt = center - viewer_pos_agent;
- F32 dist = lookAt.normVec() ;
- F32 cos_angle_to_view_dir = lookAt * LLViewerCamera::getInstance()->getXAxis() ;
+ // First calculate values as for any other object (for mAppAngle)
+ LLViewerObject::setPixelAreaAndAngle(agent);
+
+ // Re-calculate mPixelArea accurately
- F32 range = dist - getMinScale()/2;
- if (range < F_ALMOST_ZERO || isHUDAttachment()) // range == zero
- {
- mAppAngle = 180.f;
- }
- else
- {
- mAppAngle = (F32) atan2( getMaxScale(), range) * RAD_TO_DEG;
- }
+ // This should be the camera's center, as soon as we move to all region-local.
+ LLVector3 relative_position = getPositionAgent() - gAgentCamera.getCameraPositionAgent();
+ F32 range_squared = relative_position.lengthSquared() ;
F32 max_scale = mBillboardScale * getMaxScale();
F32 area = max_scale * (max_scale*mBillboardRatio);
- // Compute pixels per meter at the given range
- F32 pixels_per_meter = LLViewerCamera::getInstance()->getViewHeightInPixels() / (tan(LLViewerCamera::getInstance()->getView()) * dist);
- mPixelArea = pixels_per_meter * pixels_per_meter * area ;
- F32 importance = LLFace::calcImportanceToCamera(cos_angle_to_view_dir, dist) ;
- mPixelArea = LLFace::adjustPixelArea(importance, mPixelArea) ;
- if (mPixelArea > LLViewerCamera::getInstance()->getScreenPixelArea())
- {
- mAppAngle = 180.f;
- }
+ // Compute pixels per meter at the given range
+ F32 pixels_per_meter = LLViewerCamera::getInstance()->getViewHeightInPixels() / tan(LLViewerCamera::getInstance()->getView());
+ mPixelArea = (pixels_per_meter) * (pixels_per_meter) * area / range_squared;
#if 0
// mAppAngle is a bit of voodoo;
// use the one calculated LLViewerObject::setPixelAreaAndAngle above
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 761e12020b..4e3be0f703 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -87,14 +87,8 @@ static LLFastTimer::DeclareTimer FTM_GEN_VOLUME("Generate Volumes");
class LLMediaDataClientObjectImpl : public LLMediaDataClientObject
{
public:
- LLMediaDataClientObjectImpl(LLVOVolume *obj, bool isNew) : mObject(obj), mNew(isNew)
- {
- mObject->addMDCImpl();
- }
- ~LLMediaDataClientObjectImpl()
- {
- mObject->removeMDCImpl();
- }
+ LLMediaDataClientObjectImpl(LLVOVolume *obj, bool isNew) : mObject(obj), mNew(isNew) {}
+ LLMediaDataClientObjectImpl() { mObject = NULL; }
virtual U8 getMediaDataCount() const
{ return mObject->getNumTEs(); }
@@ -119,18 +113,6 @@ public:
}
return result;
}
- virtual bool isCurrentMediaUrl(U8 index, const std::string &url) const
- {
- LLTextureEntry *te = mObject->getTE(index);
- if (te)
- {
- if (te->getMediaData())
- {
- return (te->getMediaData()->getCurrentURL() == url);
- }
- }
- return url.empty();
- }
virtual LLUUID getID() const
{ return mObject->getID(); }
@@ -205,7 +187,6 @@ LLVOVolume::LLVOVolume(const LLUUID &id, const LLPCode pcode, LLViewerRegion *re
mMediaImplList.resize(getNumTEs());
mLastFetchedMediaVersion = -1;
mIndexInTex = 0;
- mMDCImplCount = 0;
}
LLVOVolume::~LLVOVolume()
@@ -231,12 +212,9 @@ void LLVOVolume::markDead()
{
if (!mDead)
{
- if(getMDCImplCount() > 0)
- {
- LLMediaDataClientObject::ptr_t obj = new LLMediaDataClientObjectImpl(const_cast<LLVOVolume*>(this), false);
- if (sObjectMediaClient) sObjectMediaClient->removeFromQueue(obj);
- if (sObjectMediaNavigateClient) sObjectMediaNavigateClient->removeFromQueue(obj);
- }
+ LLMediaDataClientObject::ptr_t obj = new LLMediaDataClientObjectImpl(const_cast<LLVOVolume*>(this), false);
+ if (sObjectMediaClient) sObjectMediaClient->removeFromQueue(obj);
+ if (sObjectMediaNavigateClient) sObjectMediaNavigateClient->removeFromQueue(obj);
// Detach all media impls from this object
for(U32 i = 0 ; i < mMediaImplList.size() ; i++)
@@ -2041,12 +2019,12 @@ void LLVOVolume::mediaNavigated(LLViewerMediaImpl *impl, LLPluginClassMedia* plu
}
else
{
- LL_WARNS("MediaOnAPrim") << "Couldn't find media entry!" << LL_ENDL;
+ llwarns << "Couldn't find media entry!" << llendl;
}
if(block_navigation)
{
- LL_INFOS("MediaOnAPrim") << "blocking navigate to URI " << new_location << LL_ENDL;
+ llinfos << "blocking navigate to URI " << new_location << llendl;
// "bounce back" to the current URL from the media entry
mediaNavigateBounceBack(face_index);
@@ -2054,7 +2032,7 @@ void LLVOVolume::mediaNavigated(LLViewerMediaImpl *impl, LLPluginClassMedia* plu
else if (sObjectMediaNavigateClient)
{
- LL_DEBUGS("MediaOnAPrim") << "broadcasting navigate with URI " << new_location << LL_ENDL;
+ llinfos << "broadcasting navigate with URI " << new_location << llendl;
sObjectMediaNavigateClient->navigate(new LLMediaDataClientObjectImpl(this, false), face_index, new_location);
}
@@ -2076,19 +2054,14 @@ void LLVOVolume::mediaEvent(LLViewerMediaImpl *impl, LLPluginClassMedia* plugin,
}
break;
- case LLViewerMediaImpl::MEDIANAVSTATE_FIRST_LOCATION_CHANGED_SPURIOUS:
- // This navigate didn't change the current URL.
- LL_DEBUGS("MediaOnAPrim") << " NOT broadcasting navigate (spurious)" << LL_ENDL;
- break;
-
case LLViewerMediaImpl::MEDIANAVSTATE_SERVER_FIRST_LOCATION_CHANGED:
// This is the first location changed event after the start of a server-directed nav. Don't broadcast it.
- LL_INFOS("MediaOnAPrim") << " NOT broadcasting navigate (server-directed)" << LL_ENDL;
+ llinfos << " NOT broadcasting navigate (server-directed)" << llendl;
break;
default:
// This is a subsequent location-changed due to a redirect. Don't broadcast.
- LL_INFOS("MediaOnAPrim") << " NOT broadcasting navigate (redirect)" << LL_ENDL;
+ llinfos << " NOT broadcasting navigate (redirect)" << llendl;
break;
}
}
@@ -2105,14 +2078,9 @@ void LLVOVolume::mediaEvent(LLViewerMediaImpl *impl, LLPluginClassMedia* plugin,
}
break;
- case LLViewerMediaImpl::MEDIANAVSTATE_COMPLETE_BEFORE_LOCATION_CHANGED_SPURIOUS:
- // This navigate didn't change the current URL.
- LL_DEBUGS("MediaOnAPrim") << " NOT broadcasting navigate (spurious)" << LL_ENDL;
- break;
-
case LLViewerMediaImpl::MEDIANAVSTATE_SERVER_COMPLETE_BEFORE_LOCATION_CHANGED:
// This is the the navigate complete event from a server-directed nav. Don't broadcast it.
- LL_INFOS("MediaOnAPrim") << " NOT broadcasting navigate (server-directed)" << LL_ENDL;
+ llinfos << " NOT broadcasting navigate (server-directed)" << llendl;
break;
default:
@@ -2486,17 +2454,6 @@ void LLVOVolume::updateSpotLightPriority()
}
-bool LLVOVolume::isLightSpotlight() const
-{
- LLLightImageParams* params = (LLLightImageParams*) getParameterEntry(LLNetworkData::PARAMS_LIGHT_IMAGE);
- if (params)
- {
- return params->isLightSpotlight();
- }
- return false;
-}
-
-
LLViewerTexture* LLVOVolume::getLightTexture()
{
LLUUID id = getLightTextureID();
@@ -2956,7 +2913,9 @@ F32 LLVOVolume::getBinRadius()
{
LLFace* face = mDrawable->getFace(i);
if (face->getPoolType() == LLDrawPool::POOL_ALPHA &&
- !face->canRenderAsMask())
+ (!LLPipeline::sFastAlpha ||
+ face->getFaceColor().mV[3] != 1.f ||
+ !face->getTexture()->getIsAlphaMask()))
{
alpha_wrap = TRUE;
break;
@@ -3232,10 +3191,11 @@ void LLVolumeGeometryManager::registerFace(LLSpatialGroup* group, LLFace* facep,
S32 idx = draw_vec.size()-1;
+
BOOL fullbright = (type == LLRenderPass::PASS_FULLBRIGHT) ||
- (type == LLRenderPass::PASS_INVISIBLE) ||
- (type == LLRenderPass::PASS_ALPHA && facep->isState(LLFace::FULLBRIGHT));
-
+ (type == LLRenderPass::PASS_INVISIBLE) ||
+ (type == LLRenderPass::PASS_ALPHA ? facep->isState(LLFace::FULLBRIGHT) : FALSE);
+
if (!fullbright && type != LLRenderPass::PASS_GLOW && !facep->mVertexBuffer->hasDataType(LLVertexBuffer::TYPE_NORMAL))
{
llwarns << "Non fullbright face has no normals!" << llendl;
@@ -3260,12 +3220,16 @@ void LLVolumeGeometryManager::registerFace(LLSpatialGroup* group, LLFace* facep,
model_mat = &(drawable->getRegion()->mRenderMatrix);
}
-
- U8 bump = (type == LLRenderPass::PASS_BUMP || type == LLRenderPass::PASS_POST_BUMP) ? facep->getTextureEntry()->getBumpmap() : 0;
+ U8 bump = (type == LLRenderPass::PASS_BUMP ? facep->getTextureEntry()->getBumpmap() : 0);
LLViewerTexture* tex = facep->getTexture();
- U8 glow = (U8) (facep->getTextureEntry()->getGlow() * 255);
+ U8 glow = 0;
+
+ if (type == LLRenderPass::PASS_GLOW)
+ {
+ glow = (U8) (facep->getTextureEntry()->getGlow() * 255);
+ }
if (facep->mVertexBuffer.isNull())
{
@@ -3330,7 +3294,6 @@ void LLVolumeGeometryManager::getGeometry(LLSpatialGroup* group)
static LLFastTimer::DeclareTimer FTM_REBUILD_VOLUME_VB("Volume");
static LLFastTimer::DeclareTimer FTM_REBUILD_VBO("VBO Rebuilt");
-
void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
{
if (group->changeLOD())
@@ -3456,7 +3419,10 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
if (type == LLDrawPool::POOL_ALPHA)
{
- if (facep->canRenderAsMask())
+ if (LLPipeline::sFastAlpha &&
+ (te->getColor().mV[VW] == 1.0f) &&
+ (!te->getFullbright()) && // hack: alpha masking renders fullbright faces invisible, need to figure out why - for now, avoid
+ facep->getTexture()->getIsAlphaMask())
{ //can be treated as alpha mask
simple_faces.push_back(facep);
}
@@ -3558,8 +3524,6 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
}
static LLFastTimer::DeclareTimer FTM_VOLUME_GEOM("Volume Geometry");
-static LLFastTimer::DeclareTimer FTM_VOLUME_GEOM_PARTIAL("Terse Rebuild");
-
void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group)
{
llassert(group);
@@ -3572,7 +3536,6 @@ void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group)
for (LLSpatialGroup::element_iter drawable_iter = group->getData().begin(); drawable_iter != group->getData().end(); ++drawable_iter)
{
- LLFastTimer t(FTM_VOLUME_GEOM_PARTIAL);
LLDrawable* drawablep = *drawable_iter;
if (drawablep->isDead() || drawablep->isState(LLDrawable::FORCE_INVISIBLE) )
@@ -3800,12 +3763,15 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::
const LLTextureEntry* te = facep->getTextureEntry();
- BOOL is_alpha = (facep->getPoolType() == LLDrawPool::POOL_ALPHA) ? TRUE : FALSE;
+ BOOL is_alpha = facep->getPoolType() == LLDrawPool::POOL_ALPHA ? TRUE : FALSE;
if (is_alpha)
{
// can we safely treat this as an alpha mask?
- if (facep->canRenderAsMask())
+ if (LLPipeline::sFastAlpha &&
+ (te->getColor().mV[VW] == 1.0f) &&
+ (!te->getFullbright()) && // hack: alpha masking renders fullbright faces invisible, need to figure out why - for now, avoid
+ facep->getTexture()->getIsAlphaMask())
{
if (te->getFullbright())
{
@@ -3830,76 +3796,66 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::
&& group->mSpatialPartition->mPartitionType != LLViewerRegion::PARTITION_HUD
&& LLPipeline::sRenderBump
&& te->getShiny())
- { //shiny
+ {
if (tex->getPrimaryFormat() == GL_ALPHA)
- { //invisiprim+shiny
+ {
registerFace(group, facep, LLRenderPass::PASS_INVISI_SHINY);
registerFace(group, facep, LLRenderPass::PASS_INVISIBLE);
}
else if (LLPipeline::sRenderDeferred)
- { //deferred rendering
- if (te->getFullbright())
- { //register in post deferred fullbright shiny pass
- registerFace(group, facep, LLRenderPass::PASS_FULLBRIGHT_SHINY);
- if (te->getBumpmap())
- { //register in post deferred bump pass
- registerFace(group, facep, LLRenderPass::PASS_POST_BUMP);
- }
- }
- else if (te->getBumpmap())
- { //register in deferred bump pass
+ {
+ if (te->getBumpmap())
+ {
registerFace(group, facep, LLRenderPass::PASS_BUMP);
}
+ else if (te->getFullbright())
+ {
+ registerFace(group, facep, LLRenderPass::PASS_FULLBRIGHT_SHINY);
+ }
else
- { //register in deferred simple pass (deferred simple includes shiny)
+ {
llassert(mask & LLVertexBuffer::MAP_NORMAL);
registerFace(group, facep, LLRenderPass::PASS_SIMPLE);
}
}
else if (fullbright)
- { //not deferred, register in standard fullbright shiny pass
+ {
registerFace(group, facep, LLRenderPass::PASS_FULLBRIGHT_SHINY);
}
else
- { //not deferred or fullbright, register in standard shiny pass
+ {
registerFace(group, facep, LLRenderPass::PASS_SHINY);
}
}
else
- { //not alpha and not shiny
+ {
if (!is_alpha && tex->getPrimaryFormat() == GL_ALPHA)
- { //invisiprim
+ {
registerFace(group, facep, LLRenderPass::PASS_INVISIBLE);
}
else if (fullbright)
- { //fullbright
+ {
registerFace(group, facep, LLRenderPass::PASS_FULLBRIGHT);
- if (LLPipeline::sRenderDeferred && LLPipeline::sRenderBump && te->getBumpmap())
- { //if this is the deferred render and a bump map is present, register in post deferred bump
- registerFace(group, facep, LLRenderPass::PASS_POST_BUMP);
- }
}
else
{
- if (LLPipeline::sRenderDeferred && LLPipeline::sRenderBump && te->getBumpmap())
- { //non-shiny or fullbright deferred bump
+ if (LLPipeline::sRenderDeferred && te->getBumpmap())
+ {
registerFace(group, facep, LLRenderPass::PASS_BUMP);
}
else
- { //all around simple
+ {
llassert(mask & LLVertexBuffer::MAP_NORMAL);
registerFace(group, facep, LLRenderPass::PASS_SIMPLE);
}
}
- //not sure why this is here -- shiny HUD attachments maybe? -- davep 5/11/2010
if (!is_alpha && te->getShiny() && LLPipeline::sRenderBump)
{
registerFace(group, facep, LLRenderPass::PASS_SHINY);
}
}
- //not sure why this is here, and looks like it might cause bump mapped objects to get rendered redundantly -- davep 5/11/2010
if (!is_alpha && !LLPipeline::sRenderDeferred)
{
llassert((mask & LLVertexBuffer::MAP_NORMAL) || fullbright);
@@ -3911,7 +3867,7 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::
}
}
- if (!is_alpha && LLPipeline::sRenderGlow && te->getGlow() > 0.f)
+ if (LLPipeline::sRenderGlow && te->getGlow() > 0.f)
{
registerFace(group, facep, LLRenderPass::PASS_GLOW);
}
diff --git a/indra/newview/llvovolume.h b/indra/newview/llvovolume.h
index 1e9b9737b1..bf9536d0c2 100644
--- a/indra/newview/llvovolume.h
+++ b/indra/newview/llvovolume.h
@@ -209,7 +209,6 @@ public:
LLColor3 getLightBaseColor() const; // not scaled by intensity
LLColor3 getLightColor() const; // scaled by intensity
LLUUID getLightTextureID() const;
- bool isLightSpotlight() const;
LLVector3 getSpotLightParams() const;
void updateSpotLightPriority();
F32 getSpotLightPriority() const;
@@ -268,10 +267,6 @@ public:
// Returns the "last fetched" media version, or -1 if not fetched yet
S32 getLastFetchedMediaVersion() const { return mLastFetchedMediaVersion; }
-
- void addMDCImpl() { ++mMDCImplCount; }
- void removeMDCImpl() { --mMDCImplCount; }
- S32 getMDCImplCount() { return mMDCImplCount; }
protected:
S32 computeLODDetail(F32 distance, F32 radius);
@@ -305,7 +300,6 @@ private:
media_list_t mMediaImplList;
S32 mLastFetchedMediaVersion; // as fetched from the server, starts as -1
S32 mIndexInTex;
- S32 mMDCImplCount;
// statics
public:
static F32 sLODSlopDistanceFactor;// Changing this to zero, effectively disables the LOD transition slop
diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp
index d1c0990f90..59c9a692fe 100644
--- a/indra/newview/llwearable.cpp
+++ b/indra/newview/llwearable.cpp
@@ -46,7 +46,6 @@
#include "llvoavatarself.h"
#include "llvoavatardefines.h"
#include "llwearable.h"
-#include "llviewercontrol.h"
using namespace LLVOAvatarDefines;
@@ -439,10 +438,8 @@ BOOL LLWearable::importFile( LLFILE* file )
delete mSavedTEMap[te];
}
- if(gSavedSettings.getBOOL("DebugAvatarLocalTexLoadedTime"))
- {
- image->setLoadedCallback(LLVOAvatarSelf::debugOnTimingLocalTexLoaded,0,TRUE,FALSE, new LLVOAvatarSelf::LLAvatarTexData(id, (LLVOAvatarDefines::ETextureIndex)te), NULL);
- }
+ image->setLoadedCallback(LLVOAvatarSelf::debugOnTimingLocalTexLoaded,0,TRUE,FALSE, new LLVOAvatarSelf::LLAvatarTexData(id, (LLVOAvatarDefines::ETextureIndex)te), NULL);
+
LLUUID textureid(text_buffer);
mTEMap[te] = new LLLocalTextureObject(image, textureid);
mSavedTEMap[te] = new LLLocalTextureObject(image, textureid);
diff --git a/indra/newview/llwearableitemslist.cpp b/indra/newview/llwearableitemslist.cpp
index a49dc1b59d..29d2745d6e 100644
--- a/indra/newview/llwearableitemslist.cpp
+++ b/indra/newview/llwearableitemslist.cpp
@@ -119,11 +119,7 @@ void LLPanelWearableOutfitItem::updateItem(const std::string& name,
{
std::string search_label = name;
- // Updating item's worn status depending on whether it is linked in COF or not.
- // We don't use get_is_item_worn() here because this update is triggered by
- // an inventory observer upon link in COF beind added or removed so actual
- // worn status of a linked item may still remain unchanged.
- if (mWornIndicationEnabled && LLAppearanceMgr::instance().isLinkInCOF(mInventoryItemUUID))
+ if (mWornIndicationEnabled && get_is_item_worn(mInventoryItemUUID))
{
search_label += LLTrans::getString("worn");
item_state = IS_WORN;
@@ -526,8 +522,6 @@ bool LLWearableItemTypeNameComparator::doCompare(const LLPanelInventoryListItemB
const LLWearableType::EType item_wearable_type2 = wearable_item2->getWearableType();
if (item_wearable_type1 != item_wearable_type2)
- // If items are of different LLWearableType::EType types they are compared
- // by LLWearableType::EType. types order determined in LLWearableType::EType.
{
// If items are of different LLWearableType::EType types they are compared
// by LLWearableType::EType. types order determined in LLWearableType::EType.
@@ -550,7 +544,6 @@ LLWearableItemTypeNameComparator::ETypeListOrder LLWearableItemTypeNameComparato
{
wearable_type_order_map_t::const_iterator const_it = mWearableOrder.find(item_type);
-
if(const_it == mWearableOrder.end())
{
llwarns<<"Absent information about order rang of items of "<<LLAssetType::getDesc(item_type)<<" type"<<llendl;
@@ -564,54 +557,32 @@ bool LLWearableItemTypeNameComparator::sortAssetTypeByName(LLAssetType::EType it
{
wearable_type_order_map_t::const_iterator const_it = mWearableOrder.find(item_type);
-
if(const_it == mWearableOrder.end())
{
llwarns<<"Absent information about sorting items of "<<LLAssetType::getDesc(item_type)<<" type"<<llendl;
return true;
}
-
return const_it->second.mSortAssetTypeByName;
- }
-
+}
bool LLWearableItemTypeNameComparator::sortWearableTypeByName(LLAssetType::EType item_type) const
{
wearable_type_order_map_t::const_iterator const_it = mWearableOrder.find(item_type);
-
if(const_it == mWearableOrder.end())
{
llwarns<<"Absent information about sorting items of "<<LLAssetType::getDesc(item_type)<<" type"<<llendl;
return true;
-}
-
-
- return const_it->second.mSortWearableTypeByName;
-}
-
-/*virtual*/
-bool LLWearableItemCreationDateComparator::doCompare(const LLPanelInventoryListItemBase* item1, const LLPanelInventoryListItemBase* item2) const
-{
- time_t date1 = item1->getCreationDate();
- time_t date2 = item2->getCreationDate();
-
- if (date1 == date2)
- {
- return LLWearableItemNameComparator::doCompare(item1, item2);
}
- return date1 > date2;
+ return const_it->second.mSortWearableTypeByName;
}
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
-static LLWearableItemTypeNameComparator WEARABLE_TYPE_NAME_COMPARATOR;
-static const LLWearableItemTypeNameComparator WEARABLE_TYPE_LAYER_COMPARATOR;
-static const LLWearableItemNameComparator WEARABLE_NAME_COMPARATOR;
-static const LLWearableItemCreationDateComparator WEARABLE_CREATION_DATE_COMPARATOR;
+static const LLWearableItemTypeNameComparator WEARABLE_TYPE_NAME_COMPARATOR;
static const LLDefaultChildRegistry::Register<LLWearableItemsList> r("wearable_items_list");
@@ -623,7 +594,7 @@ LLWearableItemsList::Params::Params()
LLWearableItemsList::LLWearableItemsList(const LLWearableItemsList::Params& p)
: LLInventoryItemsList(p)
{
- setSortOrder(E_SORT_BY_TYPE_LAYER, false);
+ setComparator(&WEARABLE_TYPE_NAME_COMPARATOR);
mIsStandalone = p.standalone;
if (mIsStandalone)
{
@@ -631,7 +602,6 @@ LLWearableItemsList::LLWearableItemsList(const LLWearableItemsList::Params& p)
setRightMouseDownCallback(boost::bind(&LLWearableItemsList::onRightClick, this, _2, _3));
}
mWornIndicationEnabled = p.worn_indication_enabled;
- setNoItemsCommentText(LLTrans::getString("LoadingData"));
}
// virtual
@@ -673,15 +643,10 @@ void LLWearableItemsList::updateList(const LLUUID& category_id)
LLInventoryModel::EXCLUDE_TRASH,
collector);
- if(item_array.empty() && gInventory.isCategoryComplete(category_id))
- {
- setNoItemsCommentText(LLTrans::getString("EmptyOutfitText"));
- }
-
refreshList(item_array);
}
-void LLWearableItemsList::updateChangedItems(const uuid_vec_t& changed_items_uuids)
+void LLWearableItemsList::updateChangedItems(const LLInventoryModel::changed_items_t& changed_items_uuids)
{
// nothing to update
if (changed_items_uuids.empty()) return;
@@ -703,7 +668,7 @@ void LLWearableItemsList::updateChangedItems(const uuid_vec_t& changed_items_uui
LLUUID linked_uuid = inv_item->getLinkedUUID();
- for (uuid_vec_t::const_iterator iter = changed_items_uuids.begin();
+ for (LLInventoryModel::changed_items_t::const_iterator iter = changed_items_uuids.begin();
iter != changed_items_uuids.end();
++iter)
{
@@ -729,38 +694,6 @@ void LLWearableItemsList::onRightClick(S32 x, S32 y)
ContextMenu::instance().show(this, selected_uuids, x, y);
}
-void LLWearableItemsList::setSortOrder(ESortOrder sort_order, bool sort_now)
-{
- switch (sort_order)
- {
- case E_SORT_BY_MOST_RECENT:
- setComparator(&WEARABLE_CREATION_DATE_COMPARATOR);
- break;
- case E_SORT_BY_NAME:
- setComparator(&WEARABLE_NAME_COMPARATOR);
- break;
- case E_SORT_BY_TYPE_LAYER:
- setComparator(&WEARABLE_TYPE_LAYER_COMPARATOR);
- break;
- case E_SORT_BY_TYPE_NAME:
- {
- WEARABLE_TYPE_NAME_COMPARATOR.setOrder(LLAssetType::AT_CLOTHING, LLWearableItemTypeNameComparator::ORDER_RANK_1, false, true);
- setComparator(&WEARABLE_TYPE_NAME_COMPARATOR);
- break;
- }
-
- // No "default:" to raise compiler warning
- // if we're not handling something
- }
-
- mSortOrder = sort_order;
-
- if (sort_now)
- {
- sort();
- }
-}
-
//////////////////////////////////////////////////////////////////////////
/// ContextMenu
//////////////////////////////////////////////////////////////////////////
@@ -831,8 +764,6 @@ void LLWearableItemsList::ContextMenu::updateItemsVisibility(LLContextMenu* menu
U32 n_links = 0; // number of links among the selected items
U32 n_editable = 0; // number of editable items among the selected ones
- bool can_be_worn = true;
-
for (uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); ++it)
{
LLUUID id = *it;
@@ -868,22 +799,16 @@ void LLWearableItemsList::ContextMenu::updateItemsVisibility(LLContextMenu* menu
{
++n_already_worn;
}
-
- if (can_be_worn)
- {
- can_be_worn = get_can_item_be_worn(item->getLinkedUUID());
- }
} // for
bool standalone = mParent ? mParent->isStandalone() : false;
- bool wear_add_visible = mask & (MASK_CLOTHING|MASK_ATTACHMENT) && n_worn == 0 && can_be_worn && (n_already_worn != 0 || mask & MASK_ATTACHMENT);
// *TODO: eliminate multiple traversals over the menu items
- setMenuItemVisible(menu, "wear_wear", n_already_worn == 0 && n_worn == 0 && can_be_worn);
+ setMenuItemVisible(menu, "wear_wear", n_already_worn == 0 && n_worn == 0);
setMenuItemEnabled(menu, "wear_wear", n_already_worn == 0 && n_worn == 0);
- setMenuItemVisible(menu, "wear_add", wear_add_visible);
- setMenuItemEnabled(menu, "wear_add", canAddWearables(ids));
- setMenuItemVisible(menu, "wear_replace", n_worn == 0 && n_already_worn != 0 && can_be_worn);
+ setMenuItemVisible(menu, "wear_add", mask == MASK_CLOTHING && n_worn == 0 && n_already_worn != 0);
+ setMenuItemEnabled(menu, "wear_add", n_items == 1 && canAddWearable(ids.front()) && n_already_worn != 0);
+ setMenuItemVisible(menu, "wear_replace", n_worn == 0 && n_already_worn != 0);
//visible only when one item selected and this item is worn
setMenuItemVisible(menu, "edit", !standalone && mask & (MASK_CLOTHING|MASK_BODYPART) && n_worn == n_items && n_worn == 1);
setMenuItemEnabled(menu, "edit", n_editable == 1 && n_worn == 1 && n_items == 1);
@@ -991,61 +916,20 @@ void LLWearableItemsList::ContextMenu::createNewWearable(const LLUUID& item_id)
LLAgentWearables::createWearable(item->getWearableType(), true);
}
-// Returns true if all the given objects and clothes can be added.
+// Can we wear another wearable of the given item's wearable type?
// static
-bool LLWearableItemsList::ContextMenu::canAddWearables(const uuid_vec_t& item_ids)
+bool LLWearableItemsList::ContextMenu::canAddWearable(const LLUUID& item_id)
{
// TODO: investigate wearables may not be loaded at this point EXT-8231
- U32 n_objects = 0;
- boost::unordered_map<LLWearableType::EType, U32> clothes_by_type;
-
- // Count given clothes (by wearable type) and objects.
- for (uuid_vec_t::const_iterator it = item_ids.begin(); it != item_ids.end(); ++it)
- {
- LLViewerInventoryItem* item = gInventory.getItem(*it);
- if (!item)
- {
- return false;
- }
-
- if (item->getType() == LLAssetType::AT_OBJECT)
- {
- ++n_objects;
- }
- else if (item->getType() == LLAssetType::AT_CLOTHING)
- {
- ++clothes_by_type[item->getWearableType()];
- }
- else
- {
- llwarns << "Unexpected wearable type" << llendl;
- return false;
- }
- }
-
- // Check whether we can add all the objects.
- if (!isAgentAvatarValid() || !gAgentAvatarp->canAttachMoreObjects(n_objects))
+ LLViewerInventoryItem* item = gInventory.getItem(item_id);
+ if (!item || item->getType() != LLAssetType::AT_CLOTHING)
{
return false;
}
- // Check whether we can add all the clothes.
- boost::unordered_map<LLWearableType::EType, U32>::const_iterator m_it;
- for (m_it = clothes_by_type.begin(); m_it != clothes_by_type.end(); ++m_it)
- {
- LLWearableType::EType w_type = m_it->first;
- U32 n_clothes = m_it->second;
-
- U32 wearable_count = gAgentWearables.getWearableCount(w_type);
- if ((wearable_count + n_clothes) > LLAgentWearables::MAX_CLOTHING_PER_TYPE)
- {
- return false;
- }
-
- }
-
- return true;
+ U32 wearable_count = gAgentWearables.getWearableCount(item->getWearableType());
+ return wearable_count < LLAgentWearables::MAX_CLOTHING_PER_TYPE;
}
// EOF
diff --git a/indra/newview/llwearableitemslist.h b/indra/newview/llwearableitemslist.h
index 2b05273dc7..854c37c2c1 100644
--- a/indra/newview/llwearableitemslist.h
+++ b/indra/newview/llwearableitemslist.h
@@ -34,6 +34,7 @@
// newview
#include "llinventoryitemslist.h"
#include "llinventorylistitem.h"
+#include "llinventorymodel.h"
#include "lllistcontextmenu.h"
#include "llwearabletype.h"
@@ -319,7 +320,7 @@ protected:
/**
* All information about sort order is stored in mWearableOrder map
*
- * mWearableOrder : KEYS VALUES
+ * mWearableOrder : KYES VALUES
* [LLAssetType] [struct LLWearableTypeOrder]
*
*---------------------------------------------------------------------------------------------
@@ -333,8 +334,8 @@ protected:
* For example by spec in MY OUTFITS the order within each items type(LLAssetType) is:
* 1. AT_OBJECTS (abc order)
* 2. AT_CLOTHINGS
- * - by type (types order determined in LLWearableType::EType)
- * - outer layer on top
+ * - by type (types order determined in LLWearableType::EType)
+ * - outer layer on top
* 3. AT_BODYPARTS (abc order)
*---------------------------------------------------------------------------------------------
*
@@ -374,19 +375,6 @@ private:
};
/**
- * @class LLWearableItemCreationDateComparator
- *
- * Comparator for sorting wearable list items by creation date (newest go first).
- */
-class LLWearableItemCreationDateComparator : public LLWearableItemNameComparator
-{
- LOG_CLASS(LLWearableItemCreationDateComparator);
-
-protected:
- /*virtual*/ bool doCompare(const LLPanelInventoryListItemBase* item1, const LLPanelInventoryListItemBase* item2) const;
-};
-
-/**
* @class LLWearableItemsList
*
* A flat list of wearable inventory items.
@@ -426,7 +414,7 @@ public:
static void setMenuItemEnabled(LLContextMenu* menu, const std::string& name, bool val);
static void updateMask(U32& mask, LLAssetType::EType at);
static void createNewWearable(const LLUUID& item_id);
- static bool canAddWearables(const uuid_vec_t& item_ids);
+ static bool canAddWearable(const LLUUID& item_id);
LLWearableItemsList* mParent;
};
@@ -439,14 +427,6 @@ public:
Params();
};
- typedef enum e_sort_order {
- // Values should be compatible with InventorySortOrder setting.
- E_SORT_BY_NAME = 0,
- E_SORT_BY_MOST_RECENT = 1,
- E_SORT_BY_TYPE_LAYER = 2,
- E_SORT_BY_TYPE_NAME = 3,
- } ESortOrder;
-
virtual ~LLWearableItemsList();
/*virtual*/ void addNewItem(LLViewerInventoryItem* item, bool rearrange = true);
@@ -457,14 +437,10 @@ public:
* Update items that match UUIDs from changed_items_uuids
* or links that point at such items.
*/
- void updateChangedItems(const uuid_vec_t& changed_items_uuids);
+ void updateChangedItems(const LLInventoryModel::changed_items_t& changed_items_uuids);
bool isStandalone() const { return mIsStandalone; }
- ESortOrder getSortOrder() const { return mSortOrder; }
-
- void setSortOrder(ESortOrder sort_order, bool sort_now = true);
-
protected:
friend class LLUICtrlFactory;
LLWearableItemsList(const LLWearableItemsList::Params& p);
@@ -473,8 +449,6 @@ protected:
bool mIsStandalone;
bool mWornIndicationEnabled;
-
- ESortOrder mSortOrder;
};
#endif //LL_LLWEARABLEITEMSLIST_H
diff --git a/indra/newview/llwebsharing.cpp b/indra/newview/llwebsharing.cpp
deleted file mode 100644
index 2b9e5cc8cb..0000000000
--- a/indra/newview/llwebsharing.cpp
+++ /dev/null
@@ -1,609 +0,0 @@
-/**
- * @file llwebsharing.cpp
- * @author Aimee
- * @brief Web Snapshot Sharing
- *
- * $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://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 "llviewerprecompiledheaders.h"
-
-#include "llwebsharing.h"
-
-#include "llagentui.h"
-#include "llbufferstream.h"
-#include "llhttpclient.h"
-#include "llhttpstatuscodes.h"
-#include "llsdserialize.h"
-#include "llsdutil.h"
-#include "llurl.h"
-#include "llviewercontrol.h"
-
-#include <boost/regex.hpp>
-#include <boost/algorithm/string/replace.hpp>
-
-
-
-///////////////////////////////////////////////////////////////////////////////
-//
-class LLWebSharingConfigResponder : public LLHTTPClient::Responder
-{
- LOG_CLASS(LLWebSharingConfigResponder);
-public:
- /// Overrides the default LLSD parsing behaviour, to allow parsing a JSON response.
- virtual void completedRaw(U32 status, const std::string& reason,
- const LLChannelDescriptors& channels,
- const LLIOPipe::buffer_ptr_t& buffer)
- {
- LLSD content;
- LLBufferStream istr(channels, buffer.get());
- LLPointer<LLSDParser> parser = new LLSDNotationParser();
-
- if (parser->parse(istr, content, LLSDSerialize::SIZE_UNLIMITED) == LLSDParser::PARSE_FAILURE)
- {
- LL_WARNS("WebSharing") << "Failed to deserialize LLSD from JSON response. " << " [" << status << "]: " << reason << LL_ENDL;
- }
- else
- {
- completed(status, reason, content);
- }
- }
-
- virtual void error(U32 status, const std::string& reason)
- {
- LL_WARNS("WebSharing") << "Error [" << status << "]: " << reason << LL_ENDL;
- }
-
- virtual void result(const LLSD& content)
- {
- LLWebSharing::instance().receiveConfig(content);
- }
-};
-
-
-
-///////////////////////////////////////////////////////////////////////////////
-//
-class LLWebSharingOpenIDAuthResponder : public LLHTTPClient::Responder
-{
- LOG_CLASS(LLWebSharingOpenIDAuthResponder);
-public:
- /* virtual */ void completedHeader(U32 status, const std::string& reason, const LLSD& content)
- {
- completed(status, reason, content);
- }
-
- /* virtual */ void completedRaw(U32 status, const std::string& reason,
- const LLChannelDescriptors& channels,
- const LLIOPipe::buffer_ptr_t& buffer)
- {
- /// Left empty to override the default LLSD parsing behaviour.
- }
-
- virtual void error(U32 status, const std::string& reason)
- {
- if (HTTP_UNAUTHORIZED == status)
- {
- LL_WARNS("WebSharing") << "AU account not authenticated." << LL_ENDL;
- // *TODO: No account found on AU, so start the account creation process here.
- }
- else
- {
- LL_WARNS("WebSharing") << "Error [" << status << "]: " << reason << LL_ENDL;
- LLWebSharing::instance().retryOpenIDAuth();
- }
-
- }
-
- virtual void result(const LLSD& content)
- {
- if (content.has("set-cookie"))
- {
- // OpenID request succeeded and returned a session cookie.
- LLWebSharing::instance().receiveSessionCookie(content["set-cookie"].asString());
- }
- }
-};
-
-
-
-///////////////////////////////////////////////////////////////////////////////
-//
-class LLWebSharingSecurityTokenResponder : public LLHTTPClient::Responder
-{
- LOG_CLASS(LLWebSharingSecurityTokenResponder);
-public:
- /// Overrides the default LLSD parsing behaviour, to allow parsing a JSON response.
- virtual void completedRaw(U32 status, const std::string& reason,
- const LLChannelDescriptors& channels,
- const LLIOPipe::buffer_ptr_t& buffer)
- {
- LLSD content;
- LLBufferStream istr(channels, buffer.get());
- LLPointer<LLSDParser> parser = new LLSDNotationParser();
-
- if (parser->parse(istr, content, LLSDSerialize::SIZE_UNLIMITED) == LLSDParser::PARSE_FAILURE)
- {
- LL_WARNS("WebSharing") << "Failed to deserialize LLSD from JSON response. " << " [" << status << "]: " << reason << LL_ENDL;
- LLWebSharing::instance().retryOpenIDAuth();
- }
- else
- {
- completed(status, reason, content);
- }
- }
-
- virtual void error(U32 status, const std::string& reason)
- {
- LL_WARNS("WebSharing") << "Error [" << status << "]: " << reason << LL_ENDL;
- LLWebSharing::instance().retryOpenIDAuth();
- }
-
- virtual void result(const LLSD& content)
- {
- if (content[0].has("st") && content[0].has("expires"))
- {
- const std::string& token = content[0]["st"].asString();
- const std::string& expires = content[0]["expires"].asString();
- if (LLWebSharing::instance().receiveSecurityToken(token, expires))
- {
- // Sucessfully received a valid security token.
- return;
- }
- }
- else
- {
- LL_WARNS("WebSharing") << "No security token received." << LL_ENDL;
- }
-
- LLWebSharing::instance().retryOpenIDAuth();
- }
-};
-
-
-
-///////////////////////////////////////////////////////////////////////////////
-//
-class LLWebSharingUploadResponder : public LLHTTPClient::Responder
-{
- LOG_CLASS(LLWebSharingUploadResponder);
-public:
- /// Overrides the default LLSD parsing behaviour, to allow parsing a JSON response.
- virtual void completedRaw(U32 status, const std::string& reason,
- const LLChannelDescriptors& channels,
- const LLIOPipe::buffer_ptr_t& buffer)
- {
-/*
- // Dump the body, for debugging.
-
- LLBufferStream istr1(channels, buffer.get());
- std::ostringstream ostr;
- std::string body;
-
- while (istr1.good())
- {
- char buf[1024];
- istr1.read(buf, sizeof(buf));
- body.append(buf, istr1.gcount());
- }
- LL_DEBUGS("WebSharing") << body << LL_ENDL;
-*/
- LLSD content;
- LLBufferStream istr(channels, buffer.get());
- LLPointer<LLSDParser> parser = new LLSDNotationParser();
-
- if (parser->parse(istr, content, LLSDSerialize::SIZE_UNLIMITED) == LLSDParser::PARSE_FAILURE)
- {
- LL_WARNS("WebSharing") << "Failed to deserialize LLSD from JSON response. " << " [" << status << "]: " << reason << LL_ENDL;
- }
- else
- {
- completed(status, reason, content);
- }
- }
-
- virtual void error(U32 status, const std::string& reason)
- {
- LL_WARNS("WebSharing") << "Error [" << status << "]: " << reason << LL_ENDL;
- }
-
- virtual void result(const LLSD& content)
- {
- if (content[0].has("result") && content[0].has("id") &&
- content[0]["id"].asString() == "newMediaItem")
- {
- // *TODO: Upload successful, continue from here to post metadata and create AU activity.
- }
- else
- {
- LL_WARNS("WebSharing") << "Error [" << content[0]["code"].asString()
- << "]: " << content[0]["message"].asString() << LL_ENDL;
- }
- }
-};
-
-
-
-///////////////////////////////////////////////////////////////////////////////
-//
-LLWebSharing::LLWebSharing()
-: mConfig(),
- mSecurityToken(LLSD::emptyMap()),
- mEnabled(false),
- mRetries(0),
- mImage(NULL),
- mMetadata(LLSD::emptyMap())
-{
-}
-
-void LLWebSharing::init()
-{
- if (!mEnabled)
- {
- sendConfigRequest();
- }
-}
-
-bool LLWebSharing::shareSnapshot(LLImageJPEG* snapshot, LLSD& metadata)
-{
- LL_INFOS("WebSharing") << metadata << LL_ENDL;
-
- if (mImage)
- {
- // *TODO: Handle this possibility properly, queue them up?
- LL_WARNS("WebSharing") << "Snapshot upload already in progress." << LL_ENDL;
- return false;
- }
-
- mImage = snapshot;
- mMetadata = metadata;
-
- // *TODO: Check whether we have a valid security token already and re-use it.
- sendOpenIDAuthRequest();
- return true;
-}
-
-bool LLWebSharing::setOpenIDCookie(const std::string& cookie)
-{
- LL_DEBUGS("WebSharing") << "Setting OpenID cookie " << cookie << LL_ENDL;
- mOpenIDCookie = cookie;
- return validateConfig();
-}
-
-bool LLWebSharing::receiveConfig(const LLSD& config)
-{
- LL_DEBUGS("WebSharing") << "Received config data: " << config << LL_ENDL;
- mConfig = config;
- return validateConfig();
-}
-
-bool LLWebSharing::receiveSessionCookie(const std::string& cookie)
-{
- LL_DEBUGS("WebSharing") << "Received AU session cookie: " << cookie << LL_ENDL;
- mSessionCookie = cookie;
-
- // Fetch a security token using the new session cookie.
- LLWebSharing::instance().sendSecurityTokenRequest();
-
- return (!mSessionCookie.empty());
-}
-
-bool LLWebSharing::receiveSecurityToken(const std::string& token, const std::string& expires)
-{
- mSecurityToken["st"] = token;
- mSecurityToken["expires"] = LLDate(expires);
-
- if (!securityTokenIsValid(mSecurityToken))
- {
- LL_WARNS("WebSharing") << "Invalid security token received: \"" << token << "\" Expires: " << expires << LL_ENDL;
- return false;
- }
-
- LL_DEBUGS("WebSharing") << "Received security token: \"" << token << "\" Expires: " << expires << LL_ENDL;
- mRetries = 0;
-
- // Continue the upload process now that we have a security token.
- sendUploadRequest();
-
- return true;
-}
-
-void LLWebSharing::sendConfigRequest()
-{
- std::string config_url = gSavedSettings.getString("SnapshotConfigURL");
- LL_DEBUGS("WebSharing") << "Requesting Snapshot Sharing config data from: " << config_url << LL_ENDL;
-
- LLSD headers = LLSD::emptyMap();
- headers["Accept"] = "application/json";
-
- LLHTTPClient::get(config_url, new LLWebSharingConfigResponder(), headers);
-}
-
-void LLWebSharing::sendOpenIDAuthRequest()
-{
- std::string auth_url = mConfig["openIdAuthUrl"];
- LL_DEBUGS("WebSharing") << "Starting OpenID Auth: " << auth_url << LL_ENDL;
-
- LLSD headers = LLSD::emptyMap();
- headers["Cookie"] = mOpenIDCookie;
- headers["Accept"] = "*/*";
-
- // Send request, successful login will trigger fetching a security token.
- LLHTTPClient::get(auth_url, new LLWebSharingOpenIDAuthResponder(), headers);
-}
-
-bool LLWebSharing::retryOpenIDAuth()
-{
- if (mRetries++ >= MAX_AUTH_RETRIES)
- {
- LL_WARNS("WebSharing") << "Exceeded maximum number of authorization attempts, aborting." << LL_ENDL;
- mRetries = 0;
- return false;
- }
-
- LL_WARNS("WebSharing") << "Authorization failed, retrying (" << mRetries << "/" << MAX_AUTH_RETRIES << ")" << LL_ENDL;
- sendOpenIDAuthRequest();
- return true;
-}
-
-void LLWebSharing::sendSecurityTokenRequest()
-{
- std::string token_url = mConfig["securityTokenUrl"];
- LL_DEBUGS("WebSharing") << "Fetching security token from: " << token_url << LL_ENDL;
-
- LLSD headers = LLSD::emptyMap();
- headers["Cookie"] = mSessionCookie;
-
- headers["Accept"] = "application/json";
- headers["Content-Type"] = "application/json";
-
- std::ostringstream body;
- body << "{ \"gadgets\": [{ \"url\":\""
- << mConfig["gadgetSpecUrl"].asString()
- << "\" }] }";
-
- // postRaw() takes ownership of the buffer and releases it later.
- size_t size = body.str().size();
- U8 *data = new U8[size];
- memcpy(data, body.str().data(), size);
-
- // Send request, receiving a valid token will trigger snapshot upload.
- LLHTTPClient::postRaw(token_url, data, size, new LLWebSharingSecurityTokenResponder(), headers);
-}
-
-void LLWebSharing::sendUploadRequest()
-{
- LLUriTemplate upload_template(mConfig["openSocialRpcUrlTemplate"].asString());
- std::string upload_url(upload_template.buildURI(mSecurityToken));
-
- LL_DEBUGS("WebSharing") << "Posting upload to: " << upload_url << LL_ENDL;
-
- static const std::string BOUNDARY("------------abcdef012345xyZ");
-
- LLSD headers = LLSD::emptyMap();
- headers["Cookie"] = mSessionCookie;
-
- headers["Accept"] = "application/json";
- headers["Content-Type"] = "multipart/form-data; boundary=" + BOUNDARY;
-
- std::ostringstream body;
- body << "--" << BOUNDARY << "\r\n"
- << "Content-Disposition: form-data; name=\"request\"\r\n\r\n"
- << "[{"
- << "\"method\":\"mediaItems.create\","
- << "\"params\": {"
- << "\"userId\":[\"@me\"],"
- << "\"groupId\":\"@self\","
- << "\"mediaItem\": {"
- << "\"mimeType\":\"image/jpeg\","
- << "\"type\":\"image\","
- << "\"url\":\"@field:image1\""
- << "}"
- << "},"
- << "\"id\":\"newMediaItem\""
- << "}]"
- << "--" << BOUNDARY << "\r\n"
- << "Content-Disposition: form-data; name=\"image1\"\r\n\r\n";
-
- // Insert the image data.
- // *FIX: Treating this as a string will probably screw it up ...
- U8* image_data = mImage->getData();
- for (S32 i = 0; i < mImage->getDataSize(); ++i)
- {
- body << image_data[i];
- }
-
- body << "\r\n--" << BOUNDARY << "--\r\n";
-
- // postRaw() takes ownership of the buffer and releases it later.
- size_t size = body.str().size();
- U8 *data = new U8[size];
- memcpy(data, body.str().data(), size);
-
- // Send request, successful upload will trigger posting metadata.
- LLHTTPClient::postRaw(upload_url, data, size, new LLWebSharingUploadResponder(), headers);
-}
-
-bool LLWebSharing::validateConfig()
-{
- // Check the OpenID Cookie has been set.
- if (mOpenIDCookie.empty())
- {
- mEnabled = false;
- return mEnabled;
- }
-
- if (!mConfig.isMap())
- {
- mEnabled = false;
- return mEnabled;
- }
-
- // Template to match the received config against.
- LLSD required(LLSD::emptyMap());
- required["gadgetSpecUrl"] = "";
- required["loginTokenUrl"] = "";
- required["openIdAuthUrl"] = "";
- required["photoPageUrlTemplate"] = "";
- required["openSocialRpcUrlTemplate"] = "";
- required["securityTokenUrl"] = "";
- required["tokenBasedLoginUrlTemplate"] = "";
- required["viewerIdUrl"] = "";
-
- std::string mismatch(llsd_matches(required, mConfig));
- if (!mismatch.empty())
- {
- LL_WARNS("WebSharing") << "Malformed config data response: " << mismatch << LL_ENDL;
- mEnabled = false;
- return mEnabled;
- }
-
- mEnabled = true;
- return mEnabled;
-}
-
-// static
-bool LLWebSharing::securityTokenIsValid(LLSD& token)
-{
- return (token.has("st") &&
- token.has("expires") &&
- (token["st"].asString() != "") &&
- (token["expires"].asDate() > LLDate::now()));
-}
-
-
-
-///////////////////////////////////////////////////////////////////////////////
-//
-LLUriTemplate::LLUriTemplate(const std::string& uri_template)
- :
- mTemplate(uri_template)
-{
-}
-
-std::string LLUriTemplate::buildURI(const LLSD& vars)
-{
- // *TODO: Separate parsing the template from building the URI.
- // Parsing only needs to happen on construction/assignnment.
-
- static const std::string VAR_NAME_REGEX("[[:alpha:]][[:alnum:]\\._-]*");
- // Capture var name with and without surrounding {}
- static const std::string VAR_REGEX("\\{(" + VAR_NAME_REGEX + ")\\}");
- // Capture delimiter and comma separated list of var names.
- static const std::string JOIN_REGEX("\\{-join\\|(&)\\|(" + VAR_NAME_REGEX + "(?:," + VAR_NAME_REGEX + ")*)\\}");
-
- std::string uri = mTemplate;
- boost::smatch results;
-
- // Validate and expand join operators : {-join|&|var1,var2,...}
-
- boost::regex join_regex(JOIN_REGEX);
-
- while (boost::regex_search(uri, results, join_regex))
- {
- // Extract the list of var names from the results.
- std::string delim = results[1].str();
- std::string var_list = results[2].str();
-
- // Expand the list of vars into a query string with their values
- std::string query = expandJoin(delim, var_list, vars);
-
- // Substitute the query string into the template.
- uri = boost::regex_replace(uri, join_regex, query, boost::format_first_only);
- }
-
- // Expand vars : {var1}
-
- boost::regex var_regex(VAR_REGEX);
-
- std::set<std::string> var_names;
- std::string::const_iterator start = uri.begin();
- std::string::const_iterator end = uri.end();
-
- // Extract the var names used.
- while (boost::regex_search(start, end, results, var_regex))
- {
- var_names.insert(results[1].str());
- start = results[0].second;
- }
-
- // Replace each var with its value.
- for (std::set<std::string>::const_iterator it = var_names.begin(); it != var_names.end(); ++it)
- {
- std::string var = *it;
- if (vars.has(var))
- {
- boost::replace_all(uri, "{" + var + "}", vars[var].asString());
- }
- }
-
- return uri;
-}
-
-std::string LLUriTemplate::expandJoin(const std::string& delim, const std::string& var_list, const LLSD& vars)
-{
- std::ostringstream query;
-
- typedef boost::tokenizer<boost::char_separator<char> > tokenizer;
- boost::char_separator<char> sep(",");
- tokenizer var_names(var_list, sep);
- tokenizer::const_iterator it = var_names.begin();
-
- // First var does not need a delimiter
- if (it != var_names.end())
- {
- const std::string& name = *it;
- if (vars.has(name))
- {
- // URL encode the value before appending the name=value pair.
- query << name << "=" << escapeURL(vars[name].asString());
- }
- }
-
- for (++it; it != var_names.end(); ++it)
- {
- const std::string& name = *it;
- if (vars.has(name))
- {
- // URL encode the value before appending the name=value pair.
- query << delim << name << "=" << escapeURL(vars[name].asString());
- }
- }
-
- return query.str();
-}
-
-// static
-std::string LLUriTemplate::escapeURL(const std::string& unescaped)
-{
- char* escaped = curl_escape(unescaped.c_str(), unescaped.size());
- std::string result = escaped;
- curl_free(escaped);
- return result;
-}
-
diff --git a/indra/newview/llwebsharing.h b/indra/newview/llwebsharing.h
deleted file mode 100644
index 70046ff1d8..0000000000
--- a/indra/newview/llwebsharing.h
+++ /dev/null
@@ -1,230 +0,0 @@
-/**
- * @file llwebsharing.h
- * @author Aimee
- * @brief Web Snapshot Sharing
- *
- * $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://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_LLWEBSHARING_H
-#define LL_LLWEBSHARING_H
-
-#include "llimagejpeg.h"
-#include "llsingleton.h"
-
-
-
-/**
- * @class LLWebSharing
- *
- * Manages authentication to, and interaction with, a web service allowing the
- * upload of snapshot images taken within the viewer, using OpenID and the
- * OpenSocial APIs.
- * http://www.opensocial.org/Technical-Resources/opensocial-spec-v09/RPC-Protocol.html
- */
-class LLWebSharing : public LLSingleton<LLWebSharing>
-{
- LOG_CLASS(LLWebSharing);
-public:
- /*
- * Performs initial setup, by requesting config data from the web service if
- * it has not already been received.
- */
- void init();
-
- /*
- * @return true if both the OpenID cookie and config data have been received.
- */
- bool enabled() const { return mEnabled; };
-
- /*
- * Sets the OpenID cookie to use for login to the web service.
- *
- * @param cookie a string containing the OpenID cookie.
- *
- * @return true if both the OpenID cookie and config data have been received.
- */
- bool setOpenIDCookie(const std::string& cookie);
-
- /*
- * Receive config data used to connect to the web service.
- *
- * @param config an LLSD map of URL templates for the web service end-points.
- *
- * @return true if both the OpenID cookie and config data have been received.
- *
- * @see sendConfigRequest()
- */
- bool receiveConfig(const LLSD& config);
-
- /*
- * Receive the session cookie from the web service, which is the result of
- * the OpenID login process.
- *
- * @see sendOpenIDAuthRequest()
- */
- bool receiveSessionCookie(const std::string& cookie);
-
- /*
- * Receive a security token for the upload service.
- *
- * @see sendSecurityTokenRequest()
- */
- bool receiveSecurityToken(const std::string& token, const std::string& expires);
-
- /*
- * Restarts the authentication process if the maximum number of retries has
- * not been exceeded.
- *
- * @return true if retrying, false if LLWebSharing::MAX_AUTH_RETRIES has been exceeded.
- */
- bool retryOpenIDAuth();
-
- /*
- * Post a snapshot to the upload service.
- *
- * @return true if accepted for upload, false if already uploading another image.
- */
- bool shareSnapshot(LLImageJPEG* snapshot, LLSD& metadata);
-
-private:
- static const S32 MAX_AUTH_RETRIES = 4;
-
- friend class LLSingleton<LLWebSharing>;
-
- LLWebSharing();
- ~LLWebSharing() {};
-
- /*
- * Request a map of URLs and URL templates to the web service end-points.
- *
- * @see receiveConfig()
- */
- void sendConfigRequest();
-
- /*
- * Initiate the OpenID login process.
- *
- * @see receiveSessionCookie()
- */
- void sendOpenIDAuthRequest();
-
- /*
- * Request a security token for the upload service.
- *
- * @see receiveSecurityToken()
- */
- void sendSecurityTokenRequest();
-
- /*
- * Request a security token for the upload service.
- *
- * @see receiveSecurityToken()
- */
- void sendUploadRequest();
-
- /*
- * Checks all necessary config information has been received, and sets mEnabled.
- *
- * @return true if both the OpenID cookie and config data have been received.
- */
- bool validateConfig();
-
- /*
- * Checks the security token is present and has not expired.
- *
- * @param token an LLSD map containing the token string and the time it expires.
- *
- * @return true if the token is not empty and has not expired.
- */
- static bool securityTokenIsValid(LLSD& token);
-
- std::string mOpenIDCookie;
- std::string mSessionCookie;
- LLSD mSecurityToken;
-
- LLSD mConfig;
- bool mEnabled;
-
- LLPointer<LLImageJPEG> mImage;
- LLSD mMetadata;
-
- S32 mRetries;
-};
-
-/**
- * @class LLUriTemplate
- *
- * @brief Builds complete URIs, given URI template and a map of keys and values
- * to use for substition.
- * Note: This is only a partial implementation of a draft standard required
- * by the web API used by LLWebSharing.
- * See: http://tools.ietf.org/html/draft-gregorio-uritemplate-03
- *
- * @see LLWebSharing
- */
-class LLUriTemplate
-{
- LOG_CLASS(LLUriTemplate);
-public:
- LLUriTemplate(const std::string& uri_template);
- ~LLUriTemplate() {};
-
- /*
- * Builds a complete URI from the template.
- *
- * @param vars an LLSD map of keys and values for substitution.
- *
- * @return a string containing the complete URI.
- */
- std::string buildURI(const LLSD& vars);
-
-private:
- /*
- * Builds a URL query string.
- *
- * @param delim a string containing the separator to use between name=value pairs.
- * @param var_list a string containing a comma separated list of variable names.
- * @param vars an LLSD map of keys and values for substitution.
- *
- * @return a URL query string.
- */
- std::string expandJoin(const std::string& delim, const std::string& var_list, const LLSD& vars);
-
- /*
- * URL escape the given string.
- * LLWeb::escapeURL() only does a partial escape, so this uses curl_escape() instead.
- */
- static std::string escapeURL(const std::string& unescaped);
-
- std::string mTemplate;
-};
-
-
-
-#endif // LL_LLWEBSHARING_H
diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp
index 2ad43ff394..5cd01d337b 100644
--- a/indra/newview/llworld.cpp
+++ b/indra/newview/llworld.cpp
@@ -1049,11 +1049,9 @@ void LLWorld::disconnectRegions()
}
}
-static LLFastTimer::DeclareTimer FTM_ENABLE_SIMULATOR("Enable Sim");
void process_enable_simulator(LLMessageSystem *msg, void **user_data)
{
- LLFastTimer t(FTM_ENABLE_SIMULATOR);
// enable the appropriate circuit for this simulator and
// add its values into the gSimulator structure
U64 handle;
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index e4c2ca9ae3..a3b402c1a3 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -185,7 +185,6 @@ std::string gPoolNames[] =
};
void drawBox(const LLVector3& c, const LLVector3& r);
-void drawBoxOutline(const LLVector3& pos, const LLVector3& size);
U32 nhpo2(U32 v)
{
@@ -263,8 +262,7 @@ BOOL LLPipeline::sRenderHighlight = TRUE;
BOOL LLPipeline::sForceOldBakedUpload = FALSE;
S32 LLPipeline::sUseOcclusion = 0;
BOOL LLPipeline::sDelayVBUpdate = TRUE;
-BOOL LLPipeline::sAutoMaskAlphaDeferred = TRUE;
-BOOL LLPipeline::sAutoMaskAlphaNonDeferred = FALSE;
+BOOL LLPipeline::sFastAlpha = TRUE;
BOOL LLPipeline::sDisableShaders = FALSE;
BOOL LLPipeline::sRenderBump = TRUE;
BOOL LLPipeline::sUseTriStrips = TRUE;
@@ -324,6 +322,7 @@ LLPipeline::LLPipeline() :
mInitialized(FALSE),
mVertexShadersEnabled(FALSE),
mVertexShadersLoaded(0),
+ mRenderTypeMask(0),
mRenderDebugFeatureMask(0),
mRenderDebugMask(0),
mOldRenderDebugMask(0),
@@ -377,11 +376,7 @@ void LLPipeline::init()
LLViewerStats::getInstance()->mTrianglesDrawnStat.reset();
resetFrameStats();
- for (U32 i = 0; i < NUM_RENDER_TYPES; ++i)
- {
- mRenderTypeEnabled[i] = TRUE; //all rendering types start enabled
- }
-
+ mRenderTypeMask = 0xffffffff; // All render types start on
mRenderDebugFeatureMask = 0xffffffff; // All debugging features on
mRenderDebugMask = 0; // All debug starts off
@@ -408,8 +403,6 @@ void LLPipeline::init()
{
mSpotLightFade[i] = 1.f;
}
-
- setLightingDetail(-1);
}
LLPipeline::~LLPipeline()
@@ -512,7 +505,6 @@ void LLPipeline::destroyGL()
}
static LLFastTimer::DeclareTimer FTM_RESIZE_SCREEN_TEXTURE("Resize Screen Texture");
-
void LLPipeline::resizeScreenTexture()
{
LLFastTimer ft(FTM_RESIZE_SCREEN_TEXTURE);
@@ -569,12 +561,9 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)
F32 scale = gSavedSettings.getF32("RenderShadowResolutionScale");
- //HACK: make alpha masking work on ATI depth shadows (work around for ATI driver bug)
- U32 shadow_fmt = gGLManager.mIsATI ? GL_ALPHA : 0;
-
for (U32 i = 0; i < 4; i++)
{
- mShadow[i].allocate(U32(resX*scale),U32(resY*scale), shadow_fmt, TRUE, FALSE, LLTexUnit::TT_RECT_TEXTURE);
+ mShadow[i].allocate(U32(resX*scale),U32(resY*scale), 0, TRUE, FALSE, LLTexUnit::TT_RECT_TEXTURE);
}
@@ -583,9 +572,11 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)
for (U32 i = 4; i < 6; i++)
{
- mShadow[i].allocate(width, height, shadow_fmt, TRUE, FALSE);
+ mShadow[i].allocate(width, height, 0, TRUE, FALSE);
}
+
+
width = nhpo2(resX)/2;
height = nhpo2(resY)/2;
mLuminanceMap.allocate(width,height, GL_RGBA, FALSE, FALSE);
@@ -630,11 +621,9 @@ void LLPipeline::updateRenderDeferred()
{
BOOL deferred = (gSavedSettings.getBOOL("RenderDeferred") &&
LLRenderTarget::sUseFBO &&
- LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") &&
gSavedSettings.getBOOL("VertexShaderEnable") &&
gSavedSettings.getBOOL("RenderAvatarVP") &&
- (gSavedSettings.getBOOL("WindLightUseAtmosShaders")) ? TRUE : FALSE) &&
- !gUseWireframe;
+ gSavedSettings.getBOOL("WindLightUseAtmosShaders")) ? TRUE : FALSE;
sRenderDeferred = deferred;
}
@@ -909,18 +898,13 @@ S32 LLPipeline::setLightingDetail(S32 level)
if (level < 0)
{
- if (gSavedSettings.getBOOL("VertexShaderEnable"))
- {
- level = 1;
- }
- else
- {
- level = 0;
- }
+ level = gSavedSettings.getS32("RenderLightingDetail");
}
level = llclamp(level, 0, getMaxLightingDetail());
if (level != mLightingDetail)
{
+ gSavedSettings.setS32("RenderLightingDetail", level);
+
mLightingDetail = level;
if (mVertexShadersLoaded == 1)
@@ -1524,10 +1508,8 @@ BOOL LLPipeline::visibleObjectsInFrustum(LLCamera& camera)
BOOL LLPipeline::getVisibleExtents(LLCamera& camera, LLVector3& min, LLVector3& max)
{
- const F32 X = 65536.f;
-
- min = LLVector3(X,X,X);
- max = LLVector3(-X,-X,-X);
+ min = LLVector3(F32_MAX, F32_MAX, F32_MAX);
+ max = LLVector3(-F32_MAX, -F32_MAX, -F32_MAX);
U32 saved_camera_id = LLViewerCamera::sCurCameraID;
LLViewerCamera::sCurCameraID = LLViewerCamera::CAMERA_WORLD;
@@ -1966,31 +1948,23 @@ void LLPipeline::updateGeom(F32 max_dtime)
void LLPipeline::markVisible(LLDrawable *drawablep, LLCamera& camera)
{
LLMemType mt(LLMemType::MTYPE_PIPELINE_MARK_VISIBLE);
-
- if(drawablep && !drawablep->isDead())
+ if(!drawablep || drawablep->isDead())
{
+ return;
+ }
+
if (drawablep->isSpatialBridge())
{
- const LLDrawable* root = ((LLSpatialBridge*) drawablep)->mDrawable;
- llassert(root); // trying to catch a bad assumption
- if (root && // // this test may not be needed, see above
- root->getVObj()->isAttachment())
- {
- LLDrawable* rootparent = root->getParent();
- if (rootparent) // this IS sometimes NULL
- {
- LLViewerObject *vobj = rootparent->getVObj();
- llassert(vobj); // trying to catch a bad assumption
- if (vobj) // this test may not be needed, see above
+ LLDrawable* root = ((LLSpatialBridge*) drawablep)->mDrawable;
+
+ if (root && root->getParent() && root->getVObj() && root->getVObj()->isAttachment())
{
- const LLVOAvatar* av = vobj->asAvatar();
+ LLVOAvatar* av = root->getParent()->getVObj()->asAvatar();
if (av && av->isImpostor())
{
return;
}
}
- }
- }
sCull->pushBridge((LLSpatialBridge*) drawablep);
}
else
@@ -2000,7 +1974,6 @@ void LLPipeline::markVisible(LLDrawable *drawablep, LLCamera& camera)
drawablep->setVisible(camera);
}
-}
void LLPipeline::markMoved(LLDrawable *drawablep, BOOL damped_motion)
{
@@ -2209,13 +2182,14 @@ static LLFastTimer::DeclareTimer FTM_RESET_DRAWORDER("Reset Draw Order");
void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result)
{
- if (hasAnyRenderType(LLPipeline::RENDER_TYPE_AVATAR,
- LLPipeline::RENDER_TYPE_GROUND,
- LLPipeline::RENDER_TYPE_TERRAIN,
- LLPipeline::RENDER_TYPE_TREE,
- LLPipeline::RENDER_TYPE_SKY,
- LLPipeline::RENDER_TYPE_WATER,
- LLPipeline::END_RENDER_TYPES))
+ const U32 face_mask = (1 << LLPipeline::RENDER_TYPE_AVATAR) |
+ (1 << LLPipeline::RENDER_TYPE_GROUND) |
+ (1 << LLPipeline::RENDER_TYPE_TERRAIN) |
+ (1 << LLPipeline::RENDER_TYPE_TREE) |
+ (1 << LLPipeline::RENDER_TYPE_SKY) |
+ (1 << LLPipeline::RENDER_TYPE_WATER);
+
+ if (mRenderTypeMask & face_mask)
{
//clear faces from face pools
LLFastTimer t(FTM_RESET_DRAWORDER);
@@ -3435,14 +3409,26 @@ void LLPipeline::renderGeomPostDeferred(LLCamera& camera)
gGLLastMatrix = NULL;
glLoadMatrixd(gGLModelView);
+ renderHighlights();
+ mHighlightFaces.clear();
+
+ renderDebug();
+
+ LLVertexBuffer::unbind();
+
+ if (gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI))
+ {
+ // Render debugging beacons.
+ gObjectList.renderObjectBeacons();
+ gObjectList.resetObjectBeacons();
+ }
+
if (occlude)
{
occlude = FALSE;
gGLLastMatrix = NULL;
glLoadMatrixd(gGLModelView);
doOcclusion(camera);
- gGLLastMatrix = NULL;
- glLoadMatrixd(gGLModelView);
}
}
@@ -3605,17 +3591,12 @@ 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);
@@ -3643,49 +3624,31 @@ void LLPipeline::renderDebug()
if (i < 4)
{
+ gGL.begin(LLRender::LINES);
- if (i == 0 || !mShadowFrustPoints[i].empty())
+ F32* c = col+i*4;
+ for (U32 j = 0; j < mShadowFrustPoints[i].size(); ++j)
{
- //render visible point cloud
- gGL.flush();
- glPointSize(8.f);
- gGL.begin(LLRender::POINTS);
- F32* c = col+i*4;
gGL.color3fv(c);
- for (U32 j = 0; j < mShadowFrustPoints[i].size(); ++j)
+ for (U32 k = 0; k < mShadowFrustPoints[i].size(); ++k)
+ {
+ if (j != k)
{
gGL.vertex3fv(mShadowFrustPoints[i][j].mV);
-
+ gGL.vertex3fv(mShadowFrustPoints[i][k].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();
}
+ if (!mShadowFrustOrigin[i].isExactlyZero())
+ {
+ gGL.vertex3fv(mShadowFrustPoints[i][j].mV);
+ gGL.color4f(1,1,1,1);
+ gGL.vertex3fv(mShadowFrustOrigin[i].mV);
+ }
+ }
+ gGL.end();
}
/*for (LLWorld::region_list_t::const_iterator iter = LLWorld::getInstance()->getRegionList().begin();
@@ -4597,42 +4560,32 @@ void LLPipeline::setupHWLights(LLDrawPool* pool)
LLVector4 light_pos_gl(light_pos, 1.0f);
F32 light_radius = llmax(light->getLightRadius(), 0.001f);
+ F32 atten, quad;
- F32 x = (3.f * (1.f + light->getLightFalloff())); // why this magic? probably trying to match a historic behavior.
- float linatten = x / (light_radius); // % of brightness at radius
-
+#if 0 //1.9.1
+ if (pool->getVertexShaderLevel() > 0)
+ {
+ atten = light_radius;
+ quad = llmax(light->getLightFalloff(), 0.0001f);
+ }
+ else
+#endif
+ {
+ F32 x = (3.f * (1.f + light->getLightFalloff()));
+ atten = x / (light_radius); // % of brightness at radius
+ quad = 0.0f;
+ }
mHWLightColors[cur_light] = light_color;
S32 gllight = GL_LIGHT0+cur_light;
glLightfv(gllight, GL_POSITION, light_pos_gl.mV);
glLightfv(gllight, GL_DIFFUSE, light_color.mV);
glLightfv(gllight, GL_AMBIENT, LLColor4::black.mV);
+ glLightfv(gllight, GL_SPECULAR, LLColor4::black.mV);
glLightf (gllight, GL_CONSTANT_ATTENUATION, 0.0f);
- glLightf (gllight, GL_LINEAR_ATTENUATION, linatten);
- glLightf (gllight, GL_QUADRATIC_ATTENUATION, 0.0f);
- if (light->isLightSpotlight() // directional (spot-)light
- && (LLPipeline::sRenderDeferred || gSavedSettings.getBOOL("RenderSpotLightsInNondeferred"))) // these are only rendered as GL spotlights if we're in deferred rendering mode *or* the setting forces them on
- {
- LLVector3 spotparams = light->getSpotLightParams();
- LLQuaternion quat = light->getRenderRotation();
- LLVector3 at_axis(0,0,-1); // this matches deferred rendering's object light direction
- at_axis *= quat;
- //llinfos << "SPOT!!!!!!! fov: " << spotparams.mV[0] << " focus: " << spotparams.mV[1] << " dir: " << at_axis << llendl;
- glLightfv(gllight, GL_SPOT_DIRECTION, at_axis.mV);
- glLightf (gllight, GL_SPOT_EXPONENT, 2.0f); // 2.0 = good old dot product ^ 2
- glLightf (gllight, GL_SPOT_CUTOFF, 90.0f); // hemisphere
- const float specular[] = {0.f, 0.f, 0.f, 0.f};
- glLightfv(gllight, GL_SPECULAR, specular);
- }
- else // omnidirectional (point) light
- {
+ glLightf (gllight, GL_LINEAR_ATTENUATION, atten);
+ glLightf (gllight, GL_QUADRATIC_ATTENUATION, quad);
glLightf (gllight, GL_SPOT_EXPONENT, 0.0f);
glLightf (gllight, GL_SPOT_CUTOFF, 180.0f);
-
- // we use specular.w = 1.0 as a cheap hack for the shaders to know that this is omnidirectional rather than a spotlight
- const float specular[] = {0.f, 0.f, 0.f, 1.f};
- glLightfv(gllight, GL_SPECULAR, specular);
- //llinfos << "boring light" << llendl;
- }
cur_light++;
if (cur_light >= 8)
{
@@ -4659,10 +4612,13 @@ void LLPipeline::setupHWLights(LLDrawPool* pool)
LLVector4 light_pos_gl(light_pos, 1.0f);
F32 light_radius = 16.f;
+ F32 atten, quad;
+ {
F32 x = 3.f;
- float linatten = x / (light_radius); // % of brightness at radius
-
+ atten = x / (light_radius); // % of brightness at radius
+ quad = 0.0f;
+ }
mHWLightColors[2] = light_color;
S32 gllight = GL_LIGHT2;
glLightfv(gllight, GL_POSITION, light_pos_gl.mV);
@@ -4670,8 +4626,8 @@ void LLPipeline::setupHWLights(LLDrawPool* pool)
glLightfv(gllight, GL_AMBIENT, LLColor4::black.mV);
glLightfv(gllight, GL_SPECULAR, LLColor4::black.mV);
glLightf (gllight, GL_CONSTANT_ATTENUATION, 0.0f);
- glLightf (gllight, GL_LINEAR_ATTENUATION, linatten);
- glLightf (gllight, GL_QUADRATIC_ATTENUATION, 0.0f);
+ glLightf (gllight, GL_LINEAR_ATTENUATION, atten);
+ glLightf (gllight, GL_QUADRATIC_ATTENUATION, quad);
glLightf (gllight, GL_SPOT_EXPONENT, 0.0f);
glLightf (gllight, GL_SPOT_CUTOFF, 180.0f);
}
@@ -4792,16 +4748,16 @@ void LLPipeline::enableLightsFullbright(const LLColor4& color)
enableLights(mask);
glLightModelfv(GL_LIGHT_MODEL_AMBIENT,color.mV);
- /*if (mLightingDetail >= 2)
+ if (mLightingDetail >= 2)
{
glColor4f(0.f, 0.f, 0.f, 1.f); // no local lighting by default
- }*/
+ }
}
void LLPipeline::disableLights()
{
enableLights(0); // no lighting (full bright)
- //glColor4f(1.f, 1.f, 1.f, 1.f); // lighting color = white by default
+ glColor4f(1.f, 1.f, 1.f, 1.f); // lighting color = white by default
}
//============================================================================
@@ -4991,7 +4947,8 @@ void LLPipeline::setLight(LLDrawable *drawablep, BOOL is_light)
//static
void LLPipeline::toggleRenderType(U32 type)
{
- gPipeline.mRenderTypeEnabled[type] = !gPipeline.mRenderTypeEnabled[type];
+ U32 bit = (1<<type);
+ gPipeline.mRenderTypeMask ^= bit;
}
//static
@@ -5539,7 +5496,6 @@ void LLPipeline::bindScreenToTexture()
}
static LLFastTimer::DeclareTimer FTM_RENDER_BLOOM("Bloom");
-
void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
{
LLMemType mt_ru(LLMemType::MTYPE_PIPELINE_RENDER_BLOOM);
@@ -5862,12 +5818,6 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
gGL.getTexUnit(0)->activate();
gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
-
- if (LLRenderTarget::sUseFBO)
- { //copy depth buffer from mScreen to framebuffer
- LLRenderTarget::copyContentsToFramebuffer(mScreen, 0, 0, mScreen.getWidth(), mScreen.getHeight(),
- 0, 0, mScreen.getWidth(), mScreen.getHeight(), GL_DEPTH_BUFFER_BIT, GL_NEAREST);
- }
}
@@ -5884,12 +5834,8 @@ 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;
@@ -6227,16 +6173,11 @@ 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")*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("alpha_soften", gSavedSettings.getF32("RenderDeferredAlphaSoften"));
+ shader.uniform1f ("shadow_offset", gSavedSettings.getF32("RenderShadowOffset"));
+ shader.uniform1f("shadow_bias", gSavedSettings.getF32("RenderShadowBias"));
shader.uniform1f("lum_scale", gSavedSettings.getF32("RenderLuminanceScale"));
shader.uniform1f("sun_lum_scale", gSavedSettings.getF32("RenderSunLuminanceScale"));
shader.uniform1f("sun_lum_offset", gSavedSettings.getF32("RenderSunLuminanceOffset"));
@@ -6330,6 +6271,8 @@ void LLPipeline::renderDeferredLighting()
glTexCoord4f(tc.v[0], tc.v[1], tc.v[2], 0);
}
+ if (gSavedSettings.getBOOL("RenderDeferredShadow"))
+ {
glPushMatrix();
glLoadIdentity();
glMatrixMode(GL_PROJECTION);
@@ -6337,9 +6280,7 @@ void LLPipeline::renderDeferredLighting()
glLoadIdentity();
mDeferredLight[0].bindTarget();
-
- if (gSavedSettings.getBOOL("RenderDeferredSSAO") || gSavedSettings.getS32("RenderShadowDetail") > 0)
- {
+ if (gSavedSettings.getBOOL("RenderDeferredSun"))
{ //paint shadow/SSAO light map (direct lighting lightmap)
LLFastTimer ftm(FTM_SUN_SHADOW);
bindDeferredShader(gDeferredSunProgram, 0);
@@ -6380,22 +6321,18 @@ void LLPipeline::renderDeferredLighting()
unbindDeferredShader(gDeferredSunProgram);
}
- }
else
{
- glClearColor(1,1,1,1);
mDeferredLight[0].clear(GL_COLOR_BUFFER_BIT);
- glClearColor(0,0,0,0);
}
mDeferredLight[0].flush();
- { //global illumination specific block (still experimental)
if (gSavedSettings.getBOOL("RenderDeferredBlurLight") &&
gSavedSettings.getBOOL("RenderDeferredGI"))
{
LLFastTimer ftm(FTM_EDGE_DETECTION);
- //generate edge map
+ //get edge map
LLGLDisable blend(GL_BLEND);
LLGLDisable test(GL_ALPHA_TEST);
LLGLDepthTest depth(GL_FALSE);
@@ -6492,9 +6429,8 @@ void LLPipeline::renderDeferredLighting()
unbindDeferredShader(gDeferredPostGIProgram);
}
}
- }
- if (gSavedSettings.getBOOL("RenderDeferredSSAO"))
+ if (gSavedSettings.getBOOL("RenderDeferredBlurLight"))
{ //soften direct lighting lightmap
LLFastTimer ftm(FTM_SOFTEN_SHADOW);
//blur lightmap
@@ -6564,6 +6500,7 @@ void LLPipeline::renderDeferredLighting()
stop_glerror();
glPopMatrix();
stop_glerror();
+ }
//copy depth and stencil from deferred screen
//mScreen.copyContents(mDeferredScreen, 0, 0, mDeferredScreen.getWidth(), mDeferredScreen.getHeight(),
@@ -6572,15 +6509,11 @@ void LLPipeline::renderDeferredLighting()
if (LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_DEFERRED) > 2)
{
mDeferredLight[1].bindTarget();
- // clear color buffer here (GI) - zeroing alpha (glow) is important or it will accumulate against sky
- glClearColor(0,0,0,0);
- mScreen.clear(GL_COLOR_BUFFER_BIT);
+ mDeferredLight[1].clear(GL_COLOR_BUFFER_BIT);
}
else
{
mScreen.bindTarget();
- // clear color buffer here - zeroing alpha (glow) is important or it will accumulate against sky
- glClearColor(0,0,0,0);
mScreen.clear(GL_COLOR_BUFFER_BIT);
}
@@ -6617,16 +6550,15 @@ void LLPipeline::renderDeferredLighting()
LLGLDisable stencil(GL_STENCIL_TEST);
gGL.setSceneBlendType(LLRender::BT_ALPHA);
- gPipeline.pushRenderTypeMask();
-
- gPipeline.andRenderTypeMask(LLPipeline::RENDER_TYPE_SKY,
- LLPipeline::RENDER_TYPE_CLOUDS,
- LLPipeline::RENDER_TYPE_WL_SKY,
- LLPipeline::END_RENDER_TYPES);
+ U32 render_mask = mRenderTypeMask;
+ mRenderTypeMask = mRenderTypeMask &
+ ((1 << LLPipeline::RENDER_TYPE_SKY) |
+ (1 << LLPipeline::RENDER_TYPE_CLOUDS) |
+ (1 << LLPipeline::RENDER_TYPE_WL_SKY));
renderGeomPostDeferred(*LLViewerCamera::getInstance());
- gPipeline.popRenderTypeMask();
+ mRenderTypeMask = render_mask;
}
BOOL render_local = gSavedSettings.getBOOL("RenderDeferredLocalLights");
@@ -6671,15 +6603,6 @@ void LLPipeline::renderDeferredLighting()
continue;
}
- if (volume->isAttachment())
- {
- if (!sRenderAttachedLights)
- {
- continue;
- }
- }
-
-
LLVector3 center = drawablep->getPositionAgent();
F32* c = center.mV;
F32 s = volume->getLightRadius()*1.5f;
@@ -6730,7 +6653,7 @@ void LLPipeline::renderDeferredLighting()
{ //draw box if camera is outside box
if (render_local)
{
- if (volume->isLightSpotlight())
+ if (volume->getLightTexture())
{
drawablep->getVOVolume()->updateSpotLightPriority();
spot_lights.push_back(drawablep);
@@ -6747,7 +6670,7 @@ void LLPipeline::renderDeferredLighting()
}
else if (render_fullscreen)
{
- if (volume->isLightSpotlight())
+ if (volume->getLightTexture())
{
drawablep->getVOVolume()->updateSpotLightPriority();
fullscreen_spot_lights.push_back(drawablep);
@@ -6948,48 +6871,29 @@ void LLPipeline::renderDeferredLighting()
LLGLDisable blend(GL_BLEND);
LLGLDisable stencil(GL_STENCIL_TEST);
- pushRenderTypeMask();
- andRenderTypeMask(LLPipeline::RENDER_TYPE_ALPHA,
- LLPipeline::RENDER_TYPE_FULLBRIGHT,
- LLPipeline::RENDER_TYPE_VOLUME,
- LLPipeline::RENDER_TYPE_GLOW,
- LLPipeline::RENDER_TYPE_BUMP,
- LLPipeline::RENDER_TYPE_PASS_SIMPLE,
- LLPipeline::RENDER_TYPE_PASS_ALPHA,
- LLPipeline::RENDER_TYPE_PASS_ALPHA_MASK,
- LLPipeline::RENDER_TYPE_PASS_BUMP,
- LLPipeline::RENDER_TYPE_PASS_POST_BUMP,
- LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT,
- LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT_ALPHA_MASK,
- LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT_SHINY,
- LLPipeline::RENDER_TYPE_PASS_GLOW,
- LLPipeline::RENDER_TYPE_PASS_GRASS,
- LLPipeline::RENDER_TYPE_PASS_SHINY,
- LLPipeline::RENDER_TYPE_PASS_INVISIBLE,
- LLPipeline::RENDER_TYPE_PASS_INVISI_SHINY,
- LLPipeline::RENDER_TYPE_AVATAR,
- END_RENDER_TYPES);
+ U32 render_mask = mRenderTypeMask;
+ mRenderTypeMask = mRenderTypeMask &
+ ((1 << LLPipeline::RENDER_TYPE_ALPHA) |
+ (1 << LLPipeline::RENDER_TYPE_FULLBRIGHT) |
+ (1 << LLPipeline::RENDER_TYPE_VOLUME) |
+ (1 << LLPipeline::RENDER_TYPE_GLOW) |
+ (1 << LLPipeline::RENDER_TYPE_BUMP) |
+ (1 << LLPipeline::RENDER_TYPE_PASS_SIMPLE) |
+ (1 << LLPipeline::RENDER_TYPE_PASS_ALPHA) |
+ (1 << LLPipeline::RENDER_TYPE_PASS_ALPHA_MASK) |
+ (1 << LLPipeline::RENDER_TYPE_PASS_BUMP) |
+ (1 << LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT) |
+ (1 << LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT_ALPHA_MASK) |
+ (1 << LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT_SHINY) |
+ (1 << LLPipeline::RENDER_TYPE_PASS_GLOW) |
+ (1 << LLPipeline::RENDER_TYPE_PASS_GRASS) |
+ (1 << LLPipeline::RENDER_TYPE_PASS_SHINY) |
+ (1 << LLPipeline::RENDER_TYPE_PASS_INVISIBLE) |
+ (1 << LLPipeline::RENDER_TYPE_PASS_INVISI_SHINY) |
+ (1 << LLPipeline::RENDER_TYPE_AVATAR));
renderGeomPostDeferred(*LLViewerCamera::getInstance());
- popRenderTypeMask();
- }
-
- {
- //render highlights, etc.
- renderHighlights();
- mHighlightFaces.clear();
-
- renderDebug();
-
- LLVertexBuffer::unbind();
-
- if (gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI))
- {
- // Render debugging beacons.
- gObjectList.renderObjectBeacons();
- LLHUDObject::renderAll();
- gObjectList.resetObjectBeacons();
- }
+ mRenderTypeMask = render_mask;
}
mScreen.flush();
@@ -7225,7 +7129,7 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
LLPipeline::sUseOcclusion = llmin(occlusion, 1);
- gPipeline.pushRenderTypeMask();
+ U32 type_mask = gPipeline.mRenderTypeMask;
glh::matrix4f projection = glh_get_current_projection();
glh::matrix4f mat;
@@ -7294,47 +7198,43 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
glCullFace(GL_FRONT);
static LLCullResult ref_result;
-
+ U32 ref_mask = 0;
if (LLDrawPoolWater::sNeedsDistortionUpdate)
{
//initial sky pass (no user clip plane)
{ //mask out everything but the sky
- gPipeline.pushRenderTypeMask();
- gPipeline.andRenderTypeMask(LLPipeline::RENDER_TYPE_SKY,
- LLPipeline::RENDER_TYPE_WL_SKY,
- LLPipeline::END_RENDER_TYPES);
+ U32 tmp = mRenderTypeMask;
+ mRenderTypeMask = tmp & ((1 << LLPipeline::RENDER_TYPE_SKY) |
+ (1 << LLPipeline::RENDER_TYPE_WL_SKY));
static LLCullResult result;
updateCull(camera, result);
stateSort(camera, result);
- andRenderTypeMask(LLPipeline::RENDER_TYPE_SKY,
- LLPipeline::RENDER_TYPE_CLOUDS,
- LLPipeline::RENDER_TYPE_WL_SKY,
- LLPipeline::END_RENDER_TYPES);
-
+ mRenderTypeMask = tmp & ((1 << LLPipeline::RENDER_TYPE_SKY) |
+ (1 << LLPipeline::RENDER_TYPE_CLOUDS) |
+ (1 << LLPipeline::RENDER_TYPE_WL_SKY));
renderGeom(camera, TRUE);
- gPipeline.popRenderTypeMask();
+ mRenderTypeMask = tmp;
}
- gPipeline.pushRenderTypeMask();
+ U32 mask = mRenderTypeMask;
+ mRenderTypeMask &= ~((1<<LLPipeline::RENDER_TYPE_WATER) |
+ (1<<LLPipeline::RENDER_TYPE_GROUND) |
+ (1<<LLPipeline::RENDER_TYPE_SKY) |
+ (1<<LLPipeline::RENDER_TYPE_CLOUDS));
- clearRenderTypeMask(LLPipeline::RENDER_TYPE_WATER,
- LLPipeline::RENDER_TYPE_GROUND,
- LLPipeline::RENDER_TYPE_SKY,
- LLPipeline::RENDER_TYPE_CLOUDS,
- LLPipeline::END_RENDER_TYPES);
+ if (gSavedSettings.getBOOL("RenderWaterReflections"))
+ { //mask out selected geometry based on reflection detail
S32 detail = gSavedSettings.getS32("RenderReflectionDetail");
- if (detail > 0)
- { //mask out selected geometry based on reflection detail
- if (detail < 4)
- {
- clearRenderTypeMask(LLPipeline::RENDER_TYPE_PARTICLES, END_RENDER_TYPES);
if (detail < 3)
{
- clearRenderTypeMask(LLPipeline::RENDER_TYPE_AVATAR, END_RENDER_TYPES);
+ mRenderTypeMask &= ~(1 << LLPipeline::RENDER_TYPE_PARTICLES);
if (detail < 2)
{
- clearRenderTypeMask(LLPipeline::RENDER_TYPE_VOLUME, END_RENDER_TYPES);
+ mRenderTypeMask &= ~(1 << LLPipeline::RENDER_TYPE_AVATAR);
+ if (detail < 1)
+ {
+ mRenderTypeMask &= ~(1 << LLPipeline::RENDER_TYPE_VOLUME);
}
}
}
@@ -7345,18 +7245,19 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
stateSort(camera, ref_result);
}
+ ref_mask = mRenderTypeMask;
+ mRenderTypeMask = mask;
+ }
if (LLDrawPoolWater::sNeedsDistortionUpdate)
{
- if (gSavedSettings.getS32("RenderReflectionDetail") > 0)
+ mRenderTypeMask = ref_mask;
+ if (gSavedSettings.getBOOL("RenderWaterReflections"))
{
gPipeline.grabReferences(ref_result);
LLGLUserClipPlane clip_plane(plane, mat, projection);
renderGeom(camera);
}
}
-
- gPipeline.popRenderTypeMask();
- }
glCullFace(GL_BACK);
glPopMatrix();
mWaterRef.flush();
@@ -7369,20 +7270,18 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
if (last_update)
{
camera.setFar(camera_in.getFar());
- clearRenderTypeMask(LLPipeline::RENDER_TYPE_WATER,
- LLPipeline::RENDER_TYPE_GROUND,
- END_RENDER_TYPES);
+ mRenderTypeMask = type_mask & (~(1<<LLPipeline::RENDER_TYPE_WATER) |
+ (1<<LLPipeline::RENDER_TYPE_GROUND));
stop_glerror();
LLPipeline::sUnderWaterRender = LLViewerCamera::getInstance()->cameraUnderWater() ? FALSE : TRUE;
if (LLPipeline::sUnderWaterRender)
{
- clearRenderTypeMask(LLPipeline::RENDER_TYPE_GROUND,
- LLPipeline::RENDER_TYPE_SKY,
- LLPipeline::RENDER_TYPE_CLOUDS,
- LLPipeline::RENDER_TYPE_WL_SKY,
- END_RENDER_TYPES);
+ mRenderTypeMask &= ~((1<<LLPipeline::RENDER_TYPE_GROUND) |
+ (1<<LLPipeline::RENDER_TYPE_SKY) |
+ (1<<LLPipeline::RENDER_TYPE_CLOUDS) |
+ (1<<LLPipeline::RENDER_TYPE_WL_SKY));
}
LLViewerCamera::updateFrustumPlanes(camera);
@@ -7423,7 +7322,7 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
}
glClearColor(0.f, 0.f, 0.f, 0.f);
gViewerWindow->setup3DViewport();
- gPipeline.popRenderTypeMask();
+ mRenderTypeMask = type_mask;
LLDrawPoolWater::sNeedsReflectionUpdate = FALSE;
LLDrawPoolWater::sNeedsDistortionUpdate = FALSE;
LLViewerCamera::getInstance()->setUserClipPlane(LLPlane(-pnorm, -pd));
@@ -7614,169 +7513,112 @@ void LLPipeline::renderShadow(glh::matrix4f& view, glh::matrix4f& proj, LLCamera
LLPipeline::sShadowRender = FALSE;
}
-static LLFastTimer::DeclareTimer FTM_VISIBLE_CLOUD("Visible Cloud");
+
BOOL LLPipeline::getVisiblePointCloud(LLCamera& camera, LLVector3& min, LLVector3& max, std::vector<LLVector3>& fp, LLVector3 light_dir)
{
- LLFastTimer t(FTM_VISIBLE_CLOUD);
//get point cloud of intersection of frust and min, max
+ //get set of planes
+ std::vector<LLPlane> ps;
+
if (getVisibleExtents(camera, min, max))
{
return FALSE;
}
- //get set of planes on bounding box
- std::vector<LLPlane> bp;
-
- bp.push_back(LLPlane(min, LLVector3(-1,0,0)));
- bp.push_back(LLPlane(min, LLVector3(0,-1,0)));
- bp.push_back(LLPlane(min, LLVector3(0,0,-1)));
- bp.push_back(LLPlane(max, LLVector3(1,0,0)));
- bp.push_back(LLPlane(max, LLVector3(0,1,0)));
- bp.push_back(LLPlane(max, LLVector3(0,0,1)));
-
- //potential points
- std::vector<LLVector3> pp;
+ ps.push_back(LLPlane(min, LLVector3(-1,0,0)));
+ ps.push_back(LLPlane(min, LLVector3(0,-1,0)));
+ ps.push_back(LLPlane(min, LLVector3(0,0,-1)));
+ ps.push_back(LLPlane(max, LLVector3(1,0,0)));
+ ps.push_back(LLPlane(max, LLVector3(0,1,0)));
+ ps.push_back(LLPlane(max, LLVector3(0,0,1)));
- //add corners of AABB
- pp.push_back(LLVector3(min.mV[0], min.mV[1], min.mV[2]));
- pp.push_back(LLVector3(max.mV[0], min.mV[1], min.mV[2]));
- pp.push_back(LLVector3(min.mV[0], max.mV[1], min.mV[2]));
- pp.push_back(LLVector3(max.mV[0], max.mV[1], min.mV[2]));
- pp.push_back(LLVector3(min.mV[0], min.mV[1], max.mV[2]));
- pp.push_back(LLVector3(max.mV[0], min.mV[1], max.mV[2]));
- pp.push_back(LLVector3(min.mV[0], max.mV[1], max.mV[2]));
- pp.push_back(LLVector3(max.mV[0], max.mV[1], max.mV[2]));
-
- //add corners of camera frustum
- for (U32 i = 0; i < 8; i++)
+ /*if (!light_dir.isExactlyZero())
{
- pp.push_back(camera.mAgentFrustum[i]);
- }
+ LLPlane ucp;
+ LLPlane mcp;
+ F32 maxd = -1.f;
+ F32 mind = 1.f;
- //bounding box line segments
- U32 bs[] =
- {
- 0,1,
- 1,3,
- 3,2,
- 2,0,
-
- 4,5,
- 5,7,
- 7,6,
- 6,4,
-
- 0,4,
- 1,5,
- 3,7,
- 2,6
- };
-
- for (U32 i = 0; i < 12; i++)
- { //for each line segment in bounding box
- for (U32 j = 0; j < 6; j++)
- { //for each plane in camera frustum
- const LLPlane& cp = camera.getAgentPlane(j);
- const LLVector3& v1 = pp[bs[i*2+0]];
- const LLVector3& v2 = pp[bs[i*2+1]];
- const LLVector3 n(cp.mV);
-
- LLVector3 line = v1-v2;
-
- F32 d1 = line*n;
- F32 d2 = -cp.dist(v2);
-
- F32 t = d2/d1;
-
- if (t > 0.f && t < 1.f)
+ for (U32 i = 0; i < ps.size(); ++i)
+ { //pick the plane most aligned to lightDir for user clip plane
+ LLVector3 n(ps[i].mV);
+ F32 da = n*light_dir;
+ if (da > maxd)
{
- LLVector3 intersect = v2+line*t;
- pp.push_back(intersect);
+ maxd = da;
+ ucp = ps[i];
}
+
+ if (da < mind)
+ {
+ mind = da;
+ mcp = ps[i];
}
}
- //camera frustum line segments
- const U32 fs[] =
- {
- 0,1,
- 1,2,
- 2,3,
- 3,1,
-
- 4,5,
- 5,6,
- 6,7,
- 7,4,
+ camera.setUserClipPlane(ucp);
+
+ ps.clear();
+ ps.push_back(ucp);
+ ps.push_back(mcp);
+ }*/
- 0,4,
- 1,5,
- 2,6,
- 3,7
- };
-
- LLVector3 center = (max+min)*0.5f;
- LLVector3 size = (max-min)*0.5f;
+ for (U32 i = 0; i < 6; i++)
+ {
+ ps.push_back(camera.getAgentPlane(i));
+ }
+
+ //get set of points where planes intersect and points are not above any plane
+ fp.clear();
- for (U32 i = 0; i < 12; i++)
+ for (U32 i = 0; i < ps.size(); ++i)
{
- for (U32 j = 0; j < 6; ++j)
+ for (U32 j = 0; j < ps.size(); ++j)
{
- const LLVector3& v1 = pp[fs[i*2+0]+8];
- const LLVector3& v2 = pp[fs[i*2+1]+8];
- const LLPlane& cp = bp[j];
- const LLVector3 n(cp.mV);
-
- LLVector3 line = v1-v2;
-
- F32 d1 = line*n;
- F32 d2 = -cp.dist(v2);
-
- F32 t = d2/d1;
-
- if (t > 0.f && t < 1.f)
+ for (U32 k = 0; k < ps.size(); ++k)
{
- LLVector3 intersect = v2+line*t;
- pp.push_back(intersect);
- }
- }
+ if (i == j ||
+ i == k ||
+ k == j)
+ {
+ continue;
}
- LLVector3 ext[] = { min-LLVector3(0.05f,0.05f,0.05f),
- max+LLVector3(0.05f,0.05f,0.05f) };
+ LLVector3 n1,n2,n3;
+ F32 d1,d2,d3;
- for (U32 i = 0; i < pp.size(); ++i)
- {
- bool found = true;
+ n1.setVec(ps[i].mV);
+ n2.setVec(ps[j].mV);
+ n3.setVec(ps[k].mV);
- const F32* p = pp[i].mV;
+ d1 = ps[i].mV[3];
+ d2 = ps[j].mV[3];
+ d3 = ps[k].mV[3];
- for (U32 j = 0; j < 3; ++j)
- {
- if (p[j] < ext[0].mV[j] ||
- p[j] > ext[1].mV[j])
- {
- found = false;
- break;
- }
- }
+ //get point of intersection of 3 planes "p"
+ LLVector3 p = (-d1*(n2%n3)-d2*(n3%n1)-d3*(n1%n2))/(n1*(n2%n3));
- for (U32 j = 0; j < 6; ++j)
- {
- const LLPlane& cp = camera.getAgentPlane(j);
- F32 dist = cp.dist(pp[i]);
- if (dist > 0.05f) //point is above some plane, not contained
+ 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)
+ { //point is on all three planes
+ BOOL found = TRUE;
+ for (U32 l = 0; l < ps.size() && found; ++l)
{
- found = false;
- break;
+ if (llround(ps[l].dist(p), 0.0001f) > 0.0f)
+ { //point is above some plane, not contained
+ found = FALSE;
}
}
if (found)
{
- fp.push_back(pp[i]);
+ fp.push_back(p);
+ }
+ }
+ }
}
}
@@ -7877,22 +7719,21 @@ void LLPipeline::generateGI(LLCamera& camera, LLVector3& lightDir, std::vector<L
sun_cam.ignoreAgentFrustumPlane(LLCamera::AGENT_PLANE_NEAR);
static LLCullResult result;
- pushRenderTypeMask();
+ U32 type_mask = mRenderTypeMask;
- andRenderTypeMask(LLPipeline::RENDER_TYPE_SIMPLE,
- LLPipeline::RENDER_TYPE_FULLBRIGHT,
- LLPipeline::RENDER_TYPE_BUMP,
- LLPipeline::RENDER_TYPE_VOLUME,
- LLPipeline::RENDER_TYPE_TREE,
- LLPipeline::RENDER_TYPE_TERRAIN,
- LLPipeline::RENDER_TYPE_WATER,
- LLPipeline::RENDER_TYPE_PASS_ALPHA_SHADOW,
- LLPipeline::RENDER_TYPE_AVATAR,
- LLPipeline::RENDER_TYPE_PASS_SIMPLE,
- LLPipeline::RENDER_TYPE_PASS_BUMP,
- LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT,
- LLPipeline::RENDER_TYPE_PASS_SHINY,
- END_RENDER_TYPES);
+ mRenderTypeMask = type_mask & ((1<<LLPipeline::RENDER_TYPE_SIMPLE) |
+ (1<<LLPipeline::RENDER_TYPE_FULLBRIGHT) |
+ (1<<LLPipeline::RENDER_TYPE_BUMP) |
+ (1<<LLPipeline::RENDER_TYPE_VOLUME) |
+ (1<<LLPipeline::RENDER_TYPE_TREE) |
+ (1<<LLPipeline::RENDER_TYPE_TERRAIN) |
+ (1<<LLPipeline::RENDER_TYPE_WATER) |
+ (1<<LLPipeline::RENDER_TYPE_PASS_ALPHA_SHADOW) |
+ (1<<LLPipeline::RENDER_TYPE_AVATAR) |
+ (1 << LLPipeline::RENDER_TYPE_PASS_SIMPLE) |
+ (1 << LLPipeline::RENDER_TYPE_PASS_BUMP) |
+ (1 << LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT) |
+ (1 << LLPipeline::RENDER_TYPE_PASS_SHINY));
@@ -7961,7 +7802,7 @@ void LLPipeline::generateGI(LLCamera& camera, LLVector3& lightDir, std::vector<L
LLPipeline::sShadowRender = FALSE;
sMinRenderSize = 0.f;
- popRenderTypeMask();
+ mRenderTypeMask = type_mask;
}
@@ -8045,11 +7886,30 @@ void LLPipeline::generateHighlight(LLCamera& camera)
void LLPipeline::generateSunShadow(LLCamera& camera)
{
- if (!sRenderDeferred || gSavedSettings.getS32("RenderShadowDetail") <= 0)
+ if (!sRenderDeferred || !gSavedSettings.getBOOL("RenderDeferredShadow"))
{
return;
}
+ //temporary hack to disable shadows but keep local lights
+ static BOOL clear = TRUE;
+ BOOL gen_shadow = gSavedSettings.getBOOL("RenderDeferredSunShadow");
+ if (!gen_shadow)
+ {
+ if (clear)
+ {
+ clear = FALSE;
+ for (U32 i = 0; i < 6; i++)
+ {
+ mShadow[i].bindTarget();
+ mShadow[i].clear();
+ mShadow[i].flush();
+ }
+ }
+ return;
+ }
+ clear = TRUE;
+
F64 last_modelview[16];
F64 last_projection[16];
for (U32 i = 0; i < 16; i++)
@@ -8058,24 +7918,23 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
last_projection[i] = gGLLastProjection[i];
}
- pushRenderTypeMask();
- andRenderTypeMask(LLPipeline::RENDER_TYPE_SIMPLE,
- LLPipeline::RENDER_TYPE_ALPHA,
- LLPipeline::RENDER_TYPE_GRASS,
- LLPipeline::RENDER_TYPE_FULLBRIGHT,
- LLPipeline::RENDER_TYPE_BUMP,
- LLPipeline::RENDER_TYPE_VOLUME,
- LLPipeline::RENDER_TYPE_AVATAR,
- LLPipeline::RENDER_TYPE_TREE,
- LLPipeline::RENDER_TYPE_TERRAIN,
- LLPipeline::RENDER_TYPE_WATER,
- LLPipeline::RENDER_TYPE_PASS_ALPHA_SHADOW,
- LLPipeline::RENDER_TYPE_PASS_SIMPLE,
- LLPipeline::RENDER_TYPE_PASS_BUMP,
- LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT,
- LLPipeline::RENDER_TYPE_PASS_SHINY,
- LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT_SHINY,
- END_RENDER_TYPES);
+ U32 type_mask = mRenderTypeMask;
+ mRenderTypeMask = type_mask & ((1<<LLPipeline::RENDER_TYPE_SIMPLE) |
+ (1<<LLPipeline::RENDER_TYPE_ALPHA) |
+ (1<<LLPipeline::RENDER_TYPE_GRASS) |
+ (1<<LLPipeline::RENDER_TYPE_FULLBRIGHT) |
+ (1<<LLPipeline::RENDER_TYPE_BUMP) |
+ (1<<LLPipeline::RENDER_TYPE_VOLUME) |
+ (1<<LLPipeline::RENDER_TYPE_AVATAR) |
+ (1<<LLPipeline::RENDER_TYPE_TREE) |
+ (1<<LLPipeline::RENDER_TYPE_TERRAIN) |
+ (1<<LLPipeline::RENDER_TYPE_WATER) |
+ (1<<LLPipeline::RENDER_TYPE_PASS_ALPHA_SHADOW) |
+ (1 << LLPipeline::RENDER_TYPE_PASS_SIMPLE) |
+ (1 << LLPipeline::RENDER_TYPE_PASS_BUMP) |
+ (1 << LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT) |
+ (1 << LLPipeline::RENDER_TYPE_PASS_SHINY) |
+ (1 << LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT_SHINY));
gGL.setColorMask(false, false);
@@ -8127,32 +7986,17 @@ 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(main_camera,min,max,fp);
+ getVisiblePointCloud(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();
- }
- popRenderTypeMask();
+ mRenderTypeMask = type_mask;
return;
}
@@ -8226,7 +8070,7 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
shadow_cam = camera;
shadow_cam.setFar(16.f);
- LLViewerCamera::updateFrustumPlanes(shadow_cam, FALSE, FALSE, TRUE);
+ LLViewerCamera::updateFrustumPlanes(shadow_cam);
LLVector3* frust = shadow_cam.mAgentFrustum;
@@ -8238,11 +8082,10 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
for (U32 i = 0; i < 4; i++)
{
LLVector3 delta = frust[i+4]-eye;
- delta += (frust[i+4]-frust[(i+2)%4+4])*0.05f;
delta.normVec();
F32 dp = delta*pn;
- frust[i] = eye + (delta*dist[j]*0.95f)/dp;
- frust[i+4] = eye + (delta*dist[j+1]*1.05f)/dp;
+ frust[i] = eye + (delta*dist[j])/dp;
+ frust[i+4] = eye + (delta*dist[j+1])/dp;
}
shadow_cam.calcAgentFrustumPlanes(frust);
@@ -8583,13 +8426,7 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
}
- //hack to disable projector shadows
- static bool clear = true;
- bool gen_shadow = gSavedSettings.getS32("RenderShadowDetail") > 1;
- if (gen_shadow)
- {
- clear = true;
F32 fade_amt = gFrameIntervalSeconds * llmax(LLViewerCamera::getInstance()->getVelocityStat()->getCurrentPerSec(), 1.f);
//update shadow targets
@@ -8717,20 +8554,6 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
mShadow[i+4].flush();
}
- }
- else
- {
- if (clear)
- {
- clear = false;
- for (U32 i = 4; i < 6; i++)
- {
- mShadow[i].bindTarget();
- mShadow[i].clear();
- mShadow[i].flush();
- }
- }
- }
if (!gSavedSettings.getBOOL("CameraOffset"))
{
@@ -8754,7 +8577,7 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
gGLLastProjection[i] = last_projection[i];
}
- popRenderTypeMask();
+ mRenderTypeMask = type_mask;
}
void LLPipeline::renderGroups(LLRenderPass* pass, U32 type, U32 mask, BOOL texture)
@@ -8790,36 +8613,38 @@ void LLPipeline::generateImpostor(LLVOAvatar* avatar)
assertInitialized();
+ U32 mask;
BOOL muted = LLMuteList::getInstance()->isMuted(avatar->getID());
- pushRenderTypeMask();
-
if (muted)
{
- andRenderTypeMask(LLPipeline::RENDER_TYPE_AVATAR, END_RENDER_TYPES);
+ mask = 1 << LLPipeline::RENDER_TYPE_AVATAR;
}
else
{
- andRenderTypeMask(LLPipeline::RENDER_TYPE_VOLUME,
- LLPipeline::RENDER_TYPE_AVATAR,
- LLPipeline::RENDER_TYPE_BUMP,
- LLPipeline::RENDER_TYPE_GRASS,
- LLPipeline::RENDER_TYPE_SIMPLE,
- LLPipeline::RENDER_TYPE_FULLBRIGHT,
- LLPipeline::RENDER_TYPE_ALPHA,
- LLPipeline::RENDER_TYPE_INVISIBLE,
- LLPipeline::RENDER_TYPE_PASS_SIMPLE,
- LLPipeline::RENDER_TYPE_PASS_ALPHA,
- LLPipeline::RENDER_TYPE_PASS_ALPHA_MASK,
- LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT,
- LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT_ALPHA_MASK,
- LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT_SHINY,
- LLPipeline::RENDER_TYPE_PASS_SHINY,
- LLPipeline::RENDER_TYPE_PASS_INVISIBLE,
- LLPipeline::RENDER_TYPE_PASS_INVISI_SHINY,
- END_RENDER_TYPES);
+ mask = (1<<LLPipeline::RENDER_TYPE_VOLUME) |
+ (1<<LLPipeline::RENDER_TYPE_AVATAR) |
+ (1<<LLPipeline::RENDER_TYPE_BUMP) |
+ (1<<LLPipeline::RENDER_TYPE_GRASS) |
+ (1<<LLPipeline::RENDER_TYPE_SIMPLE) |
+ (1<<LLPipeline::RENDER_TYPE_FULLBRIGHT) |
+ (1<<LLPipeline::RENDER_TYPE_ALPHA) |
+ (1<<LLPipeline::RENDER_TYPE_INVISIBLE) |
+ (1 << LLPipeline::RENDER_TYPE_PASS_SIMPLE) |
+ (1 << LLPipeline::RENDER_TYPE_PASS_ALPHA) |
+ (1 << LLPipeline::RENDER_TYPE_PASS_ALPHA_MASK) |
+ (1 << LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT) |
+ (1 << LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT_ALPHA_MASK) |
+ (1 << LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT_SHINY) |
+ (1 << LLPipeline::RENDER_TYPE_PASS_SHINY) |
+ (1 << LLPipeline::RENDER_TYPE_PASS_INVISIBLE) |
+ (1 << LLPipeline::RENDER_TYPE_PASS_INVISI_SHINY);
}
+ mask = mask & gPipeline.getRenderTypeMask();
+ U32 saved_mask = gPipeline.mRenderTypeMask;
+ gPipeline.mRenderTypeMask = mask;
+
S32 occlusion = sUseOcclusion;
sUseOcclusion = 0;
sReflectionRender = sRenderDeferred ? FALSE : TRUE;
@@ -8993,7 +8818,7 @@ void LLPipeline::generateImpostor(LLVOAvatar* avatar)
sReflectionRender = FALSE;
sImpostorRender = FALSE;
sShadowRender = FALSE;
- popRenderTypeMask();
+ gPipeline.mRenderTypeMask = saved_mask;
glMatrixMode(GL_PROJECTION);
glPopMatrix();
@@ -9034,121 +8859,4 @@ LLCullResult::sg_list_t::iterator LLPipeline::endAlphaGroups()
return sCull->endAlphaGroups();
}
-BOOL LLPipeline::hasRenderType(const U32 type) const
-{
- return mRenderTypeEnabled[type];
-}
-
-void LLPipeline::setRenderTypeMask(U32 type, ...)
-{
- va_list args;
-
- va_start(args, type);
- while (type < END_RENDER_TYPES)
- {
- mRenderTypeEnabled[type] = TRUE;
- type = va_arg(args, U32);
- }
- va_end(args);
-
- if (type > END_RENDER_TYPES)
- {
- llerrs << "Invalid render type." << llendl;
- }
-}
-
-BOOL LLPipeline::hasAnyRenderType(U32 type, ...) const
-{
- va_list args;
-
- va_start(args, type);
- while (type < END_RENDER_TYPES)
- {
- if (mRenderTypeEnabled[type])
- {
- return TRUE;
- }
- type = va_arg(args, U32);
- }
- va_end(args);
-
- if (type > END_RENDER_TYPES)
- {
- llerrs << "Invalid render type." << llendl;
- }
-
- return FALSE;
-}
-
-void LLPipeline::pushRenderTypeMask()
-{
- std::string cur_mask;
- cur_mask.assign((const char*) mRenderTypeEnabled, sizeof(mRenderTypeEnabled));
- mRenderTypeEnableStack.push(cur_mask);
-}
-
-void LLPipeline::popRenderTypeMask()
-{
- if (mRenderTypeEnableStack.empty())
- {
- llerrs << "Depleted render type stack." << llendl;
- }
-
- memcpy(mRenderTypeEnabled, mRenderTypeEnableStack.top().data(), sizeof(mRenderTypeEnabled));
- mRenderTypeEnableStack.pop();
-}
-
-void LLPipeline::andRenderTypeMask(U32 type, ...)
-{
- va_list args;
-
- BOOL tmp[NUM_RENDER_TYPES];
- for (U32 i = 0; i < NUM_RENDER_TYPES; ++i)
- {
- tmp[i] = FALSE;
- }
-
- va_start(args, type);
- while (type < END_RENDER_TYPES)
- {
- if (mRenderTypeEnabled[type])
- {
- tmp[type] = TRUE;
- }
-
- type = va_arg(args, U32);
- }
- va_end(args);
-
- if (type > END_RENDER_TYPES)
- {
- llerrs << "Invalid render type." << llendl;
- }
-
- for (U32 i = 0; i < LLPipeline::NUM_RENDER_TYPES; ++i)
- {
- mRenderTypeEnabled[i] = tmp[i];
- }
-
-}
-
-void LLPipeline::clearRenderTypeMask(U32 type, ...)
-{
- va_list args;
-
- va_start(args, type);
- while (type < END_RENDER_TYPES)
- {
- mRenderTypeEnabled[type] = FALSE;
-
- type = va_arg(args, U32);
- }
- va_end(args);
-
- if (type > END_RENDER_TYPES)
- {
- llerrs << "Invalid render type." << llendl;
- }
-}
-
diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h
index fe0683d29f..c43e0c2ceb 100644
--- a/indra/newview/pipeline.h
+++ b/indra/newview/pipeline.h
@@ -40,8 +40,6 @@
#include "lldrawable.h"
#include "llrendertarget.h"
-#include <stack>
-
class LLViewerTexture;
class LLEdge;
class LLFace;
@@ -273,25 +271,12 @@ public:
LLCullResult::sg_list_t::iterator beginAlphaGroups();
LLCullResult::sg_list_t::iterator endAlphaGroups();
-
void addTrianglesDrawn(S32 index_count, U32 render_type = LLRender::TRIANGLES);
-
+ BOOL hasRenderType(const U32 type) const { return (type && (mRenderTypeMask & (1<<type))) ? TRUE : FALSE; }
BOOL hasRenderDebugFeatureMask(const U32 mask) const { return (mRenderDebugFeatureMask & mask) ? TRUE : FALSE; }
BOOL hasRenderDebugMask(const U32 mask) const { return (mRenderDebugMask & mask) ? TRUE : FALSE; }
-
-
-
- BOOL hasRenderType(const U32 type) const;
- BOOL hasAnyRenderType(const U32 type, ...) const;
-
- void setRenderTypeMask(U32 type, ...);
- void orRenderTypeMask(U32 type, ...);
- void andRenderTypeMask(U32 type, ...);
- void clearRenderTypeMask(U32 type, ...);
-
- void pushRenderTypeMask();
- void popRenderTypeMask();
-
+ void setRenderTypeMask(const U32 mask) { mRenderTypeMask = mask; }
+ U32 getRenderTypeMask() const { return mRenderTypeMask; }
static void toggleRenderType(U32 type);
// For UI control of render features
@@ -369,7 +354,6 @@ public:
RENDER_TYPE_PASS_FULLBRIGHT_SHINY = LLRenderPass::PASS_FULLBRIGHT_SHINY,
RENDER_TYPE_PASS_SHINY = LLRenderPass::PASS_SHINY,
RENDER_TYPE_PASS_BUMP = LLRenderPass::PASS_BUMP,
- RENDER_TYPE_PASS_POST_BUMP = LLRenderPass::PASS_POST_BUMP,
RENDER_TYPE_PASS_GLOW = LLRenderPass::PASS_GLOW,
RENDER_TYPE_PASS_ALPHA = LLRenderPass::PASS_ALPHA,
RENDER_TYPE_PASS_ALPHA_MASK = LLRenderPass::PASS_ALPHA_MASK,
@@ -380,9 +364,7 @@ public:
RENDER_TYPE_VOLUME,
RENDER_TYPE_PARTICLES,
RENDER_TYPE_CLOUDS,
- RENDER_TYPE_HUD_PARTICLES,
- NUM_RENDER_TYPES,
- END_RENDER_TYPES = NUM_RENDER_TYPES
+ RENDER_TYPE_HUD_PARTICLES
};
enum LLRenderDebugFeatureMask
@@ -456,8 +438,7 @@ public:
static BOOL sForceOldBakedUpload; // If true will not use capabilities to upload baked textures.
static S32 sUseOcclusion; // 0 = no occlusion, 1 = read only, 2 = read/write
static BOOL sDelayVBUpdate;
- static BOOL sAutoMaskAlphaDeferred;
- static BOOL sAutoMaskAlphaNonDeferred;
+ static BOOL sFastAlpha;
static BOOL sDisableShaders; // if TRUE, rendering will be done without shaders
static BOOL sRenderBump;
static BOOL sUseTriStrips;
@@ -546,9 +527,7 @@ public:
S32 mVertexShadersLoaded; // 0 = no, 1 = yes, -1 = failed
protected:
- BOOL mRenderTypeEnabled[NUM_RENDER_TYPES];
- std::stack<std::string> mRenderTypeEnableStack;
-
+ U32 mRenderTypeMask;
U32 mRenderDebugFeatureMask;
U32 mRenderDebugMask;
diff --git a/indra/newview/res/have_artwork_bundle.marker b/indra/newview/res/have_artwork_bundle.marker
deleted file mode 100644
index 1dbb238d53..0000000000
--- a/indra/newview/res/have_artwork_bundle.marker
+++ /dev/null
@@ -1 +0,0 @@
-If this file exists then you have the artwork bundle installed, which is packaged separately from the Viewer source in the open-source tree. This marker is for the benefit of the build system so it can warn you properly if it's not there. :)
diff --git a/indra/newview/res/viewerRes.rc b/indra/newview/res/viewerRes.rc
index 5e8cee1f5f..a575aabbca 100644
--- a/indra/newview/res/viewerRes.rc
+++ b/indra/newview/res/viewerRes.rc
@@ -149,7 +149,7 @@ BEGIN
VALUE "FileDescription", "Second Life"
VALUE "FileVersion", "2.1.1.0"
VALUE "InternalName", "Second Life"
- VALUE "LegalCopyright", "Copyright 锟 2001-2010, Linden Research, Inc."
+ VALUE "LegalCopyright", "Copyright 2001-2010, Linden Research, Inc."
VALUE "OriginalFilename", "SecondLife.exe"
VALUE "ProductName", "Second Life"
VALUE "ProductVersion", "2.1.1.0"
diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml
index 5ba1fc9b21..2188c71ff9 100644
--- a/indra/newview/skins/default/colors.xml
+++ b/indra/newview/skins/default/colors.xml
@@ -113,7 +113,7 @@
reference="LtYellow" />
<color
name="AgentLinkColor"
- reference="EmphasisColor" />
+ reference="White" />
<color
name="AlertTextColor"
value="0.58 0.66 0.84 1" />
diff --git a/indra/newview/skins/default/xui/en/floater_aaa.xml b/indra/newview/skins/default/xui/en/floater_aaa.xml
index cae6146880..b9bc45a10b 100644
--- a/indra/newview/skins/default/xui/en/floater_aaa.xml
+++ b/indra/newview/skins/default/xui/en/floater_aaa.xml
@@ -21,7 +21,7 @@
<string name="test_the_vlt">This string CHANGE2 is extracted.</string>
<string name="testing_eli">Just a test. changes.</string>
<chat_history
- parse_urls="true"
+ allow_html="true"
bg_readonly_color="ChatHistoryBgColor"
bg_writeable_color="ChatHistoryBgColor"
border_visible="false"
diff --git a/indra/newview/skins/default/xui/en/floater_about.xml b/indra/newview/skins/default/xui/en/floater_about.xml
index f4d65bdb3a..b5be03346e 100644
--- a/indra/newview/skins/default/xui/en/floater_about.xml
+++ b/indra/newview/skins/default/xui/en/floater_about.xml
@@ -73,7 +73,7 @@ Packets Lost: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number
help_topic="about_support_tab"
name="support_panel">
<text_editor
- parse_urls="true"
+ allow_html="true"
follows="top|left"
font="SansSerif"
height="343"
diff --git a/indra/newview/skins/default/xui/en/floater_event.xml b/indra/newview/skins/default/xui/en/floater_event.xml
index 9864083442..887cedc33f 100644
--- a/indra/newview/skins/default/xui/en/floater_event.xml
+++ b/indra/newview/skins/default/xui/en/floater_event.xml
@@ -244,6 +244,7 @@
layout="topleft"
left="6"
name="event_desc"
+ textbox.label="More"
width="322">
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</expandable_text>
</layout_panel>
diff --git a/indra/newview/skins/default/xui/en/floater_im_session.xml b/indra/newview/skins/default/xui/en/floater_im_session.xml
index 6c1214f152..c9b013099b 100644
--- a/indra/newview/skins/default/xui/en/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/en/floater_im_session.xml
@@ -67,7 +67,7 @@
height="150"
name="chat_history"
parse_highlights="true"
- parse_urls="true"
+ allow_html="true"
left="1"
width="249">
</chat_history>
diff --git a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml b/indra/newview/skins/default/xui/en/floater_nearby_chat.xml
index 3b26c2ab59..ec097a8e87 100644
--- a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/en/floater_nearby_chat.xml
@@ -25,7 +25,7 @@
single_instance="true"
width="320">
<chat_history
- parse_urls="true"
+ allow_html="true"
bg_readonly_color="ChatHistoryBgColor"
bg_writeable_color="ChatHistoryBgColor"
follows="all"
diff --git a/indra/newview/skins/default/xui/en/floater_preview_gesture.xml b/indra/newview/skins/default/xui/en/floater_preview_gesture.xml
index 1903401988..691472633e 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_gesture.xml
@@ -96,19 +96,19 @@
name="replace_text"
tool_tip="Replace the trigger word(s) with these words. For example, trigger &apos;hello&apos; replace with &apos;howdy&apos; will turn the chat &apos;I wanted to say hello&apos; into &apos;I wanted to say howdy&apos; as well as playing the gesture!"
top_pad="10"
- width="210">
+ width="200">
Replace with:
</text>
<line_editor
follows="left|top"
height="20"
layout="topleft"
- left_delta="99"
+ left_delta="89"
max_length="31"
name="replace_editor"
tool_tip="Replace the trigger word(s) with these words. For example, trigger &apos;hello&apos; replace with &apos;howdy&apos; will turn the chat &apos;I wanted to say hello&apos; into &apos;I wanted to say howdy&apos; as well as playing the gesture"
top_delta="-4"
- width="165" />
+ width="175" />
<text
type="string"
length="1"
@@ -120,25 +120,25 @@
font.style="BOLD"
name="key_label"
top_pad="10"
- width="150">
+ width="100">
Shortcut Key:
</text>
<combo_box
height="20"
label="None"
layout="topleft"
- left_delta="154"
+ left_delta="89"
name="modifier_combo"
top_delta="-4"
- width="55" />
+ width="75" />
<combo_box
height="20"
label="None"
layout="topleft"
- left_pad="4"
+ left_pad="10"
name="key_combo"
top_delta="0"
- width="50" />
+ width="75" />
<text
type="string"
length="1"
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 e5a5fab9b9..0e8eef2a21 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_notecard.xml
@@ -71,7 +71,7 @@
left="4"
max_length="65536"
name="Notecard Editor"
- parse_urls="false"
+ allow_html="false"
tab_group="1"
top="46"
width="392"
diff --git a/indra/newview/skins/default/xui/en/floater_search.xml b/indra/newview/skins/default/xui/en/floater_search.xml
index 354f1de85e..49b3b58113 100644
--- a/indra/newview/skins/default/xui/en/floater_search.xml
+++ b/indra/newview/skins/default/xui/en/floater_search.xml
@@ -22,7 +22,7 @@
Done
</floater.string>
<layout_stack
- height="580"
+ bottom="595"
follows="left|right|top|bottom"
layout="topleft"
left="10"
@@ -30,7 +30,6 @@
top="20"
width="630">
<layout_panel
- height="570"
layout="topleft"
left_delta="0"
top_delta="0"
@@ -38,12 +37,13 @@
user_resize="false"
width="630">
<web_browser
+ bottom="-10"
follows="left|right|top|bottom"
layout="topleft"
left="0"
name="browser"
top="0"
- height="540"
+ height="555"
width="630" />
<text
follows="bottom|left"
@@ -51,7 +51,7 @@
layout="topleft"
left_delta="0"
name="status_text"
- top_pad="10"
+ top_pad="7"
width="150" />
<text
visible="false"
diff --git a/indra/newview/skins/default/xui/en/floater_snapshot.xml b/indra/newview/skins/default/xui/en/floater_snapshot.xml
index 857932e51a..452b2ac664 100644
--- a/indra/newview/skins/default/xui/en/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/en/floater_snapshot.xml
@@ -4,52 +4,48 @@
can_minimize="false"
can_close="true"
follows="left|top"
- height="520"
+ height="516"
layout="topleft"
name="Snapshot"
help_topic="snapshot"
save_rect="true"
save_visibility="true"
title="SNAPSHOT PREVIEW"
- width="215">
+ width="215">
+ <floater.string
+ name="share_to_web_url" translate="false">
+http://pdp36.lindenlab.com:12777/
+ </floater.string>
<floater.string
name="unknown">
unknown
</floater.string>
<radio_group
- height="70"
+ height="58"
label="Snapshot type"
layout="topleft"
left="10"
name="snapshot_type_radio"
- top="20"
+ top="25"
width="205">
-<!--
<radio_item
- height="16"
- label="Share to Web"
- layout="topleft"
- name="share_to_web"
- top_pad="0" />
--->
- <radio_item
+ bottom="19"
height="16"
label="Email"
layout="topleft"
- name="postcard"
- top_pad="2" />
+ name="postcard" />
<radio_item
+ bottom="38"
height="16"
label="My inventory (L$[AMOUNT])"
layout="topleft"
- name="texture"
- top_pad="2" />
+ name="texture" />
<radio_item
+ bottom="57"
height="16"
label="Save to my computer"
layout="topleft"
- name="local"
- top_pad="2" />
+ name="local" />
</radio_group>
<ui_ctrl
height="90"
@@ -71,7 +67,7 @@
left_delta="0"
halign="right"
name="file_size_label"
- top_pad="8"
+ top_pad="10"
width="195">
[SIZE] KB
</text>
diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml
index 514b0a501b..a96dbe3553 100644
--- a/indra/newview/skins/default/xui/en/floater_tools.xml
+++ b/indra/newview/skins/default/xui/en/floater_tools.xml
@@ -2322,7 +2322,6 @@ even though the user gets a free copy.
layout="topleft"
left_pad="15"
name="color trans"
- text_readonly_color="LabelDisabledColor"
top="6"
width="110">
Transparency %
@@ -2347,7 +2346,6 @@ even though the user gets a free copy.
layout="topleft"
left_delta="0"
name="glow label"
- text_readonly_color="LabelDisabledColor"
top_pad="8"
width="80">
Glow
@@ -2378,7 +2376,6 @@ even though the user gets a free copy.
layout="topleft"
left="10"
name="tex gen"
- text_readonly_color="LabelDisabledColor"
top_pad="5"
width="90">
Mapping
@@ -2407,7 +2404,6 @@ even though the user gets a free copy.
layout="topleft"
name="label shininess"
left_pad="4"
- text_readonly_color="LabelDisabledColor"
top_pad="-36"
width="90">
Shininess
@@ -2444,7 +2440,6 @@ even though the user gets a free copy.
layout="topleft"
left_pad="4"
name="label bumpiness"
- text_readonly_color="LabelDisabledColor"
top_pad="-36"
width="90">
Bumpiness
@@ -2570,8 +2565,7 @@ even though the user gets a free copy.
height="10"
layout="topleft"
left="10"
- name="rpt"
- text_readonly_color="LabelDisabledColor"
+ name="tex scale"
top_pad="4"
width="200">
Repeats / Face
@@ -2660,7 +2654,6 @@ even though the user gets a free copy.
layout="topleft"
left="10"
name="tex offset"
- text_readonly_color="LabelDisabledColor"
width="200">
Texture Offset
</text>
@@ -2744,9 +2737,9 @@ even though the user gets a free copy.
follows="top|left"
tool_tip="Edit this Media"
height="12"
- image_disabled="Icon_Gear_Background"
- image_selected="Icon_Gear_Press"
- image_unselected="Icon_Gear_Foreground"
+ image_disabled="Icon_Gear_Foreground"
+ image_selected="Icon_Gear_Background"
+ image_unselected="Icon_Gear_Press"
layout="topleft"
left_pad="10"
name="edit_media"
diff --git a/indra/newview/skins/default/xui/en/inspect_object.xml b/indra/newview/skins/default/xui/en/inspect_object.xml
index eb2e7ea788..8aeec46ba3 100644
--- a/indra/newview/skins/default/xui/en/inspect_object.xml
+++ b/indra/newview/skins/default/xui/en/inspect_object.xml
@@ -26,7 +26,7 @@ Owner [OWNER]
<string name="Touch">Touch</string>
<string name="Sit">Sit</string>
<text
- parse_urls="false"
+ allow_html="false"
follows="all"
font="SansSerifLarge"
height="30"
diff --git a/indra/newview/skins/default/xui/en/menu_add_wearable_gear.xml b/indra/newview/skins/default/xui/en/menu_add_wearable_gear.xml
deleted file mode 100644
index 1925d3396f..0000000000
--- a/indra/newview/skins/default/xui/en/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu
- layout="topleft"
- name="Add Wearable Gear Menu">
- <menu_item_check
- label="Sort by Most Recent"
- layout="topleft"
- name="sort_by_most_recent">
- <on_check
- function="AddWearable.Gear.Check"
- parameter="by_most_recent" />
- <on_click
- function="AddWearable.Gear.Sort"
- parameter="by_most_recent" />
- </menu_item_check>
- <menu_item_check
- label="Sort by Name"
- layout="topleft"
- name="sort_by_name">
- <on_check
- function="AddWearable.Gear.Check"
- parameter="by_name" />
- <on_click
- function="AddWearable.Gear.Sort"
- parameter="by_name" />
- </menu_item_check>
- <menu_item_check
- label="Sort by Type"
- layout="topleft"
- name="sort_by_type">
- <on_check
- function="AddWearable.Gear.Check"
- parameter="by_type" />
- <on_click
- function="AddWearable.Gear.Sort"
- parameter="by_type" />
- <on_visible
- function="AddWearable.Gear.Visible"
- parameter="by_type" />
- </menu_item_check>
-</menu>
diff --git a/indra/newview/skins/default/xui/en/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_object_gear.xml
index 76f68c6d4b..8ec7689819 100644
--- a/indra/newview/skins/default/xui/en/menu_inspect_object_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_inspect_object_gear.xml
@@ -89,15 +89,6 @@
function="Object.EnableWear" />
</menu_item_call>
<menu_item_call
- label="Add"
- layout="topleft"
- name="add">
- <menu_item_call.on_click
- function="Object.AttachAddToAvatar" />
- <menu_item_call.on_visible
- function="Object.EnableWear" />
- </menu_item_call>
- <menu_item_call
label="Report"
layout="topleft"
name="report">
diff --git a/indra/newview/skins/default/xui/en/menu_object.xml b/indra/newview/skins/default/xui/en/menu_object.xml
index 31f70d99ca..b6cc222e96 100644
--- a/indra/newview/skins/default/xui/en/menu_object.xml
+++ b/indra/newview/skins/default/xui/en/menu_object.xml
@@ -83,15 +83,6 @@
<menu_item_call.on_enable
function="Object.EnableWear" />
</menu_item_call>
- <menu_item_call
- enabled="false"
- label="Add"
- name="Add">
- <menu_item_call.on_click
- function="Object.AttachAddToAvatar" />
- <menu_item_call.on_enable
- function="Object.EnableWear" />
- </menu_item_call>
<context_menu
label="Attach 鈻"
name="Object Attach" />
diff --git a/indra/newview/skins/default/xui/en/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/en/menu_places_gear_folder.xml
index 77cc3910fd..3e38503e43 100644
--- a/indra/newview/skins/default/xui/en/menu_places_gear_folder.xml
+++ b/indra/newview/skins/default/xui/en/menu_places_gear_folder.xml
@@ -94,9 +94,6 @@
<on_enable
function="Places.LandmarksGear.Enable"
parameter="expand" />
- <on_visible
- function="Places.LandmarksGear.Enable"
- parameter="expand" />
</menu_item_call>
<menu_item_call
label="Collapse"
@@ -108,9 +105,6 @@
<on_enable
function="Places.LandmarksGear.Enable"
parameter="collapse" />
- <on_visible
- function="Places.LandmarksGear.Enable"
- parameter="collapse" />
</menu_item_call>
<menu_item_call
label="Expand all folders"
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 0b85074eb6..63ff7047b4 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -29,9 +29,7 @@
<menu_item_call.on_click
function="BuyCurrency" />
</menu_item_call>
-
<menu_item_separator/>
-
<menu_item_call
label="My Profile"
name="Profile">
@@ -126,9 +124,7 @@
<menu_item_call.on_click
function="Advanced.LeaveAdminStatus" />
</menu_item_call>
-
<menu_item_separator/>
-
<menu_item_call
label="Exit [APP_NAME]"
name="Quit"
@@ -157,9 +153,7 @@
function="SideTray.PanelPeopleTab"
parameter="groups_panel" />
</menu_item_call>
-
<menu_item_separator/>
-
<!--menu_item_call
label="Chat"
name="Chat">
@@ -257,9 +251,7 @@
parameter="region_info" />
</menu_item_call>
</menu>
-
<menu_item_separator/>
-
<menu_item_call
label="Buy This Land"
name="Buy Land">
@@ -356,9 +348,7 @@
control="NavBarShowParcelProperties" />
</menu_item_check>
</menu>
-
<menu_item_separator/>
-
<menu_item_call
label="Teleport Home"
name="Teleport Home"
@@ -397,9 +387,7 @@
parameter="ShowNavbarFavoritesPanel" />
</menu_item_check>
<menu_item_separator/>-->
-
<menu_item_separator/>
-
<menu
create_jump_keys="true"
label="Sun"
@@ -442,9 +430,7 @@
function="World.EnvSettings"
parameter="default" />
</menu_item_call>
-
<menu_item_separator/>
-
<menu_item_call
label="Environment Editor"
name="Environment Editor">
@@ -593,7 +579,6 @@
</menu_item_call>
</menu>
<menu_item_separator/>
-
<menu_item_call
label="Focus on Selection"
name="Focus on Selection"
@@ -614,9 +599,7 @@
<menu_item_call.on_enable
function="Tools.SomethingSelectedNoHUD" />
</menu_item_call>
-
<menu_item_separator/>
-
<menu
create_jump_keys="true"
label="Object"
@@ -718,9 +701,7 @@
function="EditableSelected" />
</menu_item_call>
</menu>
-
<menu_item_separator/>
-
<menu
create_jump_keys="true"
label="Options"
@@ -736,9 +717,7 @@
function="ToggleControl"
parameter="DebugPermissions" />
</menu_item_check>
-
<menu_item_separator/>
-
<menu_item_check
label="Select Only My Objects"
name="Select Only My Objects">
@@ -765,9 +744,7 @@
<menu_item_check.on_click
function="Tools.SelectBySurrounding" />
</menu_item_check>
-
<menu_item_separator/>
-
<menu_item_check
label="Show Hidden Selection"
name="Show Hidden Selection">
@@ -793,9 +770,7 @@
function="ToggleControl"
parameter="ShowSelectionBeam" />
</menu_item_check>
-
<menu_item_separator/>
-
<menu_item_check
label="Snap to Grid"
name="Snap to Grid"
@@ -919,9 +894,7 @@
function="Floater.Show"
parameter="hud" />
</menu_item_call>-->
-
<menu_item_separator/>
-
<menu_item_call
label="Report Abuse"
name="Report Abuse">
@@ -935,9 +908,7 @@
function="ShowHelp"
parameter="report_bug" />
</menu_item_call>
-
<menu_item_separator/>
-
<menu_item_call
label="About [APP_NAME]"
name="About Second Life">
@@ -951,6 +922,17 @@
name="Advanced"
tear_off="true"
visible="false">
+ <menu_item_check
+ label="Show Advanced Menu"
+ name="Show Advanced Menu"
+ shortcut="control|alt|shift|D">
+ <on_check
+ function="CheckControl"
+ parameter="UseDebugMenus" />
+ <on_click
+ function="ToggleControl"
+ parameter="UseDebugMenus" />
+ </menu_item_check>
<menu_item_call
label="Stop Animating Me"
name="Stop Animating My Avatar">
@@ -977,9 +959,7 @@
function="Floater.Show"
parameter="window_size" />
</menu_item_call>
-
<menu_item_separator/>
-
<menu_item_check
label="Limit Select Distance"
name="Limit Select Distance">
@@ -1000,9 +980,7 @@
function="ToggleControl"
parameter="DisableCameraConstraints" />
</menu_item_check>
-
<menu_item_separator/>
-
<menu_item_check
label="High-res Snapshot"
name="HighResSnapshot">
@@ -1033,9 +1011,7 @@
function="ToggleControl"
parameter="CompressSnapshotsToDisk" />
</menu_item_check>
-
<menu_item_separator/>
-
<menu
create_jump_keys="true"
label="Performance Tools"
@@ -1148,9 +1124,7 @@
<menu_item_check.on_click
function="View.ShowHoverTips" />
</menu_item_check>
-
<menu_item_separator/>
-
<menu_item_check
label="Show Land Tooltips"
name="Land Tips">
@@ -1419,7 +1393,17 @@
function="Advanced.ToggleFeature"
parameter="flexible" />
</menu_item_check>
- </menu>
+ </menu>
+ <menu_item_check
+ label="Run Multiple Threads"
+ name="Run Multiple Threads">
+ <menu_item_check.on_check
+ function="CheckControl"
+ parameter="RunMultipleThreads" />
+ <menu_item_check.on_click
+ function="ToggleControl"
+ parameter="RunMultipleThreads" />
+ </menu_item_check>
<menu_item_check
label="Use Plugin Read Thread"
name="Use Plugin Read Thread">
@@ -1447,9 +1431,7 @@
function="ToggleControl"
parameter="MouseSmooth" />
</menu_item_check>
-
<menu_item_separator/>
-
<menu
label="Shortcuts"
name="Shortcuts"
@@ -1493,9 +1475,19 @@
<menu_item_call.on_click
function="View.DefaultUISize" />
</menu_item_call>
-
+ <!-- This second, alternative shortcut for Show Advanced Menu is for backward compatibility. The main shortcut has been changed so it's Linux-friendly, where the old shortcut is typically eaten by the window manager. -->
+ <menu_item_check
+ label="Show Advanced Menu - legacy shortcut"
+ name="Show Advanced Menu - legacy shortcut"
+ shortcut="control|alt|D">
+ <on_check
+ function="CheckControl"
+ parameter="UseDebugMenus" />
+ <on_click
+ function="ToggleControl"
+ parameter="UseDebugMenus" />
+ </menu_item_check>
<menu_item_separator/>
-
<menu_item_check
label="Always Run"
name="Always Run"
@@ -1516,9 +1508,7 @@
<menu_item_check.on_enable
function="Agent.enableFlying" />
</menu_item_check>
-
<menu_item_separator/>
-
<menu_item_call
label="Close Window"
name="Close Window"
@@ -1537,9 +1527,7 @@
<menu_item_call.on_enable
function="File.EnableCloseAllWindows" />
</menu_item_call>
-
<menu_item_separator/>
-
<menu_item_call
label="Snapshot to Disk"
name="Snapshot to Disk"
@@ -1548,9 +1536,7 @@
<menu_item_call.on_click
function="File.TakeSnapshotToDisk" />
</menu_item_call>
-
<menu_item_separator/>
-
<menu_item_call
label="Mouselook"
name="Mouselook"
@@ -1587,9 +1573,7 @@
<menu_item_call.on_enable
function="View.EnableLastChatter" />
</menu_item_call>
-
<menu_item_separator/>
-
<menu
create_jump_keys="true"
label="Select Build Tool"
@@ -1636,9 +1620,7 @@
parameter="land" />
</menu_item_call>
</menu>
-
<menu_item_separator/>
-
<menu_item_call
label="Zoom In"
name="Zoom In"
@@ -1660,27 +1642,8 @@
<menu_item_call.on_click
function="View.ZoomOut" />
</menu_item_call>
- <menu_item_separator
- visible="false"/>
- <!-- Made invisible to avoid a dissonance: menu item toggle menu where it is located. EXT-8069.
- Can't be removed to keep sortcut workable.
- -->
- <menu_item_check
- label="Show Advanced Menu"
- name="Show Advanced Menu"
- shortcut="control|alt|D"
- visible="false">
- <on_check
- function="CheckControl"
- parameter="UseDebugMenus" />
- <on_click
- function="ToggleControl"
- parameter="UseDebugMenus" />
- </menu_item_check>
- </menu> <!--Shortcuts-->
-
+ </menu>
<menu_item_separator/>
-
<menu_item_call
label="Show Debug Settings"
name="Debug Settings">
@@ -1699,7 +1662,6 @@
function="ToggleControl"
parameter="QAMode" />
</menu_item_check>
-
</menu>
<menu
create_jump_keys="true"
@@ -1790,9 +1752,7 @@
function="Advanced.ToggleConsole"
parameter="memory view" />
</menu_item_check>
-
<menu_item_separator/>
-
<menu_item_call
label="Region Info to Debug Console"
name="Region Info to Debug Console">
@@ -1814,9 +1774,7 @@
function="Advanced.DumpInfoToConsole"
parameter="capabilities" />
</menu_item_call>
-
<menu_item_separator/>
-
<menu_item_check
label="Camera"
name="Camera">
@@ -1904,9 +1862,7 @@
function="ToggleControl"
parameter="DebugShowColor" />
</menu_item_check>
-
<menu_item_separator/>
-
<menu_item_check
label="Show Updates to Objects"
name="Show Updates"
@@ -1918,9 +1874,7 @@
function="Advanced.ToggleShowObjectUpdates" />
</menu_item_check>
</menu>
-
<menu_item_separator/>
-
<menu
create_jump_keys="true"
label="Force an Error"
@@ -2214,12 +2168,9 @@
<menu_item_check.on_enable
function="Advanced.EnableRenderFBO" />
</menu_item_check>
-
- <menu_item_separator />
-
<menu_item_check
- label="Lighting and Shadows"
- name="Lighting and Shadows">
+ label="Deferred Rendering"
+ name="Deferred Rendering">
<menu_item_check.on_check
function="CheckControl"
parameter="RenderDeferred" />
@@ -2230,31 +2181,7 @@
function="Advanced.EnableRenderDeferred" />
</menu_item_check>
<menu_item_check
- label=" Shadows from Sun/Moon/Projectors"
- name="Shadows from Sun/Moon/Projectors">
- <menu_item_check.on_check
- function="Advanced.CheckRenderShadowOption"
- parameter="RenderShadowDetail" />
- <menu_item_check.on_click
- function="Advanced.ClickRenderShadowOption"
- parameter="RenderShadowDetail" />
- <menu_item_check.on_enable
- function="Advanced.EnableRenderDeferredOptions" />
- </menu_item_check>
- <menu_item_check
- label=" SSAO and Shadow Smoothing"
- name="SSAO and Shadow Smoothing">
- <menu_item_check.on_check
- function="CheckControl"
- parameter="RenderDeferredSSAO" />
- <menu_item_check.on_click
- function="ToggleControl"
- parameter="RenderDeferredSSAO" />
- <menu_item_check.on_enable
- function="Advanced.EnableRenderDeferredOptions" />
- </menu_item_check>
- <menu_item_check
- label=" Global Illumination (experimental)"
+ label="Global Illumination"
name="Global Illumination">
<menu_item_check.on_check
function="CheckControl"
@@ -2263,11 +2190,9 @@
function="ToggleControl"
parameter="RenderDeferredGI" />
<menu_item_check.on_enable
- function="Advanced.EnableRenderDeferredOptions" />
+ function="Advanced.EnableRenderDeferredGI" />
</menu_item_check>
-
<menu_item_separator />
-
<menu_item_check
label="Debug GL"
name="Debug GL">
@@ -2289,24 +2214,14 @@
parameter="RenderDebugPipeline" />
</menu_item_check>
<menu_item_check
- label="Automatic Alpha Masks (deferred)"
- name="Automatic Alpha Masks (deferred)">
- <menu_item_check.on_check
- function="CheckControl"
- parameter="RenderAutoMaskAlphaDeferred" />
- <menu_item_check.on_click
- function="ToggleControl"
- parameter="RenderAutoMaskAlphaDeferred" />
- </menu_item_check>
- <menu_item_check
- label="Automatic Alpha Masks (non-deferred)"
- name="Automatic Alpha Masks (non-deferred)">
+ label="Fast Alpha"
+ name="Fast Alpha">
<menu_item_check.on_check
function="CheckControl"
- parameter="RenderAutoMaskAlphaNonDeferred" />
+ parameter="RenderFastAlpha" />
<menu_item_check.on_click
function="ToggleControl"
- parameter="RenderAutoMaskAlphaNonDeferred" />
+ parameter="RenderFastAlpha" />
</menu_item_check>
<menu_item_check
label="Animation Textures"
@@ -2349,7 +2264,7 @@
parameter="AuditTexture" />
</menu_item_check>
<menu_item_check
- label="Texture Atlas (experimental)"
+ label="Texture Atlas"
name="Texture Atlas">
<menu_item_check.on_check
function="CheckControl"
@@ -2405,9 +2320,7 @@
function="ToggleControl"
parameter="AgentPause" />
</menu_item_check>
-
<menu_item_separator/>
-
<menu_item_call
label="Enable Message Log"
name="Enable Message Log">
@@ -2420,9 +2333,7 @@
<menu_item_call.on_click
function="Advanced.DisableMessageLog" />
</menu_item_call>
-
<menu_item_separator/>
-
<menu_item_check
label="Velocity Interpolate Objects"
name="Velocity Interpolate Objects">
@@ -2443,9 +2354,7 @@
function="ToggleControl"
parameter="PingInterpolate" />
</menu_item_check>
-
<menu_item_separator/>
-
<menu_item_call
label="Drop a Packet"
name="Drop a Packet"
@@ -2633,7 +2542,6 @@
</menu_item_check>
<menu_item_separator />
-
<menu_item_check
label="Debug SelectMgr"
name="Debug SelectMgr">
@@ -2979,9 +2887,7 @@
function="Advanced.DumpAvatarLocalTextures" />
</menu_item_call>
</menu>
-
<menu_item_separator/>
-
<menu_item_check
label="HTTP Textures"
name="HTTP Textures">
@@ -3018,9 +2924,7 @@
function="ToggleControl"
parameter="ShowConsoleWindow" />
</menu_item_check>
-
<menu_item_separator/>
-
<menu_item_check
label="Show Admin Menu"
name="View Admin Options">
@@ -3355,9 +3259,7 @@
name="PublicIssueTrackerHelp_url"
parameter="WebLaunchPublicIssueHelp,http://wiki.secondlife.com/wiki/Issue_tracker" />
</menu_item_call>
-
<menu_item_separator/>
-
<menu_item_call
label="Bug Reporting 101"
name="Bug Reporing 101">
diff --git a/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml
index 5feac53c33..8af2e1eaca 100644
--- a/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml
+++ b/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml
@@ -13,7 +13,7 @@
layout="topleft"
name="wear_wear">
<on_click
- function="Wearable.Wear" />
+ function="Wearable.Add" />
</menu_item_call>
<menu_item_call
label="Add"
diff --git a/indra/newview/skins/default/xui/en/menu_wearing_tab.xml b/indra/newview/skins/default/xui/en/menu_wearing_tab.xml
index 2d54e69601..85505f9972 100644
--- a/indra/newview/skins/default/xui/en/menu_wearing_tab.xml
+++ b/indra/newview/skins/default/xui/en/menu_wearing_tab.xml
@@ -3,24 +3,6 @@
layout="topleft"
name="Wearing">
<menu_item_call
- label="Take Off"
- layout="topleft"
- name="take_off">
- <on_click
- function="Wearing.TakeOff" />
- </menu_item_call>
- <menu_item_call
- label="Detach"
- layout="topleft"
- name="detach">
- <on_click
- function="Wearing.Detach"
- parameter="detach"/>
- </menu_item_call>
- <menu_item_separator
- layout="topleft"
- name="edit_outfit_separator" />
- <menu_item_call
label="Edit Outfit"
layout="topleft"
name="edit">
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 609a9b09be..3576462cca 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -4023,19 +4023,6 @@ Are you sure you want to quit?
<notification
icon="alertmodal.tga"
- name="DeleteItems"
- type="alertmodal">
- [QUESTION]
- <usetemplate
- ignoretext="Confirm before deleting items"
- name="okcancelignore"
- notext="Cancel"
- yestext="OK"/>
- <unique/>
- </notification>
-
- <notification
- icon="alertmodal.tga"
name="HelpReportAbuseEmailLL"
type="alert">
Use this tool to report violations of the [http://secondlife.com/corporate/tos.php Terms of Service] and [http://secondlife.com/corporate/cs.php Community Standards].
diff --git a/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml b/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml
index 20ff492c0f..06bd1e9ff4 100644
--- a/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml
+++ b/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml
@@ -9,7 +9,6 @@
layout="topleft"
name="Mockup Tab"
selection_enabled="true"
- tab_stop="false"
title="Mockup Tab"
translate="false"
width="0">
diff --git a/indra/newview/skins/default/xui/en/panel_bars.xml b/indra/newview/skins/default/xui/en/panel_bars.xml
new file mode 100644
index 0000000000..96722ce278
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_bars.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ follows="left|right|top|bottom"
+ height="768"
+ layout="topleft"
+ left="0"
+ mouse_opaque="false"
+ name="screen"
+ width="1024">
+ <layout_stack name="menu_stack" orientation="vertical" height="768" border_size="0">
+ <panel auto_resize="false" width="1024" name="status_bar" filename="panel_status_bar.xml"/>
+ <panel auto_resize="false" width="1024" height="60" name="navigation bar" filename="panel_navigation_bar.xml"/>
+ <layout_stack name="hud_stack" orientation="horizontal" auto_resize="true" width="1024" height="500" follows="all">
+ <panel auto_resize="true" name="floater_view" height="500"/>
+ <panel auto_resize="false" filename="panel_side_tray.xml" height="500" width="333"/>
+ </layout_stack>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/en/panel_body_parts_list_item.xml
index 216a265164..4f989a6f6f 100644
--- a/indra/newview/skins/default/xui/en/panel_body_parts_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_body_parts_list_item.xml
@@ -41,7 +41,7 @@
height="16"
layout="topleft"
left_pad="5"
- parse_urls="false"
+ allow_html="false"
use_ellipses="true"
name="item_name"
text_color="white"
diff --git a/indra/newview/skins/default/xui/en/panel_chat_header.xml b/indra/newview/skins/default/xui/en/panel_chat_header.xml
index 17e8d4d2df..9124ad528d 100644
--- a/indra/newview/skins/default/xui/en/panel_chat_header.xml
+++ b/indra/newview/skins/default/xui/en/panel_chat_header.xml
@@ -21,7 +21,7 @@
top="3"
width="18" />
<text
- parse_urls="false"
+ allow_html="false"
allow_scroll="false"
v_pad = "7"
read_only = "true"
@@ -38,17 +38,16 @@
use_ellipses="true"
valign="bottom"
value="Ericag Vader" />
- <text
- allow_scroll="false"
- font="SansSerifSmall"
- follows="right"
- halign="right"
- height="13"
- layout="topleft"
- left_pad="5"
- name="time_box"
- right="-5"
- top="8"
- value="23:30"
- width="110" />
+ <text
+ font="SansSerifSmall"
+ follows="right"
+ halign="right"
+ height="13"
+ layout="topleft"
+ left_pad="5"
+ name="time_box"
+ right="-5"
+ top="8"
+ value="23:30"
+ width="110" />
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_classified_info.xml b/indra/newview/skins/default/xui/en/panel_classified_info.xml
index 268cb4e5f9..e66cf400b4 100644
--- a/indra/newview/skins/default/xui/en/panel_classified_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_classified_info.xml
@@ -202,7 +202,7 @@
value="Category:"
width="140" />
<text_editor
- parse_urls="true"
+ allow_html="true"
allow_scroll="false"
bg_visible="false"
follows="left|top|right"
@@ -371,7 +371,7 @@
value="Description:"
width="250" />
<text_editor
- parse_urls="true"
+ allow_html="true"
allow_scroll="true"
bg_visible="false"
follows="all"
diff --git a/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml b/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml
index 27c653bc35..e390b9e836 100644
--- a/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml
@@ -65,6 +65,7 @@
left="103"
name="description"
textbox.max_length="1024"
+ textbox.label="More"
textbox.show_context_menu="false"
top_pad="0"
width="178"
diff --git a/indra/newview/skins/default/xui/en/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/en/panel_clothing_list_item.xml
index cc0541e65c..93d7720c57 100644
--- a/indra/newview/skins/default/xui/en/panel_clothing_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_clothing_list_item.xml
@@ -53,7 +53,7 @@
height="16"
layout="topleft"
left_pad="5"
- parse_urls="false"
+ allow_html="false"
use_ellipses="true"
name="item_name"
text_color="white"
diff --git a/indra/newview/skins/default/xui/en/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/en/panel_deletable_wearable_list_item.xml
index de2ff0afc9..75b5fd1532 100644
--- a/indra/newview/skins/default/xui/en/panel_deletable_wearable_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_deletable_wearable_list_item.xml
@@ -53,7 +53,7 @@
height="16"
layout="topleft"
left_pad="5"
- parse_urls="false"
+ allow_html="false"
use_ellipses="true"
name="item_name"
text_color="white"
diff --git a/indra/newview/skins/default/xui/en/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/en/panel_dummy_clothing_list_item.xml
index df459b4083..a5dd34bd22 100644
--- a/indra/newview/skins/default/xui/en/panel_dummy_clothing_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_dummy_clothing_list_item.xml
@@ -42,7 +42,7 @@
height="16"
layout="topleft"
left_pad="5"
- parse_urls="false"
+ allow_html="false"
use_ellipses="true"
name="item_name"
text_color="LtGray_50"
diff --git a/indra/newview/skins/default/xui/en/panel_group_list_item.xml b/indra/newview/skins/default/xui/en/panel_group_list_item.xml
index ab34cbf20e..b674b39d9b 100644
--- a/indra/newview/skins/default/xui/en/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_list_item.xml
@@ -36,7 +36,7 @@
top="2"
width="20" />
<text
- parse_urls="false"
+ allow_html="false"
follows="left|right"
font="SansSerifSmall"
height="15"
diff --git a/indra/newview/skins/default/xui/en/panel_group_notify.xml b/indra/newview/skins/default/xui/en/panel_group_notify.xml
index 6f271a757c..65b2e81d50 100644
--- a/indra/newview/skins/default/xui/en/panel_group_notify.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_notify.xml
@@ -50,7 +50,7 @@
width="230" />
</panel>
<text_editor
- parse_urls="true"
+ allow_html="true"
enabled="true"
follows="all"
height="0"
diff --git a/indra/newview/skins/default/xui/en/panel_group_roles.xml b/indra/newview/skins/default/xui/en/panel_group_roles.xml
index 4af4774304..18a2f37ba2 100644
--- a/indra/newview/skins/default/xui/en/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_roles.xml
@@ -103,7 +103,7 @@ clicking on their names.
height="23"
follows="top|left"
label="Invite"
- left="5"
+ left="0"
name="member_invite"
width="100" />
<button
diff --git a/indra/newview/skins/default/xui/en/panel_inventory_item.xml b/indra/newview/skins/default/xui/en/panel_inventory_item.xml
index 2e38835810..f1b7b92ece 100644
--- a/indra/newview/skins/default/xui/en/panel_inventory_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_inventory_item.xml
@@ -41,7 +41,7 @@
height="20"
layout="topleft"
left_pad="5"
- parse_urls="false"
+ allow_html="false"
use_ellipses="true"
name="item_name"
text_color="white"
diff --git a/indra/newview/skins/default/xui/en/panel_landmark_info.xml b/indra/newview/skins/default/xui/en/panel_landmark_info.xml
index c5d6aced7a..a0a1e2963a 100644
--- a/indra/newview/skins/default/xui/en/panel_landmark_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_landmark_info.xml
@@ -139,6 +139,7 @@
layout="topleft"
left="10"
name="description"
+ textbox.label="More"
top_pad="10"
value="Du waltz die spritz"
width="280" />
@@ -235,7 +236,7 @@
value="Title:"
width="290" />
<text
- parse_urls="false"
+ allow_html="false"
follows="left|top"
height="22"
layout="topleft"
@@ -275,7 +276,7 @@
name="notes_editor"
read_only="true"
text_readonly_color="white"
- text_type="ascii_with_newline"
+ text_type="ascii"
top_pad="5"
width="290"
wrap="true" />
diff --git a/indra/newview/skins/default/xui/en/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/en/panel_media_settings_permissions.xml
index d3a58fed58..c5f44cd049 100644
--- a/indra/newview/skins/default/xui/en/panel_media_settings_permissions.xml
+++ b/indra/newview/skins/default/xui/en/panel_media_settings_permissions.xml
@@ -16,8 +16,7 @@
follows="top|left"
height="15"
left="10"
- name="controls_label"
- text_readonly_color="LabelDisabledColor">
+ name="controls_label">
Controls:
</text>
<combo_box
@@ -47,8 +46,7 @@
follows="top|left"
height="15"
left="10"
- name="owner_label"
- text_readonly_color="LabelDisabledColor">
+ name="owner_label">
Owner
</text>
@@ -85,9 +83,8 @@
enabled="false"
follows="top|left"
height="15"
- left="10"
- name="group_label"
- text_readonly_color="LabelDisabledColor">
+ left="10"
+ name="group_label">
Group:
</text>
@@ -98,7 +95,6 @@
font="SansSerif"
height="20" left="60"
name="perms_group_name"
- text_readonly_color="LabelDisabledColor"
value =""
width="200" />
@@ -136,8 +132,7 @@
follows="top|left"
height="15"
left="10"
- name="anyone_label"
- text_readonly_color="LabelDisabledColor">
+ name="anyone_label">
Anyone
</text>
diff --git a/indra/newview/skins/default/xui/en/panel_my_profile.xml b/indra/newview/skins/default/xui/en/panel_my_profile.xml
index 4629bb9cfe..2e49fc8d6f 100644
--- a/indra/newview/skins/default/xui/en/panel_my_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_my_profile.xml
@@ -118,6 +118,7 @@
layout="topleft"
left="107"
textbox.max_length="512"
+ textbox.label="More"
textbox.show_context_menu="true"
name="sl_description_edit"
top_pad="-3"
@@ -174,6 +175,7 @@
layout="topleft"
left="107"
textbox.max_length="512"
+ textbox.label="More"
textbox.show_context_menu="true"
name="fl_description_edit"
top_pad="-3"
@@ -315,6 +317,7 @@
name="sl_groups"
top_pad="0"
translate="false"
+ textbox.label="More"
textbox.show_context_menu="true"
width="298"
expanded_bg_visible="true"
diff --git a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
index 082d51ed3c..2c9d7e4b6a 100644
--- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
@@ -97,8 +97,6 @@
name="location_combo"
top_delta="0"
width="266">
- <combo_list
- mouse_wheel_opaque="true"/>
<!-- *TODO: Delete. Let the location_input use the correct art sizes.
<location_input.add_landmark_button
height="18"
diff --git a/indra/newview/skins/default/xui/en/panel_notification.xml b/indra/newview/skins/default/xui/en/panel_notification.xml
index 59ead84127..34738745eb 100644
--- a/indra/newview/skins/default/xui/en/panel_notification.xml
+++ b/indra/newview/skins/default/xui/en/panel_notification.xml
@@ -78,7 +78,7 @@
width="285"
wrap="true"
parse_highlights="true"
- parse_urls="true"/>
+ allow_html="true"/>
</panel>
<panel
background_visible="false"
diff --git a/indra/newview/skins/default/xui/en/panel_pick_info.xml b/indra/newview/skins/default/xui/en/panel_pick_info.xml
index 95c8cb301d..f6f1c33fe3 100644
--- a/indra/newview/skins/default/xui/en/panel_pick_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_pick_info.xml
@@ -101,7 +101,7 @@
follows="all"
height="100"
width="280"
- parse_urls="true"
+ allow_html="true"
hide_scrollbar="false"
layout="topleft"
left="10"
diff --git a/indra/newview/skins/default/xui/en/panel_pick_list_item.xml b/indra/newview/skins/default/xui/en/panel_pick_list_item.xml
index de147908d8..292bd47207 100644
--- a/indra/newview/skins/default/xui/en/panel_pick_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_pick_list_item.xml
@@ -65,6 +65,7 @@
left="103"
name="picture_descr"
textbox.max_length="1024"
+ textbox.label="More"
textbox.show_context_menu="false"
top_pad="0"
width="178"
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 c6e93af50a..35e8075896 100644
--- a/indra/newview/skins/default/xui/en/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml
@@ -264,7 +264,7 @@
</layout_panel>
</layout_stack>
<text
- parse_urls="false"
+ allow_html="false"
follows="left|top|right"
font="SansSerifLarge"
height="14"
@@ -277,7 +277,7 @@
value="SampleRegion"
width="290" />
<text
- parse_urls="false"
+ allow_html="false"
follows="left|top|right"
height="14"
layout="topleft"
@@ -293,6 +293,7 @@
layout="topleft"
left="5"
name="description"
+ textbox.label="More"
top_pad="10"
value="Du waltz die spritz"
width="300" />
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 113d5fb6dc..f4694180a1 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
@@ -155,7 +155,7 @@
visiblity_control="ShowAdvancedGraphicsSettings"
border="false"
follows="top|left"
- height="283"
+ height="260"
label="CustomGraphics"
layout="topleft"
left="5"
@@ -211,112 +211,119 @@
<check_box.commit_callback
function="Pref.VertexShaderEnable" />
</check_box>
-<!-- DISABLED UNTIL WE REALLY WANT TO SUPPORT THIS
- <check_box
- control_name="RenderDeferred"
+ <check_box
+ control_name="RenderWaterReflections"
height="16"
initial_value="true"
- label="Lighting and Shadows"
+ label="Water reflections"
layout="topleft"
left_delta="0"
- name="UseLightShaders"
+ name="Reflections"
top_pad="1"
width="256">
- <check_box.commit_callback
+ <check_box.commit_callback
function="Pref.VertexShaderEnable" />
- </check_box>
- <check_box
- control_name="RenderDeferredSSAO"
+ </check_box>
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="12"
+ layout="topleft"
+ left_delta="0"
+ name="ReflectionDetailText"
+ top_pad="7"
+ width="128">
+ Reflection detail:
+ </text>
+ <radio_group
+ control_name="RenderReflectionDetail"
+ draw_border="false"
+ height="70"
+ layout="topleft"
+ left_delta="-2"
+ name="ReflectionDetailRadio"
+ top_pad="3"
+ width="321">
+ <radio_item
+ height="16"
+ label="Terrain and trees"
+ layout="topleft"
+ left="3"
+ name="0"
+ top="3"
+ width="315" />
+ <radio_item
+ height="16"
+ label="All static objects"
+ layout="topleft"
+ left_delta="0"
+ name="1"
+ top_delta="16"
+ width="315" />
+ <radio_item
+ height="16"
+ label="All avatars and objects"
+ layout="topleft"
+ left_delta="0"
+ name="2"
+ top_delta="16"
+ width="315" />
+ <radio_item
+ height="16"
+ label="Everything"
+ layout="topleft"
+ left_delta="0"
+ name="3"
+ top_delta="16"
+ width="315" />
+ </radio_group>
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="12"
+ layout="topleft"
+ left_delta="2"
+ name="AvatarRenderingText"
+ top_pad="5"
+ width="158">
+ Avatar rendering:
+ </text>
+ <check_box
+ control_name="RenderUseImpostors"
+ height="16"
+ initial_value="true"
+ label="Avatar impostors"
+ layout="topleft"
+ left_delta="0"
+ name="AvatarImpostors"
+ top_pad="7"
+ width="256" />
+ <check_box
+ control_name="RenderAvatarVP"
height="16"
initial_value="true"
- label="Ambient Occlusion"
+ label="Hardware skinning"
layout="topleft"
left_delta="0"
- name="UseSSAO"
+ name="AvatarVertexProgram"
top_pad="1"
width="256">
- <check_box.commit_callback
+ <check_box.commit_callback
function="Pref.VertexShaderEnable" />
- </check_box>
+ </check_box>
+ <check_box
+ control_name="RenderAvatarCloth"
+ height="16"
+ initial_value="true"
+ label="Avatar cloth"
+ layout="topleft"
+ left_delta="0"
+ name="AvatarCloth"
+ top_pad="1"
+ width="256" />
- <text
- type="string"
- length="1"
- top_pad="8"
- follows="top|left"
- height="23"
- width="110"
- word_wrap="true"
- layout="topleft"
- left="10"
- name="shadows_label">
- Shadows:
- </text>
- <combo_box
- control_name="RenderShadowDetail"
- height="23"
- layout="topleft"
- left="10"
- top_pad="0"
- name="ShadowDetail"
- width="150">
- <combo_box.item
- label="None"
- name="0"
- value="0"/>
- <combo_box.item
- label="Sun/Moon"
- name="1"
- value="1"/>
- <combo_box.item
- label="Sun/Moon + Projectors"
- name="2"
- value="2"/>
- </combo_box>
--->
- <text
- type="string"
- length="1"
- top_pad="8"
- follows="top|left"
- height="23"
- width="110"
- word_wrap="true"
- layout="topleft"
- left="10"
- name="reflection_label">
- Water Reflections:
- </text>
- <combo_box
- control_name="RenderReflectionDetail"
- height="23"
- layout="topleft"
- left_="10"
- top_pad ="0"
- name="Reflections"
- width="150">
- <combo_box.item
- label="Minimal"
- name="0"
- value="0"/>
- <combo_box.item
- label="Terrain and trees"
- name="1"
- value="1"/>
- <combo_box.item
- label="All static objects"
- name="2"
- value="2"/>
- <combo_box.item
- label="All avatars and objects"
- name="3"
- value="3"/>
- <combo_box.item
- label="Everything"
- name="4"
- value="4"/>
- </combo_box>
-
<slider
control_name="RenderFarClip"
decimal_digits="0"
@@ -608,58 +615,49 @@
width="128">
Low
</text>
- <text
- type="string"
- length="1"
- follows="left|top"
- height="12"
- layout="topleft"
- left_delta="-260"
- name="AvatarRenderingText"
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="12"
+ layout="topleft"
+ left="200"
+ name="LightingDetailText"
top_pad="18"
- width="128">
- Avatar rendering:
- </text>
- <check_box
- control_name="RenderUseImpostors"
- height="16"
- initial_value="true"
- label="Avatar impostors"
- layout="topleft"
- left_delta="0"
- name="AvatarImpostors"
- top_pad="7"
- width="256" />
- <check_box
- control_name="RenderAvatarVP"
- height="16"
- initial_value="true"
- label="Hardware skinning"
- layout="topleft"
- left_delta="0"
- name="AvatarVertexProgram"
- top_pad="1"
- width="256">
- <check_box.commit_callback
- function="Pref.VertexShaderEnable" />
- </check_box>
- <check_box
- control_name="RenderAvatarCloth"
- height="16"
- initial_value="true"
- label="Avatar cloth"
- layout="topleft"
- left_delta="0"
- name="AvatarCloth"
- top_pad="1"
- width="256" />
+ width="140">
+ Lighting detail:
+ </text>
+ <radio_group
+ control_name="RenderLightingDetail"
+ draw_border="false"
+ height="38"
+ layout="topleft"
+ name="LightingDetailRadio"
+ top_pad="5"
+ width="200">
+ <radio_item
+ height="16"
+ label="Sun and moon only"
+ layout="topleft"
+ name="SunMoon"
+ value="0"
+ top="3"
+ width="156" />
+ <radio_item
+ height="16"
+ label="Nearby local lights"
+ layout="topleft"
+ name="LocalLights"
+ value="1"
+ top_delta="16"
+ width="156" />
+ </radio_group>
<text
type="string"
length="1"
follows="left|top"
height="12"
layout="topleft"
- left="358"
left_pad="-30"
name="TerrainDetailText"
top="226"
@@ -689,7 +687,7 @@
name="2"
top_delta="16"
width="50" />
- </radio_group> -->
+ </radio_group>
</panel>
<button
diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml
index e41b80baf2..fc33836c79 100644
--- a/indra/newview/skins/default/xui/en/panel_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile.xml
@@ -108,6 +108,7 @@
layout="topleft"
left="107"
textbox.max_length="512"
+ textbox.label="More"
textbox.show_context_menu="true"
name="sl_description_edit"
top_pad="-3"
@@ -154,6 +155,7 @@
layout="topleft"
left="107"
textbox.max_length="512"
+ textbox.label="More"
textbox.show_context_menu="true"
name="fl_description_edit"
top_pad="-3"
@@ -293,6 +295,7 @@
left="7"
name="sl_groups"
textbox.max_length="512"
+ textbox.label="More"
textbox.show_context_menu="true"
top_pad="0"
translate="false"
diff --git a/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml
index d38ad8c5f8..c5f3fcc27d 100644
--- a/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml
@@ -41,7 +41,7 @@
height="20"
layout="topleft"
left_pad="5"
- parse_urls="false"
+ allow_html="false"
use_ellipses="true"
name="region"
text_color="white"
diff --git a/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml b/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml
index 30d3064e14..d8f4297e0c 100644
--- a/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml
@@ -36,7 +36,7 @@
enabled="true"
follows="right|top"
height="18"
- image_name="Parcel_VoiceNo_Dark"
+ image_name="Parcel_VoiceNo_Light"
name="voice_icon"
top="1"
visible="false"
@@ -45,7 +45,7 @@
<icon
follows="right|top"
height="18"
- image_name="Parcel_FlyNo_Dark"
+ image_name="Parcel_FlyNo_Light"
name="fly_icon"
top="1"
visible="false"
@@ -54,7 +54,7 @@
<icon
follows="right|top"
height="18"
- image_name="Parcel_PushNo_Dark"
+ image_name="Parcel_PushNo_Light"
name="push_icon"
top="1"
visible="false"
@@ -63,7 +63,7 @@
<icon
follows="right|top"
height="18"
- image_name="Parcel_BuildNo_Dark"
+ image_name="Parcel_BuildNo_Light"
name="build_icon"
top="1"
visible="false"
@@ -72,7 +72,7 @@
<icon
follows="right|top"
height="18"
- image_name="Parcel_ScriptsNo_Dark"
+ image_name="Parcel_ScriptsNo_Light"
name="scripts_icon"
top="1"
visible="false"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 676bef2d0b..048de70045 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -2282,9 +2282,6 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh
<string name="accel-win-alt">Alt+</string>
<string name="accel-win-shift">Shift+</string>
- <string name="Esc">Esc</string>
- <string name="Home">Home</string>
-
<!-- Previews -->
<string name="FileSaved">File Saved</string>
<string name="Receiving">Receiving</string>
@@ -3027,9 +3024,6 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
<string name="conference-title">
Ad-hoc Conference
</string>
- <string name="conference-title-incoming">
- [AGENT_NAME] Conference
- </string>
<string name="inventory_item_offered-im">
Inventory item offered
</string>
@@ -3261,10 +3255,4 @@ Abuse Report</string>
<string name="Notices">Notices</string>
<string name="Chat">Chat</string>
- <!-- Question strings for delete items notifications -->
- <string name="DeleteItems">Delete selected items?</string>
- <string name="DeleteItem">Delete selected item?</string>
-
- <string name="EmptyOutfitText">There are no items in this outfit</string>
-
</strings>
diff --git a/indra/newview/skins/default/xui/en/widgets/bodyparts_list_item.xml b/indra/newview/skins/default/xui/en/widgets/bodyparts_list_item.xml
index 0eec002006..c08267de82 100644
--- a/indra/newview/skins/default/xui/en/widgets/bodyparts_list_item.xml
+++ b/indra/newview/skins/default/xui/en/widgets/bodyparts_list_item.xml
@@ -21,7 +21,7 @@
height="16"
layout="topleft"
left="21"
- parse_urls="false"
+ allow_html="false"
use_ellipses="true"
name="item_name"
text_color="white"
diff --git a/indra/newview/skins/default/xui/en/widgets/clothing_list_item.xml b/indra/newview/skins/default/xui/en/widgets/clothing_list_item.xml
index 96d72c78a6..f7a05e9bc4 100644
--- a/indra/newview/skins/default/xui/en/widgets/clothing_list_item.xml
+++ b/indra/newview/skins/default/xui/en/widgets/clothing_list_item.xml
@@ -21,7 +21,7 @@
height="16"
layout="topleft"
left="42"
- parse_urls="false"
+ allow_html="false"
use_ellipses="true"
name="item_name"
text_color="white"
diff --git a/indra/newview/skins/default/xui/en/widgets/deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/en/widgets/deletable_wearable_list_item.xml
index 0534485ddd..88a4682e13 100644
--- a/indra/newview/skins/default/xui/en/widgets/deletable_wearable_list_item.xml
+++ b/indra/newview/skins/default/xui/en/widgets/deletable_wearable_list_item.xml
@@ -33,7 +33,7 @@
height="16"
layout="topleft"
left="45"
- parse_urls="false"
+ allow_html="false"
use_ellipses="true"
name="item_name"
text_color="white"
diff --git a/indra/newview/skins/default/xui/en/widgets/dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/en/widgets/dummy_clothing_list_item.xml
index 6c60624805..80a877a6c2 100644
--- a/indra/newview/skins/default/xui/en/widgets/dummy_clothing_list_item.xml
+++ b/indra/newview/skins/default/xui/en/widgets/dummy_clothing_list_item.xml
@@ -22,7 +22,7 @@
height="16"
layout="topleft"
left="41"
- parse_urls="false"
+ allow_html="false"
use_ellipses="true"
name="item_name"
text_color="LtGray_50"
diff --git a/indra/newview/skins/default/xui/en/widgets/expandable_text.xml b/indra/newview/skins/default/xui/en/widgets/expandable_text.xml
index c6331ec87b..216c4dea95 100644
--- a/indra/newview/skins/default/xui/en/widgets/expandable_text.xml
+++ b/indra/newview/skins/default/xui/en/widgets/expandable_text.xml
@@ -2,9 +2,10 @@
<expandable_text
max_height="300" >
<textbox
- parse_urls="true"
+ allow_html="true"
allow_scroll="true"
bg_visible="false"
+ label="More"
follows="left|top|right"
name="text"
read_only="true"
diff --git a/indra/newview/skins/default/xui/en/widgets/inventory_list_item.xml b/indra/newview/skins/default/xui/en/widgets/inventory_list_item.xml
index da9059c819..0a5930c820 100644
--- a/indra/newview/skins/default/xui/en/widgets/inventory_list_item.xml
+++ b/indra/newview/skins/default/xui/en/widgets/inventory_list_item.xml
@@ -32,7 +32,7 @@
height="20"
layout="topleft"
left="21"
- parse_urls="false"
+ allow_html="false"
use_ellipses="true"
name="item_name"
text_color="white"
diff --git a/indra/newview/skins/default/xui/en/widgets/scroll_list.xml b/indra/newview/skins/default/xui/en/widgets/scroll_list.xml
index dd93675807..63166f32b7 100644
--- a/indra/newview/skins/default/xui/en/widgets/scroll_list.xml
+++ b/indra/newview/skins/default/xui/en/widgets/scroll_list.xml
@@ -12,7 +12,6 @@
draw_stripes="true"
scroll_bar_bg_visible="false"
scroll_bar_bg_color="black"
- mouse_wheel_opaque="false"
background_visible="true"
heading_height="23"
draw_border="false"
diff --git a/indra/newview/skins/default/xui/en/widgets/simple_text_editor.xml b/indra/newview/skins/default/xui/en/widgets/simple_text_editor.xml
index 3878c7a144..bb46ec0954 100644
--- a/indra/newview/skins/default/xui/en/widgets/simple_text_editor.xml
+++ b/indra/newview/skins/default/xui/en/widgets/simple_text_editor.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<simple_text_editor
- parse_urls="false"
+ allow_html="false"
mouse_opaque="true"
font="SansSerifSmall"
max_length="255"
@@ -15,13 +15,11 @@
default_color="TextDefaultColor"
text_color="TextFgColor"
text_readonly_color="TextFgReadOnlyColor"
- text_selected_color="White"
h_pad="6"
v_pad="4"
bg_visible="true"
bg_readonly_color="TextBgReadOnlyColor"
bg_writeable_color="TextBgWriteableColor"
- bg_selected_color="EmphasisColor"
bg_focus_color="TextBgFocusColor">
<simple_text_editor.border
bevel_style="in"
diff --git a/indra/newview/skins/default/xui/en/widgets/text.xml b/indra/newview/skins/default/xui/en/widgets/text.xml
index 134f2d7522..3006df22b8 100644
--- a/indra/newview/skins/default/xui/en/widgets/text.xml
+++ b/indra/newview/skins/default/xui/en/widgets/text.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<text parse_urls="true"
+<text allow_html="true"
mouse_opaque="false"
name="text_box"
font="SansSerifSmall"
@@ -8,7 +8,7 @@
halign="left"
h_pad="0"
allow_scroll="false"
- text_readonly_color="LabelTextColor"
+ text_readonly_color="LabelDisabledColor"
bg_writeable_color="FloaterDefaultBackgroundColor"
use_ellipses="false"
bg_visible="false"
diff --git a/indra/newview/skins/default/xui/en/widgets/text_editor.xml b/indra/newview/skins/default/xui/en/widgets/text_editor.xml
index 180120ec89..2ced8b1b4b 100644
--- a/indra/newview/skins/default/xui/en/widgets/text_editor.xml
+++ b/indra/newview/skins/default/xui/en/widgets/text_editor.xml
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<!-- Core parameters are in simple_text_editor.xml -->
<text_editor
- parse_urls="false"
- text_readonly_color="LabelDisabledColor"
+ allow_html="false"
show_context_menu="true"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_postcard.xml b/indra/newview/skins/default/xui/fr/floater_postcard.xml
index a4b0675fe4..91a943ef15 100644
--- a/indra/newview/skins/default/xui/fr/floater_postcard.xml
+++ b/indra/newview/skins/default/xui/fr/floater_postcard.xml
@@ -24,7 +24,7 @@
<check_box label="Contenu adulte" name="mature_check" tool_tip="Cette carte postale est 脿 caract猫re adulte."/>
<button label="?" name="publish_help_btn"/>
<text_editor name="msg_form">
- Saisir ici votre message
+ Saisir ici votre message.
</text_editor>
<text name="fine_print">
Si le destinataire s&apos;inscrit sur [SECOND_LIFE], vous recevrez un bonus.
diff --git a/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml b/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml
index de8d25a494..82f5bac047 100644
--- a/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml
@@ -19,7 +19,7 @@
Pr茅visualiser
</floater.string>
<floater.string name="none_text">
- -Aucun choix-
+ - Aucun choix -
</floater.string>
<floater.string name="Title">
Geste : [NAME]
diff --git a/indra/newview/skins/default/xui/fr/floater_tools.xml b/indra/newview/skins/default/xui/fr/floater_tools.xml
index b0c8636ea3..92f02ad1fa 100644
--- a/indra/newview/skins/default/xui/fr/floater_tools.xml
+++ b/indra/newview/skins/default/xui/fr/floater_tools.xml
@@ -48,8 +48,8 @@
Glissez pour d茅placer, Maj-glissez pour copier.
</text>
<radio_group name="focus_radio_group">
- <radio_item label="Zoomer" name="radio zoom"/>
- <radio_item label="Faire tourner la cam茅ra (Ctrl)" name="radio orbit"/>
+ <radio_item label="Zoom" name="radio zoom"/>
+ <radio_item label="Orbite (Ctrl)" name="radio orbit"/>
<radio_item label="Faire un panoramique (Ctrl+Maj)" name="radio pan"/>
</radio_group>
<radio_group name="move_radio_group">
diff --git a/indra/newview/skins/default/xui/fr/menu_object.xml b/indra/newview/skins/default/xui/fr/menu_object.xml
index 6492a83e06..257c44795f 100644
--- a/indra/newview/skins/default/xui/fr/menu_object.xml
+++ b/indra/newview/skins/default/xui/fr/menu_object.xml
@@ -1,7 +1,9 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<context_menu name="Object Pie">
- <menu_item_call label="Toucher" name="Object Touch"/>
- <menu_item_call label="脡diter" name="Edit..."/>
+ <menu_item_call label="Toucher" name="Object Touch">
+ <on_enable parameter="Toucher" name="EnableTouch"/>
+ </menu_item_call>
+ <menu_item_call label="Modifier" name="Edit..."/>
<menu_item_call label="Construire" name="Build"/>
<menu_item_call label="Ouvrir" name="Open"/>
<menu_item_call label="M&apos;asseoir ici" name="Object Sit"/>
diff --git a/indra/newview/skins/default/xui/fr/menu_picks.xml b/indra/newview/skins/default/xui/fr/menu_picks.xml
index 7d7174d43c..adb1cec8f5 100644
--- a/indra/newview/skins/default/xui/fr/menu_picks.xml
+++ b/indra/newview/skins/default/xui/fr/menu_picks.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<context_menu name="Picks">
<menu_item_call label="Infos" name="pick_info"/>
- <menu_item_call label="Modifier" name="pick_edit"/>
+ <menu_item_call label="脡diter" name="pick_edit"/>
<menu_item_call label="T茅l茅porter" name="pick_teleport"/>
<menu_item_call label="Carte" name="pick_map"/>
<menu_item_call label="Supprimer" name="pick_delete"/>
diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml
index 259ac4cee6..c1321b71ea 100644
--- a/indra/newview/skins/default/xui/fr/notifications.xml
+++ b/indra/newview/skins/default/xui/fr/notifications.xml
@@ -909,7 +909,7 @@ Fusionner le terrain聽?
</notification>
<notification name="CannotSaveToAssetStore">
Impossible de sauvegarder le fichier [NAME] dans la base de donn茅es centrale.
-Cette erreur est g茅n茅ralement temporaire. Veuillez modifier et sauvegarder l&apos;茅l茅ment endossable 脿 nouveau d&apos;ici quelques minutes.
+Cette erreur est g茅n茅ralement temporaire. Veuillez 茅diter et sauvegarder l&apos;茅l茅ment endossable 脿 nouveau d&apos;ici quelques minutes.
</notification>
<notification name="YouHaveBeenLoggedOut">
Zut. Vous avez 茅t茅 d茅connect茅(e) de [SECOND_LIFE]
@@ -1917,7 +1917,7 @@ Liez-la 脿 partir d&apos;une page web pour permettre aux autres r茅sidents d&apo
<usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/>
</notification>
<notification name="WLNoEditDefault">
- Vous ne pouvez pas modifier ou supprimer un pr茅r茅glage par d茅faut.
+ Vous ne pouvez pas 茅diter ou supprimer un pr茅r茅glage par d茅faut.
</notification>
<notification name="WLMissingSky">
Une dossier semble manquer au Cycle du jour聽: [SKY].
@@ -1953,7 +1953,7 @@ Liez-la 脿 partir d&apos;une page web pour permettre aux autres r茅sidents d&apo
Ce pr茅r茅glage existe d茅j脿聽!
</notification>
<notification name="WaterNoEditDefault">
- Vous ne pouvez pas modifier ou supprimer un pr茅r茅glage par d茅faut.
+ Vous ne pouvez pas 茅diter ou supprimer un pr茅r茅glage par d茅faut.
</notification>
<notification name="ChatterBoxSessionStartError">
Impossible de d茅marrer une nouvelle session de chat avec [RECIPIENT].
diff --git a/indra/newview/skins/default/xui/fr/panel_pick_info.xml b/indra/newview/skins/default/xui/fr/panel_pick_info.xml
index 3ca1e9a21b..e9572caac7 100644
--- a/indra/newview/skins/default/xui/fr/panel_pick_info.xml
+++ b/indra/newview/skins/default/xui/fr/panel_pick_info.xml
@@ -11,6 +11,6 @@
<panel name="buttons">
<button label="T茅l茅porter" name="teleport_btn"/>
<button label="Carte" name="show_on_map_btn"/>
- <button label="Modifier" name="edit_btn"/>
+ <button label="脡diter" name="edit_btn"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_script_ed.xml b/indra/newview/skins/default/xui/fr/panel_script_ed.xml
index 3b3b676aa1..ea161ecae8 100644
--- a/indra/newview/skins/default/xui/fr/panel_script_ed.xml
+++ b/indra/newview/skins/default/xui/fr/panel_script_ed.xml
@@ -25,7 +25,7 @@
<menu_item_call label="Enregistrer" name="Save"/>
<menu_item_call label="Annuler tous les changements" name="Revert All Changes"/>
</menu>
- <menu label="Modifier" name="Edit">
+ <menu label="脡diter" name="Edit">
<menu_item_call label="Annuler" name="Undo"/>
<menu_item_call label="Refaire" name="Redo"/>
<menu_item_call label="Couper" name="Cut"/>
diff --git a/indra/newview/skins/default/xui/pl/floater_bulk_perms.xml b/indra/newview/skins/default/xui/pl/floater_bulk_perms.xml
index 0f49061002..ed2e037d3c 100644
--- a/indra/newview/skins/default/xui/pl/floater_bulk_perms.xml
+++ b/indra/newview/skins/default/xui/pl/floater_bulk_perms.xml
@@ -18,8 +18,8 @@
<icon name="icon_bodypart" tool_tip="Cz臋艣ci Cia艂a"/>
<check_box label="Ubranie" name="check_clothing"/>
<icon name="icon_clothing" tool_tip="Ubranie"/>
- <check_box label="Gesturki" name="check_gesture"/>
- <icon name="icon_gesture" tool_tip="Gesturki"/>
+ <check_box label="Gestury" name="check_gesture"/>
+ <icon name="icon_gesture" tool_tip="Gestury"/>
<check_box label="Noty" name="check_notecard"/>
<icon name="icon_notecard" tool_tip="Noty"/>
<check_box label="Obiekty" name="check_object"/>
diff --git a/indra/newview/skins/default/xui/pl/floater_pay.xml b/indra/newview/skins/default/xui/pl/floater_pay.xml
index c9243fda65..dccb7ed2bb 100644
--- a/indra/newview/skins/default/xui/pl/floater_pay.xml
+++ b/indra/newview/skins/default/xui/pl/floater_pay.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="Give Money" title="">
<string name="payee_group">
- Zap艂a膰 grupie
+ Zap艂a膰 Grupie
</string>
<string name="payee_resident">
Zap艂a膰 Rezydentowi
diff --git a/indra/newview/skins/default/xui/pl/floater_pay_object.xml b/indra/newview/skins/default/xui/pl/floater_pay_object.xml
index 19032b3e5d..d0c69a6c21 100644
--- a/indra/newview/skins/default/xui/pl/floater_pay_object.xml
+++ b/indra/newview/skins/default/xui/pl/floater_pay_object.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="Give Money" title="">
<string halign="left" name="payee_group" width="100">
- Zap艂a膰 grupie
+ Zap艂a膰 Grupie
</string>
<string halign="left" name="payee_resident" width="120">
Zap艂a膰 Rezydentowi
@@ -11,7 +11,7 @@
[FIRST] [LAST]
</text>
<text halign="left" left="5" name="object_name_label" width="95">
- Poprzez obiekt:
+ Poprzez Obiekt:
</text>
<icon name="icon_object" tool_tip="Obiekt"/>
<text left="105" name="object_name_text">
diff --git a/indra/newview/skins/default/xui/pl/floater_post_process.xml b/indra/newview/skins/default/xui/pl/floater_post_process.xml
index e3dce84933..a3515915bf 100644
--- a/indra/newview/skins/default/xui/pl/floater_post_process.xml
+++ b/indra/newview/skins/default/xui/pl/floater_post_process.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater name="Post-Process Floater" title="USTAWIENIA PRZETWARZANIA KO艃COWEGO">
<tab_container name="Post-Process Tabs">
- <panel label="Kolor filtra" name="wmiColorFilterPanel">
+ <panel label="Kolor Filtru" name="wmiColorFilterPanel">
<check_box label="Udost臋pnij" name="wmiColorFilterToggle" />
<text name="wmiColorFilterBrightnessText">
Jasno艣膰
diff --git a/indra/newview/skins/default/xui/pl/floater_postcard.xml b/indra/newview/skins/default/xui/pl/floater_postcard.xml
index fe796c6fa0..095974aa61 100644
--- a/indra/newview/skins/default/xui/pl/floater_postcard.xml
+++ b/indra/newview/skins/default/xui/pl/floater_postcard.xml
@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="Postcard" title="WY艢LIJ POCZT脫WK臉 (EMAIL)">
<text name="to_label">
- Email odbiorcy:
+ Email Odbiorcy:
</text>
<text name="from_label">
- Tw贸j email:
+ Tw贸j Email:
</text>
<text name="name_label">
- Twoje dane:
+ Twoje Dane:
</text>
<text name="subject_label">
Temat:
@@ -20,7 +20,7 @@
Wpisz tre艣膰 swojej wiadomo艣ci tutaj
</text_editor>
<text name="fine_print">
- Je偶eli odbiorca tej poczt贸wki do艂膮czy do [SECOND_LIFE], otrzymasz bonus.
+ Je偶eli Odbiorca tej poczt贸wki do艂膮czy do [SECOND_LIFE], otrzymasz bonus.
</text>
<button label="Anuluj" name="cancel_btn"/>
<button label="Wy艣lij" name="send_btn"/>
diff --git a/indra/newview/skins/default/xui/pl/floater_preview_gesture.xml b/indra/newview/skins/default/xui/pl/floater_preview_gesture.xml
index 8171225666..9ae63031b6 100644
--- a/indra/newview/skins/default/xui/pl/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/pl/floater_preview_gesture.xml
@@ -67,7 +67,7 @@
<text name="help_label">
Wszystkie etapy nast膮pi膮 razem, chyba, 偶e dodasz pauzy.
</text>
- <check_box label="Aktywna" name="active_check" tool_tip="Aktywne gesturki mo偶na w艂膮cza膰 u偶ywaj膮c przypisanej frazy w czacie albo u偶ywaj膮c przypisanego klawisza skr贸towego. W przypaku konfliktu przypisa艅 gesty zazwyczaj nie b臋d膮 dzia艂a膰."/>
+ <check_box label="Aktywny" name="active_check" tool_tip="Aktywne gesty mo偶na w艂膮cza膰 u偶ywaj膮c przypisanej frazy w czacie albo u偶ywaj膮c przypisanego klawisza skr贸towego. W przypaku konfliktu przypisa艅 gesty zazwyczaj nie b臋d膮 dzia艂a膰."/>
<button label="Poka偶" name="preview_btn"/>
<button label="Zapisz" name="save_btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/pl/floater_preview_gesture_info.xml b/indra/newview/skins/default/xui/pl/floater_preview_gesture_info.xml
index a041472f68..d31cada96d 100644
--- a/indra/newview/skins/default/xui/pl/floater_preview_gesture_info.xml
+++ b/indra/newview/skins/default/xui/pl/floater_preview_gesture_info.xml
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Gesture" title="GESTURKI"/>
+<floater name="Gesture" title="GEST"/>
diff --git a/indra/newview/skins/default/xui/pl/floater_preview_gesture_shortcut.xml b/indra/newview/skins/default/xui/pl/floater_preview_gesture_shortcut.xml
index 9692fca9cd..d33b799476 100644
--- a/indra/newview/skins/default/xui/pl/floater_preview_gesture_shortcut.xml
+++ b/indra/newview/skins/default/xui/pl/floater_preview_gesture_shortcut.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Gesture" title="GESTURKI">
+<floater name="Gesture" title="GESTY">
<text name="trigger_label">
Czat:
</text>
diff --git a/indra/newview/skins/default/xui/pl/floater_preview_gesture_steps.xml b/indra/newview/skins/default/xui/pl/floater_preview_gesture_steps.xml
index a041472f68..6592d9dad0 100644
--- a/indra/newview/skins/default/xui/pl/floater_preview_gesture_steps.xml
+++ b/indra/newview/skins/default/xui/pl/floater_preview_gesture_steps.xml
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Gesture" title="GESTURKI"/>
+<floater name="Gesture" title="GESTY"/>
diff --git a/indra/newview/skins/default/xui/pl/floater_preview_sound.xml b/indra/newview/skins/default/xui/pl/floater_preview_sound.xml
index 3825fe742e..d02b3ca75e 100644
--- a/indra/newview/skins/default/xui/pl/floater_preview_sound.xml
+++ b/indra/newview/skins/default/xui/pl/floater_preview_sound.xml
@@ -7,5 +7,5 @@
Opis:
</text>
<button label="Odtwarzaj" label_selected="Odtwarzaj" left_delta="-136" name="Sound play btn" tool_tip="D藕wi臋k b臋dzie s艂yszalny przez wszystkich." width="130"/>
- <button label="Odtwarzaj lokalnie" label_selected="Odtwarzaj lokalnie" name="Sound audition btn" tool_tip="D藕wi臋k b臋dzie s艂yszalny tylko dla Ciebie."/>
+ <button label="Odtwarzaj Lokalnie" label_selected="Odtwarzaj lokalnie" name="Sound audition btn" tool_tip="D藕wi臋k b臋dzie s艂yszalny tylko dla Ciebie."/>
</floater>
diff --git a/indra/newview/skins/default/xui/pl/floater_report_abuse.xml b/indra/newview/skins/default/xui/pl/floater_report_abuse.xml
index a5b96601b8..a6f8ba6c11 100644
--- a/indra/newview/skins/default/xui/pl/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/pl/floater_report_abuse.xml
@@ -27,7 +27,7 @@
</text>
<button label="" label_selected="" name="pick_btn" tool_tip="Wyb贸r obiektu - wybierz obiekt, kt贸rego dotyczy raport"/>
<text name="object_name_label">
- Nazwa obiektu:
+ Nazwa Obiektu:
</text>
<text name="object_name">
Consetetur Sadipscing
@@ -67,8 +67,8 @@
<combo_box.item label="Prze艣ladowanie &gt; Zniewa偶anie S艂owne" name="Harassment__Verbal_abuse"/>
<combo_box.item label="Nieprzyzwoito艣膰 &gt; Obra藕liwa tre艣膰 lub post臋powanie" name="Indecency__Broadly_offensive_content_or_conduct"/>
<combo_box.item label="Nieprzyzwoito艣膰 &gt; Niestosowne imi臋 awatara" name="Indecency__Inappropriate_avatar_name"/>
- <combo_box.item label="Nieprzyzwoito艣膰 &gt; Obra藕liwa tre艣膰 i post臋powanie w Regionie &apos;General&apos;" name="Indecency__Mature_content_in_PG_region"/>
- <combo_box.item label="Nieprzyzwoito艣膰 &gt; Obra藕liwa tre艣膰 i post臋powanie w Regionie &apos;Moderate&apos;" name="Indecency__Inappropriate_content_in_Mature_region"/>
+ <combo_box.item label="Nieprzyzwoito艣膰 &gt; Obra藕liwa tre艣膰 i post臋powanie w Regionie &apos;PG&apos;" name="Indecency__Mature_content_in_PG_region"/>
+ <combo_box.item label="Nieprzyzwoito艣膰 &gt; Obra藕liwa tre艣膰 i post臋powanie w Regionie &apos;Mature&apos;" name="Indecency__Inappropriate_content_in_Mature_region"/>
<combo_box.item label="Naruszenie w艂asno艣ci intelektualnej &gt; usuni臋cie tre艣ci" name="Intellectual_property_infringement_Content_Removal"/>
<combo_box.item label="Naruszenie w艂asno艣ci intelektualnej &gt; CopyBot albo nadu偶ycie przywilej贸w" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/>
<combo_box.item label="Nietolerancja" name="Intolerance"/>
diff --git a/indra/newview/skins/default/xui/pl/floater_script_search.xml b/indra/newview/skins/default/xui/pl/floater_script_search.xml
index 901d61a137..cb010daee4 100644
--- a/indra/newview/skins/default/xui/pl/floater_script_search.xml
+++ b/indra/newview/skins/default/xui/pl/floater_script_search.xml
@@ -3,7 +3,7 @@
<check_box label="CapsLoock nieaktywny" name="case_text"/>
<button label="Szukaj" label_selected="Szukaj" name="search_btn"/>
<button label="Zamie艅" label_selected="Zamie艅" name="replace_btn"/>
- <button label="Zamie艅 wszystko" label_selected="Zamie艅 wszystko" name="replace_all_btn"/>
+ <button label="Zamie艅 Wszystko" label_selected="Zamie艅 wszystko" name="replace_all_btn"/>
<text name="txt">
Szukaj
</text>
diff --git a/indra/newview/skins/default/xui/pl/floater_sell_land.xml b/indra/newview/skins/default/xui/pl/floater_sell_land.xml
index 528e5a416b..eb1ed74797 100644
--- a/indra/newview/skins/default/xui/pl/floater_sell_land.xml
+++ b/indra/newview/skins/default/xui/pl/floater_sell_land.xml
@@ -15,13 +15,13 @@
[AREA] m虏
</text>
<text name="info_action">
- Aby sprzeda膰 t膮 posiad艂o艣膰:
+ Aby sprzeda膰 t膮 Posiad艂o艣膰:
</text>
<text name="price_label">
1. Ustal cen臋:
</text>
<text name="price_text">
- Wybierz w艂a艣ciw膮 cen臋 za t膮 posiad艂o艣膰.
+ Wybierz w艂a艣ciw膮 cen臋 za t膮 Posiad艂o艣膰.
</text>
<text name="price_ld">
L$
@@ -33,7 +33,7 @@
(L$[PER_METER] za m虏)
</text>
<text name="sell_to_label">
- 2. Sprzedaj posiad艂o艣膰:
+ 2. Sprzedaj Posiad艂o艣膰:
</text>
<text name="sell_to_text">
Wybierz sprzeda偶 dla kogokolwiek albo dla wybranego kupca.
@@ -45,14 +45,14 @@
</combo_box>
<button label="Wybierz" name="sell_to_select_agent"/>
<text name="sell_objects_label">
- 3. Obiekty sprzedawane razem z posiad艂o艣ci膮?
+ 3. Obiekty sprzedawane razem z Posiad艂o艣ci膮?
</text>
<text name="sell_objects_text">
- Przekazywalne obiekty w艂a艣ciciela posiad艂o艣ci zmieni膮 w艂a艣ciciela.
+ Przekazywalne obiekty w艂a艣ciciela Posiad艂o艣ci zmieni膮 w艂a艣ciciela.
</text>
<radio_group name="sell_objects">
<radio_item label="Nie, zatrzymaj obiekty" name="no"/>
- <radio_item label="Tak, sprzedaj obiekty razem z posiad艂o艣ci膮" name="yes"/>
+ <radio_item label="Tak, sprzedaj obiekty razem z Posiad艂o艣ci膮" name="yes"/>
</radio_group>
<button label="Poka偶 Obiekty" name="show_objects"/>
<text name="nag_message_label">
diff --git a/indra/newview/skins/default/xui/pl/floater_stats.xml b/indra/newview/skins/default/xui/pl/floater_stats.xml
index 886a30e5d9..ee5fba4d63 100644
--- a/indra/newview/skins/default/xui/pl/floater_stats.xml
+++ b/indra/newview/skins/default/xui/pl/floater_stats.xml
@@ -30,18 +30,18 @@
<stat_bar label="Tesktura" name="texturekbitstat"/>
<stat_bar label="Asset" name="assetkbitstat"/>
<stat_bar label="Podk艂ad" name="layerskbitstat"/>
- <stat_bar label="Aktualna ilo艣膰 wewn臋trzna" name="actualinkbitstat"/>
- <stat_bar label="Aktualna ilo艣膰 zewn臋trzna" name="actualoutkbitstat"/>
+ <stat_bar label="Aktualna Ilo艣膰 Wewn臋trzna" name="actualinkbitstat"/>
+ <stat_bar label="Aktualna Ilo艣膰 Zewn臋trzna" name="actualoutkbitstat"/>
<stat_bar label="VFS Pending Ops" name="vfspendingoperations"/>
</stat_view>
</stat_view>
<stat_view label="Symulator" name="sim">
- <stat_bar label="Czas rozszerzenia" name="simtimedilation"/>
- <stat_bar label="Ilo艣膰 obraz贸w/Sec na symulatorze (Sim FPS)" name="simfps"/>
- <stat_bar label="Fizyka obraz贸w/Sec" name="simphysicsfps"/>
- <stat_view label="Szczeg贸艂y fizyki" name="physicsdetail">
+ <stat_bar label="Czas Rozszerzenia" name="simtimedilation"/>
+ <stat_bar label="Ilo艣膰 Obraz贸w/Sec na Symulatorze (Sim FPS)" name="simfps"/>
+ <stat_bar label="Fizyka Obraz贸w/Sec" name="simphysicsfps"/>
+ <stat_view label="Szczeg贸艂y Fizyki" name="physicsdetail">
<stat_bar label="Pinned objects" name="physicspinnedtasks"/>
- <stat_bar label="Niskie LOD obiekt贸w" name="physicslodtasks"/>
+ <stat_bar label="Niskie LOD Obiekt贸w" name="physicslodtasks"/>
<stat_bar label="Alokacja pami臋ci" name="physicsmemoryallocated"/>
<stat_bar label="Aktualizacja agent贸w/Sek" name="simagentups"/>
<stat_bar label="G艂贸wni agenci" name="simmainagents"/>
diff --git a/indra/newview/skins/default/xui/pl/floater_tools.xml b/indra/newview/skins/default/xui/pl/floater_tools.xml
index 817a72efd9..7e97297bca 100644
--- a/indra/newview/skins/default/xui/pl/floater_tools.xml
+++ b/indra/newview/skins/default/xui/pl/floater_tools.xml
@@ -22,7 +22,7 @@
Kliknij in-world by zacz膮膰 budowa膰
</floater.string>
<floater.string name="status_selectland">
- Edytowanie terenu:
+ Edytowanie Terenu:
</floater.string>
<floater.string name="grid_screen_text">
Widok
@@ -71,7 +71,7 @@
<text label="Rozci膮gnij 2 strony" name="checkbox uniform label">
Rozci膮gnij 2 strony
</text>
- <check_box initial_value="true" label="Rozci膮gnij tekstur臋" name="checkbox stretch textures"/>
+ <check_box initial_value="true" label="Rozci膮gnij Tekstur臋" name="checkbox stretch textures"/>
<check_box initial_value="true" label="U偶yj siatki" name="checkbox snap to grid"/>
<combo_box name="combobox grid mode" tool_tip="Wybierz rodzaj linijki siatki dla pozycjonowania obiektu">
<combo_box.item label="艢wiat" name="World"/>
@@ -218,11 +218,11 @@
<check_box label="Przesu艅" name="checkbox allow everyone move"/>
<check_box label="Kopiuj" name="checkbox allow everyone copy"/>
<text name="Next owner can:">
- Nast臋pny w艂a艣ciciel:
+ Nast臋pny W艂a艣ciciel:
</text>
<check_box label="Zmienia" name="checkbox next owner can modify"/>
<check_box label="Kopiuje" name="checkbox next owner can copy"/>
- <check_box label="Oddaje/Sprzedaje" name="checkbox next owner can transfer" tool_tip="Nast臋pny w艂a艣ciciel mo偶e oddawa膰 lub sprzedawa膰 ten obiekt"/>
+ <check_box label="Oddaje/Sprzedaje" name="checkbox next owner can transfer" tool_tip="Nast臋pny W艂a艣ciciel mo偶e oddawa膰 lub sprzedawa膰 ten obiekt"/>
<text name="B:">
B:
</text>
@@ -299,7 +299,7 @@
<spinner name="Scale 1"/>
<spinner name="Skew"/>
<text name="Hollow Shape">
- Kszta艂t wydr膮偶enia
+ Kszta艂t Wydr膮偶enia
</text>
<combo_box name="hole">
<combo_box.item label="Domy艣lny" name="Default"/>
@@ -399,7 +399,7 @@
<texture_picker label="Tekstura" name="texture control" tool_tip="Kliknij by wybra膰 obraz"/>
<color_swatch label="Kolor" name="colorswatch" tool_tip="Kliknij aby wybra膰 kolor"/>
<text left="170" name="color trans" width="99">
- Przezroczysto艣膰 %
+ Przezroczysto艣膰%
</text>
<spinner left="170" name="ColorTrans"/>
<text left="170" name="glow label">
@@ -431,9 +431,9 @@
<combo_box.item label="Najja艣niejsza" name="Brightness"/>
<combo_box.item label="Najciemniejsza" name="Darkness"/>
<combo_box.item label="Drewniano-ziarnista" name="woodgrain"/>
- <combo_box.item label="Kory drzewa" name="bark"/>
+ <combo_box.item label="Kory Drzewa" name="bark"/>
<combo_box.item label="Cegie艂" name="bricks"/>
- <combo_box.item label="Planszy szachowej" name="checker"/>
+ <combo_box.item label="Planszy Szachowej" name="checker"/>
<combo_box.item label="Betonu" name="concrete"/>
<combo_box.item label="P艂ytki/Kafelki" name="crustytile"/>
<combo_box.item label="Kamienia" name="cutstone"/>
@@ -441,7 +441,7 @@
<combo_box.item label="呕wiru" name="gravel"/>
<combo_box.item label="Skamieliny" name="petridish"/>
<combo_box.item label="Brzegu" name="siding"/>
- <combo_box.item label="P艂ytki kamiennej" name="stonetile"/>
+ <combo_box.item label="P艂ytki Kamiennej" name="stonetile"/>
<combo_box.item label="Stucco" name="stucco"/>
<combo_box.item label="Suction" name="suction"/>
<combo_box.item label="Fali" name="weave"/>
@@ -478,7 +478,7 @@
</tab_container>
<panel name="land info panel">
<text name="label_parcel_info">
- Informacje o posiad艂o艣ci
+ Informacje o Posiad艂o艣ci
</text>
<text name="label_area_price">
Cena: L$[PRICE] za [AREA] m虏
@@ -487,16 +487,16 @@
Obszar: [AREA] m虏
</text>
<button label="O Posiad艂o艣ci" label_selected="O Posiad艂o艣ci" name="button about land"/>
- <check_box label="Poka偶 w艂a艣cicieli" name="checkbox show owners" tool_tip="Pokoloruj posiad艂o艣ci zgodnie z przynale偶no艣ci膮 do w艂a艣ciciela: Zielony = Twoja posiad艂o艣膰 Morski = posiad艂o艣膰 Twojej grupy Czerwony = posiad艂o艣ci innych 呕贸艂ty = Na sprzeda偶 Fioletowy = Na aukcj臋 Szary = Publiczna"/>
+ <check_box label="Poka偶 W艂a艣cicieli" name="checkbox show owners" tool_tip="Pokoloruj Posiad艂o艣ci zgodnie z przynale偶no艣ci膮 do W艂a艣ciciela: Zielony = Twoja Posiad艂o艣膰 Morski = Posiad艂o艣膰 Twojej Grupy Czerwony = Posiad艂o艣ci innych 呕贸艂ty = Na sprzeda偶 Fioletowy = Na aukcj臋 Szary = Publiczna"/>
<text name="label_parcel_modify">
- Modyfikuj posiad艂o艣膰
+ Modyfikuj Posiad艂o艣膰
</text>
<button label="Podziel" label_selected="Podziel" name="button subdivide land"/>
<button label="Z艂膮cz" label_selected="Z艂膮cz" name="button join land"/>
<text name="label_parcel_trans">
- Transakcje na posiad艂o艣ci
+ Transakcje na Posiad艂o艣ci
</text>
- <button label="Kup posiad艂o艣膰" label_selected="Kup posiad艂o艣膰" name="button buy land"/>
- <button label="Porzu膰 posiad艂o艣膰" label_selected="Porzu膰 posiad艂o艣膰" name="button abandon land"/>
+ <button label="Kup Posiad艂o艣膰" label_selected="Kup Posiad艂o艣膰" name="button buy land"/>
+ <button label="Porzu膰 Posiad艂o艣膰" label_selected="Porzu膰 Posiad艂o艣膰" name="button abandon land"/>
</panel>
</floater>
diff --git a/indra/newview/skins/default/xui/pl/floater_top_objects.xml b/indra/newview/skins/default/xui/pl/floater_top_objects.xml
index 2b06ae9f78..6afbce7e10 100644
--- a/indra/newview/skins/default/xui/pl/floater_top_objects.xml
+++ b/indra/newview/skins/default/xui/pl/floater_top_objects.xml
@@ -10,7 +10,7 @@
Czas
</floater.string>
<floater.string name="scripts_mono_time_label">
- Czas Mono
+ Mono Time
</floater.string>
<floater.string name="top_colliders_title">
G艂贸wne kolizje
@@ -33,7 +33,7 @@
<scroll_list.columns label="W艂a艣ciciel" name="owner"/>
<scroll_list.columns label="Miejsce" name="location"/>
<scroll_list.columns label="Czas" name="time"/>
- <scroll_list.columns label="Czas Mono" name="mono_time"/>
+ <scroll_list.columns label="Mono Time" name="mono_time"/>
<scroll_list.columns label="URL" name="URLs"/>
</scroll_list>
<text name="id_text">
@@ -51,6 +51,6 @@
<button label="Od艣wie偶" name="refresh_btn"/>
<button label="Zwr贸膰 wybrane" name="return_selected_btn"/>
<button label="Zwr贸膰 wszystko" name="return_all_btn"/>
- <button label="Dezaktywuj wybrane" name="disable_selected_btn"/>
- <button label="Dezaktywuj wszystko" name="disable_all_btn"/>
+ <button label="Deaktywuj wybrane" name="disable_selected_btn"/>
+ <button label="Deaktywuj wszystko" name="disable_all_btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/pl/floater_windlight_options.xml b/indra/newview/skins/default/xui/pl/floater_windlight_options.xml
index 930e904464..49e523fae8 100644
--- a/indra/newview/skins/default/xui/pl/floater_windlight_options.xml
+++ b/indra/newview/skins/default/xui/pl/floater_windlight_options.xml
@@ -77,7 +77,7 @@
</panel>
<panel label="艢WIAT艁O" name="Lighting">
<text name="SLCText">
- Kolor S艂o艅ca/Ksi臋偶yca
+ Kolor s艂o艅ca/ksi臋偶yca
</text>
<button label="?" name="WLSunlightColorHelp"/>
<text name="BHText">
@@ -97,7 +97,7 @@
<slider label="" name="WLSunlightB"/>
<slider label="" name="WLSunlightI"/>
<text name="TODText">
- Pozycja S艂o艅ca/Ksi臋偶yca
+ Pozycja s艂o艅ca/ksi臋偶yca
</text>
<button label="?" name="WLTimeOfDayHelp"/>
<slider label="" name="WLSunAngle"/>
@@ -127,7 +127,7 @@
<button label="?" name="WLEastAngleHelp"/>
<slider label="" name="WLEastAngle"/>
<text name="SunGlowText">
- Blask S艂o艅ca
+ Blask s艂o艅ca
</text>
<button label="?" name="WLSunGlowHelp"/>
<slider label="Ostro艣膰" name="WLGlowB"/>
diff --git a/indra/newview/skins/default/xui/pl/floater_world_map.xml b/indra/newview/skins/default/xui/pl/floater_world_map.xml
index 4f53337365..5bf394f45a 100644
--- a/indra/newview/skins/default/xui/pl/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/pl/floater_world_map.xml
@@ -17,13 +17,13 @@
Infohub
</text>
<text name="land_sale_label">
- Sprzeda偶 posiad艂o艣ci
+ Sprzeda偶 Posiad艂o艣ci
</text>
<text name="auction_label">
- Aukcja posiad艂o艣ci
+ aukcja Posiad艂o艣ci
</text>
<text name="by_owner_label">
- przez w艂a艣ciciela
+ przez W艂a艣ciciela
</text>
<button name="Go Home" tool_tip="Teleportuj do mojego Miejsca Startowego"/>
<text name="Home_label">
@@ -33,11 +33,11 @@
Wydarzenia:
</text>
<text name="pg_label">
- General
+ Og贸lne
</text>
<check_box initial_value="true" name="events_mature_chk"/>
<text name="events_mature_label">
- Moderate
+ Moderuj
</text>
<text name="events_adult_label">
Adult
@@ -49,13 +49,13 @@
</text>
</panel>
<panel name="layout_panel_4">
- <combo_box label="Dost臋pni znajomi" name="friend combo" tool_tip="Poka偶 znajomych na mapie">
- <combo_box.item label="Moi dost臋pni znajomi" name="item1"/>
+ <combo_box label="Dost臋pni Znajomi" name="friend combo" tool_tip="Poka偶 znajomych na mapie">
+ <combo_box.item label="Moi Dost臋pni Znajomi" name="item1"/>
</combo_box>
- <combo_box label="Zapisane miejsca" name="landmark combo" tool_tip="Poka偶 zapisane miejsce na mapie">
- <combo_box.item label="Zapisane miejsca" name="item1"/>
+ <combo_box label="Zapisane Miejsca" name="landmark combo" tool_tip="Poka偶 zapisane miejsce na mapie">
+ <combo_box.item label="Zapisane Miejsca" name="item1"/>
</combo_box>
- <search_editor label="Regiony wed艂ug nazwy" name="location" tool_tip="Wpisz nazw臋 regionu"/>
+ <search_editor label="Regiony Wed艂ug Nazwy" name="location" tool_tip="Wpisz nazw臋 regionu"/>
<button label="Znajd藕" name="DoSearch" tool_tip="Szukaj regionu"/>
<button name="Clear" tool_tip="Wyczy艣膰 zapami臋tane linie oraz zresetuj map臋"/>
<text name="events_label">
diff --git a/indra/newview/skins/default/xui/pl/inspect_avatar.xml b/indra/newview/skins/default/xui/pl/inspect_avatar.xml
index 778e500bc0..3ee0b976eb 100644
--- a/indra/newview/skins/default/xui/pl/inspect_avatar.xml
+++ b/indra/newview/skins/default/xui/pl/inspect_avatar.xml
@@ -10,8 +10,8 @@
<string name="Details">
[SL_PROFILE]
</string>
- <slider name="volume_slider" tool_tip="Poziom g艂o艣no艣ci" value="0.5"/>
- <button label="Dodaj znajomo艣膰" name="add_friend_btn"/>
+ <slider name="volume_slider" tool_tip="Posiom G艂o艣no艣ci" value="0.5"/>
+ <button label="Dodaj Znajomo艣膰" name="add_friend_btn"/>
<button label="IM" name="im_btn"/>
<button label="Profil" name="view_profile_btn"/>
<panel name="moderator_panel">
diff --git a/indra/newview/skins/default/xui/pl/inspect_group.xml b/indra/newview/skins/default/xui/pl/inspect_group.xml
index 63c79acc8c..0a2a62ce74 100644
--- a/indra/newview/skins/default/xui/pl/inspect_group.xml
+++ b/indra/newview/skins/default/xui/pl/inspect_group.xml
@@ -18,5 +18,5 @@
</string>
<button label="Do艂膮cz" name="join_btn"/>
<button label="Opu艣膰" name="leave_btn"/>
- <button label="Zobacz profil" name="view_profile_btn"/>
+ <button label="Zobacz Profil" name="view_profile_btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/pl/inspect_object.xml b/indra/newview/skins/default/xui/pl/inspect_object.xml
index 23d8ce7700..4217731ef7 100644
--- a/indra/newview/skins/default/xui/pl/inspect_object.xml
+++ b/indra/newview/skins/default/xui/pl/inspect_object.xml
@@ -8,7 +8,7 @@
Przez [CREATOR]
</string>
<string name="CreatorAndOwner">
- Tw贸rca [CREATOR]
+ Kreator [CREATOR]
W艂a艣ciciel [OWNER]
</string>
<string name="Price">
diff --git a/indra/newview/skins/default/xui/pl/menu_attachment_other.xml b/indra/newview/skins/default/xui/pl/menu_attachment_other.xml
index aacdad97e3..8a3269a923 100644
--- a/indra/newview/skins/default/xui/pl/menu_attachment_other.xml
+++ b/indra/newview/skins/default/xui/pl/menu_attachment_other.xml
@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- *NOTE: See also menu_avatar_other.xml -->
<context_menu name="Avatar Pie">
- <menu_item_call label="Zobacz profil" name="Profile..."/>
- <menu_item_call label="Dodaj znajomo艣膰" name="Add Friend"/>
+ <menu_item_call label="Zobacz Profil" name="Profile..."/>
+ <menu_item_call label="Dodaj Znajomo艣膰" name="Add Friend"/>
<menu_item_call label="IM" name="Send IM..."/>
<menu_item_call label="Zadzwo艅" name="Call"/>
- <menu_item_call label="Zapro艣 do grupy" name="Invite..."/>
+ <menu_item_call label="Zapro艣 do Grupy" name="Invite..."/>
<menu_item_call label="Zablokuj" name="Avatar Mute"/>
<menu_item_call label="Raport" name="abuse"/>
<menu_item_call label="Unieruchom" name="Freeze..."/>
diff --git a/indra/newview/skins/default/xui/pl/menu_attachment_self.xml b/indra/newview/skins/default/xui/pl/menu_attachment_self.xml
index cdc01f286c..39fe83ad2f 100644
--- a/indra/newview/skins/default/xui/pl/menu_attachment_self.xml
+++ b/indra/newview/skins/default/xui/pl/menu_attachment_self.xml
@@ -7,9 +7,9 @@
<menu_item_call label="Zmie艅 str贸j" name="Change Outfit"/>
<menu_item_call label="Edytuj m贸j str贸j" name="Edit Outfit"/>
<menu_item_call label="Edytuj m贸j kszta艂t" name="Edit My Shape"/>
- <menu_item_call label="Moi znajomi" name="Friends..."/>
- <menu_item_call label="Moje grupy" name="Groups..."/>
- <menu_item_call label="M贸j profil" name="Profile..."/>
+ <menu_item_call label="Moi Znajomi" name="Friends..."/>
+ <menu_item_call label="Moje Grupy" name="Groups..."/>
+ <menu_item_call label="M贸j Profil" name="Profile..."/>
<menu_item_call label="Debugowanie tekstur" name="Debug..."/>
<menu_item_call label="Opu艣膰" name="Drop"/>
</context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_avatar_icon.xml b/indra/newview/skins/default/xui/pl/menu_avatar_icon.xml
index e8d2b14231..c9ad275a26 100644
--- a/indra/newview/skins/default/xui/pl/menu_avatar_icon.xml
+++ b/indra/newview/skins/default/xui/pl/menu_avatar_icon.xml
@@ -2,6 +2,6 @@
<menu name="Avatar Icon Menu">
<menu_item_call label="Profil" name="Show Profile"/>
<menu_item_call label="Czat/IM..." name="Send IM"/>
- <menu_item_call label="Dodaj znajomo艣膰..." name="Add Friend"/>
+ <menu_item_call label="Dodaj Znajomo艣膰..." name="Add Friend"/>
<menu_item_call label="Usu艅..." name="Remove Friend"/>
</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_avatar_other.xml b/indra/newview/skins/default/xui/pl/menu_avatar_other.xml
index dcf7921bad..9a1603e212 100644
--- a/indra/newview/skins/default/xui/pl/menu_avatar_other.xml
+++ b/indra/newview/skins/default/xui/pl/menu_avatar_other.xml
@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- *NOTE: See also menu_attachment_other.xml -->
<context_menu name="Avatar Pie">
- <menu_item_call label="Zobacz profil" name="Profile..."/>
- <menu_item_call label="Dodaj znajomo艣膰" name="Add Friend"/>
+ <menu_item_call label="Zobacz Profil" name="Profile..."/>
+ <menu_item_call label="Dodaj Znajomo艣膰" name="Add Friend"/>
<menu_item_call label="IM" name="Send IM..."/>
<menu_item_call label="Zadzwo艅" name="Call"/>
- <menu_item_call label="Zapro艣 do grupy" name="Invite..."/>
+ <menu_item_call label="Zapro艣 do Grupy" name="Invite..."/>
<menu_item_call label="Zablokuj" name="Avatar Mute"/>
<menu_item_call label="Raport" name="abuse"/>
<menu_item_call label="Unieruchom" name="Freeze..."/>
diff --git a/indra/newview/skins/default/xui/pl/menu_avatar_self.xml b/indra/newview/skins/default/xui/pl/menu_avatar_self.xml
index 1091eaa7fb..aa415db6ea 100644
--- a/indra/newview/skins/default/xui/pl/menu_avatar_self.xml
+++ b/indra/newview/skins/default/xui/pl/menu_avatar_self.xml
@@ -3,7 +3,7 @@
<menu_item_call label="Wsta艅" name="Stand Up"/>
<context_menu label="Zdejmij 鈻" name="Take Off &gt;">
<context_menu label="Ubrania 鈻" name="Clothes &gt;">
- <menu_item_call label="Koszul臋" name="Shirt"/>
+ <menu_item_call label="Koszulk臋" name="Shirt"/>
<menu_item_call label="Spodnie" name="Pants"/>
<menu_item_call label="Sp贸dnic臋" name="Skirt"/>
<menu_item_call label="Buty" name="Shoes"/>
@@ -13,18 +13,18 @@
<menu_item_call label="Podkoszulek" name="Self Undershirt"/>
<menu_item_call label="Bielizn臋" name="Self Underpants"/>
<menu_item_call label="Tatua偶" name="Self Tattoo"/>
- <menu_item_call label="Ubranie alpha" name="Self Alpha"/>
+ <menu_item_call label="Ubranie Przezroczyste" name="Self Alpha"/>
<menu_item_call label="Wszystko" name="All Clothes"/>
</context_menu>
<context_menu label="HUD 鈻" name="Object Detach HUD"/>
<context_menu label="Od艂膮cz 鈻" name="Object Detach"/>
- <menu_item_call label="Od艂膮cz wszystko" name="Detach All"/>
+ <menu_item_call label="Od艂膮cz Wszystko" name="Detach All"/>
</context_menu>
<menu_item_call label="Zmie艅 str贸j" name="Chenge Outfit"/>
<menu_item_call label="Edytuj m贸j str贸j" name="Edit Outfit"/>
<menu_item_call label="Edytuj m贸j kszta艂t" name="Edit My Shape"/>
- <menu_item_call label="Moi znajomi" name="Friends..."/>
- <menu_item_call label="Moje grupy" name="Groups..."/>
- <menu_item_call label="M贸j profil" name="Profile..."/>
+ <menu_item_call label="Moi Znajomi" name="Friends..."/>
+ <menu_item_call label="Moje Grupy" name="Groups..."/>
+ <menu_item_call label="M贸j Profil" name="Profile..."/>
<menu_item_call label="Debugowanie tekstur" name="Debug..."/>
</context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_bottomtray.xml b/indra/newview/skins/default/xui/pl/menu_bottomtray.xml
index a4a6ea484d..7e1b37f2dd 100644
--- a/indra/newview/skins/default/xui/pl/menu_bottomtray.xml
+++ b/indra/newview/skins/default/xui/pl/menu_bottomtray.xml
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="hide_camera_move_controls_menu">
- <menu_item_check label="Przycisk gesturki" name="ShowGestureButton"/>
- <menu_item_check label="Przycisk ruchu" name="ShowMoveButton"/>
- <menu_item_check label="Przycisk widoku" name="ShowCameraButton"/>
- <menu_item_check label="Przycisk zdj臋膰" name="ShowSnapshotButton"/>
+ <menu_item_check label="Przycisk Gestur" name="ShowGestureButton"/>
+ <menu_item_check label="Przycisk Ruchu" name="ShowMoveButton"/>
+ <menu_item_check label="Przycisk Widoku" name="ShowCameraButton"/>
+ <menu_item_check label="Przycisk Zdj臋膰" name="ShowSnapshotButton"/>
<menu_item_check label="Schowek" name="ShowSidebarButton"/>
<menu_item_check label="Buduj" name="ShowBuildButton"/>
<menu_item_check label="Szukaj" name="ShowSearchButton"/>
diff --git a/indra/newview/skins/default/xui/pl/menu_cof_gear.xml b/indra/newview/skins/default/xui/pl/menu_cof_gear.xml
index 9fba39be1a..e8aaa2cf82 100644
--- a/indra/newview/skins/default/xui/pl/menu_cof_gear.xml
+++ b/indra/newview/skins/default/xui/pl/menu_cof_gear.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="Gear COF">
- <menu label="Nowe ubranie" name="COF.Gear.New_Clothes"/>
+ <menu label="Nowe Ubranie" name="COF.Gear.New_Clothes"/>
<menu label="Nowe cz臋艣ci cia艂a" name="COF.Geear.New_Body_Parts"/>
</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_favorites.xml b/indra/newview/skins/default/xui/pl/menu_favorites.xml
index 7310ff5c27..cbacaf4beb 100644
--- a/indra/newview/skins/default/xui/pl/menu_favorites.xml
+++ b/indra/newview/skins/default/xui/pl/menu_favorites.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="Popup">
<menu_item_call label="Teleportuj" name="Teleport To Landmark"/>
- <menu_item_call label="Zobacz/Edytuj Ulubione miejsce" name="Landmark Open"/>
+ <menu_item_call label="Zobacz/Edytuj Ulubione Miejsce" name="Landmark Open"/>
<menu_item_call label="Kopiuj SLurl" name="Copy slurl"/>
<menu_item_call label="Poka偶 na mapie" name="Show On Map"/>
<menu_item_call label="Kopiuj" name="Landmark Copy"/>
diff --git a/indra/newview/skins/default/xui/pl/menu_group_plus.xml b/indra/newview/skins/default/xui/pl/menu_group_plus.xml
index 83be4d38c5..9d3859081e 100644
--- a/indra/newview/skins/default/xui/pl/menu_group_plus.xml
+++ b/indra/newview/skins/default/xui/pl/menu_group_plus.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="menu_group_plus">
- <menu_item_call label="Do艂膮cz do grupy..." name="item_join"/>
- <menu_item_call label="Nowa grupa..." name="item_new"/>
+ <menu_item_call label="Do艂膮cz do Grupy..." name="item_join"/>
+ <menu_item_call label="Nowa Grupa..." name="item_new"/>
</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/pl/menu_imchiclet_group.xml
index 2b9a362123..c53f72c043 100644
--- a/indra/newview/skins/default/xui/pl/menu_imchiclet_group.xml
+++ b/indra/newview/skins/default/xui/pl/menu_imchiclet_group.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="IMChiclet Group Menu">
- <menu_item_call label="O grupie" name="Show Profile"/>
+ <menu_item_call label="O Grupie" name="Show Profile"/>
<menu_item_call label="Poka偶 sesj臋" name="Chat"/>
<menu_item_call label="Zako艅cz rozmow臋" name="End Session"/>
</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/pl/menu_imchiclet_p2p.xml
index 8924d6db3e..c0c812c0a7 100644
--- a/indra/newview/skins/default/xui/pl/menu_imchiclet_p2p.xml
+++ b/indra/newview/skins/default/xui/pl/menu_imchiclet_p2p.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="IMChiclet P2P Menu">
- <menu_item_call label="Zobacz profil" name="Show Profile"/>
- <menu_item_call label="Dodaj znajomo艣膰" name="Add Friend"/>
+ <menu_item_call label="Zobacz Profil" name="Show Profile"/>
+ <menu_item_call label="Dodaj Znajomo艣膰" name="Add Friend"/>
<menu_item_call label="Poka偶 sesj臋" name="Send IM"/>
<menu_item_call label="Zako艅cz rozmow臋" name="End Session"/>
</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/pl/menu_inspect_avatar_gear.xml
index 5c27d53d90..9a102e1416 100644
--- a/indra/newview/skins/default/xui/pl/menu_inspect_avatar_gear.xml
+++ b/indra/newview/skins/default/xui/pl/menu_inspect_avatar_gear.xml
@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<menu name="Gear Menu">
- <menu_item_call label="Zobacz profil" name="view_profile"/>
- <menu_item_call label="Dodaj znajomo艣膰" name="add_friend"/>
+ <menu_item_call label="Zobacz Profil" name="view_profile"/>
+ <menu_item_call label="Dodaj Znajomo艣膰" name="add_friend"/>
<menu_item_call label="IM" name="im"/>
<menu_item_call label="Zadzwo艅" name="call"/>
<menu_item_call label="Teleportuj" name="teleport"/>
- <menu_item_call label="Zapro艣 do grupy" name="invite_to_group"/>
+ <menu_item_call label="Zapro艣 do Grupy" name="invite_to_group"/>
<menu_item_call label="Zablokuj" name="block"/>
<menu_item_call label="Odblokuj" name="unblock"/>
<menu_item_call label="Raport" name="report"/>
diff --git a/indra/newview/skins/default/xui/pl/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/pl/menu_inspect_self_gear.xml
index 6d6377dbc3..2ea3702663 100644
--- a/indra/newview/skins/default/xui/pl/menu_inspect_self_gear.xml
+++ b/indra/newview/skins/default/xui/pl/menu_inspect_self_gear.xml
@@ -2,8 +2,8 @@
<menu name="Gear Menu">
<menu_item_call label="Wsta艅" name="stand_up"/>
<menu_item_call label="Zmie艅 str贸j" name="change_outfit"/>
- <menu_item_call label="M贸j profil" name="my_profile"/>
- <menu_item_call label="Moi znajomi" name="my_friends"/>
- <menu_item_call label="Moje grupy" name="my_groups"/>
+ <menu_item_call label="M贸j Profil" name="my_profile"/>
+ <menu_item_call label="Moi Znajomi" name="my_friends"/>
+ <menu_item_call label="Moje Grupy" name="my_groups"/>
<menu_item_call label="Debugowanie tekstur" name="Debug..."/>
</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_inventory.xml b/indra/newview/skins/default/xui/pl/menu_inventory.xml
index e47ffa0e18..f1f7d0d855 100644
--- a/indra/newview/skins/default/xui/pl/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/pl/menu_inventory.xml
@@ -8,13 +8,13 @@
<menu_item_call label="Zmie艅 nazw臋" name="Task Rename"/>
<menu_item_call label="Usu艅" name="Task Remove"/>
<menu_item_call label="Opr贸偶nij Kosz" name="Empty Trash"/>
- <menu_item_call label="Opr贸偶nij Folder Zgubione i odnalezione" name="Empty Lost And Found"/>
+ <menu_item_call label="Opr贸偶nij Folder Zgubione i Odnalezione" name="Empty Lost And Found"/>
<menu_item_call label="Nowy folder" name="New Folder"/>
<menu_item_call label="Nowy skrypt" name="New Script"/>
<menu_item_call label="Nowa nota" name="New Note"/>
- <menu_item_call label="Nowa gesturka" name="New Gesture"/>
+ <menu_item_call label="Nowy gest" name="New Gesture"/>
<menu label="Nowe Ubranie" name="New Clothes">
- <menu_item_call label="Nowa koszula" name="New Shirt"/>
+ <menu_item_call label="Nowa koszulka" name="New Shirt"/>
<menu_item_call label="Nowe spodnie" name="New Pants"/>
<menu_item_call label="Nowe buty" name="New Shoes"/>
<menu_item_call label="Nowe skarpety" name="New Socks"/>
@@ -23,7 +23,7 @@
<menu_item_call label="Nowe r臋kawiczki" name="New Gloves"/>
<menu_item_call label="Nowy podkoszulek" name="New Undershirt"/>
<menu_item_call label="Nowa bielizna" name="New Underpants"/>
- <menu_item_call label="Nowa maska alpha" name="New Alpha Mask"/>
+ <menu_item_call label="Nowa maska Alpha" name="New Alpha Mask"/>
<menu_item_call label="Nowy tatua偶" name="New Tattoo"/>
</menu>
<menu label="Nowa Cz臋艣膰 Cia艂a" name="New Body Parts">
@@ -39,7 +39,7 @@
<menu_item_call label="Spodnie" name="Pants"/>
<menu_item_call label="Kszta艂t" name="Shape"/>
<menu_item_call label="Buty" name="Shoes"/>
- <menu_item_call label="Koszula" name="Shirt"/>
+ <menu_item_call label="Koszulka" name="Shirt"/>
<menu_item_call label="Sp贸dnica" name="Skirt"/>
<menu_item_call label="Bielizna" name="Underpants"/>
<menu_item_call label="Podkoszulek" name="Undershirt"/>
@@ -61,7 +61,7 @@
<menu_item_call label="Wklej jako link" name="Paste As Link"/>
<menu_item_call label="Usu艅" name="Remove Link"/>
<menu_item_call label="Usu艅" name="Delete"/>
- <menu_item_call label="Skasuj folder systemu" name="Delete System Folder"/>
+ <menu_item_call label="Skasuj Folder Systemu" name="Delete System Folder"/>
<menu_item_call label="Rozpocznij konferencj臋 czatow膮" name="Conference Chat Folder"/>
<menu_item_call label="Odtwarzaj" name="Sound Play"/>
<menu_item_call label="O Miejscu" name="About Landmark"/>
@@ -76,7 +76,7 @@
<menu_item_call label="Od艂膮cz od siebie" name="Detach From Yourself"/>
<menu_item_call label="Za艂贸偶" name="Wearable And Object Wear"/>
<menu label="Do艂膮cz do" name="Attach To"/>
- <menu label="Do艂膮cz do za艂膮cznik贸w HUD" name="Attach To HUD"/>
+ <menu label="Do艂膮cz do Za艂膮cznik贸w HUD" name="Attach To HUD"/>
<menu_item_call label="Edytuj" name="Wearable Edit"/>
<menu_item_call label="Dodaj" name="Wearable Add"/>
<menu_item_call label="Zdejmij" name="Take Off"/>
diff --git a/indra/newview/skins/default/xui/pl/menu_inventory_add.xml b/indra/newview/skins/default/xui/pl/menu_inventory_add.xml
index 4a56586aaf..8f520113c0 100644
--- a/indra/newview/skins/default/xui/pl/menu_inventory_add.xml
+++ b/indra/newview/skins/default/xui/pl/menu_inventory_add.xml
@@ -10,9 +10,9 @@
<menu_item_call label="Nowy folder" name="New Folder"/>
<menu_item_call label="Nowy skrypt" name="New Script"/>
<menu_item_call label="Nowa nota" name="New Note"/>
- <menu_item_call label="Nowa gesturka" name="New Gesture"/>
+ <menu_item_call label="Nowy gest" name="New Gesture"/>
<menu label="Nowe Ubranie" name="New Clothes">
- <menu_item_call label="Nowa koszula" name="New Shirt"/>
+ <menu_item_call label="Nowa koszulka" name="New Shirt"/>
<menu_item_call label="Nowe spodnie" name="New Pants"/>
<menu_item_call label="Nowe buty" name="New Shoes"/>
<menu_item_call label="Nowe skarpetki" name="New Socks"/>
@@ -21,7 +21,7 @@
<menu_item_call label="Nowe r臋kawiczki" name="New Gloves"/>
<menu_item_call label="Nowy podkoszulek" name="New Undershirt"/>
<menu_item_call label="Nowa bielizna" name="New Underpants"/>
- <menu_item_call label="Nowa maska alpha" name="New Alpha"/>
+ <menu_item_call label="Nowe ubranie Przezroczyste" name="New Alpha"/>
<menu_item_call label="Nowy tatua偶" name="New Tattoo"/>
</menu>
<menu label="Nowa Cz臋艣膰 Cia艂a" name="New Body Parts">
diff --git a/indra/newview/skins/default/xui/pl/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/pl/menu_inventory_gear_default.xml
index d110a2f02e..382a7506cc 100644
--- a/indra/newview/skins/default/xui/pl/menu_inventory_gear_default.xml
+++ b/indra/newview/skins/default/xui/pl/menu_inventory_gear_default.xml
@@ -6,7 +6,7 @@
<menu_item_call label="Poka偶 filtry" name="show_filters"/>
<menu_item_call label="Zresetuj filtry" name="reset_filters"/>
<menu_item_call label="Zamknij wszystkie foldery" name="close_folders"/>
- <menu_item_call label="Opr贸偶nij Zagubione i odnalezione" name="empty_lostnfound"/>
+ <menu_item_call label="Opr贸偶nij Zagubione i Odnalezione" name="empty_lostnfound"/>
<menu_item_call label="Zapisz tekstur臋 jako" name="Save Texture As"/>
<menu_item_call label="Udost臋pnij" name="Share"/>
<menu_item_call label="Znajd藕 orygina艂" name="Find Original"/>
diff --git a/indra/newview/skins/default/xui/pl/menu_land.xml b/indra/newview/skins/default/xui/pl/menu_land.xml
index cbfecaee56..1e1ce73089 100644
--- a/indra/newview/skins/default/xui/pl/menu_land.xml
+++ b/indra/newview/skins/default/xui/pl/menu_land.xml
@@ -2,7 +2,7 @@
<context_menu name="Land Pie">
<menu_item_call label="O Posiad艂o艣ci" name="Place Information..."/>
<menu_item_call label="Usi膮d藕 tutaj" name="Sit Here"/>
- <menu_item_call label="Kup posiad艂o艣膰" name="Land Buy"/>
+ <menu_item_call label="Kup Posiad艂o艣膰" name="Land Buy"/>
<menu_item_call label="Kup przepustk臋" name="Land Buy Pass"/>
<menu_item_call label="Buduj" name="Create"/>
<menu_item_call label="Edytuj teren" name="Edit Terrain"/>
diff --git a/indra/newview/skins/default/xui/pl/menu_login.xml b/indra/newview/skins/default/xui/pl/menu_login.xml
index 0dd6117b85..810862dfd9 100644
--- a/indra/newview/skins/default/xui/pl/menu_login.xml
+++ b/indra/newview/skins/default/xui/pl/menu_login.xml
@@ -8,7 +8,7 @@
<menu_item_call label="[SECOND_LIFE]: Pomoc" name="Second Life Help"/>
<menu_item_call label="O [APP_NAME]" name="About Second Life"/>
</menu>
- <menu_item_check label="Poka偶 ustawienia debugowania" name="Show Debug Menu"/>
+ <menu_item_check label="Poka偶 Ustawienia Debugowania" name="Show Debug Menu"/>
<menu label="Debug" name="Debug">
<menu_item_call label="Ustawienia debugowania" name="Debug Settings"/>
<menu_item_call label="Ustawienia UI/kolor" name="UI/Color Settings"/>
@@ -17,7 +17,7 @@
<menu_item_call label="Wy艣wietl TOS" name="TOS"/>
<menu_item_call label="Wy艣wietl wiadomo艣膰 krytyczn膮" name="Critical"/>
<menu_item_call label="Test przegl膮darki internetowej" name="Web Browser Test"/>
- <menu_item_check label="Poka偶 siatk臋" name="Show Grid Picker"/>
+ <menu_item_check label="Poka偶 Siatk臋" name="Show Grid Picker"/>
<menu_item_call label="Poka偶 konsol臋 Zawiadomie艅" name="Show Notifications Console"/>
</menu>
</menu_bar>
diff --git a/indra/newview/skins/default/xui/pl/menu_navbar.xml b/indra/newview/skins/default/xui/pl/menu_navbar.xml
index 1d434670ee..f38b805ee2 100644
--- a/indra/newview/skins/default/xui/pl/menu_navbar.xml
+++ b/indra/newview/skins/default/xui/pl/menu_navbar.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="Navbar Menu">
<menu_item_check label="Poka偶 wsp贸艂rz臋dne" name="Show Coordinates"/>
- <menu_item_check label="Poka偶 w艂a艣ciwo艣ci posiad艂o艣ci" name="Show Parcel Properties"/>
- <menu_item_call label="Landmark" name="Landmark"/>
+ <menu_item_check label="Poka偶 w艂a艣ciwo艣ci Posiad艂o艣ci" name="Show Parcel Properties"/>
+ <menu_item_call label="Ulubione Miejsce" name="Landmark"/>
<menu_item_call label="Wytnij" name="Cut"/>
<menu_item_call label="Kopiuj" name="Copy"/>
<menu_item_call label="Wklej" name="Paste"/>
diff --git a/indra/newview/skins/default/xui/pl/menu_outfit_gear.xml b/indra/newview/skins/default/xui/pl/menu_outfit_gear.xml
index 1a70e76ec7..ed754e36a7 100644
--- a/indra/newview/skins/default/xui/pl/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/pl/menu_outfit_gear.xml
@@ -10,10 +10,10 @@
<menu_item_call label="Nowe skarpetki" name="New Socks"/>
<menu_item_call label="Nowa kurtka" name="New Jacket"/>
<menu_item_call label="Nowa sp贸dnica" name="New Skirt"/>
- <menu_item_call label="Nowe r臋kawiczki" name="New Gloves"/>
+ <menu_item_call label="Nowe r臋kawiczki" name="New Gloves"/>
<menu_item_call label="Nowa podkoszulka" name="New Undershirt"/>
<menu_item_call label="Nowa bielizna" name="New Underpants"/>
- <menu_item_call label="Nowa maska alpha" name="New Alpha"/>
+ <menu_item_call label="Nowe alpha" name="New Alpha"/>
<menu_item_call label="Nowy tatua偶" name="New Tattoo"/>
</menu>
<menu label="Nowe cz臋艣ci cia艂a" name="New Body Parts">
diff --git a/indra/newview/skins/default/xui/pl/menu_participant_list.xml b/indra/newview/skins/default/xui/pl/menu_participant_list.xml
index fd6d4dcc3c..59b4fec6b0 100644
--- a/indra/newview/skins/default/xui/pl/menu_participant_list.xml
+++ b/indra/newview/skins/default/xui/pl/menu_participant_list.xml
@@ -2,8 +2,8 @@
<context_menu name="Participant List Context Menu">
<menu_item_check label="Sortuj wed艂ug imienia" name="SortByName"/>
<menu_item_check label="Sortuj wed艂ug ostatniego m贸wcy" name="SortByRecentSpeakers"/>
- <menu_item_call label="Zobacz profil" name="View Profile"/>
- <menu_item_call label="Dodaj znajomo艣膰" name="Add Friend"/>
+ <menu_item_call label="Zobacz Profil" name="View Profile"/>
+ <menu_item_call label="Dodaj Znajomo艣膰" name="Add Friend"/>
<menu_item_call label="IM" name="IM"/>
<menu_item_call label="Zadzwo艅" name="Call"/>
<menu_item_call label="Udost臋pnij" name="Share"/>
diff --git a/indra/newview/skins/default/xui/pl/menu_people_groups.xml b/indra/newview/skins/default/xui/pl/menu_people_groups.xml
index ace5ebf888..567482dcda 100644
--- a/indra/newview/skins/default/xui/pl/menu_people_groups.xml
+++ b/indra/newview/skins/default/xui/pl/menu_people_groups.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="menu_group_plus">
- <menu_item_call label="Zobacz info" name="View Info"/>
+ <menu_item_call label="Zobacz Info" name="View Info"/>
<menu_item_call label="Czat" name="Chat"/>
<menu_item_call label="Rozmowa" name="Call"/>
<menu_item_call label="Aktywuj" name="Activate"/>
diff --git a/indra/newview/skins/default/xui/pl/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/pl/menu_people_groups_view_sort.xml
index c70ea2315f..4be60d9b83 100644
--- a/indra/newview/skins/default/xui/pl/menu_people_groups_view_sort.xml
+++ b/indra/newview/skins/default/xui/pl/menu_people_groups_view_sort.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="menu_group_plus">
- <menu_item_check label="Wy艣wietlaj ikonki grupy" name="Display Group Icons"/>
- <menu_item_call label="Opu艣膰 zaznaczone grupy" name="Leave Selected Group"/>
+ <menu_item_check label="Wy艣wietlaj ikonki Grupy" name="Display Group Icons"/>
+ <menu_item_call label="Opu艣膰 zaznaczone Grupy" name="Leave Selected Group"/>
</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_people_nearby.xml b/indra/newview/skins/default/xui/pl/menu_people_nearby.xml
index a8cc6b4a60..afe3a5200b 100644
--- a/indra/newview/skins/default/xui/pl/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/pl/menu_people_nearby.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<context_menu name="Avatar Context Menu">
- <menu_item_call label="Zobacz profil" name="View Profile"/>
- <menu_item_call label="Dodaj znajomo艣膰" name="Add Friend"/>
- <menu_item_call label="Usu艅 z listy znajomych" name="Remove Friend"/>
+ <menu_item_call label="Zobacz Profil" name="View Profile"/>
+ <menu_item_call label="Dodaj Znajomo艣膰" name="Add Friend"/>
+ <menu_item_call label="Usu艅 z listy Znajomych" name="Remove Friend"/>
<menu_item_call label="IM" name="IM"/>
<menu_item_call label="Zadzwo艅" name="Call"/>
<menu_item_call label="Mapa" name="Map"/>
diff --git a/indra/newview/skins/default/xui/pl/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/pl/menu_people_nearby_multiselect.xml
index c924185c6f..bc89402a96 100644
--- a/indra/newview/skins/default/xui/pl/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/pl/menu_people_nearby_multiselect.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<context_menu name="Multi-Selected People Context Menu">
- <menu_item_call label="Dodaj znajomych" name="Add Friends"/>
- <menu_item_call label="Usu艅 znajomych" name="Remove Friend"/>
+ <menu_item_call label="Dodaj Znajomych" name="Add Friends"/>
+ <menu_item_call label="Usu艅 Znajomych" name="Remove Friend"/>
<menu_item_call label="IM" name="IM"/>
<menu_item_call label="Zadzwo艅" name="Call"/>
<menu_item_call label="Udost臋pnij" name="Share"/>
diff --git a/indra/newview/skins/default/xui/pl/menu_picks_plus.xml b/indra/newview/skins/default/xui/pl/menu_picks_plus.xml
index e9c00f51a9..8f196612a8 100644
--- a/indra/newview/skins/default/xui/pl/menu_picks_plus.xml
+++ b/indra/newview/skins/default/xui/pl/menu_picks_plus.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<toggleable_menu name="picks_plus_menu">
<menu_item_call label="Stw贸rz" name="create_pick"/>
- <menu_item_call label="Nowa reklama" name="create_classified"/>
+ <menu_item_call label="Nowa Reklama" name="create_classified"/>
</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_place.xml b/indra/newview/skins/default/xui/pl/menu_place.xml
index c3b72d6abb..312bfc6bb0 100644
--- a/indra/newview/skins/default/xui/pl/menu_place.xml
+++ b/indra/newview/skins/default/xui/pl/menu_place.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<toggleable_menu name="place_overflow_menu">
- <menu_item_call label="Zapisz landmark" name="landmark"/>
+ <menu_item_call label="Zapisz Landmark" name="landmark"/>
<menu_item_call label="Utw贸rz" name="pick"/>
- <menu_item_call label="Kup przepustk臋" name="pass"/>
+ <menu_item_call label="Kup Przepustk臋" name="pass"/>
<menu_item_call label="Edytuj" name="edit"/>
</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_place_add_button.xml b/indra/newview/skins/default/xui/pl/menu_place_add_button.xml
index 3d0c1c87fb..6175671fb9 100644
--- a/indra/newview/skins/default/xui/pl/menu_place_add_button.xml
+++ b/indra/newview/skins/default/xui/pl/menu_place_add_button.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="menu_folder_gear">
<menu_item_call label="Dodaj folder" name="add_folder"/>
- <menu_item_call label="Dodaj do landmark贸w" name="add_landmark"/>
+ <menu_item_call label="Dodaj do Landmark贸w" name="add_landmark"/>
</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/pl/menu_places_gear_folder.xml
index 65417cef22..d17b6c1033 100644
--- a/indra/newview/skins/default/xui/pl/menu_places_gear_folder.xml
+++ b/indra/newview/skins/default/xui/pl/menu_places_gear_folder.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="menu_folder_gear">
- <menu_item_call label="Dodaj do landmark贸w" name="add_landmark"/>
+ <menu_item_call label="Dodaj do Landmark贸w" name="add_landmark"/>
<menu_item_call label="Dodaj folder" name="add_folder"/>
<menu_item_call label="Wytnij" name="cut"/>
<menu_item_call label="Kopiuj" name="copy_folder"/>
diff --git a/indra/newview/skins/default/xui/pl/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/pl/menu_places_gear_landmark.xml
index 36787dd0aa..0720aea8aa 100644
--- a/indra/newview/skins/default/xui/pl/menu_places_gear_landmark.xml
+++ b/indra/newview/skins/default/xui/pl/menu_places_gear_landmark.xml
@@ -3,10 +3,10 @@
<menu_item_call label="Teleportuj" name="teleport"/>
<menu_item_call label="Wi臋cej informacji" name="more_info"/>
<menu_item_call label="Poka偶 na mapie" name="show_on_map"/>
- <menu_item_call label="Dodaj do landmark贸w" name="add_landmark"/>
+ <menu_item_call label="Dodaj do Landmark贸w" name="add_landmark"/>
<menu_item_call label="Dodaj folder" name="add_folder"/>
<menu_item_call label="Wytnij" name="cut"/>
- <menu_item_call label="Kopiuj landmark" name="copy_landmark"/>
+ <menu_item_call label="Kopiuj Landmark" name="copy_landmark"/>
<menu_item_call label="Kopiuj SLurl" name="copy_slurl"/>
<menu_item_call label="Wklej" name="paste"/>
<menu_item_call label="Zmie艅 nazw臋" name="rename"/>
diff --git a/indra/newview/skins/default/xui/pl/menu_slurl.xml b/indra/newview/skins/default/xui/pl/menu_slurl.xml
index 862f538aa7..719959df6a 100644
--- a/indra/newview/skins/default/xui/pl/menu_slurl.xml
+++ b/indra/newview/skins/default/xui/pl/menu_slurl.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="Popup">
- <menu_item_call label="O miejscu" name="about_url"/>
- <menu_item_call label="Teleportuj do miejsca" name="teleport_to_url"/>
+ <menu_item_call label="O Miejscu" name="about_url"/>
+ <menu_item_call label="Teleportuj do Miejsca" name="teleport_to_url"/>
<menu_item_call label="Mapa" name="show_on_map"/>
</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/pl/menu_teleport_history_gear.xml
index 0e58592d46..2161963a61 100644
--- a/indra/newview/skins/default/xui/pl/menu_teleport_history_gear.xml
+++ b/indra/newview/skins/default/xui/pl/menu_teleport_history_gear.xml
@@ -2,5 +2,5 @@
<menu name="Teleport History Gear Context Menu">
<menu_item_call label="Rozwi艅 wszystkie foldery" name="Expand all folders"/>
<menu_item_call label="Schowaj wszystkie foldery" name="Collapse all folders"/>
- <menu_item_call label="Wyczy艣膰 histori臋 teleportacji" name="Clear Teleport History"/>
+ <menu_item_call label="Wyczy艣膰 Histori臋 Teleportacji" name="Clear Teleport History"/>
</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_text_editor.xml b/indra/newview/skins/default/xui/pl/menu_text_editor.xml
index 812f87bc1a..4529246b56 100644
--- a/indra/newview/skins/default/xui/pl/menu_text_editor.xml
+++ b/indra/newview/skins/default/xui/pl/menu_text_editor.xml
@@ -4,5 +4,5 @@
<menu_item_call label="Kopiuj" name="Copy"/>
<menu_item_call label="Wklej" name="Paste"/>
<menu_item_call label="Usu艅" name="Delete"/>
- <menu_item_call label="Zaznacz wszystko" name="Select All"/>
+ <menu_item_call label="Zaznacz Wszystko" name="Select All"/>
</context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_url_agent.xml b/indra/newview/skins/default/xui/pl/menu_url_agent.xml
index db729be725..7c90e6582d 100644
--- a/indra/newview/skins/default/xui/pl/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/pl/menu_url_agent.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<context_menu name="Url Popup">
- <menu_item_call label="Poka偶 profil Rezydenta" name="show_agent"/>
+ <menu_item_call label="Poka偶 Profil Rezydenta" name="show_agent"/>
<menu_item_call label="Kopiuj nazw臋 do schowka" name="url_copy_label"/>
<menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
</context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_url_group.xml b/indra/newview/skins/default/xui/pl/menu_url_group.xml
index f340b3296a..109f96e562 100644
--- a/indra/newview/skins/default/xui/pl/menu_url_group.xml
+++ b/indra/newview/skins/default/xui/pl/menu_url_group.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<context_menu name="Url Popup">
- <menu_item_call label="Poka偶 szczeg贸艂y o grupie" name="show_group"/>
- <menu_item_call label="Kopiuj grup臋 do schowka" name="url_copy_label"/>
+ <menu_item_call label="Poka偶 szczeg贸艂y o Grupie" name="show_group"/>
+ <menu_item_call label="Kopiuj Grup臋 do schowka" name="url_copy_label"/>
<menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
</context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_url_inventory.xml b/indra/newview/skins/default/xui/pl/menu_url_inventory.xml
index e36fa0dd2b..ce3309cba0 100644
--- a/indra/newview/skins/default/xui/pl/menu_url_inventory.xml
+++ b/indra/newview/skins/default/xui/pl/menu_url_inventory.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<context_menu name="Url Popup">
- <menu_item_call label="Poka偶 obiekt w szafie" name="show_item"/>
+ <menu_item_call label="Poka偶 obiekt w Szafie" name="show_item"/>
<menu_item_call label="Kopiuj nazw臋 do schowka" name="url_copy_label"/>
<menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
</context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_url_parcel.xml b/indra/newview/skins/default/xui/pl/menu_url_parcel.xml
index 1b8dd62137..43b945b8be 100644
--- a/indra/newview/skins/default/xui/pl/menu_url_parcel.xml
+++ b/indra/newview/skins/default/xui/pl/menu_url_parcel.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<context_menu name="Url Popup">
- <menu_item_call label="Poka偶 szczeg贸艂y o miejscu" name="show_parcel"/>
+ <menu_item_call label="Poka偶 szczeg贸艂y o Miejscu" name="show_parcel"/>
<menu_item_call label="Poka偶 na mapie" name="show_on_map"/>
<menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
</context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_url_slurl.xml b/indra/newview/skins/default/xui/pl/menu_url_slurl.xml
index 4d4a5b4c4d..456146d8e5 100644
--- a/indra/newview/skins/default/xui/pl/menu_url_slurl.xml
+++ b/indra/newview/skins/default/xui/pl/menu_url_slurl.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<context_menu name="Url Popup">
- <menu_item_call label="Poka偶 szczeg贸艂y o miejscu" name="show_place"/>
+ <menu_item_call label="Poka偶 szczeg贸艂y o Miejscu" name="show_place"/>
<menu_item_call label="Poka偶 na mapie" name="show_on_map"/>
<menu_item_call label="Teleportuj do miejsca" name="teleport_to_location"/>
<menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
diff --git a/indra/newview/skins/default/xui/pl/menu_url_teleport.xml b/indra/newview/skins/default/xui/pl/menu_url_teleport.xml
index e225546930..7376fb3afc 100644
--- a/indra/newview/skins/default/xui/pl/menu_url_teleport.xml
+++ b/indra/newview/skins/default/xui/pl/menu_url_teleport.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<context_menu name="Url Popup">
<menu_item_call label="Teleportuj do tego miejsca" name="teleport"/>
- <menu_item_call label="Poka偶 na mapie" name="show_on_map"/>
+ <menu_item_call label="Poka偶 na Mapie" name="show_on_map"/>
<menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
</context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_viewer.xml b/indra/newview/skins/default/xui/pl/menu_viewer.xml
index a71961ada7..97a94584c4 100644
--- a/indra/newview/skins/default/xui/pl/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/pl/menu_viewer.xml
@@ -2,49 +2,49 @@
<menu_bar name="Main Menu">
<menu label="Ja" name="Me">
<menu_item_call label="Ustawienia" name="Preferences"/>
- <menu_item_call label="Dashboard" name="Manage My Account"/>
+ <menu_item_call label="Moja Tablica" name="Manage My Account"/>
<menu_item_call label="Kup L$" name="Buy and Sell L$"/>
<menu_item_call label="M贸j Profil" name="Profile"/>
<menu_item_call label="Zmie艅 str贸j" name="ChangeOutfit"/>
<menu_item_check label="Moja Szafa" name="Inventory"/>
<menu_item_check label="Moja Szafa" name="ShowSidetrayInventory"/>
- <menu_item_check label="Moje gesturki" name="Gestures"/>
+ <menu_item_check label="Moje Gesty" name="Gestures"/>
<menu_item_check label="M贸j g艂os" name="ShowVoice"/>
<menu label="M贸j Status" name="Status">
- <menu_item_call label="Tryb oddalenia" name="Set Away"/>
- <menu_item_call label="Tryb pracy" name="Set Busy"/>
+ <menu_item_call label="Tryb Oddalenia" name="Set Away"/>
+ <menu_item_call label="Tryb Pracy" name="Set Busy"/>
</menu>
- <menu_item_call label="Za偶膮daj statusu administratora" name="Request Admin Options"/>
- <menu_item_call label="Wy艂膮cz atatus administratora" name="Leave Admin Options"/>
+ <menu_item_call label="Za偶膮daj Statusu Administratora" name="Request Admin Options"/>
+ <menu_item_call label="Wy艂膮cz Status Administratora" name="Leave Admin Options"/>
<menu_item_call label="Wy艂膮cz [APP_NAME]" name="Quit"/>
</menu>
<menu label="Komunikacja" name="Communicate">
<menu_item_call label="Znajomi" name="My Friends"/>
<menu_item_call label="Grupy" name="My Groups"/>
- <menu_item_check label="Czat lokalny" name="Nearby Chat"/>
- <menu_item_call label="Osoby w pobli偶u" name="Active Speakers"/>
+ <menu_item_check label="Czat Lokalny" name="Nearby Chat"/>
+ <menu_item_call label="Osoby w Pobli偶u" name="Active Speakers"/>
</menu>
<menu label="艢wiat" name="World">
<menu_item_check label="Mini-Mapa" name="Mini-Map"/>
<menu_item_check label="Mapa 艢wiata" name="World Map"/>
- <menu_item_call label="Zr贸b zdj臋cie" name="Take Snapshot"/>
- <menu_item_call label="Zapami臋taj to miejsce (LM)" name="Create Landmark Here"/>
+ <menu_item_call label="Zr贸b Zdj臋cie" name="Take Snapshot"/>
+ <menu_item_call label="Zapami臋taj to Miejsce" name="Create Landmark Here"/>
<menu label="Miejsce" name="Land">
<menu_item_call label="Profil miejsca" name="Place Profile"/>
- <menu_item_call label="O posiad艂o艣ci" name="About Land"/>
+ <menu_item_call label="O Posiad艂o艣ci" name="About Land"/>
<menu_item_call label="Region/Maj膮tek" name="Region/Estate"/>
</menu>
- <menu_item_call label="Kup posiad艂o艣膰" name="Buy Land"/>
- <menu_item_call label="Moje posiad艂o艣ci" name="My Land"/>
+ <menu_item_call label="Kup Posiad艂o艣膰" name="Buy Land"/>
+ <menu_item_call label="Moje Posiad艂o艣ci" name="My Land"/>
<menu label="Poka偶" name="LandShow">
- <menu_item_check label="Ustawienia ruchu" name="Movement Controls"/>
- <menu_item_check label="Zobacz ustawienia" name="Camera Controls"/>
- <menu_item_check label="Linie bana" name="Ban Lines"/>
+ <menu_item_check label="Ustawienia Ruchu" name="Movement Controls"/>
+ <menu_item_check label="Zobacz Ustawienia" name="Camera Controls"/>
+ <menu_item_check label="Linie Bana" name="Ban Lines"/>
<menu_item_check label="Emitery" name="beacons"/>
- <menu_item_check label="Granice posiad艂o艣ci" name="Property Lines"/>
- <menu_item_check label="W艂a艣ciciele posiad艂o艣ci" name="Land Owners"/>
+ <menu_item_check label="Granice Posiad艂o艣ci" name="Property Lines"/>
+ <menu_item_check label="W艂a艣ciciele Posiad艂o艣ci" name="Land Owners"/>
<menu_item_check label="Wsp贸艂rz臋dne" name="Coordinates"/>
- <menu_item_check label="W艂a艣ciwo艣ci posiad艂o艣ci" name="Parcel Properties"/>
+ <menu_item_check label="W艂a艣ciwo艣ci Posiad艂o艣ci" name="Parcel Properties"/>
</menu>
<menu_item_call label="Teleportuj do Miejsca Startu" name="Teleport Home"/>
<menu_item_call label="Ustaw Miejsce Startu" name="Set Home to Here"/>
@@ -53,57 +53,57 @@
<menu_item_call label="Po艂udnie" name="Noon"/>
<menu_item_call label="Zach贸d S艂o艅ca" name="Sunset"/>
<menu_item_call label="P贸艂noc" name="Midnight"/>
- <menu_item_call label="U偶ywaj czasu Regionu" name="Revert to Region Default"/>
- <menu_item_call label="Edytor 艣rodowiska" name="Environment Editor"/>
+ <menu_item_call label="U偶ywaj Czasu Regionu" name="Revert to Region Default"/>
+ <menu_item_call label="Edytor 艢rodowiska" name="Environment Editor"/>
</menu>
</menu>
<menu label="Buduj" name="BuildTools">
<menu_item_check label="Buduj" name="Show Build Tools"/>
- <menu label="Wybierz narz臋dzie budowania" name="Select Tool">
- <menu_item_call label="Narz臋dzie ogniskowej" name="Focus"/>
- <menu_item_call label="Narz臋dzie ruchu" name="Move"/>
- <menu_item_call label="Narz臋dzie edycji" name="Edit"/>
- <menu_item_call label="Stw贸rz narz臋dzie" name="Create"/>
- <menu_item_call label="Narz臋dzie posiad艂o艣ci" name="Land"/>
+ <menu label="Wybierz Narz臋dzie Budowania" name="Select Tool">
+ <menu_item_call label="Narz臋dzie Ogniskowej" name="Focus"/>
+ <menu_item_call label="Narz臋dzie Ruchu" name="Move"/>
+ <menu_item_call label="Narz臋dzie Edycji" name="Edit"/>
+ <menu_item_call label="Stw贸rz Narz臋dzie" name="Create"/>
+ <menu_item_call label="Narz臋dzie Posiad艂o艣ci" name="Land"/>
</menu>
<menu_item_call label="Linkuj" name="Link"/>
<menu_item_call label="Rozlinkuj" name="Unlink"/>
- <menu_item_check label="Edytuj zlinkowane obiekty" name="Edit Linked Parts"/>
- <menu label="Wybierz zlinkowane cz臋艣ci" name="Select Linked Parts">
- <menu_item_call label="Wybierz nast臋pn膮 cz臋艣膰" name="Select Next Part"/>
- <menu_item_call label="Zaznacz poprzedni膮 cz臋艣膰" name="Select Previous Part"/>
- <menu_item_call label="Uwzgl臋dnij nast臋pn膮 cz臋艣膰" name="Include Next Part"/>
- <menu_item_call label="Uwzgl臋dnij poprzedni膮 cz臋艣膰" name="Include Previous Part"/>
+ <menu_item_check label="Edytuj Zgrupowane Obiekty" name="Edit Linked Parts"/>
+ <menu label="Wybierz Zlinkowane Cz臋艣ci" name="Select Linked Parts">
+ <menu_item_call label="Wybierz Nast臋pn膮 Cz臋艣膰" name="Select Next Part"/>
+ <menu_item_call label="Zaznacz Poprzedni膮 Cz臋艣膰" name="Select Previous Part"/>
+ <menu_item_call label="Uwzgl臋dnij Nast臋pn膮 Cz臋艣膰" name="Include Next Part"/>
+ <menu_item_call label="Uwzgl臋dnij Poprzedni膮 Cz臋艣膰" name="Include Previous Part"/>
</menu>
- <menu_item_call label="Ogniskowa selekcji" name="Focus on Selection"/>
- <menu_item_call label="Przybli偶 do selekcji" name="Zoom to Selection"/>
+ <menu_item_call label="Ogniskowa Selekcji" name="Focus on Selection"/>
+ <menu_item_call label="Przybli偶 do Selekcji" name="Zoom to Selection"/>
<menu label="Obiekt" name="Object">
<menu_item_call label="Kup" name="Menu Object Buy"/>
<menu_item_call label="We藕" name="Menu Object Take"/>
- <menu_item_call label="We藕 kopi臋" name="Take Copy"/>
- <menu_item_call label="Zapisz obiekt do Szafy" name="Save Object Back to My Inventory"/>
- <menu_item_call label="Zapisz do tre艣ci obiektu" name="Save Object Back to Object Contents"/>
+ <menu_item_call label="We藕 Kopi臋" name="Take Copy"/>
+ <menu_item_call label="Zapisz Obiekt do Szafy" name="Save Object Back to My Inventory"/>
+ <menu_item_call label="Zapisz do Tre艣ci Obiektu" name="Save Object Back to Object Contents"/>
</menu>
<menu label="Skrypty" name="Scripts">
- <menu_item_call label="Zrekompiluj skrypt w selekcji (Mono)" name="Mono"/>
- <menu_item_call label="Zrekompiluj skrypty" name="LSL"/>
- <menu_item_call label="Reset skrypt贸w" name="Reset Scripts"/>
- <menu_item_call label="Ustaw uruchamienie skrypt贸w" name="Set Scripts to Running"/>
- <menu_item_call label="Wstrzymaj dzia艂anie skrypt贸w w selekcji" name="Set Scripts to Not Running"/>
+ <menu_item_call label="Zrekompiluj Skrypt w Selekcji (Mono)" name="Mono"/>
+ <menu_item_call label="Zrekompiluj Skrypty" name="LSL"/>
+ <menu_item_call label="Reset Skrypt贸w" name="Reset Scripts"/>
+ <menu_item_call label="Ustaw Uruchamienie Skrypt贸w" name="Set Scripts to Running"/>
+ <menu_item_call label="Wstrzymaj Dzia艂anie Skrypt贸w w Selekcji" name="Set Scripts to Not Running"/>
</menu>
<menu label="Opcje" name="Options">
<menu_item_call label="Ustaw domy艣lne pozwolenia 艂adowania" name="perm prefs"/>
- <menu_item_check label="Poka偶 zaawansowane pozwolenia" name="DebugPermissions"/>
- <menu_item_check label="Wybierz tylko moje obiekty" name="Select Only My Objects"/>
- <menu_item_check label="Wybierz tylko obiekty przesuwalne" name="Select Only Movable Objects"/>
- <menu_item_check label="Wybierz przez otoczenie" name="Select By Surrounding"/>
- <menu_item_check label="Zobacz ukryt膮 selekcj臋" name="Show Hidden Selection"/>
- <menu_item_check label="Poka偶 promie艅 emitera dla selekcji" name="Show Light Radius for Selection"/>
- <menu_item_check label="Poka偶 emiter selekcji" name="Show Selection Beam"/>
- <menu_item_check label="Uruchom siatk臋" name="Snap to Grid"/>
- <menu_item_call label="Przeci膮gnij obiekt do siatki" name="Snap Object XY to Grid"/>
- <menu_item_call label="Wybierz zaznaczenie siatki" name="Use Selection for Grid"/>
- <menu_item_call label="Opcje siatki" name="Grid Options"/>
+ <menu_item_check label="Poka偶 Zaawansowane Pozwolenia" name="DebugPermissions"/>
+ <menu_item_check label="Wybierz Tylko Moje Obiekty" name="Select Only My Objects"/>
+ <menu_item_check label="Wybierz Tylko Obiekty Przesuwalne" name="Select Only Movable Objects"/>
+ <menu_item_check label="Wybierz przez Otoczenie" name="Select By Surrounding"/>
+ <menu_item_check label="Zobacz Ukryt膮 Selekcj臋" name="Show Hidden Selection"/>
+ <menu_item_check label="Poka偶 Promie艅 Emitera dla Selekcji" name="Show Light Radius for Selection"/>
+ <menu_item_check label="Poka偶 Emiter Selekcji" name="Show Selection Beam"/>
+ <menu_item_check label="Uruchom Siatk臋" name="Snap to Grid"/>
+ <menu_item_call label="Przeci膮gnij Obiekt do Siatki" name="Snap Object XY to Grid"/>
+ <menu_item_call label="Wybierz Zaznaczenie Siatki" name="Use Selection for Grid"/>
+ <menu_item_call label="Opcje Siatki" name="Grid Options"/>
</menu>
<menu label="Za艂aduj" name="Upload">
<menu_item_call label="tekstur臋 (L$[COST])..." name="Upload Image"/>
@@ -115,39 +115,39 @@
<menu label="Pomoc" name="Help">
<menu_item_call label="[SECOND_LIFE] Portal Pomocy" name="Second Life Help"/>
<menu_item_call label="Z艂贸偶 Raport o Nadu偶yciu" name="Report Abuse"/>
- <menu_item_call label="Zg艂o艣 b艂臋dy klienta" name="Report Bug"/>
+ <menu_item_call label="Zg艂o艣 B艂臋dy Klienta" name="Report Bug"/>
<menu_item_call label="O [APP_NAME]" name="About Second Life"/>
</menu>
<menu label="Zaawansowane" name="Advanced">
<menu_item_check label="Poka偶 menu Zaawansowane" name="Show Advanced Menu"/>
- <menu_item_call label="Zatrzymaj wszystkie animacje" name="Stop Animating My Avatar"/>
- <menu_item_call label="Odswie偶 wy艣wietlanie tekstur" name="Rebake Texture"/>
- <menu_item_call label="Domy艣lne ustawienia rozmiaru interfejsu" name="Set UI Size to Default"/>
- <menu_item_call label="Ustaw rozmiar interfejsu..." name="Set Window Size..."/>
- <menu_item_check label="Ogranicz dystans selekcji" name="Limit Select Distance"/>
- <menu_item_check label="Wy艂膮cz ograniczenia zasi臋gu kamery" name="Disable Camera Distance"/>
- <menu_item_check label="Wysoka rozdzielczo艣膰 zdj臋膰" name="HighResSnapshot"/>
- <menu_item_check label="Zapisuj zdj臋cia na dysk twardy bez efektu d藕wi臋kowego" name="QuietSnapshotsToDisk"/>
- <menu_item_check label="Skompresuj zdj臋cie na dysk twardy" name="CompressSnapshotsToDisk"/>
+ <menu_item_call label="Zatrzymaj Wszystkie Animacje" name="Stop Animating My Avatar"/>
+ <menu_item_call label="Odswie偶 Wy艣wietlanie Tekstur" name="Rebake Texture"/>
+ <menu_item_call label="Domy艣lne Ustawienia Rozmiaru Interfejsu" name="Set UI Size to Default"/>
+ <menu_item_call label="Ustaw Rozmiar Interfejsu..." name="Set Window Size..."/>
+ <menu_item_check label="Ogranicz Dystans Selekcji" name="Limit Select Distance"/>
+ <menu_item_check label="Wy艂膮cz Ograniczenia Zasi臋gu Kamery" name="Disable Camera Distance"/>
+ <menu_item_check label="Wysoka Rozdzielczo艣膰 Zdj臋膰" name="HighResSnapshot"/>
+ <menu_item_check label="Zapisuj Zdj臋cia na Dysk Twardy bez Efektu D藕wi臋kowego" name="QuietSnapshotsToDisk"/>
+ <menu_item_check label="Skompresuj Zdj臋cie na Dysk Twardy" name="CompressSnapshotsToDisk"/>
<menu label="Narz臋dzia" name="Performance Tools">
- <menu_item_call label="Pomiar lag贸w" name="Lag Meter"/>
+ <menu_item_call label="Pomiar Lag贸w" name="Lag Meter"/>
<menu_item_check label="Statystyki" name="Statistics Bar"/>
- <menu_item_check label="Poka偶 warto艣膰 renderowania awatara" name="Avatar Rendering Cost"/>
+ <menu_item_check label="Poka偶 Warto艣膰 Renderowania Awatara" name="Avatar Rendering Cost"/>
</menu>
- <menu label="Podkre艣lanie i widoczno艣膰" name="Highlighting and Visibility">
- <menu_item_check label="Efekt emiter贸w" name="Cheesy Beacon"/>
- <menu_item_check label="Ukryj cz膮steczki" name="Hide Particles"/>
- <menu_item_check label="Ukryj zaznaczone" name="Hide Selected"/>
- <menu_item_check label="Poka偶 prze藕roczyste obiekty" name="Highlight Transparent"/>
- <menu_item_check label="Poka偶 za艂膮czniki HUD" name="Show HUD Attachments"/>
- <menu_item_check label="Poka偶 celownik myszki" name="ShowCrosshairs"/>
+ <menu label="Podkre艣lanie i Widoczno艣膰" name="Highlighting and Visibility">
+ <menu_item_check label="Efekt Emiter贸w" name="Cheesy Beacon"/>
+ <menu_item_check label="Ukryj Cz膮steczki" name="Hide Particles"/>
+ <menu_item_check label="Ukryj Zaznaczone" name="Hide Selected"/>
+ <menu_item_check label="Poka偶 Prze藕roczyste Obiekty" name="Highlight Transparent"/>
+ <menu_item_check label="Poka偶 Za艂膮czniki HUD" name="Show HUD Attachments"/>
+ <menu_item_check label="Poka偶 Celownik Myszki" name="ShowCrosshairs"/>
</menu>
- <menu label="Rodzaje renderowania" name="Rendering Types">
+ <menu label="Rodzaje Renderowania" name="Rendering Types">
<menu_item_check label="Podstawowe" name="Simple"/>
- <menu_item_check label="Maska alpha" name="Alpha"/>
+ <menu_item_check label="Maska Przezroczysta" name="Alpha"/>
<menu_item_check label="Drzewo" name="Tree"/>
<menu_item_check label="Awatary" name="Character"/>
- <menu_item_check label="P艂aszczyzna powierzchni" name="SurfacePath"/>
+ <menu_item_check label="P艂aszczyzna Powierzchni" name="SurfacePath"/>
<menu_item_check label="Niebo" name="Sky"/>
<menu_item_check label="Woda" name="Water"/>
<menu_item_check label="Ziemia" name="Ground"/>
@@ -157,163 +157,163 @@
<menu_item_check label="Cz膮steczki" name="Particles"/>
<menu_item_check label="Zderzenie" name="Bump"/>
</menu>
- <menu label="Opcje renderowania" name="Rendering Features">
+ <menu label="Opcje Renderowania" name="Rendering Features">
<menu_item_check label="UI" name="UI"/>
<menu_item_check label="Zaznaczone" name="Selected"/>
<menu_item_check label="Pod艣wietlenie" name="Highlighted"/>
- <menu_item_check label="Tekstury dynamiczne" name="Dynamic Textures"/>
- <menu_item_check label="Cie艅 stopy" name="Foot Shadows"/>
+ <menu_item_check label="Tekstury Dynamiczne" name="Dynamic Textures"/>
+ <menu_item_check label="Cie艅 Stopy" name="Foot Shadows"/>
<menu_item_check label="Mg艂a" name="Fog"/>
- <menu_item_check label="Obiekty elastyczne" name="Flexible Objects"/>
+ <menu_item_check label="Obiekty Elastyczne" name="Flexible Objects"/>
</menu>
- <menu_item_check label="Uruchom wiele w膮tk贸w" name="Run Multiple Threads"/>
- <menu_item_check label="U偶yj plugin Read Thread" name="Use Plugin Read Thread"/>
- <menu_item_call label="Wyczy艣膰 bufor danych grupy" name="ClearGroupCache"/>
- <menu_item_check label="Wyg艂adzanie ruchu myszki" name="Mouse Smoothing"/>
+ <menu_item_check label="Uruchom Wiele W膮tk贸w" name="Run Multiple Threads"/>
+ <menu_item_check label="Use Plugin Read Thread" name="Use Plugin Read Thread"/>
+ <menu_item_call label="Wyczy艣膰 Bufor Danych Grupy" name="ClearGroupCache"/>
+ <menu_item_check label="Wyg艂adzanie Ruchu Myszki" name="Mouse Smoothing"/>
<menu label="Skr贸ty" name="Shortcuts">
<menu_item_call label="Obraz (L$[COST])..." name="Upload Image"/>
<menu_item_check label="Szukaj" name="Search"/>
- <menu_item_call label="Zwolnij klawisze" name="Release Keys"/>
- <menu_item_call label="Domy艣lne ustawienia rozmiaru interfejsu" name="Set UI Size to Default"/>
+ <menu_item_call label="Zwolnij Klawisze" name="Release Keys"/>
+ <menu_item_call label="Domy艣lne Ustawienia Rozmiaru Interfejsu" name="Set UI Size to Default"/>
<menu_item_check label="Poka偶 menu Zaawansowane" name="Show Advanced Menu - legacy shortcut"/>
<menu_item_check label="Biegnij" name="Always Run"/>
- <menu_item_check label="Zacznij lata膰" name="Fly"/>
- <menu_item_call label="Zamknij okno" name="Close Window"/>
- <menu_item_call label="Zamknij wszystkie okna" name="Close All Windows"/>
- <menu_item_call label="Zapisz zdj臋cie na dysk twardy" name="Snapshot to Disk"/>
- <menu_item_call label="Widok panoramiczny" name="Mouselook"/>
- <menu_item_check label="Wolna kamera" name="Joystick Flycam"/>
- <menu_item_call label="Reset widoku" name="Reset View"/>
- <menu_item_call label="Zobacz ostatniego rozm贸wc臋" name="Look at Last Chatter"/>
- <menu label="Wybierz narz臋dzie budowania" name="Select Tool">
- <menu_item_call label="Narz臋dzie ogniskowej" name="Focus"/>
- <menu_item_call label="Narz臋dzie ruchu" name="Move"/>
- <menu_item_call label="Narz臋dzie edycji" name="Edit"/>
- <menu_item_call label="Stw贸rz narz臋dzie" name="Create"/>
- <menu_item_call label="Narz臋dzia posiad艂o艣ci" name="Land"/>
+ <menu_item_check label="Zacznij Lata膰" name="Fly"/>
+ <menu_item_call label="Zamknij Okno" name="Close Window"/>
+ <menu_item_call label="Zamknij Wszystkie Okna" name="Close All Windows"/>
+ <menu_item_call label="Zapisz Zdj臋cie na Dysk Twardy" name="Snapshot to Disk"/>
+ <menu_item_call label="Widok Panoramiczny" name="Mouselook"/>
+ <menu_item_check label="Wolna Kamera" name="Joystick Flycam"/>
+ <menu_item_call label="Reset Widoku" name="Reset View"/>
+ <menu_item_call label="Zobacz Ostatniego Rozm贸wc臋" name="Look at Last Chatter"/>
+ <menu label="Wybierz Narz臋dzie Budowania" name="Select Tool">
+ <menu_item_call label="Narz臋dzie Ogniskowej" name="Focus"/>
+ <menu_item_call label="Narz臋dzie Ruchu" name="Move"/>
+ <menu_item_call label="Narz臋dzie Edycji" name="Edit"/>
+ <menu_item_call label="Stw贸rz Narz臋dzie" name="Create"/>
+ <menu_item_call label="Narz臋dzia Posiad艂o艣ci" name="Land"/>
</menu>
<menu_item_call label="Przybli偶" name="Zoom In"/>
- <menu_item_call label="Domy艣lne przybli偶enie" name="Zoom Default"/>
+ <menu_item_call label="Domy艣lne Przybli偶enie" name="Zoom Default"/>
<menu_item_call label="Oddal" name="Zoom Out"/>
</menu>
- <menu_item_call label="Poka偶 ustawienia debugowania" name="Debug Settings"/>
- <menu_item_check label="Poka偶 menu progresu" name="Debug Mode"/>
+ <menu_item_call label="Poka偶 Ustawienia Debugowania" name="Debug Settings"/>
+ <menu_item_check label="Poka偶 Menu Progresu" name="Debug Mode"/>
</menu>
- <menu label="Rozwini臋cie..." name="Develop">
+ <menu label="Post臋p..." name="Develop">
<menu label="Konsola" name="Consoles">
- <menu_item_check label="Konsola tekstur" name="Texture Console"/>
- <menu_item_check label="Debugowanie zdarze艅 konsoli" name="Debug Console"/>
- <menu_item_call label="Konsola powiadomie艅" name="Notifications"/>
- <menu_item_check label="Konsola rozmiaru tekstury" name="Texture Size"/>
- <menu_item_check label="Konsola kategorii tekstur" name="Texture Category"/>
- <menu_item_check label="Szybkie timery" name="Fast Timers"/>
+ <menu_item_check label="Konsola Tekstur" name="Texture Console"/>
+ <menu_item_check label="Debugowanie Zdarze艅 Konsoli" name="Debug Console"/>
+ <menu_item_call label="Konsola Powiadomie艅" name="Notifications"/>
+ <menu_item_check label="Konsola Rozmiaru Tekstury" name="Texture Size"/>
+ <menu_item_check label="Konsola Kategorii Tekstur" name="Texture Category"/>
+ <menu_item_check label="Szybkie Timery" name="Fast Timers"/>
<menu_item_check label="Pami臋膰" name="Memory"/>
- <menu_item_call label="Info Regionu do debugowania konsoli" name="Region Info to Debug Console"/>
+ <menu_item_call label="Info Regionu do Debugowania Konsoli" name="Region Info to Debug Console"/>
<menu_item_check label="Kamera" name="Camera"/>
<menu_item_check label="Wiatr" name="Wind"/>
<menu_item_check label="Znak" name="Badge"/>
</menu>
- <menu label="Poka偶 informacje" name="Display Info">
- <menu_item_check label="Poka偶 czas" name="Show Time"/>
- <menu_item_check label="Poka偶 informacje o renderowaniu" name="Show Render Info"/>
- <menu_item_check label="Poka偶 kolor pod kursorem" name="Show Color Under Cursor"/>
- <menu_item_check label="Poka偶 aktualizacje obiekt贸w" name="Show Updates"/>
+ <menu label="Poka偶 Informacje" name="Display Info">
+ <menu_item_check label="Poka偶 Czas" name="Show Time"/>
+ <menu_item_check label="Poka偶 Informacje o Renderowaniu" name="Show Render Info"/>
+ <menu_item_check label="Poka偶 Kolor pod Kursorem" name="Show Color Under Cursor"/>
+ <menu_item_check label="Poka偶 Aktualizacje Obiekt贸w" name="Show Updates"/>
</menu>
- <menu label="Reset b艂臋du" name="Force Errors">
- <menu_item_call label="Aktywacja punktu za艂amania" name="Force Breakpoint"/>
- <menu_item_call label="Reset b艂臋d贸w LL" name="Force LLError And Crash"/>
- <menu_item_call label="Reset b艂臋d贸w pami臋ci" name="Force Bad Memory Access"/>
- <menu_item_call label="Reset p臋tli" name="Force Infinite Loop"/>
- <menu_item_call label="Reset sterownik贸w" name="Force Driver Carsh"/>
- <menu_item_call label="Wyj膮tek programu" name="Force Software Exception"/>
- <menu_item_call label="Uruchom roz艂膮czenie" name="Force Disconnect Viewer"/>
- <menu_item_call label="Symulacja wycieku pami臋ci" name="Memory Leaking Simulation"/>
+ <menu label="Reset B艂臋du" name="Force Errors">
+ <menu_item_call label="Aktywacja Punktu Za艂amania" name="Force Breakpoint"/>
+ <menu_item_call label="Reset B艂臋d贸w LL" name="Force LLError And Crash"/>
+ <menu_item_call label="Reset B艂臋d贸w Pami臋ci" name="Force Bad Memory Access"/>
+ <menu_item_call label="Reset P臋tli" name="Force Infinite Loop"/>
+ <menu_item_call label="Reset Sterownik贸w" name="Force Driver Carsh"/>
+ <menu_item_call label="Wyj膮tek Programu" name="Force Software Exception"/>
+ <menu_item_call label="Uruchom Roz艂膮czenie" name="Force Disconnect Viewer"/>
+ <menu_item_call label="Symulacja Wycieku Pami臋ci" name="Memory Leaking Simulation"/>
</menu>
- <menu label="Test renderowania" name="Render Tests">
- <menu_item_check label="Kamera poza zasiegiem" name="Camera Offset"/>
- <menu_item_check label="Losowa ilo艣膰 klatek" name="Randomize Framerate"/>
- <menu_item_check label="Test klatki obrazu" name="Frame Test"/>
+ <menu label="Test Renderowania" name="Render Tests">
+ <menu_item_check label="Kamera Poza Zasiegiem" name="Camera Offset"/>
+ <menu_item_check label="Losowa Ilo艣膰 Klatek" name="Randomize Framerate"/>
+ <menu_item_check label="Test Klatki Obrazu" name="Frame Test"/>
</menu>
<menu label="Renderowanie" name="Rendering">
<menu_item_check label="Osie" name="Axes"/>
- <menu_item_check label="Tryb obrazu szkieletowego" name="Wireframe"/>
- <menu_item_check label="Globalne o艣wietlenie" name="Global Illumination"/>
- <menu_item_check label="Tekstury animacji" name="Animation Textures"/>
- <menu_item_check label="Wy艂膮cz tekstury" name="Disable Textures"/>
- <menu_item_check label="Renderowania za艂膮czonego 艣wiat艂a" name="Render Attached Lights"/>
- <menu_item_check label="Renderowanie za艂膮czonych cz膮steczek" name="Render Attached Particles"/>
- <menu_item_check label="Wy艣wietlaj obiekty odblaskowe" name="Hover Glow Objects"/>
+ <menu_item_check label="Tryb Obrazu Szkieletowego" name="Wireframe"/>
+ <menu_item_check label="Globalne O艣wietlenie" name="Global Illumination"/>
+ <menu_item_check label="Tekstury Animacji" name="Animation Textures"/>
+ <menu_item_check label="Wy艂膮cz Tekstury" name="Disable Textures"/>
+ <menu_item_check label="Renderowania Za艂膮czonego 艢wiat艂a" name="Render Attached Lights"/>
+ <menu_item_check label="Renderowanie Za艂膮czonych Cz膮steczek" name="Render Attached Particles"/>
+ <menu_item_check label="Wy艣wietlaj Obiekty Odblaskowe" name="Hover Glow Objects"/>
</menu>
<menu label="Sie膰" name="Network">
- <menu_item_check label="Zatrzymaj awatara" name="AgentPause"/>
- <menu_item_call label="Upu艣膰 pakiet pami臋ci" name="Drop a Packet"/>
+ <menu_item_check label="Zatrzymaj Awatara" name="AgentPause"/>
+ <menu_item_call label="Upu艣膰 Pakiet Pami臋ci" name="Drop a Packet"/>
</menu>
- <menu_item_call label="Zderzenia, popchni臋cia &amp; uderzenia" name="Bumps, Pushes &amp;amp; Hits"/>
+ <menu_item_call label="Zderzenia, Popchni臋cia &amp; Uderzenia" name="Bumps, Pushes &amp;amp; Hits"/>
<menu label="艢wiat" name="World">
- <menu_item_check label="Domy艣lne ustawienia 艣rodowiska Regionu" name="Sim Sun Override"/>
- <menu_item_check label="Efekty emiter贸w" name="Cheesy Beacon"/>
- <menu_item_check label="Ustalona pogoda" name="Fixed Weather"/>
- <menu_item_call label="Zachowaj bufor pami臋ci obiekt贸w regionu" name="Dump Region Object Cache"/>
+ <menu_item_check label="Domy艣lne Ustawienia 艢rodowiska Regionu" name="Sim Sun Override"/>
+ <menu_item_check label="Efekty Emiter贸w" name="Cheesy Beacon"/>
+ <menu_item_check label="Ustalona Pogoda" name="Fixed Weather"/>
+ <menu_item_call label="Zachowaj Bufor Pami臋ci Obiekt贸w Regionu" name="Dump Region Object Cache"/>
</menu>
<menu label="UI" name="UI">
- <menu_item_call label="Test przegl膮darki internetowej" name="Web Browser Test"/>
- <menu_item_call label="Drukuj zaznaczone informacje o obiekcie" name="Print Selected Object Info"/>
- <menu_item_call label="Statystyki pami臋ci" name="Memory Stats"/>
- <menu_item_check label="Kliknij pod贸jnie by uruchomi膰 auto-pilota" name="Double-ClickAuto-Pilot"/>
- <menu_item_check label="Debugowanie zdarze艅 klikania" name="Debug Clicks"/>
- <menu_item_check label="Debugowanie zdarze艅 myszy" name="Debug Mouse Events"/>
+ <menu_item_call label="Test Przegl膮darki Internetowej" name="Web Browser Test"/>
+ <menu_item_call label="Drukuj Zaznaczone Informacje o Obiekcie" name="Print Selected Object Info"/>
+ <menu_item_call label="Statystyki Pami臋ci" name="Memory Stats"/>
+ <menu_item_check label="Kliknij Pod贸jnie by Uruchomi膰 Auto-Pilota" name="Double-ClickAuto-Pilot"/>
+ <menu_item_check label="Debugowanie Zdarze艅 Klikania" name="Debug Clicks"/>
+ <menu_item_check label="Debugowanie Zdarze艅 Myszy" name="Debug Mouse Events"/>
</menu>
<menu label="XUI" name="XUI">
- <menu_item_call label="Za艂aduj ustawienia koloru" name="Reload Color Settings"/>
- <menu_item_call label="Poka偶 test czcionki" name="Show Font Test"/>
+ <menu_item_call label="Za艂aduj Ustawienia Koloru" name="Reload Color Settings"/>
+ <menu_item_call label="Poka偶 Test Czcionki" name="Show Font Test"/>
<menu_item_call label="Za艂aduj z XML" name="Load from XML"/>
<menu_item_call label="Zapisz jako XML" name="Save to XML"/>
- <menu_item_check label="Poka偶 nazwy XUI" name="Show XUI Names"/>
- <menu_item_call label="Wy艣lij wiadomo艣膰 (IM) testow膮" name="Send Test IMs"/>
+ <menu_item_check label="Poka偶 Nazwy XUI" name="Show XUI Names"/>
+ <menu_item_call label="Wy艣lij Wiadomo艣膰 (IM) Testow膮" name="Send Test IMs"/>
</menu>
<menu label="Awatar" name="Character">
- <menu label="Przesu艅 bakowan膮 tekstur臋" name="Grab Baked Texture">
- <menu_item_call label="T臋cz贸wka oka" name="Iris"/>
+ <menu label="Grab Baked Texture" name="Grab Baked Texture">
+ <menu_item_call label="T臋cz贸wka Oka" name="Iris"/>
<menu_item_call label="G艂owa" name="Head"/>
- <menu_item_call label="G贸rna cz臋艣膰 cia艂a" name="Upper Body"/>
- <menu_item_call label="Dolna cz臋艣膰 cia艂a" name="Lower Body"/>
+ <menu_item_call label="G贸rna Cz臋艣膰 Cia艂a" name="Upper Body"/>
+ <menu_item_call label="Dolna Cz臋艣膰 Cia艂a" name="Lower Body"/>
<menu_item_call label="Sp贸dnica" name="Skirt"/>
</menu>
- <menu label="Testy postaci" name="Character Tests">
- <menu_item_call label="Przesu艅 geometri臋 postaci" name="Toggle Character Geometry"/>
- <menu_item_check label="Pozw贸l na zaznaczanie awatar贸w" name="Allow Select Avatar"/>
+ <menu label="Testy Postaci" name="Character Tests">
+ <menu_item_call label="Przesu艅 Geometri臋 Postaci" name="Toggle Character Geometry"/>
+ <menu_item_check label="Pozw贸l na Zaznaczanie Awatar贸w" name="Allow Select Avatar"/>
</menu>
- <menu_item_call label="Powr贸t do domy艣lnych parametr贸w" name="Force Params to Default"/>
- <menu_item_check label="Info o animacji" name="Animation Info"/>
- <menu_item_check label="Wolne animacje" name="Slow Motion Animations"/>
- <menu_item_check label="Wy艂膮cz poziom detalu" name="Disable LOD"/>
- <menu_item_check label="Poka偶 szczeg贸艂y kolizji" name="Show Collision Skeleton"/>
- <menu_item_check label="Wy艣wietl cel agenta" name="Display Agent Target"/>
- <menu_item_call label="Debugowanie tekstur awatara" name="Debug Avatar Textures"/>
+ <menu_item_call label="Powr贸t do Domy艣lnych Parametr贸w" name="Force Params to Default"/>
+ <menu_item_check label="Info o Animacji" name="Animation Info"/>
+ <menu_item_check label="Wolne Animacje" name="Slow Motion Animations"/>
+ <menu_item_check label="Wy艂膮cz Poziom Detalu" name="Disable LOD"/>
+ <menu_item_check label="Poka偶 Szczeg贸艂y Kolizji" name="Show Collision Skeleton"/>
+ <menu_item_check label="Wy艣wietl Cel Aganta" name="Display Agent Target"/>
+ <menu_item_call label="Debugowanie Tekstur Awatara" name="Debug Avatar Textures"/>
</menu>
<menu_item_check label="Tekstury HTTP" name="HTTP Textures"/>
<menu_item_check label="Aktywacja okna konsoli podczas nast臋pnego uruchomienia" name="Console Window"/>
- <menu_item_check label="Poka偶 menu administratora" name="View Admin Options"/>
- <menu_item_call label="Uzyskaj status administratora" name="Request Admin Options"/>
- <menu_item_call label="Opu艣膰 status administratora" name="Leave Admin Options"/>
+ <menu_item_check label="Poka偶 Menu Administratora" name="View Admin Options"/>
+ <menu_item_call label="Uzyskaj Status Administratora" name="Request Admin Options"/>
+ <menu_item_call label="Opu艣膰 Status Administratora" name="Leave Admin Options"/>
</menu>
<menu label="Administrator" name="Admin">
<menu label="Object">
- <menu_item_call label="We藕 kopi臋" name="Take Copy"/>
- <menu_item_call label="Reset w艂a艣ciciela" name="Force Owner To Me"/>
- <menu_item_call label="Reset przyzwolenia w艂a艣ciciela" name="Force Owner Permissive"/>
+ <menu_item_call label="We藕 Kopi臋" name="Take Copy"/>
+ <menu_item_call label="Reset W艂a艣ciciela" name="Force Owner To Me"/>
+ <menu_item_call label="Reset Przyzwolenia W艂a艣ciciela" name="Force Owner Permissive"/>
<menu_item_call label="Usu艅" name="Delete"/>
<menu_item_call label="Zablokuj" name="Lock"/>
</menu>
<menu label="Posiad艂o艣膰" name="Parcel">
- <menu_item_call label="Reset w艂a艣ciciela" name="Owner To Me"/>
- <menu_item_call label="Ustawienia tre艣ci Linden贸w" name="Set to Linden Content"/>
- <menu_item_call label="Odzyskaj posiad艂o艣膰 publiczn膮" name="Claim Public Land"/>
+ <menu_item_call label="Reset W艂a艣ciciela" name="Owner To Me"/>
+ <menu_item_call label="Ustawienia Tre艣ci Linden贸w" name="Set to Linden Content"/>
+ <menu_item_call label="Odzyskaj Posiad艂o艣膰 Publiczn膮" name="Claim Public Land"/>
</menu>
<menu label="Region" name="Region">
- <menu_item_call label="Zachowaj tymczasowo baz臋 asset" name="Dump Temp Asset Data"/>
- <menu_item_call label="Zachowaj ustawienie Regionu" name="Save Region State"/>
+ <menu_item_call label="Zachowaj Tymczasowo Baz臋 Asset" name="Dump Temp Asset Data"/>
+ <menu_item_call label="Zachowaj Ustawienie Regionu" name="Save Region State"/>
</menu>
- <menu_item_call label="Boskie narz臋dzia" name="God Tools"/>
+ <menu_item_call label="Boskie Nadz臋dzia" name="God Tools"/>
</menu>
</menu_bar>
diff --git a/indra/newview/skins/default/xui/pl/mime_types_mac.xml b/indra/newview/skins/default/xui/pl/mime_types_mac.xml
index 7213b26165..ae860249bb 100644
--- a/indra/newview/skins/default/xui/pl/mime_types_mac.xml
+++ b/indra/newview/skins/default/xui/pl/mime_types_mac.xml
@@ -19,7 +19,7 @@
To miejsce posiada zawarto艣膰 filmow膮
</tooltip>
<playtip name="movie_playtip">
- Ogl膮daj film
+ Ogl膮daj Film
</playtip>
</widgetset>
<widgetset name="image">
@@ -46,7 +46,7 @@
</widgetset>
<scheme name="rtsp">
<label name="rtsp_label">
- Synchroniczne strumienie medi贸w
+ Synchroniczne Strumienie Medialne
</label>
</scheme>
<mimetype name="blank">
@@ -111,7 +111,7 @@
</mimetype>
<mimetype name="application/xhtml+xml">
<label name="application/xhtml+xml_label">
- Strona internetowa (XHTML)
+ Strona Internetowa (XHTML)
</label>
</mimetype>
<mimetype name="application/x-director">
@@ -171,7 +171,7 @@
</mimetype>
<mimetype name="text/html">
<label name="text/html_label">
- Strona internetowa
+ Strona Internetowa
</label>
</mimetype>
<mimetype name="text/plain">
diff --git a/indra/newview/skins/default/xui/pl/notifications.xml b/indra/newview/skins/default/xui/pl/notifications.xml
index 7fcd7b5e04..14718e8f6f 100644
--- a/indra/newview/skins/default/xui/pl/notifications.xml
+++ b/indra/newview/skins/default/xui/pl/notifications.xml
@@ -67,8 +67,8 @@ Szczeg贸艂y b艂臋du: B艂膮d o nazwie &apos;[_NAME]&apos; nie zosta艂 odnaleziony
[MESSAGE]
<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Tak"/>
</notification>
- <notification name="BadInstallation">
- Podczas aktualizacji [APP_NAME] wyst膮pi艂 b艂膮d. Prosz臋 odwiedzi膰 stron臋 [http://get.secondlife.com pobierz najnowsza wersj臋] aby 艣ci膮gn膮膰 ostatni膮 wersj臋 klienta.
+ <notification name="BadInstallation">
+ Podczas aktualizacji [APP_NAME] wyst膮pi艂 b艂膮d. Prosz臋 odwiedzi膰 stron臋 [http://get.secondlife.com download the latest version] by 艣ci膮gn膮膰 najnowsz膮 wersje klienta.
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="LoginFailedNoNetwork">
@@ -78,7 +78,7 @@ Sprawd藕 stan swojego po艂膮czenia sieciowego.
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="MessageTemplateNotFound">
- Wz贸r komunikatu dla [PATH] nie zosta艂 odnaleziony.
+ Wz贸r komunikatu dla [PATH] nie odnaleziony.
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="WearableSave">
@@ -103,7 +103,7 @@ Wybierz pojedynczy obiekt i spr贸buj jeszcze raz.
</notification>
<notification name="SaveClothingBodyChanges">
Zapisa膰 wszystkie zmiany dotycz膮ce ubrania/cze艣ci cia艂a?
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Nie zapisuj" yestext="Zapisz"/>
+ <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Nie Zapisuj" yestext="Zapisz"/>
</notification>
<notification name="FriendsAndGroupsOnly">
Osoby spoza listy znajomych, kt贸rych rozmowy g艂osowe i IM s膮 ignorowane, nie wiedz膮 o tym.
@@ -128,14 +128,14 @@ Czy chcesz da膰 prawa modyfikacji wybranym osobom?
<usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
</notification>
<notification name="UnableToCreateGroup">
- Za艂o偶enie grupy nie jest mo偶liwe.
+ Za艂o偶enie grupy niemo偶liwe.
[MESSAGE]
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="PanelGroupApply">
[NEEDS_APPLY_MESSAGE]
[WANT_APPLY_MESSAGE]
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Ignoruj zmiany" yestext="Zastosuj zmiany"/>
+ <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Ignoruj Zmiany" yestext="Zastosuj Zmiany"/>
</notification>
<notification name="MustSpecifyGroupNoticeSubject">
Aby wys艂a膰 og艂oszenie do grupy musisz nada膰 mu tytu艂.
@@ -181,7 +181,7 @@ Chcesz kontynuowa膰?
<notification name="JoinGroupNoCost">
Do艂膮czasz do grupy [NAME].
Czy chcesz kontynuowa膰?
- <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Akceptuj"/>
+ <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Zaakceptuj"/>
</notification>
<notification name="JoinGroupCannotAfford">
Cz艂onkostwo w tej grupie kosztuje [COST]L$
@@ -272,7 +272,7 @@ Skrypty musz膮 pozosta膰 aktywne dla prawid艂owego dzia艂ania broni.
<notification name="MultipleFacesSelected">
Obecnie zaznaczono wiele powierzchni.
Je艣li dzia艂anie b臋dzie kontynuowane, oddzielne media b臋d膮 ustawione na wielu powierzchniach obiektu.
-W celu umieszczenia medi贸w tylko na jednej powierzchni skorzystaj z Wybierz powierzchni臋 i kliknij na wybranej powierzchni obiektu oraz kliknij Dodaj.
+W celu umieszczenia medi贸w tylko na jednej powierzchni skorzystaj z Wybierz Powierzchni臋 i kliknij na wybranej powierzchni obiektu oraz kliknij Dodaj.
<usetemplate ignoretext="Media zostan膮 ustawione na wielu zaznaczonych powierzchniach" name="okcancelignore" notext="Anuluj" yestext="OK"/>
</notification>
<notification name="MustBeInParcel">
@@ -343,11 +343,11 @@ Czy na pewno chcesz kontynuowa膰?
<usetemplate ignoretext="Potwierd藕 przed usuni臋ciem medi贸w z obiektu" name="okcancelignore" notext="Nie" yestext="Tak"/>
</notification>
<notification name="ClassifiedSave">
- Zapisa膰 zmiany w reklamie [NAME]?
+ Zapisa膰 zmiany w Reklamie [NAME]?
<usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Nie Zapisuj" yestext="Zapisz"/>
</notification>
<notification name="ClassifiedInsufficientFunds">
- Nie posiadasz wystarczaj膮cych 艣rodk贸w aby doda膰 reklam臋.
+ Nie posiadasz wystarczaj膮cych 艣rodk贸w aby doda膰 Reklam臋.
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="DeleteAvatarPick">
@@ -386,27 +386,27 @@ Pami臋taj: Opcja ta wyczyszcza bufor danych.
<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
</notification>
<notification name="SaveChanges">
- Zapisa膰 zmiany?
- <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Nie zapisuj" yestext="Zapisz"/>
+ Zapisa膰 Zmiany?
+ <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Nie Zapisuj" yestext="Zapisz"/>
</notification>
<notification name="GestureSaveFailedTooManySteps">
- Nie mo偶na zapisa膰 gesturki.
-Ta gesturka ma zbyt wiele etap贸w.
+ Nie mo偶na zapisa膰 gestu.
+Ten gest ma zbyt wiele etap贸w.
Usu艅 kilka etap贸w i zapisz jeszcze raz.
</notification>
<notification name="GestureSaveFailedTryAgain">
- Zapis gesturki nie powi贸d艂 si臋. Spr贸buj jeszcze raz za kilka minut.
+ Zapis gestu nie powi贸d艂 si臋. Spr贸buj jeszcze raz za kilka minut.
</notification>
<notification name="GestureSaveFailedObjectNotFound">
- Nie mo偶na zapisa膰 gesturki poniewa偶 obiekt lub szafa powi膮zanego obiektu nie zosta艂 znaleziony.
+ Nie mo偶na zapisa膰 gestu poniewa偶 obiekt lub szafa powi膮zanego obiektu nie zosta艂 znaleziony.
Obiekt mo偶e znajdowa膰 si臋 zbyt daleko albo zosta艂 usuni臋ty.
</notification>
<notification name="GestureSaveFailedReason">
- Nie mo偶na zapisa膰 gesturki z nast臋puj膮cego powodu: [REASON]. Spr贸buj zapisa膰 jeszcze raz p贸藕niej.
+ Nie mo偶na zapisa膰 gestu z nast臋puj膮cego powodu: [REASON]. Spr贸buj zapisa膰 jeszcze raz p贸藕niej.
</notification>
<notification name="SaveNotecardFailObjectNotFound">
Nie mo偶na zapisa膰 notki poniewa偶 obiekt lub szafa powi膮zanego obiektu nie zosta艂 znaleziony.
-Obiekt mo偶e znajdowa膰 si臋 zbyt daleko albo zosta艂 usuni臋ty.
+Obiekt mo偶e znajdowa膰 si臋 zbyt daleko albo zosta艂 usuniety.
</notification>
<notification name="SaveNotecardFailReason">
Nie mo偶na zapisa膰 notki z nast臋puj膮cego powodu: [REASON]. Spr贸buj zapisa膰 jeszcze raz p贸藕niej.
@@ -422,19 +422,19 @@ Czy chcesz za艂adowa膰 ostatni膮 wersj臋 zapisan膮 na serwerze?
</notification>
<notification name="SaveScriptFailObjectNotFound">
Nie mo偶na zapisa膰 skryptu poniewa偶 obiekt w kt贸rym si臋 zawiera nie zosta艂 znaleziony.
-Obiekt mo偶e znajdowa膰 si臋 zbyt daleko albo zosta艂 usuni臋ty.
+Obiekt mo偶e znajdowa膰 si臋 zbyt daleko albo zosta艂 usuniety.
</notification>
<notification name="SaveBytecodeFailReason">
Nie mo偶na zapisa膰 skompilowanego skryptu z nast臋puj膮cego powodu: [REASON]. Spr贸buj zapisa膰 jeszcze raz p贸偶niej.
</notification>
<notification name="StartRegionEmpty">
Oops, Twoje miejsce startu nie zosta艂o okre艣lone.
-Wpisz prosz臋 nazw臋 regionu w lokalizacj臋 startu w polu Lokalizacja Startu lub wybierz Moja ostatnia lokalizacja albo Miejsce Startu.
+Wpisz prosz臋 nazw臋 regionu w lokalizacj臋 startu w polu Lokalizacja Startu lub wybierz Moja Ostatnia Lokalizacja albo Miejsce Startu.
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="CouldNotStartStopScript">
Nie mo偶na uruchomi膰 lub zatrzyma膰 skryptu poniewa偶 obiekt w kt贸rym si臋 zawiera nie zosta艂 znaleziony.
-Obiekt mo偶e znajdowa膰 si臋 zbyt daleko albo zosta艂 usuni臋ty.
+Obiekt mo偶e znajdowa膰 si臋 zbyt daleko albo zosta艂 usuniety.
</notification>
<notification name="CannotDownloadFile">
Nie mo偶na za艂adowa膰 pliku
@@ -453,7 +453,7 @@ Po wi臋cej info, odwied藕 stron臋 [_URL] .
</notification>
<notification name="UnknownGPU">
Tw贸j system jest wyposa偶ony w kart臋 graficzn膮, kt贸ra nie jest rozpoznana przez [APP_NAME].
-Zdarza si臋 to cz臋sto w przypadku nowego sprz臋tu, kt贸ry nie by艂 testowany z [APP_NAME]. Prawdopodobnie wystarczy dostosowanie ustawie艅 grafiki aby dzia艂anie by艂o poprawne.
+Zdarza si臋 to cz臋stow w przypadku nowego sprz臋tu, kt贸ry nie by艂 testowany z [APP_NAME]. Prawdopodobnie wystarczy dostosowanie ustawie艅 grafiki aby dzia艂anie by艂o poprawne.
(Ja &gt; W艂a艣ciwo艣ci &gt; Grafika).
<form name="form">
<ignore name="ignore" text="Karta graficzna nie zosta艂a zidentyfikowana."/>
@@ -461,7 +461,7 @@ Zdarza si臋 to cz臋sto w przypadku nowego sprz臋tu, kt贸ry nie by艂 testowany z
</notification>
<notification name="DisplaySettingsNoShaders">
[APP_NAME] zawiesi艂 si臋 podczas inicjalizacji sterownik贸w graficznych.
-Jako艣膰 grafiki zosta艂a zmniejszona - mo偶e to pom贸c.
+Jako艣膰 grafiki zosta艂a zmniejszona - mo偶e pomo偶e.
Pewne funkcje graficzne zosta艂y wy艂膮czone. Zalecamy aktualizcje sterownik贸w graficznych.
Mo偶esz podnie艣膰 jako艣膰 grafiki pod Ustawienia &gt; Grafika.
</notification>
@@ -972,7 +972,7 @@ ze wszystkich posiad艂o艣ci w tym symulatorze?
<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
</notification>
<notification name="BlankClassifiedName">
- Musisz nada膰 tytu艂 Twojej reklamie.
+ Musisz nada膰 tytu艂 Twojej Reklamie.
</notification>
<notification name="MinClassifiedPrice">
Minimalna cena za publikacj臋 wynosi [MIN_PRICE]L$.
@@ -1106,7 +1106,7 @@ Mo偶esz normalnie u偶ywa膰 [SECOND_LIFE], inni u偶ytkownicy b臋d膮 Ci臋 widzieli
Je偶eli u偶ywasz [SECOND_LIFE] po raz pierwszy to musisz stworzy膰 konto 偶eby m贸c si臋 zalogowa膰.
Czy chcesz przej艣膰 na stron臋 [http://join.secondlife.com secondlife.com] 偶eby stworzy膰 nowe konto?
- <usetemplate name="okcancelbuttons" notext="Kontynuuj" yestext="Nowe konto..."/>
+ <usetemplate name="okcancelbuttons" notext="Kontynuuj" yestext="Nowe Konto..."/>
</notification>
<notification name="LoginPacketNeverReceived">
Problemy z po艂膮czeniem. Problem mo偶e by膰 spowodowany Twoim po艂膮czeniem z Internetem albo mo偶e istnie膰 po stronie [SECOND_LIFE_GRID].
@@ -1223,14 +1223,14 @@ Zamie艅 tekstur臋 [TEXTURE_NUM] na 24-o bitow膮 tekstur臋 o wymiarze 512x512 lub
[MAX_AGENTS] [LIST_TYPE] limit przekroczony o [NUM_EXCESS].
</notification>
<notification name="MaxAllowedGroupsOnRegion">
- Mo偶esz mie膰 maksymalnie [MAX_GROUPS] dozwolonych grup.
+ Mo偶esz mie膰 maksymalnie [MAX_GROUPS] Dozwolonych Grup.
<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Ustal"/>
</notification>
<notification name="MaxManagersOnRegion">
- Mo偶esz mie膰 maksymalnie [MAX_MANAGER] zarz膮dc贸w Maj膮tku.
+ Mo偶esz mie膰 maksymalnie [MAX_MANAGER] Zarz膮dc贸w Maj膮tku.
</notification>
<notification name="OwnerCanNotBeDenied">
- Nie mo偶esz doda膰 w艂a艣ciciela maj膮tku do listy &apos;Niepo偶膮danych Rezydent贸w (ban贸w)&apos; maj膮tku.
+ Nie mo偶esz doda膰 w艂a艣ciciela maj膮tku do listy &apos;Nieporz膮danych Rezydent贸w (ban贸w)&apos; maj膮tku.
</notification>
<notification name="CanNotChangeAppearanceUntilLoaded">
Nie mo偶esz zmieni膰 wygl膮du podczas 艂adowania ubra艅 i kszta艂t贸w.
@@ -1239,7 +1239,7 @@ Zamie艅 tekstur臋 [TEXTURE_NUM] na 24-o bitow膮 tekstur臋 o wymiarze 512x512 lub
Tytu艂 Twojej reklamy musi zaczyna膰 si臋 od litery (A-Z) albo cyfry. Znaki przestankowe s膮 niedozwolone.
</notification>
<notification name="CantSetBuyObject">
- Nie mo偶esz wybra膰 Kup obiekt poniewa偶 obiekt nie jest na sprzeda偶.
+ Nie mo偶esz wybra膰 Kup Obiekt poniewa偶 obiekt nie jest na sprzeda偶.
Wybierz obiekt na sprzeda偶 i spr贸buj jeszcze raz.
</notification>
<notification name="FinishedRawDownload">
@@ -1307,7 +1307,7 @@ Pobra膰 i zapisa膰 w folderze Aplikacji?
<usetemplate name="okcancelbuttons" notext="Kontynuuj" yestext="Za艂aduj"/>
</notification>
<notification name="DeedObjectToGroup">
- Przekazanie tego obiektu spowoduje, 偶e grupa:
+ Przekazanie tego obiektu spowoduje, 偶e Grupa:
* Otrzyma L$ zap艂acone temu obiektowi
<usetemplate ignoretext="Prosz臋 potwierdzi膰 decyzj臋 przed przepisaniem obiektu do grupy" name="okcancelignore" notext="Anuluj" yestext="Przeka偶"/>
</notification>
@@ -1329,15 +1329,15 @@ Pobra膰 i zapisa膰 w folderze Aplikacji?
</notification>
<notification name="WebLaunchPublicIssue">
Odwied藕 [SECOND_LIFE] katalog publicznych problem贸w, gdzie mo偶esz zg艂asza膰 b艂臋dy i inne problemy.
- <usetemplate ignoretext="Uruchom przegl膮dark臋 internetow膮 by wys艂a膰 B艂臋dy klienta" name="okcancelignore" notext="Anuluj" yestext="OK"/>
+ <usetemplate ignoretext="Uruchom przegl膮dark臋 internetow膮 by wys艂a膰 B艂臋dy Klienta" name="okcancelignore" notext="Anuluj" yestext="OK"/>
</notification>
<notification name="WebLaunchSupportWiki">
Otw贸rz oficjalny blog Linden贸w 偶eby zobaczy膰 nowe wiadomo艣ci i informacje.
<usetemplate ignoretext="Uruchom przegl膮dark臋 internetow膮 by zobaczy膰 blog" name="okcancelignore" notext="Anuluj" yestext="OK"/>
</notification>
<notification name="WebLaunchLSLGuide">
- Czy chcesz otworzy膰 samouczek J臋zyka skryptowania?
- <usetemplate ignoretext="Uruchom przegl膮dark臋 internetow膮 by samouczek J臋zyka skryptowania" name="okcancelignore" notext="Anuluj" yestext="OK"/>
+ Czy chcesz otworzy膰 samouczek J臋zyka Skryptowania?
+ <usetemplate ignoretext="Uruchom przegl膮dark臋 internetow膮 by samouczek J臋zyka Skryptowania" name="okcancelignore" notext="Anuluj" yestext="OK"/>
</notification>
<notification name="WebLaunchLSLWiki">
Czy napewno chcesz odwiedzi膰 portal LSL Portal?
@@ -1385,7 +1385,7 @@ Chcesz opu艣ci膰 grup臋?
Tryb Pracy jest w艂膮czony.
Czat i IM b臋d膮 ukryte. Wys艂ane IM b臋d膮 otrzymywa艂y Twoj膮 odpowied藕 Trybu Pracy. Propozycje teleportacji b臋d膮 odrzucone.
Dodatkowo, wszystkie podarowane dla Ciebie obiekty b臋d膮 automatycznie zapisywane w folderze &quot;Kosz&quot; w Twojej szafie.
- <usetemplate ignoretext="Status zmieniony na Tryb pracy" name="okignore" yestext="OK"/>
+ <usetemplate ignoretext="Status zmieniony na Tryb Pracy" name="okignore" yestext="OK"/>
</notification>
<notification name="JoinedTooManyGroupsMember">
Nale偶ysz ju偶 do maksymalnej ilo艣ci grup. Opu艣膰 prosz臋 przynajmniej jedn膮 grup臋 偶eby przyj膮膰 cz艂onkostwo w tej grupie, albo odm贸w.
@@ -1466,7 +1466,7 @@ Dodatkowo, wszystkie podarowane dla Ciebie obiekty b臋d膮 automatycznie zapisywa
</notification>
<notification name="TeleportToClassified">
Teleportuj do [CLASSIFIED]?
- <usetemplate ignoretext="Potwierd藕, 偶e chcesz teleportowa膰 si臋 do lokalizacji z reklamy" name="okcancelignore" notext="Anuluj" yestext="Teleportuj"/>
+ <usetemplate ignoretext="Potwierd藕, 偶e chcesz teleportowa膰 si臋 do lokalizacji z Reklamy" name="okcancelignore" notext="Anuluj" yestext="Teleportuj"/>
</notification>
<notification name="TeleportToHistoryEntry">
Teleportuj do [HISTORY_ENTRY]?
@@ -1489,7 +1489,7 @@ Kontynuowa膰?
<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
</notification>
<notification label="Zmiana Dost臋pu do Maj膮tku Linden贸w" name="ChangeLindenAccess">
- Dokonujesz zmiany w li艣cie dost臋pu Regionu g艂贸wnego nale偶膮cego do Linden贸w (Regiony G艂贸wne, Teen Grid, Orientacja).
+ Dokonujesz zmiany w li艣cie dost臋pu Regionu G艂贸wnego nale偶膮cego do Linden贸w (Regiony G艂贸wne, Teen Grid, Orientacja).
呕膮dana operacja jest wyj膮tkowo niebezpieczna dla wszystkich Rezydent贸w przebywaj膮cych w regionie i powinna by膰 u偶ywana wy艂膮cznie w celu zablokowania opcji pozwalaj膮cej na przeniesienie obiekt贸w/L$ do/z sieci.
Dodatkowo, zmiany dokonane w Regionie G艂贸wnym mog膮 spowodowa膰 problemy przestrzeni serwerowej innych region贸w.
@@ -1560,7 +1560,7 @@ Skorzystaj z [SECOND_LIFE]:Pomoc by uzyska膰 wi臋cej informacji na temat dost臋p
W celu uzyskania dost臋pu do tego regiony zmie艅 prosz臋 sw贸j status ustawie艅 wieku. B臋dziesz m贸g艂/mog艂a szuka膰 i mie膰 dost臋p do tre艣ci [REGIONMATURITY]. W celu cofni臋cia zmian wybierz z menu Ja &gt; Ustawienia &gt; Og贸lne.
<form name="form">
- <button name="OK" text="Zmie艅 ustawienia"/>
+ <button name="OK" text="Zmie艅 Ustawienia"/>
<button default="true" name="Cancel" text="Zamknij"/>
<ignore name="ignore" text="Moje ustawienia wieku nie dopuszczaj膮 do regionu"/>
</form>
@@ -1693,7 +1693,7 @@ Wybierz pojedynczy obiekt i spr贸buj jeszcze raz.
Zostaniesz w艂a艣cicielem tego obiektu z nast臋puj膮cymi prawami:
Modyfikacje: [MODIFYPERM]
Kopiowanie: [COPYPERM]
- Odsprzedawanie i oddawanie: [RESELLPERM]
+ Odsprzedawanie i Oddawanie: [RESELLPERM]
<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
</notification>
<notification name="BuyOriginalNoOwner">
@@ -1701,7 +1701,7 @@ Zostaniesz w艂a艣cicielem tego obiektu z nast臋puj膮cymi prawami:
Zostaniesz w艂a艣cicielem tego obiektu z nast臋puj膮cymi prawami:
Modyfikacje: [MODIFYPERM]
Kopiowanie: [COPYPERM]
- Odsprzedawanie i oddawanie: [RESELLPERM]
+ Odsprzedawanie i Oddawanie: [RESELLPERM]
<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
</notification>
<notification name="BuyCopy">
@@ -1709,7 +1709,7 @@ Zostaniesz w艂a艣cicielem tego obiektu z nast臋puj膮cymi prawami:
Obiekt zostanie skopiowany do Twojej szafy z nast臋puj膮cymi prawami:
Modyfikacje: [MODIFYPERM]
Kopiowanie: [COPYPERM]
- Odsprzedawanie i oddawanie: [RESELLPERM]
+ Odsprzedawanie i Oddawanie: [RESELLPERM]
<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
</notification>
<notification name="BuyCopyNoOwner">
@@ -1717,7 +1717,7 @@ Obiekt zostanie skopiowany do Twojej szafy z nast臋puj膮cymi prawami:
Obiekt zostanie skopiowany do Twojej szafy z nast臋puj膮cymi prawami:
Modyfikacje: [MODIFYPERM]
Kopiowanie: [COPYPERM]
- Odsprzedawanie i oddawanie: [RESELLPERM]
+ Odsprzedawanie i Oddawanie: [RESELLPERM]
<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
</notification>
<notification name="BuyContents">
@@ -1770,7 +1770,7 @@ Przenie艣膰 obiekty szafy?
<usetemplate ignoretext="Uprzed藕 przed przeniesieniem zawarto艣ci niekopiowalnej z obiektu, kt贸ra mo偶e uszkodzi膰 skrypty obiektu" name="okcancelignore" notext="Anuluj" yestext="OK"/>
</notification>
<notification name="ClickActionNotPayable">
- Uwaga: Opcja Zap艂a膰 obiektowi zosta艂a wybrana, ale 偶eby ta opcja dzia艂a艂a musi by膰 dodany skrypt z funkcj膮 money().
+ Uwaga: Opcja Zap艂a膰 Obiektowi zosta艂a wybrana, ale 偶eby ta opcja dzia艂a艂a musi by膰 dodany skrypt z funkcj膮 money().
<form name="form">
<ignore name="ignore" text="Opcja Zap艂a膰 Obiektowi zosta艂a aktywowana podczas budowania obiekt贸w bez skryptu z funkcj膮 money()."/>
</form>
@@ -1836,18 +1836,18 @@ Linden Lab
Chcesz go zamieni膰 na wybrany obiekt?
<form name="form">
<ignore name="ignore" save_option="true" text="Obecnie masz ju偶 do艂膮czony obiekt do tej cz臋艣ci Twojego cia艂a.Chcesz go zamieni膰 na wybrany obiekt?"/>
- <button ignore="Zamie艅 automatycznie" name="Yes" text="OK"/>
- <button ignore="Nie zamieniaj" name="No" text="Anuluj"/>
+ <button ignore="Zamie艅 Automatycznie" name="Yes" text="OK"/>
+ <button ignore="Nie Zamieniaj" name="No" text="Anuluj"/>
</form>
</notification>
<notification label="Ostrze偶enie Trybu Pracy" name="BusyModePay">
- Jeste艣 w Trybie pracy co oznacza, 偶e nie dostaniesz 偶adnych obiekt贸w w zamian za t膮 op艂at臋.
+ Jeste艣 w Trybie Pracy co oznacza, 偶e nie dostaniesz 偶adnych obiekt贸w w zamian za t膮 op艂at臋.
-Chcesz wy艂膮czy膰 Tryb pracy przed zako艅czeniem tej tranzakcji?
+Chcesz wy艂膮czy膰 Tryb Pracy przed zako艅czeniem tej tranzakcji?
<form name="form">
<ignore name="ignore" save_option="true" text="Jeste艣 w Trybie Pracy co oznacza, 偶e nie dostaniesz 偶adnych obiekt贸w w zamian za t膮 op艂at臋. Chcesz wy艂膮czy膰 Tryb Pracy przed zako艅czeniem tej transakcji?"/>
- <button ignore="Zawsz wy艂膮czaj tryb pracy" name="Yes" text="OK"/>
- <button ignore="Nie wy艂膮czaj trybu pracy" name="No" text="Anuluj"/>
+ <button ignore="Zawsz wy艂膮czaj Tryb Pracy" name="Yes" text="OK"/>
+ <button ignore="Nie wy艂膮czaj Trybu Pracy" name="No" text="Anuluj"/>
</form>
</notification>
<notification name="ConfirmDeleteProtectedCategory">
@@ -1871,8 +1871,8 @@ Chcesz wy艂膮czy膰 Tryb pracy przed zako艅czeniem tej tranzakcji?
<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Tak"/>
</notification>
<notification name="ConfirmEmptyLostAndFound">
- Na pewno chcesz permanentnie usun膮膰 zawarto艣膰 Twojego foldera Zgubione i odnalezione?
- <usetemplate ignoretext="Potwierd藕 przed usuni臋ciem zawarto艣ci foldera Zagubione i odnalezione" name="okcancelignore" notext="Nie" yestext="Tak"/>
+ Na pewno chcesz permanentnie usun膮膰 zawarto艣膰 Twojego foldera Zgubione i Odnalezione?
+ <usetemplate ignoretext="Potwierd藕 przed usuni臋ciem zawarto艣ci foldera Zagubione i Odnalezione" name="okcancelignore" notext="Nie" yestext="Tak"/>
</notification>
<notification name="CopySLURL">
Nast臋puj膮cy link SLURL zosta艂 skopiowany do schowka:
@@ -1898,14 +1898,14 @@ Zamie艣膰 go na stronie internetowej 偶eby umo偶liwi膰 innym 艂atwy dost臋p do t
Ten plik cyklu dziennego u偶ywa brakuj膮cego pliku nieba: [SKY].
</notification>
<notification name="PPSaveEffectAlert">
- Efekt post-procesu ju偶 istnieje. Chcesz zapisa膰 nowy na jego miejsce?
+ Efekt Post-Procesu ju偶 istnieje. Chcesz zapisa膰 nowy na jego miejsce?
<usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
</notification>
<notification name="NewSkyPreset">
Nazwij nowe niebo.
<form name="form">
<input name="message">
- Nowe ustawienie
+ Nowe Ustawienie
</input>
<button name="OK" text="OK"/>
<button name="Cancel" text="Anuluj"/>
@@ -1918,7 +1918,7 @@ Zamie艣膰 go na stronie internetowej 偶eby umo偶liwi膰 innym 艂atwy dost臋p do t
Nazwij nowe ustawienie wody.
<form name="form">
<input name="message">
- Nowe ustawienie
+ Nowe Ustawienie
</input>
<button name="OK" text="OK"/>
<button name="Cancel" text="Anuluj"/>
@@ -1987,10 +1987,10 @@ Zamie艣膰 go na stronie internetowej 偶eby umo偶liwi膰 innym 艂atwy dost臋p do t
Anulowane
</notification>
<notification name="CancelledSit">
- Siadanie anulowane
+ Siadanie Anulowane
</notification>
<notification name="CancelledAttach">
- Do艂膮czenie anulowane
+ Do艂膮czenie Anulowane
</notification>
<notification name="ReplacedMissingWearable">
Barkuj膮ce ubranie/cz臋艣ci cia艂a zast膮piono domy艣lnymi obiektami.
@@ -2027,7 +2027,7 @@ Zamie艣膰 go na stronie internetowej 偶eby umo偶liwi膰 innym 艂atwy dost臋p do t
Gesturka [NAME] nie znaleziony w bazie danych.
</notification>
<notification name="UnableToLoadGesture">
- 艁adowanie gesturki [NAME] nie powiod艂o si臋.
+ 艁adowanie gestu [NAME] nie powiod艂o si臋.
</notification>
<notification name="LandmarkMissing">
Miejsce (LM) nie znalezione w bazie danych.
@@ -2041,7 +2041,7 @@ Spr贸buj jeszcze raz.
Poniewa偶 to ma wp艂yw na wpisywane has艂o, mo偶esz chcie膰 go wy艂膮czy膰.
</notification>
<notification name="NotecardMissing">
- Notka nie zosta艂a znaleziona w bazie danych.
+ Notka nie znaleziona w bazie danych.
</notification>
<notification name="NotecardNoPermissions">
Nie masz pozwolenia na zobaczenie notki.
@@ -2131,7 +2131,7 @@ Spr贸buj wybra膰 mniejszy obszar.
Pewne frazy podczas wyszukiwania zosta艂y usuni臋te w zwi膮zku z restrykcjami zawartymi w Standardach Spo艂eczno艣ciowych (Community Standards).
</notification>
<notification name="NoContentToSearch">
- Prosz臋 wybra膰 przynajmiej jeden z podanych rodzaj贸w tre艣ci jak膮 zawiera region podczas wyszukiwania (&apos;General&apos;, &apos;Moderate&apos;, lub &apos;Adult&apos;).
+ Prosz臋 wybra膰 przynajmiej jeden z podanych rodzaj贸w tre艣ci jak膮 zawiera region podczas wyszukiwania (&apos;PG&apos;, &apos;Mature&apos;, lub &apos;Adult&apos;).
</notification>
<notification name="GroupVote">
[NAME] zaprasza do g艂osowania nad propozycj膮:
@@ -2148,7 +2148,7 @@ Spr贸buj wybra膰 mniejszy obszar.
[MESSAGE]
</notification>
<notification name="EventNotification">
- Zawiadomienie o imprezie:
+ Zawiadomienie o Imprezie:
[NAME]
[DATE]
@@ -2167,12 +2167,12 @@ Spr贸buj wybra膰 mniejszy obszar.
</form>
</notification>
<notification name="DeactivatedGesturesTrigger">
- Zablokowane gesturki z jednakowym aktywowaniem:
+ Zablokowane gesty z jednakowym aktywowaniem:
[NAMES]
</notification>
<notification name="NoQuickTime">
Wygl膮da na to, 偶e QuickTime z Apple nie jest zainstalowany na Twoim komputerze.
-Je偶eli chcesz odtwarza膰 media na tej posiad艂o艣ci kt贸re u偶ywaj膮 QuickTime id藕 do [http://www.apple.com/quicktime strona QuickTime] i zainstaluj odtwarzacz.
+Je偶eli chcesz odtwarza膰 media na tej posiad艂o艣ci kt贸re u偶ywaj膮 QuickTime id藕 do [http://www.apple.com/quicktime QuickTime site] i zainstaluj odtwarzacz.
</notification>
<notification name="NoPlugin">
Nie znaleziono wtyczki medi贸w dla &quot;[MIME_TYPE]&quot; typu mime. Media tego typu b臋d膮 niedost臋pne.
@@ -2584,7 +2584,7 @@ Wybierz Zaakceptuj 偶eby zacz膮膰 czat albo Odm贸w 偶eby nie przyj膮膰 zaproszen
Nie masz dost臋pu do posiad艂o艣ci, nie nale偶ysz do w艂a艣ciwej grupy.
</notification>
<notification name="Cannot enter parcel: banned">
- Masz wzbroniony wst臋p na t膮 posiad艂o艣ci (ban).
+ Masz wzbroniny dost臋p to tej posiad艂o艣ci (ban).
</notification>
<notification name="Cannot enter parcel: not on access list">
Nie masz dost臋pu do posiad艂o艣ci, nie jeste艣 na li艣cie dost臋pu.
diff --git a/indra/newview/skins/default/xui/pl/panel_active_object_row.xml b/indra/newview/skins/default/xui/pl/panel_active_object_row.xml
index ab1d8d7007..57dc8a3dd7 100644
--- a/indra/newview/skins/default/xui/pl/panel_active_object_row.xml
+++ b/indra/newview/skins/default/xui/pl/panel_active_object_row.xml
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="panel_activeim_row">
<string name="unknown_obj">
- Nieznany obiekt
+ Nieznany Obiekt
</string>
<text name="object_name">
- Nienazwany obiekt
+ Nienazwany Obiekt
</text>
</panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/pl/panel_adhoc_control_panel.xml
index ba0c85e4ef..6cd47c6ce7 100644
--- a/indra/newview/skins/default/xui/pl/panel_adhoc_control_panel.xml
+++ b/indra/newview/skins/default/xui/pl/panel_adhoc_control_panel.xml
@@ -5,10 +5,10 @@
<button label="Dzwo艅" name="call_btn"/>
</layout_panel>
<layout_panel name="end_call_btn_panel">
- <button label="Zako艅cz rozmow臋" name="end_call_btn"/>
+ <button label="Zako艅cz Rozmowe" name="end_call_btn"/>
</layout_panel>
<layout_panel name="voice_ctrls_btn_panel">
- <button label="Prze艂膮czniki g艂osu" name="voice_ctrls_btn"/>
+ <button label="Prze艂膮czniki G艂osu" name="voice_ctrls_btn"/>
</layout_panel>
</layout_stack>
</panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_audio_device.xml b/indra/newview/skins/default/xui/pl/panel_audio_device.xml
index 9074296bd5..fa8dde77eb 100644
--- a/indra/newview/skins/default/xui/pl/panel_audio_device.xml
+++ b/indra/newview/skins/default/xui/pl/panel_audio_device.xml
@@ -1,19 +1,19 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel name="device_settings">
<text name="Audio Devices">
- Urz膮dzenia audio
+ Urz膮dzenia Audio
</text>
<text name="Input device (microphone):">
- Urz膮dzenia wej艣ciowe (mikrofon):
+ Urz膮dzenia Wej艣ciowe (mikrofon):
</text>
<text name="Output device (speakers):">
- Urz膮dzenia wyj艣ciowe (g艂o艣niki):
+ Urz膮dzenia Wyj艣ciowe (g艂o艣niki):
</text>
<text name="Input level:">
- Poziom wej艣cia
+ Poziom Wej艣cia
</text>
<text_editor name="voice_intro_text1">
- Za pomoc膮 suwaka ustaw poziom g艂o艣no艣ci Twojego m贸wienia dla innych Rezydent贸w. W celu przetestowania poziomu wej艣cia, zacznij m贸wi膰 do mikrofonu.
+ U偶yj suwaka by dostosowa膰 jak g艂o艣no Ci臋 s艂ycha膰 dla innych Rezydent贸w. W celu przetestowania poziomu wej艣cia, zacznij m贸wi膰 do mikrofonu.
</text_editor>
<volume_slider name="mic_volume_slider"
tool_tip="By zmieni膰 poziom g艂o艣no艣ci u偶yj suwaka" />
diff --git a/indra/newview/skins/default/xui/pl/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/pl/panel_block_list_sidetray.xml
index 62cb392ba7..122d834bdd 100644
--- a/indra/newview/skins/default/xui/pl/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/pl/panel_block_list_sidetray.xml
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="block_list_panel">
<text name="title_text">
- Lista blokad
+ Lista Blokad
</text>
- <scroll_list name="blocked" tool_tip="Lista zablokowanych os贸b"/>
+ <scroll_list name="blocked" tool_tip="Lista Zablokowanych Os贸b"/>
<button label="Zablokuj Rezydenta..." label_selected="Zablokuj Rezydenta..." name="Block resident..." tool_tip="Wybierz Rezydenta aby zablokowa膰"/>
<button label="Zablokuj obiekt wed艂ug nazwy..." label_selected="Zablokuj obiekt wed艂ug nazwy..." name="Block object by name..."/>
- <button label="Odblokuj" label_selected="Odblokuj" name="Unblock" tool_tip="Usu艅 Rezydenta lub obiekt z listy zablokowanych"/>
+ <button label="Odblokuj" label_selected="Odblokuj" name="Unblock" tool_tip="Usu艅 Rezydenta lub Obiekt z Listy Zablokowanych"/>
</panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_bottomtray.xml b/indra/newview/skins/default/xui/pl/panel_bottomtray.xml
index a0f4eb5244..cf73ae53dd 100644
--- a/indra/newview/skins/default/xui/pl/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/pl/panel_bottomtray.xml
@@ -9,22 +9,22 @@
</talk_button>
</layout_panel>
<layout_panel name="gesture_panel">
- <gesture_combo_list label="Gesturki" name="Gesture" tool_tip="Pokazuje/Ukrywa gesturki"/>
+ <gesture_combo_list label="Gestury" name="Gesture" tool_tip="Pokazuje/Ukrywa gestury"/>
</layout_panel>
<layout_panel name="movement_panel">
- <button label="Ruch" name="movement_btn" tool_tip="Poka偶/Ukryj ustawienia ruchu"/>
+ <button label="Ruch" name="movement_btn" tool_tip="Poka偶/Ukryj Ustawienia Ruchu"/>
</layout_panel>
<layout_panel name="cam_panel">
- <button label="Widok" name="camera_btn" tool_tip="Poka偶/Ukryj ustawienia kamery"/>
+ <button label="Widok" name="camera_btn" tool_tip="Poka偶/Ukryj Ustawienia Kamery"/>
</layout_panel>
<layout_panel name="snapshot_panel">
- <button label="" name="snapshots" tool_tip="Zr贸b zdj臋cie"/>
+ <button label="" name="snapshots" tool_tip="Zr贸b Zdj臋cie"/>
</layout_panel>
<layout_panel name="sidebar_btn_panel">
- <button label="Schowek" name="sidebar_btn" tool_tip="Pokazuje/ukrywa schowek"/>
+ <button label="Schowek" name="sidebar_btn" tool_tip="Pokazuje/ukrywa Schowek"/>
</layout_panel>
<layout_panel name="build_btn_panel">
- <button label="Buduj" name="build_btn" tool_tip="Pokazuje/ukrywa narz臋dzia budowania"/>
+ <button label="Buduj" name="build_btn" tool_tip="Pokazuje/ukrywa Narz臋dzia Budowania"/>
</layout_panel>
<layout_panel name="search_btn_panel">
<button label="Szukaj" name="search_btn" tool_tip="Pokazuje/ukrywa Szukaj"/>
diff --git a/indra/newview/skins/default/xui/pl/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/pl/panel_bottomtray_lite.xml
index e32c12a8ee..77d2e86b7e 100644
--- a/indra/newview/skins/default/xui/pl/panel_bottomtray_lite.xml
+++ b/indra/newview/skins/default/xui/pl/panel_bottomtray_lite.xml
@@ -2,7 +2,7 @@
<panel name="bottom_tray_lite">
<layout_stack name="toolbar_stack_lite">
<layout_panel name="gesture_panel">
- <gesture_combo_list label="Gesturki" name="Gesturki" tool_tip="Poka偶/ukryj gesturki"/>
+ <gesture_combo_list label="Gest" name="Gest" tool_tip="Poka偶/ukryj gestury"/>
</layout_panel>
</layout_stack>
</panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_edit_alpha.xml b/indra/newview/skins/default/xui/pl/panel_edit_alpha.xml
index a22d4b0482..ac2739633e 100644
--- a/indra/newview/skins/default/xui/pl/panel_edit_alpha.xml
+++ b/indra/newview/skins/default/xui/pl/panel_edit_alpha.xml
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="edit_alpha_panel">
<panel name="avatar_alpha_color_panel">
- <texture_picker label="Alpha dolnej cz臋艣ci cia艂a" name="Lower Alpha" tool_tip="Kliknij aby wybra膰 tekstur臋"/>
- <texture_picker label="Alpha g贸rnej cz臋艣ci cia艂a" name="Upper Alpha" tool_tip="Kliknij aby wybra膰 tekstur臋"/>
- <texture_picker label="Alpha g艂owy" name="Head Alpha" tool_tip="Kliknij aby wybra膰 tekstur臋"/>
- <texture_picker label="Alpha oka" name="Eye Alpha" tool_tip="Kliknij aby wybra膰 tekstur臋"/>
- <texture_picker label="Alpha w艂os贸w" name="Hair Alpha" tool_tip="Kliknij aby wybra膰 tekstur臋"/>
+ <texture_picker label="Alpha Dolnej Cz臋艣ci Cia艂a" name="Lower Alpha" tool_tip="Kliknij aby wybra膰 tekstur臋"/>
+ <texture_picker label="Alpha G贸rnej Cz臋艣ci Cia艂a" name="Upper Alpha" tool_tip="Kliknij aby wybra膰 tekstur臋"/>
+ <texture_picker label="Alpha G艂owy" name="Head Alpha" tool_tip="Kliknij aby wybra膰 tekstur臋"/>
+ <texture_picker label="Alpha Oka" name="Eye Alpha" tool_tip="Kliknij aby wybra膰 tekstur臋"/>
+ <texture_picker label="Alpha W艂os贸w" name="Hair Alpha" tool_tip="Kliknij aby wybra膰 tekstur臋"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_edit_classified.xml b/indra/newview/skins/default/xui/pl/panel_edit_classified.xml
index 07f9b3a13f..6395d5c59a 100644
--- a/indra/newview/skins/default/xui/pl/panel_edit_classified.xml
+++ b/indra/newview/skins/default/xui/pl/panel_edit_classified.xml
@@ -10,7 +10,7 @@
Zapisz
</string>
<text name="title">
- Edytuj reklam臋
+ Edytuj Reklam臋
</text>
<scroll_container name="profile_scroll">
<panel name="scroll_content_panel">
@@ -31,10 +31,10 @@
</text>
<button label="Ustaw na bie偶膮c膮 lokalizacj臋" name="set_to_curr_location_btn"/>
<text name="category_label" value="Kategoria:"/>
- <text name="content_type_label" value="Typ zawarto艣ci:"/>
- <icons_combo_box label="Tre艣膰 General" name="content_type">
- <icons_combo_box.item label="Tre艣膰 Moderate" name="mature_ci" value="Mature"/>
- <icons_combo_box.item label="Tre艣膰 General" name="pg_ci" value="PG"/>
+ <text name="content_type_label" value="Typ Zawarto艣ci:"/>
+ <icons_combo_box label="Tre艣膰 Og贸lna" name="content_type">
+ <icons_combo_box.item label="Moderuj Tre艣膰" name="mature_ci" value="Mature"/>
+ <icons_combo_box.item label="Tre艣膰 Og贸lna" name="pg_ci" value="PG"/>
</icons_combo_box>
<text name="price_for_listing_label" value="Cena za wy艣wietlenie:"/>
<spinner label="L$" name="price_for_listing" tool_tip="Cena za umieszczenie reklamy." value="50"/>
diff --git a/indra/newview/skins/default/xui/pl/panel_edit_profile.xml b/indra/newview/skins/default/xui/pl/panel_edit_profile.xml
index c9790f5eba..edd7415751 100644
--- a/indra/newview/skins/default/xui/pl/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/pl/panel_edit_profile.xml
@@ -33,8 +33,8 @@
WWW:
</text>
<check_box label="Poka偶 w wyszukiwarce" name="show_in_search_checkbox"/>
- <text name="title_acc_status_text" value="Moje konto:"/>
- <text name="my_account_link" value="[[URL] id藕 do dashboard]"/>
+ <text name="title_acc_status_text" value="Moje Konto:"/>
+ <text name="my_account_link" value="[[URL] id藕 do Dashboard]"/>
<text name="acc_status_text" value="Rezydent. Brak danych konta."/>
<text name="title_partner_text" value="Partner:"/>
<text name="partner_edit_link" value="[[URL] Edytuj]"/>
diff --git a/indra/newview/skins/default/xui/pl/panel_edit_wearable.xml b/indra/newview/skins/default/xui/pl/panel_edit_wearable.xml
index da2c26f02b..194b26a97e 100644
--- a/indra/newview/skins/default/xui/pl/panel_edit_wearable.xml
+++ b/indra/newview/skins/default/xui/pl/panel_edit_wearable.xml
@@ -40,7 +40,7 @@
Edycja bielizny
</string>
<string name="edit_alpha_title">
- Edycja maski alpha
+ Edycja maski Alpha
</string>
<string name="edit_tattoo_title">
Edycja tatua偶u
@@ -73,7 +73,7 @@
Kurtka:
</string>
<string name="skirt_desc_text">
- Sp贸dnica:
+ sp贸dnica:
</string>
<string name="gloves_desc_text">
R臋kawiczki:
@@ -85,13 +85,13 @@
Bielizna:
</string>
<string name="alpha_desc_text">
- Maska alpha:
+ Maska Alpha:
</string>
<string name="tattoo_desc_text">
Tatua偶:
</string>
<labeled_back_button label="Zapisz" name="back_btn" tool_tip="Powr贸t do edycji stroju"/>
- <text name="edit_wearable_title" value="Edycja kszta艂tu"/>
+ <text name="edit_wearable_title" value="Edycja Kszta艂tu"/>
<panel label="Koszula" name="wearable_type_panel">
<text name="description_text" value="Kszta艂t:"/>
<radio_group name="sex_radio">
diff --git a/indra/newview/skins/default/xui/pl/panel_friends.xml b/indra/newview/skins/default/xui/pl/panel_friends.xml
index 9d8dc69a35..fca0dad380 100644
--- a/indra/newview/skins/default/xui/pl/panel_friends.xml
+++ b/indra/newview/skins/default/xui/pl/panel_friends.xml
@@ -3,11 +3,11 @@
<string name="Multiple">
Znajomi
</string>
- <scroll_list name="friend_list" tool_tip="Aby wybra膰 wielu znajomych za jednym razem przetrzymaj klawisz Shift lub Control">
+ <scroll_list name="friend_list" tool_tip="By wybra膰 wielu znajomych za jednym razem przetrzymaj klawisz shift lub control">
<column name="icon_online_status" tool_tip="Status dost臋pno艣ci"/>
<column label="Imi臋" name="friend_name" tool_tip="Imi臋"/>
<column name="icon_visible_online" tool_tip="Ta osoba mo偶e widzie膰 czy jeste艣 w Second Life"/>
- <column name="icon_visible_map" tool_tip="Ta osoba mo偶e zlokalizowa膰 Ciebie na mapie"/>
+ <column name="icon_visible_map" tool_tip="Ta osoba mo偶e zlokalizowa膰 Ci臋 na mapie"/>
<column name="icon_edit_mine" tool_tip="Ta osoba mo偶e edytowa膰, usun膮膰 lub wzi膮膰 Twoje obiekty"/>
<column name="icon_edit_theirs" tool_tip="Mo偶esz edytowa膰 obiekty tej osoby"/>
</scroll_list>
diff --git a/indra/newview/skins/default/xui/pl/panel_group_control_panel.xml b/indra/newview/skins/default/xui/pl/panel_group_control_panel.xml
index 4e373cdf8f..b57ec8f2e6 100644
--- a/indra/newview/skins/default/xui/pl/panel_group_control_panel.xml
+++ b/indra/newview/skins/default/xui/pl/panel_group_control_panel.xml
@@ -8,10 +8,10 @@
<button label="Dzwo艅" name="call_btn"/>
</layout_panel>
<layout_panel name="end_call_btn_panel">
- <button label="Zako艅cz rozmow臋" name="end_call_btn"/>
+ <button label="Zako艅cz Rozmow臋" name="end_call_btn"/>
</layout_panel>
<layout_panel name="voice_ctrls_btn_panel">
- <button label="Prze艂膮czniki g艂osu" name="voice_ctrls_btn"/>
+ <button label="Prze艂膮czniki G艂osu" name="voice_ctrls_btn"/>
</layout_panel>
</layout_stack>
</panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_group_general.xml b/indra/newview/skins/default/xui/pl/panel_group_general.xml
index a4d76badf0..43f0103ab7 100644
--- a/indra/newview/skins/default/xui/pl/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/pl/panel_group_general.xml
@@ -23,7 +23,7 @@ By otrzyma膰 pomoc i dodatkowe wskaz贸wki przesu艅 kursor na przyciski.
<button label="DO艁膭CZ TERAZ!" name="btn_join"/>
</panel>
<text_editor name="charter">
- Status grupy
+ Status Grupy
</text_editor>
<name_list name="visible_members">
<name_list.columns label="Cz艂onek" name="name"/>
@@ -34,7 +34,7 @@ By otrzyma膰 pomoc i dodatkowe wskaz贸wki przesu艅 kursor na przyciski.
ja
</text>
<text name="active_title_label">
- M贸j aktywny tytu艂:
+ M贸j Aktywny Tytu艂:
</text>
<combo_box name="active_title" tool_tip="Ustaw tytu艂 kt贸ry wy艣wietla si臋 kiedy grupa jest aktywna."/>
<check_box label="Otrzymuj grupowe og艂oszenia" name="receive_notices" tool_tip="Zaznacz je偶eli chcesz otrzymywa膰 og艂oszenia z tej grupy. Anuluj z zaznaczenia, je偶eli nie chcesz otrzymywa膰 偶adnych og艂osze艅 z tej grupy."/>
@@ -50,8 +50,8 @@ By otrzyma膰 pomoc i dodatkowe wskaz贸wki przesu艅 kursor na przyciski.
<combo_item name="select_mature">
- Wybierz klasyfikacj臋 wieku -
</combo_item>
- <combo_box.item label="Tre艣膰 &apos;Moderate&apos;" name="mature"/>
- <combo_box.item label="Tre艣膰 &apos;General&apos;" name="pg"/>
+ <combo_box.item label="Tre艣膰 &apos;Mature&apos;" name="mature"/>
+ <combo_box.item label="Tre艣膰 &apos;PG&apos;" name="pg"/>
</combo_box>
<check_box initial_value="true" label="Wy艣wietlaj w wyszukiwarce" name="show_in_group_list" tool_tip="Udost臋pnij info o grupie w wyszukiwarce"/>
</panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/pl/panel_group_info_sidetray.xml
index e637588cf0..509c2893cf 100644
--- a/indra/newview/skins/default/xui/pl/panel_group_info_sidetray.xml
+++ b/indra/newview/skins/default/xui/pl/panel_group_info_sidetray.xml
@@ -27,9 +27,9 @@
</layout_panel>
<layout_panel name="button_row">
<button label="Czat" name="btn_chat"/>
- <button label="Konferencja g艂osowa" name="btn_call" tool_tip="Konferencja g艂osowa"/>
+ <button label="Konferencja G艂osowa" name="btn_call" tool_tip="Konferencja G艂osowa"/>
<button label="Zapisz" label_selected="Zapisz" name="btn_apply"/>
- <button label="Stw贸rz now膮 grup臋" name="btn_create" tool_tip="Stw贸rz now膮 grup臋"/>
+ <button label="Stw贸rz now膮 Grup臋" name="btn_create" tool_tip="Stw贸rz now膮 Grup臋"/>
</layout_panel>
</layout_stack>
</panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_group_invite.xml b/indra/newview/skins/default/xui/pl/panel_group_invite.xml
index 1822551e86..e520c06944 100644
--- a/indra/newview/skins/default/xui/pl/panel_group_invite.xml
+++ b/indra/newview/skins/default/xui/pl/panel_group_invite.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Zaproszenie do Grupy" name="invite_panel">
<panel.string name="confirm_invite_owner_str">
- Jeste艣 pewny/a, 偶e chcesz wybra膰 nowych w艂a艣cieli grupy? Ta decyzja jest ostateczna!
+ Jeste艣 pewny, 偶e chcesz wybra膰 nowych w艂a艣cieli grupy? Ta decyzja jest ostateczna!
</panel.string>
<panel.string name="loading">
(艂adowanie...)
@@ -18,10 +18,10 @@
<text name="role_text">
Wybierz rol臋 dla nowego cz艂onka:
</text>
- <combo_box name="role_name" tool_tip="Wybierz z listy Role, kt贸re mo偶esz przypisa膰 cz艂onkom"/>
+ <combo_box name="role_name" tool_tip="Wybierz z listy Role, kt贸re mo偶esz przypisa膰 Cz艂onkom"/>
<button label="Wy艣lij Zaproszenia" name="ok_button"/>
<button label="Anuluj" name="cancel_button"/>
<string name="GroupInvitation">
- Zaproszenie do grupy
+ Zaproszenie do Grupy
</string>
</panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_group_land_money.xml b/indra/newview/skins/default/xui/pl/panel_group_land_money.xml
index d29393de2d..acceb88711 100644
--- a/indra/newview/skins/default/xui/pl/panel_group_land_money.xml
+++ b/indra/newview/skins/default/xui/pl/panel_group_land_money.xml
@@ -1,16 +1,16 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Posiad艂o艣ci i L$" name="land_money_tab">
<panel.string name="help_text">
- Ostrze偶enie pojawia si臋 kiedy 艂膮czna powierzchnia posiad艂o艣ci jest mniejsza lub = Kontrybucjom
+ Ostrze偶enie pojawia si臋 kiedy 艁膮czna Powierzchnia Posiad艂o艣ci jest mniejsza lub = Kontrybucjom
</panel.string>
<panel.string name="cant_view_group_land_text">
- Nie masz pozwolenia na ogl膮danie posiad艂o艣ci grupy.
+ Nie masz pozwolenia na ogl膮danie Posiad艂o艣ci Grupy.
</panel.string>
<panel.string name="epmty_view_group_land_text">
Brak wst臋pu
</panel.string>
<panel.string name="cant_view_group_accounting_text">
- Nie masz dost臋pu do konta, finans贸w grupy.
+ Nie masz dost臋pu do konta, finans贸w Grupy.
</panel.string>
<panel.string name="loading_txt">
艁adowanie...
@@ -33,19 +33,19 @@
</text>
<button label="Mapa" label_selected="Mapa" name="map_button"/>
<text name="total_land_in_use_label">
- U偶ywane posiad艂o艣ci:
+ U偶ywane Posiad艂o艣ci:
</text>
<text name="total_land_in_use_value">
[AREA] m虏
</text>
<text name="land_available_label">
- Dost臋pne posiad艂o艣ci:
+ Dost臋pne Posiad艂o艣ci:
</text>
<text name="land_available_value">
[AREA] m虏
</text>
<text name="your_contribution_label">
- Twoje kontrybucje:
+ Twoje Kontrybucje:
</text>
<text name="your_contribution_units">
m虏
@@ -54,10 +54,10 @@
([AMOUNT] max)
</text>
<text name="group_over_limit_text">
- Nale偶y zwi臋szy膰 kredyt na u偶ywanie posiad艂o艣ci.
+ Nale偶y zwi臋szy膰 kredyt na u偶ywanie Posiad艂o艣ci.
</text>
<text name="group_money_heading">
- L$ grupy
+ L$ Grupy
</text>
</panel>
<tab_container name="group_money_tab_container">
diff --git a/indra/newview/skins/default/xui/pl/panel_group_notices.xml b/indra/newview/skins/default/xui/pl/panel_group_notices.xml
index 5b62d13880..1d727148e9 100644
--- a/indra/newview/skins/default/xui/pl/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/pl/panel_group_notices.xml
@@ -19,11 +19,11 @@ Limit dzienny og艂osze艅 dla grupy wynosi 200.
<text name="notice_list_none_found">
Nie znaleziono
</text>
- <button label="Stw贸rz Og艂oszenie" label_selected="Stw贸rz nowe og艂oszenie" name="create_new_notice" tool_tip="Stw贸rz og艂oszenie"/>
+ <button label="Stw贸rz Og艂oszenie" label_selected="Stw贸rz Nowe Og艂oszenie" name="create_new_notice" tool_tip="Stw贸rz Og艂oszenie"/>
<button label="Od艣wie偶" label_selected="Od艣wie偶 List臋" name="refresh_notices" tool_tip="U偶yj Od艣wie偶 by zobaczy膰 czy nowe og艂oszenia zosta艂y wys艂ane."/>
- <panel label="Stw贸rz nowe og艂oszenie" name="panel_create_new_notice">
+ <panel label="Stw贸rz Nowe Og艂oszenie" name="panel_create_new_notice">
<text name="lbl">
- Stw贸rz og艂oszenie
+ Stw贸rz Og艂oszenie
</text>
<text name="lbl3">
Temat:
@@ -55,6 +55,6 @@ Limit dzienny og艂osze艅 dla grupy wynosi 200.
<text name="lbl4">
Tre艣膰:
</text>
- <button label="Otw贸rz za艂膮cznik" label_selected="Otw贸rz za艂膮cznik" name="open_attachment"/>
+ <button label="Otw贸rz Za艂膮cznik" label_selected="Otw贸rz Za艂膮cznik" name="open_attachment"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_group_notify.xml b/indra/newview/skins/default/xui/pl/panel_group_notify.xml
index d27a81217a..d81c3f68f2 100644
--- a/indra/newview/skins/default/xui/pl/panel_group_notify.xml
+++ b/indra/newview/skins/default/xui/pl/panel_group_notify.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="instant_message" name="panel_group_notify">
<panel label="header" name="header">
- <text name="title" value="Imi臋 nadawcy / Nazwa grupy"/>
+ <text name="title" value="Imi臋 Nadawcy / Nazwa Grupy"/>
</panel>
<text name="attachment" value="Za艂膮cznik"/>
<button label="OK" name="btn_ok"/>
diff --git a/indra/newview/skins/default/xui/pl/panel_group_roles.xml b/indra/newview/skins/default/xui/pl/panel_group_roles.xml
index 9e9c79d26a..5526694863 100644
--- a/indra/newview/skins/default/xui/pl/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/pl/panel_group_roles.xml
@@ -9,20 +9,20 @@
<tab_container name="roles_tab_container">
<panel label="CZ艁ONKOWIE" name="members_sub_tab" tool_tip="Cz艂onkowie">
<panel.string name="help_text">
- Mo偶esz dodawa膰 i usuwa膰 funkcje przypisane do cz艂onk贸w.
-Mo偶esz wybra膰 wielu cz艂onk贸w naciskaj膮c Ctrl i klikaj膮c na ich imionach.
+ Mo偶esz dodawa膰 i usuwa膰 Funkcje przypisane do Cz艂onk贸w.
+Mo偶esz wybra膰 wielu Cz艂onk贸w naciskaj膮c Ctrl i klikaj膮c na ich imionach.
</panel.string>
<panel.string name="donation_area">
[AREA] m虏
</panel.string>
- <filter_editor label="Filtruj cz艂onk贸w" name="filter_input"/>
+ <filter_editor label="Filtruj Cz艂onk贸w" name="filter_input"/>
<name_list name="member_list">
<name_list.columns label="Cz艂onek" name="name"/>
<name_list.columns label="Dotacje" name="donated"/>
<name_list.columns label="Status" name="online"/>
</name_list>
- <button label="Zapro艣 do grupy" name="member_invite"/>
- <button label="Usu艅 z grupy" name="member_eject"/>
+ <button label="Zapro艣 do Grupy" name="member_invite"/>
+ <button label="Usu艅 z Grupy" name="member_eject"/>
</panel>
<panel label="FUNKCJE" name="roles_sub_tab">
<panel.string name="help_text">
@@ -37,22 +37,22 @@ jedn膮 lub wiele funkcji. Ka偶da grupa mo偶e posiada膰 maksymalnie 10 funkcji,
<panel.string name="power_folder_icon">
Inv_FolderClosed
</panel.string>
- <filter_editor label="Filtruj funkcje" name="filter_input"/>
+ <filter_editor label="Filtruj Funkcje" name="filter_input"/>
<scroll_list name="role_list">
<scroll_list.columns label="Funkcja" name="name"/>
<scroll_list.columns label="Tytu艂" name="title"/>
<scroll_list.columns label="#" name="members"/>
</scroll_list>
- <button label="Stw贸rz now膮 funkcj臋" name="role_create"/>
- <button label="Usu艅 funkcj臋" name="role_delete"/>
+ <button label="Stw贸rz Now膮 Funkcj臋" name="role_create"/>
+ <button label="Usu艅 Funkcj臋" name="role_delete"/>
</panel>
<panel label="PRZYWILEJE" name="actions_sub_tab" tool_tip="Mo偶esz sprawdzi膰 szczeg贸艂y dotycz膮ce dangego przywileju oraz jakie funkcje oraz jacy cz艂onkowie posiadaj膮 prawo korzystania z niego.">
<panel.string name="help_text">
- Przywileje pozwalaj膮 cz艂onkom przypisanym do funkcji na wykonywanie r贸偶nych zada艅.
-Istnieje wiele przywilej贸w.
+ Przywileje pozwalaj膮 Cz艂onkom przypisanym do Funkcji na wykonywanie r贸偶nych zada艅.
+Istnieje wiele Przywilei.
</panel.string>
- <filter_editor label="Filtruj przywileje" name="filter_input"/>
- <scroll_list name="action_list" tool_tip="Wybierz przywilej aby zobaczy膰 szczeg贸艂y">
+ <filter_editor label="Filtruj Przywileje" name="filter_input"/>
+ <scroll_list name="action_list" tool_tip="Wybierz przywilej by zobaczy膰 szczeg贸艂y">
<scroll_list.columns label="" name="icon"/>
<scroll_list.columns label="" name="action"/>
</scroll_list>
@@ -69,18 +69,18 @@ Istnieje wiele przywilej贸w.
<text name="static2">
Przywileje
</text>
- <scroll_list name="member_allowed_actions" tool_tip="Aby zobaczy膰 szczeg贸艂y, wybierz zak艂adk臋 Przywileje">
+ <scroll_list name="member_allowed_actions" tool_tip="By zobaczy膰 szczeg贸艂y, wybierz zak艂adk臋 Przywileje">
<scroll_list.columns label="" name="icon"/>
<scroll_list.columns label="" name="action"/>
</scroll_list>
</panel>
<panel name="roles_footer">
<text name="static">
- Nazwa funkcji
+ Nazwa Funkcji
</text>
<line_editor name="role_name"/>
<text name="static3">
- Nazwa funkcji
+ Nazwa Funkcji
</text>
<line_editor name="role_title"/>
<text name="static2">
@@ -88,13 +88,13 @@ Istnieje wiele przywilej贸w.
</text>
<text_editor name="role_description"/>
<text name="static4">
- Przypisane funkcje
+ Przypisane Funkcje
</text>
- <check_box label="Opcja widoczno艣ci jest aktywna" name="role_visible_in_list" tool_tip="Opcja ta pozwala okre艣li膰 widoczno艣膰 cz艂onk贸w pe艂ni膮cych t臋 funkcj臋 dla ludzi spoza grupy."/>
+ <check_box label="Opcja widoczno艣ci jest aktywna" name="role_visible_in_list" tool_tip="Opcja ta pozwala okre艣li膰 widoczno艣膰 cz艂onk贸w pe艂ni膮cych t臋 funkcj臋 dla ludzi spoza Grupy."/>
<text name="static5" tool_tip="Przywileje przypisane do wybranej Funkcji.">
- Przypisane przywileje
+ Przypisane Przywileje
</text>
- <scroll_list name="role_allowed_actions" tool_tip="Aby zobaczy膰 szczeg贸艂y dozwolonych przywilej贸w wybierz zak艂adk臋 Przywileje">
+ <scroll_list name="role_allowed_actions" tool_tip="By zobaczy膰 szczeg贸艂y dozwolonych przywilej贸w wybierz zak艂adk臋 Przywileje">
<scroll_list.columns label="" name="icon"/>
<scroll_list.columns label="" name="checkbox"/>
<scroll_list.columns label="" name="action"/>
@@ -102,7 +102,7 @@ Istnieje wiele przywilej贸w.
</panel>
<panel name="actions_footer">
<text_editor name="action_description">
- Przywilej &apos;Usu艅 cz艂onka z grupy&apos;. Tylko w艂a艣ciciel mo偶e usun膮膰 innego w艂a艣ciciela.
+ Przywilej &apos;Usu艅 Cz艂onka z Grupy&apos;. Tylko W艂a艣ciciel mo偶e usun膮膰 innego W艂a艣ciciela.
</text_editor>
<text name="static2">
Funkcje z tym przywilejem
diff --git a/indra/newview/skins/default/xui/pl/panel_groups.xml b/indra/newview/skins/default/xui/pl/panel_groups.xml
index 671d8fd2f0..9df90fc797 100644
--- a/indra/newview/skins/default/xui/pl/panel_groups.xml
+++ b/indra/newview/skins/default/xui/pl/panel_groups.xml
@@ -10,7 +10,7 @@
Nale偶ysz do [COUNT] grup (maksimum to [MAX]).
</text>
<button label="Czat/IM" name="IM" tool_tip="Rozpocznij sesj臋 czatu (IM)" />
- <button label="O grupie" name="Info" />
+ <button label="O Grupie" name="Info" />
<button label="Wybierz" name="Activate" />
<button label="Opu艣膰" name="Leave" />
<button label="Stw贸rz..." name="Create" />
diff --git a/indra/newview/skins/default/xui/pl/panel_im_control_panel.xml b/indra/newview/skins/default/xui/pl/panel_im_control_panel.xml
index 4aadd3b93b..84d1982440 100644
--- a/indra/newview/skins/default/xui/pl/panel_im_control_panel.xml
+++ b/indra/newview/skins/default/xui/pl/panel_im_control_panel.xml
@@ -23,7 +23,7 @@
<button label="Zako艅cz rozmow臋" name="end_call_btn"/>
</layout_panel>
<layout_panel name="voice_ctrls_btn_panel">
- <button label="Prze艂膮czniki g艂osu" name="voice_ctrls_btn"/>
+ <button label="Prze艂膮czniki G艂osu" name="voice_ctrls_btn"/>
</layout_panel>
</layout_stack>
</panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_landmark_info.xml b/indra/newview/skins/default/xui/pl/panel_landmark_info.xml
index 3370f6f58e..64479176fa 100644
--- a/indra/newview/skins/default/xui/pl/panel_landmark_info.xml
+++ b/indra/newview/skins/default/xui/pl/panel_landmark_info.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="landmark_info">
- <string name="title_create_landmark" value="Zapami臋taj miejsce (LM)"/>
- <string name="title_edit_landmark" value="Edytuj landmarki"/>
- <string name="title_landmark" value="Landmarki (LM)"/>
+ <string name="title_create_landmark" value="Zapami臋taj Miejsce"/>
+ <string name="title_edit_landmark" value="Edytuj Zapami臋tane Miejsce"/>
+ <string name="title_landmark" value="Zapami臋tane Miejsce (LM)"/>
<string name="not_available" value="(N\A)"/>
<string name="unknown" value="(nieznane)"/>
<string name="public" value="(publiczne)"/>
@@ -19,7 +19,7 @@
[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
</string>
<button name="back_btn" tool_tip="Cofnij"/>
- <text name="title" value="Profil miejsca"/>
+ <text name="title" value="Profil Miejsca"/>
<scroll_container name="place_scroll">
<panel name="scrolling_panel">
<text name="maturity_value" value="nieznany"/>
diff --git a/indra/newview/skins/default/xui/pl/panel_login.xml b/indra/newview/skins/default/xui/pl/panel_login.xml
index b5899f1009..5e4955c28c 100644
--- a/indra/newview/skins/default/xui/pl/panel_login.xml
+++ b/indra/newview/skins/default/xui/pl/panel_login.xml
@@ -15,7 +15,7 @@
<text name="password_text">
Has艂o:
</text>
- <check_box label="Zapami臋taj has艂o" name="remember_check"/>
+ <check_box label="Zapami臋taj Has艂o" name="remember_check"/>
<button label="Po艂膮cz" name="connect_btn"/>
<text name="start_location_text">
Rozpocznij w:
diff --git a/indra/newview/skins/default/xui/pl/panel_media_settings_general.xml b/indra/newview/skins/default/xui/pl/panel_media_settings_general.xml
index 914a2aee73..03b063ddfe 100644
--- a/indra/newview/skins/default/xui/pl/panel_media_settings_general.xml
+++ b/indra/newview/skins/default/xui/pl/panel_media_settings_general.xml
@@ -1,24 +1,24 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Og贸lne" name="Media Settings General">
<text name="home_label">
- Strona domowa:
+ Strona Domowa:
</text>
<text name="home_fails_whitelist_label">
- (ta strona nie zosta艂a zaakceptowana przez filtr listy dost臋powej (Bia艂a Lista)
+ (ta strona nie zosta艂a zaakceptowana przez filtr listy dost臋powej)
</text>
<line_editor name="home_url" tool_tip="Strona domowa dla 藕r贸dla medi贸w"/>
<text name="preview_label">
Poka偶
</text>
<text name="current_url_label">
- Obecna strona:
+ Obecna Strona:
</text>
<text name="current_url" tool_tip="The current page for this media source" value=""/>
<button label="Zresetuj" name="current_url_reset_btn"/>
<check_box initial_value="false" label="P臋tla" name="auto_loop"/>
- <check_box initial_value="false" label="Interakcja klikni臋cia" name="first_click_interact"/>
+ <check_box initial_value="false" label="Interakcja Klikni臋cia" name="first_click_interact"/>
<check_box initial_value="false" label="Autopowi臋kszenie" name="auto_zoom"/>
- <check_box initial_value="false" label="Automatyczne odtwarzanie medi贸w" name="auto_play"/>
+ <check_box initial_value="false" label="Automatyczne Odtwarzanie Medi贸w" name="auto_play"/>
<text name="media_setting_note">
Pami臋taj: Rezydenci mog膮 zmieni膰 to ustawienie
</text>
diff --git a/indra/newview/skins/default/xui/pl/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/pl/panel_media_settings_permissions.xml
index a87c29d7b3..6b93981acc 100644
--- a/indra/newview/skins/default/xui/pl/panel_media_settings_permissions.xml
+++ b/indra/newview/skins/default/xui/pl/panel_media_settings_permissions.xml
@@ -15,15 +15,15 @@
W艂a艣ciciel
</text>
<check_box initial_value="false" label="Pozw贸l na nawigacj臋 &amp; interaktywno艣膰" name="perms_owner_interact"/>
- <check_box initial_value="false" label="Poka偶 pasek kontroli" name="perms_owner_control"/>
+ <check_box initial_value="false" label="Poka偶 Pasek Kontroli" name="perms_owner_control"/>
<text name="group_label">
Grupa:
</text>
- <check_box initial_value="false" label="Pozw贸l na nawigacj臋 &amp; interaktywno艣膰" name="perms_group_interact"/>
- <check_box initial_value="false" label="Poka偶 pasek kontroli" name="perms_group_control"/>
+ <check_box initial_value="false" label="Pozw贸l na nawigacj臋 &amp; Interaktywno艣膰" name="perms_group_interact"/>
+ <check_box initial_value="false" label="Poka偶 Pasek Kontroli" name="perms_group_control"/>
<text name="anyone_label">
Ka偶dy
</text>
<check_box initial_value="false" label="Pozw贸l na nawigacj臋 &amp; interaktywno艣膰" name="perms_anyone_interact"/>
- <check_box initial_value="false" label="Poka偶 pasek kontroli" name="perms_anyone_control"/>
+ <check_box initial_value="false" label="Poka偶 Pasek Kontroli" name="perms_anyone_control"/>
</panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_my_profile.xml b/indra/newview/skins/default/xui/pl/panel_my_profile.xml
index fefab15af0..7ca762b825 100644
--- a/indra/newview/skins/default/xui/pl/panel_my_profile.xml
+++ b/indra/newview/skins/default/xui/pl/panel_my_profile.xml
@@ -10,11 +10,11 @@
<scroll_container name="profile_scroll">
<panel name="scroll_content_panel">
<panel name="second_life_image_panel">
- <icon label="" name="2nd_life_edit_icon" tool_tip="Kliknij przycisk Edytuj profil by zmieni膰 zdj臋cie"/>
+ <icon label="" name="2nd_life_edit_icon" tool_tip="Kliknij przycisk Edytuj Profil by zmieni膰 zdj臋cie"/>
<text name="title_sl_descr_text" value="[SECOND_LIFE]:"/>
</panel>
<panel name="first_life_image_panel">
- <icon label="" name="real_world_edit_icon" tool_tip="Kliknij przycisk Edytuj profil by zmieni膰 zdj臋cie"/>
+ <icon label="" name="real_world_edit_icon" tool_tip="Kliknij przycisk Edytuj Profil by zmieni膰 zdj臋cie"/>
<text name="title_rw_descr_text" value="呕ycie#1:"/>
</panel>
<text name="title_member_text" value="Urodziny:"/>
@@ -28,8 +28,8 @@
</scroll_container>
</layout_panel>
<layout_panel name="profile_me_buttons_panel">
- <button label="Edytuj profil" name="edit_profile_btn" tool_tip="Edytuj swoje dane"/>
- <button label="Edytuj wygl膮d" name="edit_appearance_btn" tool_tip="Stw贸rz/edytuj sw贸j wygl膮d: dane fizyczne, ubrania itp."/>
+ <button label="Edytuj Profil" name="edit_profile_btn" tool_tip="Edytuj swoje dane"/>
+ <button label="Edytuj Wygl膮d" name="edit_appearance_btn" tool_tip="Stw贸rz/edytuj sw贸j wygl膮d: dane fizyczne, ubrania itp."/>
</layout_panel>
</layout_stack>
</panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/pl/panel_nearby_chat_bar.xml
index 63cf96b571..2d1decd960 100644
--- a/indra/newview/skins/default/xui/pl/panel_nearby_chat_bar.xml
+++ b/indra/newview/skins/default/xui/pl/panel_nearby_chat_bar.xml
@@ -7,5 +7,5 @@
320
</string>
<line_editor label="Kliknij tutaj aby rozmawia膰." name="chat_box" tool_tip="Naci艣nij Enter aby m贸wi膰, Ctrl + Enter aby krzykn膮膰"/>
- <button name="show_nearby_chat" tool_tip="Pokazuje/ukrywa pobliski czat"/>
+ <button name="show_nearby_chat" tool_tip="Pokazuje/ukrywa pobliski Czat"/>
</panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_nearby_media.xml b/indra/newview/skins/default/xui/pl/panel_nearby_media.xml
index c9f951f7c6..a78ab4d6f8 100644
--- a/indra/newview/skins/default/xui/pl/panel_nearby_media.xml
+++ b/indra/newview/skins/default/xui/pl/panel_nearby_media.xml
@@ -7,10 +7,10 @@
&lt;empty&gt;
</string>
<string name="parcel_media_name">
- Strumie艅 medi贸w posiad艂o艣ci
+ Strumie艅 Medi贸w Posiad艂o艣ci
</string>
<string name="parcel_audio_name">
- Strumie艅 audio posiad艂o艣ci
+ Strumie艅 Audio Posiad艂o艣ci
</string>
<string name="playing_suffix">
(odtwarzanie)
@@ -31,8 +31,8 @@
</text>
<combo_box name="show_combo">
<combo_box.item label="Wszystkie" name="All"/>
- <combo_box.item label="Na obecnej posiad艂o艣ci" name="WithinParcel"/>
- <combo_box.item label="Poza posiad艂o艣ci膮" name="OutsideParcel"/>
+ <combo_box.item label="Na obecnej Parceli" name="WithinParcel"/>
+ <combo_box.item label="Poza Posiad艂o艣ci膮" name="OutsideParcel"/>
<combo_box.item label="Na innych awatarach" name="OnOthers"/>
</combo_box>
<scroll_list name="media_list">
diff --git a/indra/newview/skins/default/xui/pl/panel_outfit_edit.xml b/indra/newview/skins/default/xui/pl/panel_outfit_edit.xml
index 31502cccba..2c5e2a3f61 100644
--- a/indra/newview/skins/default/xui/pl/panel_outfit_edit.xml
+++ b/indra/newview/skins/default/xui/pl/panel_outfit_edit.xml
@@ -30,7 +30,7 @@
<button label="Dodaj..." name="show_add_wearables_btn" tool_tip="Otw贸rz/Zamknij"/>
</layout_panel>
<layout_panel name="filter_panel">
- <filter_editor label="Filtruj cz臋艣ci stroju w Szafie" name="look_item_filter"/>
+ <filter_editor label="Filtruj cz臋艣膰i stroju w Szafie" name="look_item_filter"/>
</layout_panel>
</layout_stack>
</layout_panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/pl/panel_outfits_inventory_gear_default.xml
index 2f8c008f98..5b77c390ca 100644
--- a/indra/newview/skins/default/xui/pl/panel_outfits_inventory_gear_default.xml
+++ b/indra/newview/skins/default/xui/pl/panel_outfits_inventory_gear_default.xml
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu name="menu_gear_default">
- <menu_item_call label="Zast膮p obecny str贸j" name="wear"/>
- <menu_item_call label="Dodaj do obecnego stroju" name="add"/>
- <menu_item_call label="Usu艅 z obecnego stroju" name="remove"/>
+ <menu_item_call label="Zast膮p Obecne Ubranie" name="wear"/>
+ <menu_item_call label="Dodaj do Obecnego Ubrania" name="add"/>
+ <menu_item_call label="Usu艅 z Obecnego Ubrania" name="remove"/>
<menu_item_call label="Zmie艅 nazw臋" name="rename"/>
- <menu_item_call label="Usu艅 link" name="remove_link"/>
- <menu_item_call label="Usu艅 str贸j" name="delete"/>
+ <menu_item_call label="Usu艅 Link" name="remove_link"/>
+ <menu_item_call label="Usu艅 Ubranie" name="delete"/>
</menu>
diff --git a/indra/newview/skins/default/xui/pl/panel_people.xml b/indra/newview/skins/default/xui/pl/panel_people.xml
index 19df36c9ee..50fc0ba8af 100644
--- a/indra/newview/skins/default/xui/pl/panel_people.xml
+++ b/indra/newview/skins/default/xui/pl/panel_people.xml
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- Side tray panel -->
<panel label="Ludzie" name="people_panel">
- <string name="no_recent_people" value="Brak ostatnich rozm贸wc贸w. Chcesz spotka膰 ludzi? Spr贸buj [secondlife:///app/search/people Szukaj] or the [secondlife:///app/worldmap Mapa 艢wiata]."/>
+ <string name="no_recent_people" value="Brak ostatnich rozm贸wc贸w. Chcesz spotka膰 ludzi? Spr贸buj [secondlife:///app/search/people Search] or the [secondlife:///app/worldmap Mapa 艢wiata]."/>
<string name="no_filtered_recent_people" value="Nie znaleziono tego czego szukasz? Spr贸buj [secondlife:///app/search/groups/[SEARCH_TERM] Szukaj]."/>
- <string name="no_one_near" value="Nie ma nikogo w pobli偶u. Chcesz spotka膰 ludzi? Spr贸buj [secondlife:///app/search/people Szukaj] lub [secondlife:///app/worldmap Mapa 艢wiata]."/>
+ <string name="no_one_near" value="Nie ma nikogo w pobli偶u. Chcesz spotka膰 ludzi? Spr贸buj[secondlife:///app/search/people Search] lub [secondlife:///app/worldmap Mapa 艢wiata]."/>
<string name="no_one_filtered_near" value="Nie znaleziono tego czego szukasz? Spr贸buj [secondlife:///app/search/groups/[SEARCH_TERM] Szukaj]."/>
- <string name="no_friends_online" value="Brak dost臋pnych znajomych"/>
- <string name="no_friends" value="Brak znajomych"/>
+ <string name="no_friends_online" value="Brak dost臋pnych Znajomych"/>
+ <string name="no_friends" value="Brak Znajomych"/>
<string name="no_friends_msg">
Wyszukaj znajomych [secondlife:///app/search/people Szukaj] lub kliknij prawym przyciskiem na Rezydenta aby zaproponowa膰 mu znajomo艣膰.
Chcesz spotka膰 ludzi? Spr贸buj [secondlife:///app/worldmap Mapa 艢wiata].
@@ -14,8 +14,8 @@ Chcesz spotka膰 ludzi? Spr贸buj [secondlife:///app/worldmap Mapa 艢wiata].
<string name="no_filtered_friends_msg">
Nie znaleziono tego czego szukasz? Spr贸buj [secondlife:///app/search/groups/[SEARCH_TERM] Szukaj].
</string>
- <string name="people_filter_label" value="Filtruj ludzi"/>
- <string name="groups_filter_label" value="Filtruj grupy"/>
+ <string name="people_filter_label" value="Filtruj Ludzi"/>
+ <string name="groups_filter_label" value="Filtruj Grupy"/>
<string name="no_filtered_groups_msg" value="Nie znaleziono tego czego szukasz? Spr贸buj [secondlife:///app/search/groups/[SEARCH_TERM] Szukaj]."/>
<string name="no_groups_msg" value="Chcesz do艂膮czy膰 do grup? Spr贸buj [secondlife:///app/search/groups Szukaj]."/>
<filter_editor label="Filtr" name="filter_input"/>
@@ -23,7 +23,7 @@ Chcesz spotka膰 ludzi? Spr贸buj [secondlife:///app/worldmap Mapa 艢wiata].
<panel label="W POBLI呕U" name="nearby_panel">
<panel label="bottom_panel" name="bottom_panel">
<button name="nearby_view_sort_btn" tool_tip="Opcje"/>
- <button name="add_friend_btn" tool_tip="Dodaj wybranego Rezydenta do znajomych"/>
+ <button name="add_friend_btn" tool_tip="Dodaj wybranego Rezydenta do Znajomych"/>
</panel>
</panel>
<panel label="ZNAJOMI" name="friends_panel">
@@ -47,7 +47,7 @@ Chcesz spotka膰 ludzi? Spr贸buj [secondlife:///app/worldmap Mapa 艢wiata].
<panel label="OSTATNIE" name="recent_panel">
<panel label="bottom_panel" name="bottom_panel">
<button name="recent_viewsort_btn" tool_tip="Opcje"/>
- <button name="add_friend_btn" tool_tip="Dodaj wybranego Rezydenta do znajomych"/>
+ <button name="add_friend_btn" tool_tip="Dodaj wybranego Rezydenta do Znajomych"/>
</panel>
</panel>
</tab_container>
@@ -59,6 +59,6 @@ Chcesz spotka膰 ludzi? Spr贸buj [secondlife:///app/worldmap Mapa 艢wiata].
<button label="Teleportuj" name="teleport_btn" tool_tip="Zaproponuj teleportacj臋" width="70"/>
<button label="Profil grupy" name="group_info_btn" tool_tip="Poka偶 informacje o grupie" width="69"/>
<button label="Konferencja Grupowa" name="chat_btn" tool_tip="Rozpocznij konferenc臋" width="124"/>
- <button label="Rozmowa G艂osowa" name="group_call_btn" tool_tip="Rozmowa g艂osowa w tej grupie" width="108"/>
+ <button label="Rozmowa G艂osowa" name="group_call_btn" tool_tip="Rozmowa G艂osowa w tej Grupie" width="108"/>
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_place_profile.xml b/indra/newview/skins/default/xui/pl/panel_place_profile.xml
index 7a71a10034..3714a141db 100644
--- a/indra/newview/skins/default/xui/pl/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/pl/panel_place_profile.xml
@@ -11,8 +11,8 @@
<string name="unknown" value="(nieznany)"/>
<string name="public" value="(publiczny)"/>
<string name="none_text" value="(偶aden)"/>
- <string name="sale_pending_text" value="(Sprzeda偶 w toku realizacji)"/>
- <string name="group_owned_text" value="(W艂asno艣膰 grupy)"/>
+ <string name="sale_pending_text" value="(Sprzeda偶 w Toku Realizacji)"/>
+ <string name="group_owned_text" value="(W艂asno艣膰 Grupy)"/>
<string name="price_text" value="L$"/>
<string name="area_text" value="m虏"/>
<string name="all_residents_text" value="Ka偶demu"/>
@@ -52,7 +52,7 @@
<panel name="parcel_characteristics_panel">
<text name="rating_label" value="Rodzaj:"/>
<text name="rating_value" value="nieznane"/>
- <text name="voice_label" value="Komunikacja g艂osowa:"/>
+ <text name="voice_label" value="Komunikacja G艂osowa:"/>
<text name="voice_value" value="W艂膮czone"/>
<text name="fly_label" value="Lataj:"/>
<text name="fly_value" value="W艂膮czone"/>
@@ -92,7 +92,7 @@
<text name="covenant_label" value="Umowa:"/>
</panel>
</accordion_tab>
- <accordion_tab name="sales_tab" title="Na sprzeda偶">
+ <accordion_tab name="sales_tab" title="Na Sprzeda偶">
<panel name="sales_panel">
<text name="sales_price_label" value="Cena:"/>
<text name="area_label" value="Powierzchnia:"/>
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/pl/panel_preferences_advanced.xml
index b267610d33..de4fa10b73 100644
--- a/indra/newview/skins/default/xui/pl/panel_preferences_advanced.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_advanced.xml
@@ -16,9 +16,9 @@
<check_box initial_value="prawda" label="Schowek" name="appearance_sidebar_positioning" tool_tip="U偶yj automatycznego pozycjonowania kamery dla schowka"/>
<check_box label="Poka偶 w trybie widoku panoramicznego" name="first_person_avatar_visible"/>
<check_box label="Aktywacja klawiszy strza艂ek do poruszania awatarem" name="arrow_keys_move_avatar_check"/>
- <check_box label="Kliknij-kliknij-przytrzymaj, aby uruchomi膰" name="tap_tap_hold_to_run"/>
+ <check_box label="kliknij-kliknij-przytrzymaj, aby uruchomi膰" name="tap_tap_hold_to_run"/>
<check_box label="Poruszaj ustami awatara kiedy u偶ywana jest komunikacja g艂osowa" name="enable_lip_sync"/>
- <check_box label="Czat chmurkowy" name="bubble_text_chat"/>
+ <check_box label="Czat Chmurkowy" name="bubble_text_chat"/>
<slider label="Intensywno艣膰" name="bubble_chat_opacity"/>
<color_swatch name="background" tool_tip="Wybierz kolor czatu w chmurce"/>
<text name="UI Size:">
@@ -31,7 +31,7 @@
</radio_group>
<check_box label="W艂膮cz/Wy艂膮cz g艂os:" name="push_to_talk_toggle_check" tool_tip="Je偶eli jeste艣 w trybie m贸wienia, w celu aktywacji lub deaktywacji swojego mikrofonu wybierz i wy艂膮cz przycisk M贸w tylko raz. Je偶eli nie jeste艣 w trybie m贸wienia, mikrofon przesy艂a Tw贸j g艂os tylko w momencie aktywacji pe艂nej przycisku M贸w."/>
<line_editor label="Naci艣nij M贸w by rozpocz膮膰 komunikacj臋 g艂osow膮" name="modifier_combo"/>
- <button label="Wybierz klawisz" name="set_voice_hotkey_button"/>
- <button label="艢rodkowy przycisk myszki" name="set_voice_middlemouse_button" tool_tip="Zresetuj do 艣rodkowego przycisku myszy"/>
+ <button label="wybierz Klawisz" name="set_voice_hotkey_button"/>
+ <button label="艢rodkowy Przycisk Myszki" name="set_voice_middlemouse_button" tool_tip="Zresetuj do 艣rodkowego przycisku myszy"/>
<button label="Inne urz膮dzenia" name="joystick_setup_button"/>
</panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/pl/panel_preferences_alerts.xml
index d53a99e8c1..e843342aa2 100644
--- a/indra/newview/skins/default/xui/pl/panel_preferences_alerts.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_alerts.xml
@@ -4,7 +4,7 @@
Powiadom mnie:
</text>
<check_box label="Kiedy wydaj臋 lub otrzymuj臋 L$" name="notify_money_change_checkbox"/>
- <check_box label="Kiedy moi znajomi zalogowuj膮 si臋 i wylogowuj膮" name="friends_online_notify_checkbox"/>
+ <check_box label="Kiedy moi Znajomi zalogowuj膮 si臋 i wylogowuj膮" name="friends_online_notify_checkbox"/>
<text name="show_label">
Zawsze pokazuj:
</text>
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_general.xml b/indra/newview/skins/default/xui/pl/panel_preferences_general.xml
index 69686bcdbc..e7134f23c3 100644
--- a/indra/newview/skins/default/xui/pl/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_general.xml
@@ -24,16 +24,16 @@
</text>
<text name="maturity_desired_textbox"/>
<combo_box name="maturity_desired_combobox">
- <combo_box.item label="&apos;General&apos;, &apos;Mature&apos; oraz &apos;Adult&apos;" name="Desired_Adult"/>
- <combo_box.item label="&apos;General&apos; i &apos;Mature&apos;" name="Desired_Mature"/>
- <combo_box.item label="&apos;General&apos;" name="Desired_PG"/>
+ <combo_box.item label="&apos;PG&apos;, &apos;Mature&apos; oraz &apos;Adult&apos;" name="Desired_Adult"/>
+ <combo_box.item label="&apos;PG&apos; i &apos;Mature&apos;" name="Desired_Mature"/>
+ <combo_box.item label="&apos;PG&apos;" name="Desired_PG"/>
</combo_box>
<text name="start_location_textbox">
Miejsce Startu:
</text>
<combo_box name="start_location_combo">
- <combo_box.item label="Ostatnie Miejsce" name="MyLastLocation" tool_tip="Domy艣lnie loguj mnie w ostatnio odwiedzonym miejscu."/>
- <combo_box.item label="M贸j Start" name="MyHome" tool_tip="Domy艣lnie loguj mnie w moim Miejscu Startu."/>
+ <combo_box.item label="Ostatnie Miejsce" name="MyLastLocation" tool_tip="Domy艣lnie loguj mnie do ostatnio odwiedzonego miejsca."/>
+ <combo_box.item label="M贸j Start" name="MyHome" tool_tip="Domy艣lnie loguj mnie do mojego miejsca startu."/>
</combo_box>
<check_box initial_value="true" label="Poka偶 przy zalogowaniu" name="show_location_checkbox"/>
<text name="name_tags_textbox">
@@ -45,8 +45,8 @@
<radio_item label="Poka偶 w skr贸cie" name="radio3" value="2"/>
</radio_group>
<check_box label="Wy艣wietl moje imi臋:" name="show_my_name_checkbox1"/>
- <check_box initial_value="true" label="U偶ywaj ma艂ych imion awatar贸w" name="small_avatar_names_checkbox"/>
- <check_box label="Wy艣wietl tytu艂 grupowy" name="show_all_title_checkbox1"/>
+ <check_box initial_value="true" label="U偶ywaj Ma艂ych Imion Awatar贸w" name="small_avatar_names_checkbox"/>
+ <check_box label="Wy艣wietl Tytu艂 Grupowy" name="show_all_title_checkbox1"/>
<text name="effects_color_textbox">
Kolor moich efekt贸w:
</text>
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml
index e60d540066..99b3074fcb 100644
--- a/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml
@@ -26,23 +26,23 @@
<text name="ShadersText">
Cieniowanie pixeli (shadery):
</text>
- <check_box initial_value="true" label="Mapowanie wypuk艂o艣ci i po艂ysk" name="BumpShiny"/>
- <check_box initial_value="true" label="Podstawowe shadery" name="BasicShaders" tool_tip="Wy艂膮czenie tej opcji mo偶e naprawi膰 b艂臋dy niekt贸rych sterownik贸w graficznych."/>
- <check_box initial_value="true" label="Shadery atmosfery" name="WindLightUseAtmosShaders"/>
+ <check_box initial_value="true" label="Mapowanie Wypuk艂o艣ci i Po艂ysk" name="BumpShiny"/>
+ <check_box initial_value="true" label="Podstawowe Shadery" name="BasicShaders" tool_tip="Wy艂膮czenie tej opcji mo偶e naprawi膰 b艂臋dy niekt贸rych sterownik贸w graficznych."/>
+ <check_box initial_value="true" label="Shadery Atmosfery" name="WindLightUseAtmosShaders"/>
<check_box initial_value="true" label="Refleksy w wodzie" name="Reflections"/>
<text name="ReflectionDetailText">
Ustawienia refleks贸w:
</text>
<radio_group name="ReflectionDetailRadio">
<radio_item label="Teren i drzewa" name="0"/>
- <radio_item label="Obiekty statyczne" name="1"/>
- <radio_item label="Awatary i obiekty" name="2"/>
+ <radio_item label="Obiekty Statyczne" name="1"/>
+ <radio_item label="Awatary i Obiekty" name="2"/>
<radio_item label="Wszystko" name="3"/>
</radio_group>
<text name="AvatarRenderingText">
Rendering awatar贸w
</text>
- <check_box initial_value="true" label="Impostoryzacja awatarowa" name="AvatarImpostors"/>
+ <check_box initial_value="true" label="Impostoryzacja Awatarowa" name="AvatarImpostors"/>
<check_box initial_value="true" label="Rendering awatara przez GPU" name="AvatarVertexProgram"/>
<check_box initial_value="true" label="Oddzielne warstwy ubra艅" name="AvatarCloth"/>
<slider label="Pole widzenia:" name="DrawDistance"/>
@@ -51,7 +51,7 @@
</text>
<slider label="Liczba cz膮steczek:" name="MaxParticleCount"/>
<slider label="Max. # awatar贸w bez impostoryzacji:" name="MaxNumberAvatarDrawn"/>
- <slider label="Jako艣膰 post-procesu:" name="RenderPostProcess"/>
+ <slider label="Jako艣膰 Post-Procesu:" name="RenderPostProcess"/>
<text name="MeshDetailText">
Szczeg贸ly obiekt贸w:
</text>
@@ -87,7 +87,7 @@
</text>
<radio_group name="LightingDetailRadio">
<radio_item label="Tylko S艂o艅ce i Ksi臋偶yc" name="SunMoon" value="0"/>
- <radio_item label="Tylko bliskie 艣wiat艂a" name="LocalLights" value="1"/>
+ <radio_item label="Tylko Bliskie 艢wiat艂a" name="LocalLights" value="1"/>
</radio_group>
<text name="TerrainDetailText">
Szczeg贸艂y terenu:
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/pl/panel_preferences_privacy.xml
index fd9cdd6ff0..9504019f79 100644
--- a/indra/newview/skins/default/xui/pl/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_privacy.xml
@@ -10,7 +10,7 @@
<check_box label="M贸j status online jest dost臋pny tylko dla znajomych i grup do kt贸rych nale偶臋" name="online_visibility"/>
<check_box label="Mo偶liwo艣膰 wysy艂ania wiadomo艣ci prywatnej (IM) oraz rozmowy g艂osowej tylko dla znajomych i grup do kt贸rych nale偶臋" name="voice_call_friends_only_check"/>
<check_box label="Wy艂膮cz mikrofon po zako艅czeniu rozmowy g艂osowej" name="auto_disengage_mic_check"/>
- <check_box label="Akceptuj ciasteczka" name="cookies_enabled"/>
+ <check_box label="Akceptuj Ciasteczka" name="cookies_enabled"/>
<text name="Logs:">
Logi:
</text>
@@ -21,5 +21,5 @@
Lokalizacja zapisu:
</text>
<button label="Przegl膮daj" label_selected="Przegl膮daj" name="log_path_button"/>
- <button label="Lista zablokowanych" name="block_list"/>
+ <button label="Lista Zablokowanych" name="block_list"/>
</panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_setup.xml b/indra/newview/skins/default/xui/pl/panel_preferences_setup.xml
index b6578d21ca..98fdffeb50 100644
--- a/indra/newview/skins/default/xui/pl/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_setup.xml
@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Ustawienia" name="Input panel">
- <button label="Ustawienia joysticka" name="joystick_setup_button"/>
+ <button label="Ustawienia Joysticka" name="joystick_setup_button"/>
<text name="Mouselook:">
Widok panoramiczny:
</text>
<text name=" Mouse Sensitivity">
- Czu艂o艣膰 myszki
+ Czu艂o艣膰 Myszki
</text>
<slider name="mouse_sensitivity"/>
<check_box label="Zmie艅 klawisze myszki" name="invert_mouse"/>
@@ -41,9 +41,9 @@
<check_box label="Zezwalaj na wtyczki" name="browser_plugins_enabled"/>
<check_box label="Akceptuj ciasteczka z Internetu" name="cookies_enabled"/>
<check_box label="Zezwalaj na Javascript" name="browser_javascript_enabled"/>
- <check_box label="U偶ywaj serwera proxy" name="web_proxy_enabled"/>
+ <check_box label="U偶ywaj Serwera Proxy" name="web_proxy_enabled"/>
<text name="Proxy location">
- Lokalizacja proxy:
+ Lokalizacja Proxy:
</text>
<line_editor name="web_proxy_editor" tool_tip="Nazwa lub IP proxy, kt贸rego chcesz u偶y膰"/>
<spinner label="Numer portu:" name="web_proxy_port"/>
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 eaf9ae809b..b0d02179fd 100644
--- a/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml
@@ -9,22 +9,22 @@
<check_box label="Odtwarzaj media audio" name="music_enabled"/>
<slider label="Media" name="Media Volume"/>
<check_box label="Odtwarzaj media" name="enable_media"/>
- <slider label="Komunikacja g艂osowa" name="Voice Volume"/>
+ <slider label="Komunikacja G艂osowa" name="Voice Volume"/>
<check_box label="Pozw贸l na rozmowy g艂osowe" name="enable_voice_check"/>
- <check_box label="Automatycznie odtwarzaj media" name="media_auto_play_btn" tool_tip="Zaznacz t臋 funkcj臋 aby uruchomi膰 automatyczne uruchamianie medi贸w" value="true"/>
+ <check_box label="Automatycznie odtwarzaj media" name="media_auto_play_btn" tool_tip="Zaznacz t臋 funkcj臋 by uruchomi膰 automatyczne uruchamianie medi贸w" value="true"/>
<check_box label="Uruchom media za艂膮czone do innych awatar贸w" name="media_show_on_others_btn" tool_tip="Odznacz t臋 funkcj臋 by ukry膰 media za艂膮czone to awatar贸w w publi偶u" value="true"/>
<text name="voice_chat_settings">
- Ustawienia komunikacji g艂osowej
+ Ustawienia Komunikacji G艂osowej
</text>
<text name="Listen from">
Odtwarzaj z:
</text>
<radio_group name="ear_location">
- <radio_item label="pozycji kamery" name="0"/>
- <radio_item label="pozycji awatara" name="1"/>
+ <radio_item label="Pozycji kamery" name="0"/>
+ <radio_item label="Pozycji Awatara" name="1"/>
</radio_group>
- <button label="Wej艣ciowe/Wyj艣ciowe urz膮dzenia" name="device_settings_btn"/>
- <panel label="Ustawienia sprz臋towe" name="device_settings_panel">
+ <button label="Wej艣ciowe/Wyj艣ciowe Urz膮dzenia" name="device_settings_btn"/>
+ <panel label="Ustawienia Sprz臋towe" name="device_settings_panel">
<panel.string name="default_text">
Domy艣lne
</panel.string>
diff --git a/indra/newview/skins/default/xui/pl/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/pl/panel_prim_media_controls.xml
index a1a9be9242..f10ce5ea4d 100644
--- a/indra/newview/skins/default/xui/pl/panel_prim_media_controls.xml
+++ b/indra/newview/skins/default/xui/pl/panel_prim_media_controls.xml
@@ -25,7 +25,7 @@
<button name="fwd_btn" tool_tip="Przejd藕 do nast臋pnego"/>
</layout_panel>
<layout_panel name="home">
- <button name="home_btn" tool_tip="Strona domowa"/>
+ <button name="home_btn" tool_tip="Strona Domowa"/>
</layout_panel>
<layout_panel name="media_stop">
<button name="media_stop_btn" tool_tip="Zatrzymaj media"/>
@@ -37,13 +37,13 @@
<button name="stop_btn" tool_tip="Zatrzymaj wczytywanie"/>
</layout_panel>
<layout_panel name="play">
- <button name="play_btn" tool_tip="Odtwarzaj media"/>
+ <button name="play_btn" tool_tip="Odtwarzaj Media"/>
</layout_panel>
<layout_panel name="pause">
<button name="pause_btn" tool_tip="Wstrzymaj media"/>
</layout_panel>
<layout_panel name="media_address">
- <line_editor name="media_address_url" tool_tip="URL medi贸w"/>
+ <line_editor name="media_address_url" tool_tip="URL Medi贸w"/>
<layout_stack name="media_address_url_icons">
<layout_panel>
<icon name="media_whitelist_flag" tool_tip="Bia艂a Lista aktywna"/>
@@ -63,14 +63,14 @@
<button name="skip_forward_btn" tool_tip="Przewi艅 do przodu"/>
</layout_panel>
<layout_panel name="media_volume">
- <button name="media_mute_button" tool_tip="Wycisz media"/>
- <slider name="volume_slider" tool_tip="G艂o艣no艣膰 medi贸w"/>
+ <button name="media_mute_button" tool_tip="Wycisz Media"/>
+ <slider name="volume_slider" tool_tip="G艂o艣no艣膰 Medi贸w"/>
</layout_panel>
<layout_panel name="zoom_frame">
<button name="zoom_frame_btn" tool_tip="Przybli偶 do medi贸w"/>
</layout_panel>
<layout_panel name="close">
- <button name="close_btn" tool_tip="Oddal od medi贸w"/>
+ <button name="close_btn" tool_tip="Oddal"/>
</layout_panel>
<layout_panel name="new_window">
<button name="new_window_btn" tool_tip="Otw贸rz URL w przegl膮darce"/>
diff --git a/indra/newview/skins/default/xui/pl/panel_profile.xml b/indra/newview/skins/default/xui/pl/panel_profile.xml
index 97c2fdd417..766ed94822 100644
--- a/indra/newview/skins/default/xui/pl/panel_profile.xml
+++ b/indra/newview/skins/default/xui/pl/panel_profile.xml
@@ -34,8 +34,8 @@
<button label="鈻" name="overflow_btn" tool_tip="Zap艂a膰 lub udost臋pnij obiekty Rezydentowi"/>
</layout_panel>
<layout_panel name="profile_me_buttons_panel">
- <button label="Edytuj profil" name="edit_profile_btn" tool_tip="Edytuj swoje dane"/>
- <button label="Edytuj wygl膮d" name="edit_appearance_btn" tool_tip="Stw贸rz/edytuj sw贸j wygl膮d: dane fizyczne, ubranie..."/>
+ <button label="Edytuj Profil" name="edit_profile_btn" tool_tip="Edytuj swoje dane"/>
+ <button label="Edytuj Wygl膮d" name="edit_appearance_btn" tool_tip="Stw贸rz/edytuj sw贸j wygl膮d: dane fizyczne, ubranie..."/>
</layout_panel>
</layout_stack>
</panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_region_covenant.xml b/indra/newview/skins/default/xui/pl/panel_region_covenant.xml
index 932e3631ab..2b37dd96b7 100644
--- a/indra/newview/skins/default/xui/pl/panel_region_covenant.xml
+++ b/indra/newview/skins/default/xui/pl/panel_region_covenant.xml
@@ -19,7 +19,7 @@
Umowa:
</text>
<text name="covenant_timestamp_text">
- Ostatnia modyfikacja Wed Dec 31 16:00:00 1969
+ Ostatnia Modyfikacja Wed Dec 31 16:00:00 1969
</text>
<button label="?" name="covenant_help"/>
<text_editor name="covenant_editor">
diff --git a/indra/newview/skins/default/xui/pl/panel_region_estate.xml b/indra/newview/skins/default/xui/pl/panel_region_estate.xml
index 1b64827725..a796274738 100644
--- a/indra/newview/skins/default/xui/pl/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/pl/panel_region_estate.xml
@@ -29,10 +29,10 @@
<check_box label="Rezydenci, kt贸rzy dokonali weryfikacji wieku" name="limit_age_verified" tool_tip="Zbanuj Rezydent贸w, kt贸rzy nie zweryfikowali swojego wieku. Odwied藕 stron臋 [SUPPORT_SITE] po wi臋cej informacji."/>
<check_box label="Rozmowy dozwolone" name="voice_chat_check"/>
<button label="?" name="voice_chat_help"/>
- <check_box label="Teleportacja dozwolona" name="allow_direct_teleport"/>
+ <check_box label="Teleportacja Dozwolona" name="allow_direct_teleport"/>
<button label="?" name="allow_direct_teleport_help"/>
<text name="abuse_email_text">
- Wysy艂aj (email) reporty o nadu偶yciach do:
+ Email reporty o nadu偶yciach do:
</text>
<line_editor name="abuse_email_address"/>
<string name="email_unsupported">
@@ -41,7 +41,7 @@
<button label="?" name="abuse_email_address_help"/>
<button label="Zastosuj" name="apply_btn"/>
<button label="Wyrzu膰 Rezydenta z Maj膮tku..." name="kick_user_from_estate_btn"/>
- <button label="Wy艣lij wiadomo艣膰 do Maj膮tku..." name="message_estate_btn"/>
+ <button label="Wy艣lij Wiadomo艣膰 do Maj膮tku..." name="message_estate_btn"/>
<text name="estate_manager_label">
Zarz膮dcy Maj膮tku:
</text>
@@ -57,7 +57,7 @@
<button label="Usu艅..." name="remove_allowed_avatar_btn"/>
<button label="Dodaj..." name="add_allowed_avatar_btn"/>
<text name="allow_group_label">
- Dozwolone grupy:
+ Dozwolone Grupy:
</text>
<button label="?" name="allow_group_help"/>
<name_list name="allowed_group_name_list"/>
diff --git a/indra/newview/skins/default/xui/pl/panel_region_general.xml b/indra/newview/skins/default/xui/pl/panel_region_general.xml
index 601571f62e..1410a2a882 100644
--- a/indra/newview/skins/default/xui/pl/panel_region_general.xml
+++ b/indra/newview/skins/default/xui/pl/panel_region_general.xml
@@ -25,15 +25,15 @@
<check_box label="Odsprzeda偶 dozwolona" name="allow_land_resell_check"/>
<check_box label="艁膮czenie/Dzielenie dozwolone" name="allow_parcel_changes_check"/>
<check_box label="Zablokuj wyszukiwanie" name="block_parcel_search_check" tool_tip="Pozw贸l na wy艣wietlanie nazwy regionu i posiad艂o艣ci w wynikach wyszukiwania"/>
- <spinner label="Limit go艣ci" name="agent_limit_spin"/>
+ <spinner label="Limit Go艣ci" name="agent_limit_spin"/>
<spinner label="Ekstra obiekty" name="object_bonus_spin"/>
<text label="Ograniczenia wieku" name="access_text">
Rodzaj:
</text>
<icons_combo_box label="&apos;Mature&apos;" name="access_combo">
<icons_combo_box.item label="&apos;Adult&apos;" name="Adult" value="42"/>
- <icons_combo_box.item label="&apos;Moderate&apos;" name="Mature" value="21"/>
- <icons_combo_box.item label="&apos;General&apos;" name="PG" value="13"/>
+ <icons_combo_box.item label="&apos;Mature&apos;" name="Mature" value="21"/>
+ <icons_combo_box.item label="&apos;PG&apos;" name="PG" value="13"/>
</icons_combo_box>
<button label="Zastosuj" name="apply_btn"/>
<button label="Teleportuj do Miejsca Startu jednego Rezydenta..." name="kick_btn"/>
diff --git a/indra/newview/skins/default/xui/pl/panel_region_general_layout.xml b/indra/newview/skins/default/xui/pl/panel_region_general_layout.xml
index 84d7d7ab62..ffa8f1e18a 100644
--- a/indra/newview/skins/default/xui/pl/panel_region_general_layout.xml
+++ b/indra/newview/skins/default/xui/pl/panel_region_general_layout.xml
@@ -25,15 +25,15 @@
<check_box label="Odsprzeda偶 dozwolona" name="allow_land_resell_check"/>
<check_box label="艁膮czenie/Dzielenie dozwolone" name="allow_parcel_changes_check"/>
<check_box label="Zablokuj wyszukiwanie" name="block_parcel_search_check" tool_tip="Pozw贸l na wy艣wietlanie nazwy Regionu i Posiad艂o艣ci w wynikach wyszukiwania"/>
- <spinner label="Limit go艣ci" name="agent_limit_spin"/>
+ <spinner label="Limit Go艣ci" name="agent_limit_spin"/>
<spinner label="Ekstra obiekty" name="object_bonus_spin"/>
<text label="Restrykcje wieku" name="access_text">
Rodzaj:
</text>
<combo_box label="Moderuj" name="access_combo">
<combo_box.item label="Adult" name="Adult"/>
- <combo_box.item label="Moderate" name="Mature"/>
- <combo_box.item label="General" name="PG"/>
+ <combo_box.item label="Moderuj" name="Mature"/>
+ <combo_box.item label="Og贸lne" name="PG"/>
</combo_box>
<button label="Zastosuj" name="apply_btn"/>
<button label="Teleportuj do Miejsca Startu jednego Rezydenta..." name="kick_btn"/>
diff --git a/indra/newview/skins/default/xui/pl/panel_region_terrain.xml b/indra/newview/skins/default/xui/pl/panel_region_terrain.xml
index f22b4a5989..917ae91774 100644
--- a/indra/newview/skins/default/xui/pl/panel_region_terrain.xml
+++ b/indra/newview/skins/default/xui/pl/panel_region_terrain.xml
@@ -19,12 +19,12 @@
<slider label="Pora doby" name="sun_hour_slider" />
<button label="Zastosuj" name="apply_btn" />
<button label="Zapisz surowy teren..." name="download_raw_btn"
- tool_tip="Dost臋pne tylko dla w艂a艣cicieli Maj膮tku, nie dla zarz膮dc贸w" />
+ tool_tip="Dost臋pne tylko dla W艂a艣cicieli Maj膮tku, nie dla Zarz膮dc贸w" />
<button label="?" name="download_raw_help" />
<button label="Za艂aduj surowy teren..." name="upload_raw_btn"
- tool_tip="Dost臋pne tylko dla w艂a艣cicieli Maj膮tku, nie dla zarz膮dc贸w" />
+ tool_tip="Dost臋pne tylko dla W艂a艣cicieli Maj膮tku, nie dla Zarz膮dc贸w" />
<button label="?" name="upload_raw_help" />
- <button label="Ustal teren" name="bake_terrain_btn"
+ <button label="Ustal Teren" name="bake_terrain_btn"
tool_tip="Zapami臋taj obecny teren jako punkt odniesienia dla limit贸w podnoszenia i opuszczania" />
<button label="?" name="bake_terrain_help" />
</panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_region_texture.xml b/indra/newview/skins/default/xui/pl/panel_region_texture.xml
index c6ed2457f1..156f3db63f 100644
--- a/indra/newview/skins/default/xui/pl/panel_region_texture.xml
+++ b/indra/newview/skins/default/xui/pl/panel_region_texture.xml
@@ -7,7 +7,7 @@
brak danych
</text>
<text name="detail_texture_text">
- Tekstury terenu (24-bitowe 512x512 pliki .tga wymagane)
+ Tekstury Terenu (24-bitowe 512x512 pliki .tga wymagane)
</text>
<text name="height_text_lbl">
1 (D贸艂)
@@ -22,7 +22,7 @@
4 (G贸ra)
</text>
<text name="height_text_lbl5">
- Zakres poziom贸w dla tekstury
+ Zakres Poziom贸w dla Tekstury
</text>
<text name="height_text_lbl6">
P贸艂nocny-Zach贸d
diff --git a/indra/newview/skins/default/xui/pl/panel_script_ed.xml b/indra/newview/skins/default/xui/pl/panel_script_ed.xml
index fa89a3f727..09c3d8ad04 100644
--- a/indra/newview/skins/default/xui/pl/panel_script_ed.xml
+++ b/indra/newview/skins/default/xui/pl/panel_script_ed.xml
@@ -27,11 +27,11 @@
</menu>
<menu label="Edytuj" name="Edit">
<menu_item_call label="Cofnij" name="Undo"/>
- <menu_item_call label="Do przodu" name="Redo"/>
+ <menu_item_call label="Do Przodu" name="Redo"/>
<menu_item_call label="Wytnij" name="Cut"/>
<menu_item_call label="Kopiuj" name="Copy"/>
<menu_item_call label="Wklej" name="Paste"/>
- <menu_item_call label="Wybierz wszystko" name="Select All"/>
+ <menu_item_call label="Wybierz Wszystko" name="Select All"/>
<menu_item_call label="Odznacz" name="Deselect"/>
<menu_item_call label="Znajd藕 / Zamie艅..." name="Search / Replace..."/>
</menu>
diff --git a/indra/newview/skins/default/xui/pl/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/pl/panel_script_limits_my_avatar.xml
index a52d8aed3d..e1863517a2 100644
--- a/indra/newview/skins/default/xui/pl/panel_script_limits_my_avatar.xml
+++ b/indra/newview/skins/default/xui/pl/panel_script_limits_my_avatar.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="M脫J AWATAR" name="script_limits_my_avatar_panel">
<text name="script_memory">
- Zu偶ycie skrypt贸w przez awatara
+ Zu偶ycie Skrypt贸w przez Awatara
</text>
<text name="loading_text">
艁adowanie...
@@ -9,7 +9,7 @@
<scroll_list name="scripts_list">
<scroll_list.columns label="Rozmiar (kb)" name="size"/>
<scroll_list.columns label="URL" name="urls"/>
- <scroll_list.columns label="Nazwa obiektu" name="name"/>
+ <scroll_list.columns label="Nazwa Obiektu" name="name"/>
<scroll_list.columns label="Lokalizacja" name="location"/>
</scroll_list>
<button label="Od艣wie偶 list臋" name="refresh_list_btn"/>
diff --git a/indra/newview/skins/default/xui/pl/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/pl/panel_script_limits_region_memory.xml
index 070f025087..1419a9c9f6 100644
--- a/indra/newview/skins/default/xui/pl/panel_script_limits_region_memory.xml
+++ b/indra/newview/skins/default/xui/pl/panel_script_limits_region_memory.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="PAMI臉膯 REGIONU" name="script_limits_region_memory_panel">
<text name="script_memory">
- Pami臋膰 skryptu na posiad艂o艣ci
+ Pami臋膰 Skryptu Parceli
</text>
<text name="loading_text">
艁adowanie...
@@ -9,7 +9,7 @@
<scroll_list name="scripts_list">
<scroll_list.columns label="Rozmiar (kb)" name="size"/>
<scroll_list.columns label="URL" name="urls"/>
- <scroll_list.columns label="Nazwa obiektu" name="name"/>
+ <scroll_list.columns label="Nazwa Obiektu" name="name"/>
<scroll_list.columns label="W艂a艣ciciel" name="owner"/>
<scroll_list.columns label="Parcela" name="parcel"/>
<scroll_list.columns label="Lokalizacja" name="location"/>
diff --git a/indra/newview/skins/default/xui/pl/panel_side_tray.xml b/indra/newview/skins/default/xui/pl/panel_side_tray.xml
index ff4ca23a4d..f34fd0e108 100644
--- a/indra/newview/skins/default/xui/pl/panel_side_tray.xml
+++ b/indra/newview/skins/default/xui/pl/panel_side_tray.xml
@@ -2,7 +2,7 @@
<!-- Side tray cannot show background because it is always
partially on screen to hold tab buttons. -->
<side_tray name="sidebar">
- <sidetray_tab description="Prze艂膮cz schowek" name="sidebar_openclose" tab_title="Prze艂膮cz schowek"/>
+ <sidetray_tab description="Prze艂膮cz Panel Boczny" name="sidebar_openclose" tab_title="Prze艂膮cz Panel Boczny"/>
<sidetray_tab description="Miejsce Startu." name="sidebar_home" tab_title="Home">
<panel label="miejsce startu" name="panel_home"/>
</sidetray_tab>
@@ -24,6 +24,6 @@
<panel label="Edytuj Szaf臋" name="sidepanel_inventory"/>
</sidetray_tab>
<sidetray_tab description="Zmie艅 sw贸j obecny wygl膮d i ubranie." name="sidebar_appearance" tab_title="My Appearance">
- <panel label="Edytuj wygl膮d" name="sidepanel_appearance"/>
+ <panel label="Edytuj Wygl膮d" name="sidepanel_appearance"/>
</sidetray_tab>
</side_tray>
diff --git a/indra/newview/skins/default/xui/pl/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/pl/panel_stand_stop_flying.xml
index 9f7f7f1238..0f99f3911c 100644
--- a/indra/newview/skins/default/xui/pl/panel_stand_stop_flying.xml
+++ b/indra/newview/skins/default/xui/pl/panel_stand_stop_flying.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- Width and height of this panel should be synchronized with "panel_modes" in the floater_moveview.xml-->
<panel name="panel_stand_stop_flying">
- <button label="Wsta艅" name="stand_btn" tool_tip="Kliknij tutaj aby wsta膰."/>
+ <button label="Wsta艅" name="stand_btn" tool_tip="Kliknij tutaj by wsta膰."/>
<button label="Zatrzymaj latanie" name="stop_fly_btn" tool_tip="Zatrzymaj latanie"/>
</panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_status_bar.xml b/indra/newview/skins/default/xui/pl/panel_status_bar.xml
index 5e97dd8961..241848c280 100644
--- a/indra/newview/skins/default/xui/pl/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/pl/panel_status_bar.xml
@@ -25,9 +25,9 @@
<text name="balance" tool_tip="M贸j bilans" value="L$20"/>
<button label="Kup L$" name="buyL" tool_tip="Kliknij aby kupi膰 wi臋cej L$"/>
</panel>
- <text name="TimeText" tool_tip="Obecny czas (Pacyficzny)">
+ <text name="TimeText" tool_tip="Obecny Czas (Pacyficzny)">
24:00 AM PST
</text>
- <button name="media_toggle_btn" tool_tip="Start/Stop wszystkie media (Muzyka, Video, WWW)"/>
- <button name="volume_btn" tool_tip="Regulacja g艂o艣no艣ci"/>
+ <button name="media_toggle_btn" tool_tip="Start/Stop Wszystkie Media (Muzyka, Video, WWW)"/>
+ <button name="volume_btn" tool_tip="Regulacja G艂o艣no艣ci"/>
</panel>
diff --git a/indra/newview/skins/default/xui/pl/role_actions.xml b/indra/newview/skins/default/xui/pl/role_actions.xml
index 53530fff5e..ccfa5f222e 100644
--- a/indra/newview/skins/default/xui/pl/role_actions.xml
+++ b/indra/newview/skins/default/xui/pl/role_actions.xml
@@ -1,27 +1,27 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<role_actions>
- <action_set description="Przywileje pozwajaj膮ce na dodawanie i usuwanie cz艂onk贸w oraz pozwalaj膮 nowym cz艂onkom na dodawanie si臋 bez zaproszenia." name="Membership">
- <action description="Zapraszanie do grupy" longdescription="Zapraszanie nowych ludzi do grupy u偶ywaj膮c przycisku &apos;Zapro艣&apos; w sekcji R贸l &gt; Cz艂onkowie" name="member invite"/>
- <action description="Usuwanie z grupy" longdescription="Usuwanie cz艂onk贸w z grupy u偶ywaj膮c &apos;Usu艅 z Grupy&apos;; pod Cz艂onkowie &gt; Cz艂onkowie. W艂a艣ciciel mo偶e usun膮膰 ka偶dego za wyj膮tkiem innego W艂a艣ciciela. Je偶eli nie jeste艣 W艂a艣cicielem mo偶esz tylko usuwa膰 Cz艂onk贸w w Funkcji Ka偶dy i tylko wtedy kiedy nie maj膮 偶adnej innej Funkcji. Aby odebra膰 Cz艂onkowi Funkcj臋 musisz mie膰 Przywilej &apos;Odbieranie Funkcji&apos;." name="member eject"/>
+ <action_set description="Przywileje pozwajaj膮ce na dodawanie i usuwanie Cz艂onk贸w oraz pozwalaj膮 nowym Cz艂onkom na dodawanie si臋 bez zaproszenia." name="Membership">
+ <action description="Zapraszanie do Grupy" longdescription="Zapraszanie nowych Ludzi do Grupy u偶ywaj膮c przycisku &apos;Zapro艣&apos; w sekcji R贸l &gt; Cz艂onkowie" name="member invite"/>
+ <action description="Usuwanie z Grupy" longdescription="Usuwanie Cz艂onk贸w z Grupy u偶ywaj膮c &apos;Usu艅 z Grupy&apos;; pod Cz艂onkowie &gt; Cz艂onkowie. W艂a艣ciciel mo偶e usun膮膰 ka偶dego za wyj膮tkiem innego W艂a艣ciciela. Je偶eli nie jeste艣 W艂a艣cicielem mo偶esz tylko usuwa膰 Cz艂onk贸w w Funkcji Ka偶dy i tylko wtedy kiedy nie maj膮 偶adnej innej Funkcji. Aby odebra膰 Cz艂onkowi Funkcj臋 musisz mie膰 Przywilej &apos;Odbieranie Funkcji&apos;." name="member eject"/>
<action description="Selekcja opcji &apos;Wolne Zapisy&apos; i wyb贸r &apos;Op艂aty Wst臋pnej&apos;" longdescription="Selekcja opcji &apos;Wolne Zapisy&apos; (pozwala nowym Cz艂onkom na dodawanie si臋 bez zaproszenia) i wyb贸r &apos;Op艂aty Wst臋pnej&apos; w Ustawieniach Grupy w sekcji Og贸lne." name="member options"/>
</action_set>
- <action_set description="Przywileje pozwalaj膮ce na dodawanie, usuwanie i edycj臋 funkcji w grupie, oraz na nadawanie i odbieranie funkcji, oraz na przypisywanie Przywilej贸w do Funkcji." name="Roles">
- <action description="Dodawanie funkcji" longdescription="Dodawanie nowych funkcji pod Cz艂onkowie &gt; Funkcje." name="role create"/>
- <action description="Usuwanie funkcji" longdescription="Usu艅 Funkcje w zak艂adce Funkcje &gt; Funkcje" name="role delete"/>
- <action description="Zmiany nazw funkcji, tytu艂贸w i opis贸w i widoczno艣膰 cz艂onk贸w w informacjach o grupie" longdescription="Zmiany nazw Funkcji, Tytu艂贸w i Opis贸w i wyb贸r czy Cz艂onkowie z dan膮 Rol膮 s膮 widoczni Informacji o Grupie w dolnej cz臋艣ci sekcji Funkcji &gt; Funkcje po wybraniu Funkcje." name="role properties"/>
- <action description="Przypisywanie cz艂onk贸w do posiadanych funkcji" longdescription="Przypisywanie Cz艂onk贸w do Funkcji w sekcji Przypisane Funkcje pod Cz艂onkowie &gt; Cz艂onkowie. Cz艂onek z tym Przywilejem mo偶e dodawa膰 Cz艂onk贸w do Funkcji kt贸re sam ju偶 posiada." name="role assign member limited"/>
- <action description="Przypisywanie cz艂onk贸w do wszystkich funkcji" longdescription="Przypisywanie Cz艂onk贸w do wszystkich Funkcji w sekcji Przypisane Funkcje pod Cz艂onkowie &gt; Cz艂onkowie. *UWAGA* Cz艂onek w Funkcji z tym Przywilejem mo偶e przypisa膰 siebie i innych Cz艂onk贸w nie b臋d膮cych W艂a艣cicielami do Funkcji daj膮cych wi臋cej Przywilej贸w ni偶 posiadane obecnie potencjalnie daj膮ce mo偶liwo艣ci zbli偶one do mo偶liwo艣ci W艂a艣ciciela. Udzielaj tego Przywileju z rozwag膮." name="role assign member"/>
- <action description="Odbieranie funkcji" longdescription="Odbieranie Funkcji w sekcji Przypisane Funkcje pod Cz艂onkowie &gt; Cz艂onkowie. Funkcja W艂a艣ciciela nie mo偶e by膰 odebrana." name="role remove member"/>
- <action description="Dodawanie i usuwanie przywilej贸w z funkcji" longdescription="Dodawanie i Usuwanie Przywilej贸w z Funkcji w sekcji Przwileje pod Cz艂onkowie &gt; Funkcje. *UWAGA* Cz艂onek w Funkcji z tym Przywilejem mo偶e przypisa膰 sobie i innym Cz艂onkom nie b臋d膮cym W艂a艣cicielami wszystkie Przywileje potencjalnie daj膮ce mo偶liwo艣ci zbli偶one do mo偶liwo艣ci W艂a艣ciciela. Udzielaj tego Przywileju z rozwag膮." name="role change actions"/>
+ <action_set description="Przywileje pozwalaj膮ce na dodawanie, usuwanie i edycj臋 Funkcji w Grupie, oraz na nadawanie i odbieranie Funkcji, oraz na przypisywanie Przywilej贸w do Funkcji." name="Roles">
+ <action description="Dodawanie Funkcji" longdescription="Dodawanie nowych Funkcji pod Cz艂onkowie &gt; Funkcje." name="role create"/>
+ <action description="Usuwanie Funkcji" longdescription="Usu艅 Funkcje w zak艂adce Funkcje &gt; Funkcje" name="role delete"/>
+ <action description="Zmiany nazw Funkcji, Tytu艂贸w i Opis贸w i widoczno艣膰 Cz艂onk贸w w Informacjach o Grupie" longdescription="Zmiany nazw Funkcji, Tytu艂贸w i Opis贸w i wyb贸r czy Cz艂onkowie z dan膮 Rol膮 s膮 widoczni Informacji o Grupie w dolnej cz臋艣ci sekcji Funkcji &gt; Funkcje po wybraniu Funkcje." name="role properties"/>
+ <action description="Przypisywanie Cz艂onk贸w do posiadanych Funkcji" longdescription="Przypisywanie Cz艂onk贸w do Funkcji w sekcji Przypisane Funkcje pod Cz艂onkowie &gt; Cz艂onkowie. Cz艂onek z tym Przywilejem mo偶e dodawa膰 Cz艂onk贸w do Funkcji kt贸re sam ju偶 posiada." name="role assign member limited"/>
+ <action description="Przypisywanie Cz艂onk贸w do wszystkich Funkcji" longdescription="Przypisywanie Cz艂onk贸w do wszystkich Funkcji w sekcji Przypisane Funkcje pod Cz艂onkowie &gt; Cz艂onkowie. *UWAGA* Cz艂onek w Funkcji z tym Przywilejem mo偶e przypisa膰 siebie i innych Cz艂onk贸w nie b臋d膮cych W艂a艣cicielami do Funkcji daj膮cych wi臋cej Przywilej贸w ni偶 posiadane obecnie potencjalnie daj膮ce mo偶liwo艣ci zbli偶one do mo偶liwo艣ci W艂a艣ciciela. Udzielaj tego Przywileju z rozwag膮." name="role assign member"/>
+ <action description="Odbieranie Funkcji" longdescription="Odbieranie Funkcji w sekcji Przypisane Funkcje pod Cz艂onkowie &gt; Cz艂onkowie. Funkcja W艂a艣ciciela nie mo偶e by膰 odebrana." name="role remove member"/>
+ <action description="Dodawanie i Usuwanie Przywilej贸w z Funkcji" longdescription="Dodawanie i Usuwanie Przywilej贸w z Funkcji w sekcji Przwileje pod Cz艂onkowie &gt; Funkcje. *UWAGA* Cz艂onek w Funkcji z tym Przywilejem mo偶e przypisa膰 sobie i innym Cz艂onkom nie b臋d膮cym W艂a艣cicielami wszystkie Przywileje potencjalnie daj膮ce mo偶liwo艣ci zbli偶one do mo偶liwo艣ci W艂a艣ciciela. Udzielaj tego Przywileju z rozwag膮." name="role change actions"/>
</action_set>
<action_set description="Przywileje pozwalaj膮ce na edycj臋 atrybut贸w Grupy takich jak widoczno艣膰 w wyszukiwarce, status i insygnia." name="Group Identity">
- <action description="Zmiany statusu grupy, insygni贸w, &apos;Widoczno艣膰 w Wyszukiwarce&apos; i widoczno艣膰 Cz艂onk贸w w Informacjach o Grupie." longdescription="Zmiany Statusu Grupy, Insygni贸w, i Widoczno艣膰 w Wyszukiwarce. Dost臋p poprzez ustawienia Og贸lne." name="group change identity"/>
+ <action description="Zmiany Statusu Grupy, Insygni贸w, &apos;Widoczno艣膰 w Wyszukiwarce&apos; i widoczno艣膰 Cz艂onk贸w w Informacjach o Grupie." longdescription="Zmiany Statusu Grupy, Insygni贸w, i Widoczno艣膰 w Wyszukiwarce. Dost臋p poprzez ustawienia Og贸lne." name="group change identity"/>
</action_set>
- <action_set description="Przywileje pozwalaj膮ce na przypisywanie, modyfikacje i sprzeda偶 posiad艂o艣ci grupy. Aby zobaczy膰 okno O Posiad艂o艣ci wybierz grunt prawym klawiszem myszki i wybierz &apos;O Posiad艂o艣ci&apos; albo wybierz ikon臋 &apos;i&apos; w g艂贸wnym menu." name="Parcel Management">
- <action description="Przypisywanie i kupowanie posiad艂o艣ci dla grupy" longdescription="Przypisywanie i kupowanie Posiad艂o艣ci dla Grupy. Dost臋p poprzez O Posiadlo艣ci &gt; ustawienia Og贸lne." name="land deed"/>
- <action description="Oddawanie posiad艂o艣ci do Linden Lab" longdescription="Oddawanie Posiad艂o艣ci do Linden Lab. *UWAGA* Cz艂onek w Funkcji z tym Przywilejem mo偶e porzuca膰 Posiadlo艣ci Grupy poprzez O Posiadlo艣ci &gt; ustawienia Og贸lne oddaj膮c Posiad艂o艣ci za darmo do Linden Labs! Udzielaj tego Przywileju z rozwag膮." name="land release"/>
- <action description="Sprzeda偶 posiad艂o艣ci" longdescription="Sprzeda偶 Posiad艂o艣ci. *UWAGA* Cz艂onek w Funkcji z tym Przywilejem mo偶e sprzedawa膰 Posiadlo艣ci Grupy poprzez O Posiadlo艣ci &gt; ustawienia Og贸lne! Udzielaj tego Przywileju z rozwag膮." name="land set sale info"/>
- <action description="Podzia艂 i 艂膮czenie posiad艂o艣ci" longdescription="Podzia艂 i 艁膮czenie Posiad艂o艣ci. Dost臋p poprzez wybranie gruntu prawym klawiszem myszki, &apos;Edycja Terenu&apos;, i przesuwanie myszk膮 po gruncie wybieraj膮c obszar. Aby podzieli膰 wybierz obszar i naci艣nij &apos;Podziel&apos;. Aby po艂膮czy膰 wybierz dwie albo wi臋cej s膮siaduj膮ce Posiad艂o艣ci i naci艣nij &apos;Po艂膮cz&apos;." name="land divide join"/>
+ <action_set description="Przywileje pozwalaj膮ce na przypisywanie, modyfikacje i sprzeda偶 Posiad艂o艣ci Grupy. Aby zobaczy膰 okno O Posiad艂o艣ci wybierz grunt prawym klawiszem myszki i wybierz &apos;O Posiad艂o艣ci&apos; albo wybierz ikon臋 &apos;i&apos; w g艂贸wnym menu." name="Parcel Management">
+ <action description="Przypisywanie i kupowanie Posiad艂o艣ci dla Grupy" longdescription="Przypisywanie i kupowanie Posiad艂o艣ci dla Grupy. Dost臋p poprzez O Posiadlo艣ci &gt; ustawienia Og贸lne." name="land deed"/>
+ <action description="Oddawanie Posiad艂o艣ci do Linden Lab" longdescription="Oddawanie Posiad艂o艣ci do Linden Lab. *UWAGA* Cz艂onek w Funkcji z tym Przywilejem mo偶e porzuca膰 Posiadlo艣ci Grupy poprzez O Posiadlo艣ci &gt; ustawienia Og贸lne oddaj膮c Posiad艂o艣ci za darmo do Linden Labs! Udzielaj tego Przywileju z rozwag膮." name="land release"/>
+ <action description="Sprzeda偶 Posiad艂o艣ci" longdescription="Sprzeda偶 Posiad艂o艣ci. *UWAGA* Cz艂onek w Funkcji z tym Przywilejem mo偶e sprzedawa膰 Posiadlo艣ci Grupy poprzez O Posiadlo艣ci &gt; ustawienia Og贸lne! Udzielaj tego Przywileju z rozwag膮." name="land set sale info"/>
+ <action description="Podzia艂 i 艁膮czenie Posiad艂o艣ci" longdescription="Podzia艂 i 艁膮czenie Posiad艂o艣ci. Dost臋p poprzez wybranie gruntu prawym klawiszem myszki, &apos;Edycja Terenu&apos;, i przesuwanie myszk膮 po gruncie wybieraj膮c obszar. Aby podzieli膰 wybierz obszar i naci艣nij &apos;Podziel&apos;. Aby po艂膮czy膰 wybierz dwie albo wi臋cej s膮siaduj膮ce Posiad艂o艣ci i naci艣nij &apos;Po艂膮cz&apos;." name="land divide join"/>
</action_set>
<action_set description="Przywileje pozwalaj膮ce na zmian臋 nazwy Posiad艂o艣ci, widoczno艣膰 w wyszukiwarce, widoczno艣膰 w wyszukiwarce, wyb贸r miejsce l膮dowania i zmian臋 ustawie艅 teleportacji (TP)." name="Parcel Identity">
<action description="Selekcja opcji &apos;Pokazuj w szukaniu miejsc&apos; i wyb贸r kategorii" longdescription="Selekcja opcji &apos;Pokazuj w szukaniu miejsc&apos; i wyb贸r kategorii Posiad艂o艣ci pod O Posiad艂o艣ci &gt; Opcje." name="land find places"/>
@@ -33,44 +33,44 @@
<action description="Selekcja opcji &apos;Edycja Terenu&apos;" longdescription="Selekcja opcji &apos;Edycja Terenu&apos;. *UWAGA* O Posiad艂o艣ci &gt; Opcje &gt; Edycja Terenu pozwala ka偶demu na formowanie grunt贸w Twojej Posiad艂o艣ci oraz na przemieszczanie ro艣lin z Linden Labs. Udzielaj tego Przywileju z rozwag膮. Selekcja opcji Edycji Terenu jest dost臋pna poprzez O Posiad艂o艣ci &gt; Opcje." name="land edit"/>
<action description="Dodatkowe ustawienia O Posiad艂o艣ci &gt; Opcje" longdescription="Selekcja opcji &apos;Bezpiecze艅stwo (brak uszkodze艅)&apos; &apos;Latanie&apos;, opcje dla innych Rezydent贸w: &apos;Tworzenie Obiekt贸w&apos;; &apos;Edycja Terenu&apos;, &apos;Zapami臋tywanie Miejsca (LM)&apos;, i &apos;Skrypty&apos; na Posiad艂o艣ciach Grupy pod O Posiad艂o艣ci &gt; Opcje." name="land options"/>
</action_set>
- <action_set description="Przywileje pozwalaj膮ce cz艂onkom na omijanie ogranicze艅 na Posiad艂o艣ciach Grupy." name="Parcel Powers">
- <action description="Pozw贸l na edycj臋 terenu" longdescription="Cz艂onkowie w Funkcji z tym Przywilejem mog膮 zawsze edytowa膰 teren na Posiad艂o艣ciach Grupy." name="land allow edit land"/>
- <action description="Pozw贸l na latanie" longdescription="Cz艂onkowie w Funkcji z tym Przywilejem mog膮 zawsze lata膰 na Posiad艂o艣ciach Grupy." name="land allow fly"/>
- <action description="Pozw贸l na tworzenie obiekt贸w" longdescription="Cz艂onkowie w Funkcji z tym Przywilejem mog膮 zawsze tworzy膰 obiekty na Posiad艂o艣ciach Grupy." name="land allow create"/>
- <action description="Pozw贸l na zapami臋tywanie miejsc (LM)" longdescription="Cz艂onkowie w Funkcji z tym Przywilejem mog膮 zawsze zapami臋tywa膰 miejsca (LM) na Posiad艂o艣ciach Grupy." name="land allow landmark"/>
- <action description="Pozw贸l na wyb贸r Miejsca Startu na posiad艂o艣ciach grupy" longdescription="Cz艂onkowie w Funkcji z tym Przywilejem mog膮 u偶ywa膰 menu 艢wiat &gt; Zapami臋taj Miejsce &gt; Miejsce Startu na Posiad艂o艣ci przypisanej Grupie." name="land allow set home"/>
+ <action_set description="Przywileje pozwalaj膮ce Cz艂onkom na omijanie ogranicze艅 na Posiad艂o艣ciach Grupy." name="Parcel Powers">
+ <action description="Pozw贸l na Edycj臋 Terenu" longdescription="Cz艂onkowie w Funkcji z tym Przywilejem mog膮 zawsze edytowa膰 teren na Posiad艂o艣ciach Grupy." name="land allow edit land"/>
+ <action description="Pozw贸l na Latanie" longdescription="Cz艂onkowie w Funkcji z tym Przywilejem mog膮 zawsze lata膰 na Posiad艂o艣ciach Grupy." name="land allow fly"/>
+ <action description="Pozw贸l na Tworzenie Obiekt贸w" longdescription="Cz艂onkowie w Funkcji z tym Przywilejem mog膮 zawsze tworzy膰 obiekty na Posiad艂o艣ciach Grupy." name="land allow create"/>
+ <action description="Pozw贸l na Zapami臋tywanie Miejsc (LM)" longdescription="Cz艂onkowie w Funkcji z tym Przywilejem mog膮 zawsze zapami臋tywa膰 miejsca (LM) na Posiad艂o艣ciach Grupy." name="land allow landmark"/>
+ <action description="Pozw贸l na wyb贸r Miejsca Startu na Posiad艂o艣ciach Grupy" longdescription="Cz艂onkowie w Funkcji z tym Przywilejem mog膮 u偶ywa膰 menu 艢wiat &gt; Zapami臋taj Miejsce &gt; Miejsce Startu na Posiad艂o艣ci przypisanej Grupie." name="land allow set home"/>
</action_set>
<action_set description="Przywileje pozwalaj膮ce na dawanie i odbieranie dost臋pu do Posiad艂o艣ci Grupy zawieraj膮ce mo偶liwo艣ci unieruchomiania i wyrzucania Rezydent贸w." name="Parcel Access">
- <action description="Zarz膮dzanie list膮 dost臋pu do posiad艂o艣ci" longdescription="Zarz膮dzanie List膮 Dost臋pu do Posiad艂o艣ci pod O Posiad艂o艣ci &gt; Dost臋p." name="land manage allowed"/>
- <action description="Zarz膮dzanie list膮 usuni臋tych z posiad艂o艣ci (Bany)" longdescription="Zarz膮dzanie List膮 Dost臋pu do Posiad艂o艣ci pod O Posiad艂o艣ci &gt; Dost臋p." name="land manage banned"/>
+ <action description="Zarz膮dzanie List膮 Dost臋pu do Posiad艂o艣ci" longdescription="Zarz膮dzanie List膮 Dost臋pu do Posiad艂o艣ci pod O Posiad艂o艣ci &gt; Dost臋p." name="land manage allowed"/>
+ <action description="Zarz膮dzanie List膮 Usuni臋tych z Posiad艂o艣ci (Bany)" longdescription="Zarz膮dzanie List膮 Dost臋pu do Posiad艂o艣ci pod O Posiad艂o艣ci &gt; Dost臋p." name="land manage banned"/>
<action description="Selekcja opcji &apos;Wst臋p P艂atny&apos;" longdescription="Selekcja opcji &apos;Wst臋p P艂atny&apos;; pod O Posiad艂o艣ci &gt; Dost臋p." name="land manage passes"/>
- <action description="Wyrzucanie i unieruchamianie Rezydent贸w na posiad艂o艣ciach" longdescription="Cz艂onkowie w Funkcji z tym Przywilejem mog膮 wp艂ywa膰 na niepo偶膮danych na Posiad艂o艣ciach Grupy Rezydent贸w wybieraj膮c ich prawym klawiszem myszki i wybieraj膮c &apos;;Wyrzu膰&apos; albo &apos;Unieruchom&apos;." name="land admin"/>
+ <action description="Wyrzucanie i unieruchamianie Rezydent贸w na Posiad艂o艣ciach" longdescription="Cz艂onkowie w Funkcji z tym Przywilejem mog膮 wp艂ywa膰 na niepo偶膮danych na Posiad艂o艣ciach Grupy Rezydent贸w wybieraj膮c ich prawym klawiszem myszki i wybieraj膮c &apos;;Wyrzu膰&apos; albo &apos;Unieruchom&apos;." name="land admin"/>
</action_set>
<action_set description="Przywileje pozwalaj膮ce na odsy艂anie obiekt贸w i przemieszczanie ro艣lin z Linden Lab. U偶yteczne przy porz膮dkowaniu i przemieszczaniu ro艣linno艣ci. *UWAGA* Odsy艂anie obiekt贸w jest nieodwracalne." name="Parcel Content">
- <action description="Odsy艂anie obiekt贸w nale偶膮cych do grupy" longdescription="Odsy艂anie obiekt贸w nale偶膮cych do Grupy pod O Posiad艂o艣ci &gt; Obiekty." name="land return group owned"/>
- <action description="Odsy艂anie obiekt贸w przypisanych do grupy" longdescription="Odsy艂anie obiekt贸w przypisanych do Grupy pod O Posiad艂o艣ci &gt; Obiekty." name="land return group set"/>
- <action description="Odsy艂anie obiekt贸w nie przypisanych do grupy" longdescription="Odsy艂anie obiekt贸w nie przypisanych do Grupy pod O Posiad艂o艣ci &gt; Obiekty." name="land return non group"/>
+ <action description="Odsy艂anie obiekt贸w nale偶膮cych do Grupy" longdescription="Odsy艂anie obiekt贸w nale偶膮cych do Grupy pod O Posiad艂o艣ci &gt; Obiekty." name="land return group owned"/>
+ <action description="Odsy艂anie obiekt贸w przypisanych do Grupy" longdescription="Odsy艂anie obiekt贸w przypisanych do Grupy pod O Posiad艂o艣ci &gt; Obiekty." name="land return group set"/>
+ <action description="Odsy艂anie obiekt贸w nie przypisanych do Grupy" longdescription="Odsy艂anie obiekt贸w nie przypisanych do Grupy pod O Posiad艂o艣ci &gt; Obiekty." name="land return non group"/>
<action description="Ogrodnictwo u偶ywaj膮c ro艣lin z Linden Lab" longdescription="Mo偶liwo艣膰 przemieszczenia ro艣lin z Linden Lab. Obiekty te mog膮 zosta膰 odnalezione w Twojej Szafie, w folderze Biblioteka &gt; Folderze Obiekt贸w lub mog膮 zosta膰 stworzone dzi臋ki aktywacji Narz臋dzi Edycji." name="land gardening"/>
</action_set>
<action_set description="Przywileje pozwalaj膮ce na odsy艂anie obiekt贸w i przemieszczenia ro艣lin z Linden Lab. U偶yteczne przy porz膮dkowaniu i przemieszczenia ro艣linno艣ci. *UWAGA* Odsy艂anie obiekt贸w jest nieodwracalne." name="Object Management">
- <action description="Przypisywanie obiekt贸w do grupy" longdescription="Przypisywanie obiekt贸w do Grupy w Narz臋dziach Edycji &gt; Og贸lne" name="object deed"/>
+ <action description="Przypisywanie obiekt贸w do Grupy" longdescription="Przypisywanie obiekt贸w do Grupy w Narz臋dziach Edycji &gt; Og贸lne" name="object deed"/>
<action description="Manipulowanie (wklejanie, kopiowanie, modyfikacja) obiektami nale偶膮cymi do Grupy" longdescription="Manipulowanie (wklejanie, kopiowanie, modyfikacja) obiektami nale偶膮cymi do Grupy w Narz臋dziach Edycji &gt; Og贸lne" name="object manipulate"/>
- <action description="Sprzeda偶 obiekt贸w nale偶膮cych do grupy" longdescription="Sprzeda偶 obiekt贸w nale偶膮cych do Grupy pod Narz臋dzia Edycji &gt; Og贸lne." name="object set sale"/>
+ <action description="Sprzeda偶 obiekt贸w nale偶膮cych do Grupy" longdescription="Sprzeda偶 obiekt贸w nale偶膮cych do Grupy pod Narz臋dzia Edycji &gt; Og贸lne." name="object set sale"/>
</action_set>
<action_set description="Przywileje pozwalaj膮ce na wyb贸r op艂at grupowych, otrzymywanie dochodu i ograniczanie dost臋pu do historii konta grupy." name="Accounting">
<action description="Op艂aty grupowe i doch贸d grupowy" longdescription="Cz艂onkowie w Funkcji z tym Przywilejem b臋d膮 automatycznie wnosi膰 op艂aty grupowe i b臋d膮 otrzymywa膰 doch贸d grupowy. Tzn. b臋d膮 codziennie otrzymywa膰 cz臋艣膰 dochodu ze sprzeda偶y Posiad艂o艣ci Grupy oraz b臋d膮 partycypowa膰 w kosztach og艂osze艅 itp." name="accounting accountable"/>
</action_set>
<action_set description="Przywileje pozwalaj膮ce na wysy艂anie, odbieranie i czytanie Notek Grupy." name="Notices">
- <action description="Wysy艂anie notek" longdescription="Cz艂onkowie w Funkcji z tym Przywilejem mog膮 wysy艂a膰 Notki wybieraj膮c O Grupie &gt; Notek." name="notices send"/>
- <action description="Odbieranie notek i dost臋p do dawniejszych notek" longdescription="Cz艂onkowie w Funkcji z tym Przywilejem mog膮 odbiera膰 nowe i czyta膰 dawniejsze Notki wybieraj膮c O Grupie &gt; Notki." name="notices receive"/>
+ <action description="Wysy艂anie Notek" longdescription="Cz艂onkowie w Funkcji z tym Przywilejem mog膮 wysy艂a膰 Notki wybieraj膮c O Grupie &gt; Notek." name="notices send"/>
+ <action description="Odbieranie Notek i dost臋p do dawniejszych Notek" longdescription="Cz艂onkowie w Funkcji z tym Przywilejem mog膮 odbiera膰 nowe i czyta膰 dawniejsze Notki wybieraj膮c O Grupie &gt; Notki." name="notices receive"/>
</action_set>
<action_set description="Przywileje pozwalaj膮ce na zg艂aszanie Propozycji, g艂osowanie nad Propozycjami i 艣ledzenie historii g艂osowania." name="Proposals">
- <action description="Zg艂aszanie propozycji" longdescription="Cz艂onkowie w Funkcji z tym Przywilejem mog膮 zg艂asza膰 Propozycje do g艂osowania wybieraj膮c O Grupie &gt; Propozycje." name="proposal start"/>
- <action description="G艂osowanie nad propozycjami" longdescription="Cz艂onkowie w Funkcji z tym Przywilejem mog膮 g艂osowa膰 nad Propozycjami zg艂oszonymi do g艂osowania wybieraj膮c O Grupie &gt; Propozycje." name="proposal vote"/>
+ <action description="Zg艂aszanie Propozycji" longdescription="Cz艂onkowie w Funkcji z tym Przywilejem mog膮 zg艂asza膰 Propozycje do g艂osowania wybieraj膮c O Grupie &gt; Propozycje." name="proposal start"/>
+ <action description="G艂osowanie nad Propozycjami" longdescription="Cz艂onkowie w Funkcji z tym Przywilejem mog膮 g艂osowa膰 nad Propozycjami zg艂oszonymi do g艂osowania wybieraj膮c O Grupie &gt; Propozycje." name="proposal vote"/>
</action_set>
<action_set description="Przywileje kontroluj膮ce czat i rozmowy grupowe." name="Chat">
- <action description="Dost臋p do czatu grupowego" longdescription="Cz艂onkowie w Funkcji z tym Przywilejem mog膮 uczestniczy膰 w czacie i rozmowach grupowych." name="join group chat"/>
- <action description="Dost臋p do rozm贸w grupowych" longdescription="Cz艂onkowie w Funkcji z tym Przywilejem mog膮 uczestniczy膰 w rozmowach grupowych. UWAGA: Dost臋p do Czatu Grupowego jest wymagany dla rozm贸w grupowych." name="join voice chat"/>
- <action description="Moderator czatu grupowego" longdescription="Cz艂onkowie w Funkcji z tym Przywilejem mog膮 kontrolowa膰 dost臋p do czatu i rozm贸w grupowych." name="moderate group chat"/>
+ <action description="Dost臋p do Czatu Grupowego" longdescription="Cz艂onkowie w Funkcji z tym Przywilejem mog膮 uczestniczy膰 w czacie i rozmowach grupowych." name="join group chat"/>
+ <action description="Dost臋p do Rozm贸w Grupowych" longdescription="Cz艂onkowie w Funkcji z tym Przywilejem mog膮 uczestniczy膰 w rozmowach grupowych. UWAGA: Dost臋p do Czatu Grupowego jest wymagany dla rozm贸w grupowych." name="join voice chat"/>
+ <action description="Moderator Czatu Grupowego" longdescription="Cz艂onkowie w Funkcji z tym Przywilejem mog膮 kontrolowa膰 dost臋p do czatu i rozm贸w grupowych." name="moderate group chat"/>
</action_set>
</role_actions>
diff --git a/indra/newview/skins/default/xui/pl/sidepanel_appearance.xml b/indra/newview/skins/default/xui/pl/sidepanel_appearance.xml
index cea903769c..2fc07aaaca 100644
--- a/indra/newview/skins/default/xui/pl/sidepanel_appearance.xml
+++ b/indra/newview/skins/default/xui/pl/sidepanel_appearance.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Ubrania" name="appearance panel">
- <string name="No Outfit" value="Bez stroju"/>
+ <string name="No Outfit" value="Bez Ubrania"/>
<string name="Unsaved Changes" value="Zmiany niezachowane"/>
<string name="Now Wearing" value="Obecnie za艂o偶one..."/>
<string name="Changing outfits" value="Zmiana stroju"/>
@@ -12,5 +12,5 @@
</text>
<button label="" name="edit_outfit_btn" tool_tip="Edytuj ten str贸j"/>
</panel>
- <filter_editor label="Przegl膮daj stroje" name="Filter"/>
+ <filter_editor label="Przegl膮daj Ubrania" name="Filter"/>
</panel>
diff --git a/indra/newview/skins/default/xui/pl/sidepanel_item_info.xml b/indra/newview/skins/default/xui/pl/sidepanel_item_info.xml
index e39bbd75c5..3282926bcd 100644
--- a/indra/newview/skins/default/xui/pl/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/pl/sidepanel_item_info.xml
@@ -58,11 +58,11 @@
</text>
<check_box label="Udost臋pnij" name="CheckShareWithGroup" tool_tip="Pozw贸l wszystkim cz艂onkom ustawionej grupy na dzielenie prawa do modyfikacji dla tego obiektu. Musisz przypisa膰 obiekt grupie aby aktywowa膰 ograniczenia wynikaj膮ce z roli."/>
<text name="NextOwnerLabel">
- Nast臋pny w艂a艣ciciel:
+ Nast臋pny W艂a艣ciciel:
</text>
<check_box label="Modyfikuje" name="CheckNextOwnerModify"/>
<check_box label="Kopiuje" name="CheckNextOwnerCopy"/>
- <check_box label="Sprzedaje/Oddaje" name="CheckNextOwnerTransfer" tool_tip="Nast臋pny w艂a艣ciciel mo偶e oddawa膰 lub sprzedawa膰 ten obiekt"/>
+ <check_box label="Sprzedaje/Oddaje" name="CheckNextOwnerTransfer" tool_tip="Nast臋pny W艂a艣ciciel mo偶e oddawa膰 lub sprzedawa膰 ten obiekt"/>
</panel>
<check_box label="Na sprzeda偶" name="CheckPurchase"/>
<combo_box name="combobox sale copy">
diff --git a/indra/newview/skins/default/xui/pl/sidepanel_task_info.xml b/indra/newview/skins/default/xui/pl/sidepanel_task_info.xml
index d8cf456c64..84b5471e49 100644
--- a/indra/newview/skins/default/xui/pl/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/pl/sidepanel_task_info.xml
@@ -83,7 +83,7 @@
<check_box label="Kopiuj" name="checkbox allow everyone copy"/>
<check_box label="Przesu艅" name="checkbox allow everyone move"/>
<text name="GroupLabel">
- Grupie:
+ Groupie:
</text>
<check_box label="Udost臋pnij" name="checkbox share with group" tool_tip="Udost臋pnij prawa do modyfikacji tego obiektu wszystkim cz艂onkom, kt贸rzy posiadaj膮 przywilej modyfikacji obiekt贸w grupy. By ograniczy膰, przypisz obiekt do grupy."/>
<text name="NextOwnerLabel">
diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml
index e2689720bf..e4423dc5ce 100644
--- a/indra/newview/skins/default/xui/pl/strings.xml
+++ b/indra/newview/skins/default/xui/pl/strings.xml
@@ -50,7 +50,7 @@
艁adowanie 艣wiata...
</string>
<string name="LoginInitializingBrowser">
- Inicjalizacja przegl膮darki internetowej...
+ Inicjalizacja Przegl膮darki Internetu...
</string>
<string name="LoginInitializingMultimedia">
Inicjalizacja multimedi贸w...
@@ -62,22 +62,22 @@
Weryfikacja bufora danych na dysku (mo偶e trwa膰 od 60 do 90 sekund)...
</string>
<string name="LoginProcessingResponse">
- Przetwarzanie odpowiedzi...
+ Przetwarzanie Odpowiedzi...
</string>
<string name="LoginInitializingWorld">
- Inicjacja 艣wiata...
+ Inicjalizacja 艣wiata...
</string>
<string name="LoginDecodingImages">
Przetwarzanie obraz贸w...
</string>
<string name="LoginInitializingQuicktime">
- Inicjacja QuickTime...
+ Inicjalizacja QuickTime...
</string>
<string name="LoginQuicktimeNotFound">
- QuickTime nie zosta艂 znaleziony - inicjacja przerwana.
+ QuickTime nie zosta艂 znaleziony - inicjalizacja przerwana.
</string>
<string name="LoginQuicktimeOK">
- QuickTime zainicjowany.
+ QuickTime zainicjalizowany.
</string>
<string name="LoginWaitingForRegionHandshake">
Oczekiwanie na po艂膮czenie z regionem...
@@ -113,7 +113,7 @@
Logowanie nie powiod艂o si臋.
</string>
<string name="Quit">
- Wy艂膮cz program
+ Wy艂膮cz Program
</string>
<string name="AgentLostConnection">
Ten region mo偶e mie膰 problemy. Sprawd藕 pod艂膮czenie do Internetu.
@@ -152,28 +152,28 @@
(Grupa)
</string>
<string name="TooltipForSaleL$">
- Na sprzeda偶: L$[AMOUNT]
+ Na Sprzeda偶: L$[AMOUNT]
</string>
<string name="TooltipFlagGroupBuild">
- Budowanie grupowe
+ Budowanie Grupowe
</string>
<string name="TooltipFlagNoBuild">
- Budowanie zabronione
+ Budowanie Zabronione
</string>
<string name="TooltipFlagNoEdit">
- Edycja zabroniona
+ Edycja Zabroniona
</string>
<string name="TooltipFlagNotSafe">
- Niebezpieczny obszar
+ Niebezpieczny Obszar
</string>
<string name="TooltipFlagNoFly">
- Latanie zabronione
+ Latanie Zabronione
</string>
<string name="TooltipFlagGroupScripts">
- Skrypty grupowe
+ Skrypty Grupowe
</string>
<string name="TooltipFlagNoScripts">
- Skrypty zabronione
+ Skrypty Zabronione
</string>
<string name="TooltipLand">
Posiad艂o艣膰:
@@ -183,10 +183,10 @@
</string>
<string name="TooltipPrice" value="L$[AMOUNT]:"/>
<string name="TooltipHttpUrl">
- Kliknij aby zobaczy膰 zawarto艣膰 tej strony internetowej
+ Kliknij by zobaczy膰 zawarto艣膰 tej strony internetowej
</string>
<string name="TooltipSLURL">
- Kliknij aby zobaczy膰 szczeg贸艂y tego miejsca
+ Kliknij by zobaczy膰 szczeg贸艂y tego miejsca
</string>
<string name="TooltipAgentUrl">
Kliknij aby zobaczyc profil Rezydenta
@@ -210,35 +210,35 @@
Kliknij aby wys艂a膰 temu Rezydentowi zaproszenie do Znajomych
</string>
<string name="TooltipGroupUrl">
- Kliknij aby zobaczy膰 opis tej grupy
+ Kliknij by zobaczy膰 opis tej grupy
</string>
<string name="TooltipEventUrl">
- Klinij aby zobaczy膰 szczeg贸艂y tego wydarzenia
+ Klinij by zobaczy膰 szczeg贸艂y tego wydarzenia
</string>
<string name="TooltipClassifiedUrl">
- Kliknij aby zobaczy膰 t臋 reklam臋
+ Kliknij by zobaczy膰 t臋 reklam臋
</string>
<string name="TooltipParcelUrl">
- Kliknij aby zobaczy膰 opis tej posiad艂o艣ci
+ Kliknij by zobaczy膰 opis tej posiad艂o艣ci
</string>
<string name="TooltipTeleportUrl">
- Kliknij aby teleportowa膰 si臋 do tego miejsca
+ Kliknij by teleportowa膰 si臋 do tego miejsca
</string>
<string name="TooltipObjectIMUrl">
- Kliknij aby zobaczy膰 opis tego obiektu
+ Kliknij by zobaczy膰 opis tego obiektu
</string>
<string name="TooltipMapUrl">
- Kliknij aby zobaczy膰 to miejsce na mapie
+ Kliknij by zobaczy膰 to miejsce na mapie
</string>
<string name="TooltipSLAPP">
- Kliknij aby uruchomi膰 secondlife:// command
+ Kliknij by uruchomi膰 secondlife:// command
</string>
<string name="CurrentURL" value=" Obecny Adres: [CurrentURL]"/>
<string name="SLurlLabelTeleport">
Teleportuj do
</string>
<string name="SLurlLabelShowOnMap">
- Poka偶 na mapie
+ Poka偶 na Mapie
</string>
<string name="SLappAgentMute">
Zablokuj
@@ -286,13 +286,13 @@
Wyszukiwanie...
</string>
<string name="NoneFound">
- Nie odnaleziono.
+ Nieodnaleziono.
</string>
<string name="RetrievingData">
Odzyskiwanie danych...
</string>
<string name="ReleaseNotes">
- O tej wersji
+ O Tej Wersji
</string>
<string name="RELEASE_NOTES_BASE_URL">
http://wiki.secondlife.com/wiki/Release_Notes/
@@ -310,7 +310,7 @@
(brak danych)
</string>
<string name="AvalineCaller">
- Avaline [ORDER]
+ Avaline Caller [ORDER]
</string>
<string name="AssetErrorNone">
OK
@@ -322,7 +322,7 @@
Pobieranie danych: brak pliku
</string>
<string name="AssetErrorNotInDatabase">
- Pobieranie danych: dane nie zosta艂y znalezione w bazie danych
+ Pobieranie danych: dane nie znalezione w bazie danych
</string>
<string name="AssetErrorEOF">
Koniec pliku
@@ -364,22 +364,22 @@
ubrania
</string>
<string name="object">
- obiek
+ obieku
</string>
<string name="note card">
notatki
</string>
<string name="folder">
- folder
+ folderu
</string>
<string name="root">
podstawy
</string>
<string name="lsl2 script">
- skrypt LSL2
+ skryptu LSL2
</string>
<string name="lsl bytecode">
- kod LSL
+ kodu LSL
</string>
<string name="tga texture">
tekstury typu tga
@@ -391,22 +391,22 @@
zdj臋cia
</string>
<string name="lost and found">
- Zgubione i odnalezione
+ Zgubione i Odnalezione
</string>
<string name="targa image">
- obraz typu targa
+ obrau typu targa
</string>
<string name="trash">
Kosz
</string>
<string name="jpeg image">
- obraz typu jpg
+ obrazu typu jpeg
</string>
<string name="animation">
- animacja
+ animacji
</string>
<string name="gesture">
- gesturka
+ gesturki
</string>
<string name="simstate">
simstate
@@ -442,16 +442,16 @@
Salto
</string>
<string name="anim_express_laugh">
- 艢miech do rozpuku
+ 艢miech do Rozpuku
</string>
<string name="anim_express_toothsmile">
- Wielki u艣miech
+ Wielki U艣miech
</string>
<string name="anim_blowkiss">
Ca艂usek
</string>
<string name="anim_express_bored">
- Ale nudy!
+ Ale Nudy!
</string>
<string name="anim_bow">
Uk艂on
@@ -460,7 +460,7 @@
Oklaski
</string>
<string name="anim_courtbow">
- Dworski uk艂on
+ Dworski Uk艂on
</string>
<string name="anim_express_cry">
P艂acz
@@ -499,10 +499,10 @@
Zak艂opotanie
</string>
<string name="anim_angry_fingerwag">
- Gro偶enie paluszkiem
+ Gro偶enie Paluszkiem
</string>
<string name="anim_fist_pump">
- Uda艂o si臋!
+ Uda艂o sie!
</string>
<string name="anim_yoga_float">
Yoga
@@ -517,7 +517,7 @@
Radocha
</string>
<string name="anim_kissmybutt">
- Poca艂uj mnie gdzie艣
+ Poca艂uj Mnie Gdzie艣
</string>
<string name="anim_express_kiss">
Poca艂unek
@@ -538,40 +538,40 @@
Nie-nie-nie
</string>
<string name="anim_punch_onetwo">
- Za ciosem cios
+ Za Ciosem Cios
</string>
<string name="anim_express_open_mouth">
- Szcz臋ka opada
+ Szcz臋ka Opada
</string>
<string name="anim_peace">
Pok贸j
</string>
<string name="anim_point_you">
- Wskazuj na innych
+ Wskazuj na Innych
</string>
<string name="anim_point_me">
- Wskazuj na siebie
+ Wskazuj na Siebie
</string>
<string name="anim_punch_l">
- Uderz z lewej
+ Uderz z Lewej
</string>
<string name="anim_punch_r">
- Uderz z prawej
+ Uderz z Prawej
</string>
<string name="anim_rps_countdown">
- KPN licz
+ KPN Licz
</string>
<string name="anim_rps_paper">
- KPN papier
+ KPN Papier
</string>
<string name="anim_rps_rock">
- KPN kamie艅
+ KPN Kamie艅
</string>
<string name="anim_rps_scissors">
- KPN no偶yce
+ KPN No偶yce
</string>
<string name="anim_express_repulsed">
- Odrzuca mnie
+ Odrzuca Mnie
</string>
<string name="anim_kick_roundhouse_r">
Kopniak
@@ -586,7 +586,7 @@
Krzycz
</string>
<string name="anim_express_shrug">
- Wzrusz ramionami
+ Wzrusz Ramionami
</string>
<string name="anim_express_smile">
U艣miechaj si臋
@@ -595,22 +595,22 @@
Pal
</string>
<string name="anim_smoke_inhale">
- Pal i zaci膮gaj si臋
+ Pal i Zaci膮gaj si臋
</string>
<string name="anim_smoke_throw_down">
- Rzu膰 papierosa
+ Rzu膰 Papierosa
</string>
<string name="anim_express_surprise">
Zaskoczenie
</string>
<string name="anim_sword_strike_r">
- Uderz mieczem
+ Uderz Mieczem
</string>
<string name="anim_angry_tantrum">
W艣ciek艂o艣膰
</string>
<string name="anim_express_tongue_out">
- Poka偶 j臋zyk
+ Poka偶 J臋zyk
</string>
<string name="anim_hello">
Pomachaj
@@ -622,10 +622,10 @@
Zagwi偶d偶
</string>
<string name="anim_express_wink">
- Pu艣膰 oko
+ Pu艣膰 Oko
</string>
<string name="anim_wink_hollywood">
- Pu艣膰 oko (Hollywood)
+ Pu艣膰 Oko (Hollywood)
</string>
<string name="anim_express_worry">
Zmartwienie
@@ -640,13 +640,13 @@
艁adowanie...
</string>
<string name="worldmap_offline">
- Mapa 艢wiata jest niedost臋pna
+ Mapa 艢wiata jest Niedost臋pna
</string>
<string name="worldmap_item_tooltip_format">
[AREA] m虏 L$[PRICE]
</string>
<string name="worldmap_results_none_found">
- Miejsce nieodnalezione.
+ Miejsce Nieodnalezione.
</string>
<string name="Ok">
OK
@@ -664,7 +664,7 @@
krzyczy:
</string>
<string name="ringing">
- 艁膮czenie z rozmowami g艂osem w 艢wiecie...
+ 艁膮czenie z rozmowami g艂osem w 艣wiecie...
</string>
<string name="connected">
Po艂膮czenie uzyskane.
@@ -703,7 +703,7 @@
Usu艅 prawo w艂asno艣ci (zmie艅 na publiczne)
</string>
<string name="LinkAndDelink">
- 艁膮cz / roz艂膮cz z innymi obiektami
+ 艁膮cz / od艂膮cz z innymi obiekt贸w
</string>
<string name="AddAndRemoveJoints">
Dodaj / usu艅 po艂膮czenia z innymi obiektami
@@ -718,10 +718,10 @@
Kontroluj kamer臋
</string>
<string name="SIM_ACCESS_PG">
- &apos;General&apos;
+ &apos;PG&apos;
</string>
<string name="SIM_ACCESS_MATURE">
- &apos;Moderate&apos;
+ &apos;Mature&apos;
</string>
<string name="SIM_ACCESS_ADULT">
&apos;Adult&apos;
@@ -742,7 +742,7 @@
Mainland / Region
</string>
<string name="all_files">
- Wszystkie pliki
+ Wszystkie Pliki
</string>
<string name="sound_files">
D藕wi臋ki
@@ -760,16 +760,16 @@
Za艂aduj
</string>
<string name="targa_image_files">
- Obrazy targa
+ Obrazy Targa
</string>
<string name="bitmap_image_files">
- Obrazy bitmap
+ Obrazy Bitmap
</string>
<string name="avi_movie_file">
Pliki filmowe AVI
</string>
<string name="xaf_animation_file">
- Plik animacji XAF
+ Plik Animacji XAF
</string>
<string name="xml_file">
Plik XML
@@ -778,13 +778,13 @@
Plik RAW
</string>
<string name="compressed_image_files">
- Obrazy skomprensowane
+ Obrazy Skomprensowane
</string>
<string name="load_files">
Za艂aduj pliki
</string>
<string name="choose_the_directory">
- Wybierz katalog
+ Wybierz Katalog
</string>
<string name="AvatarSetNotAway">
Ustaw Nie 艢pij
@@ -838,7 +838,7 @@
Sp贸dnica
</string>
<string name="alpha">
- Ubranie Alpha
+ Ubranie Przezroczyste
</string>
<string name="tattoo">
Tatua偶
@@ -850,37 +850,37 @@
偶adne
</string>
<string name="shirt_not_worn">
- Koszula nie jest za艂o偶ona
+ Koszula nieza艂o偶ona
</string>
<string name="pants_not_worn">
- Spodnie nie s膮 za艂o偶one
+ Spodnie nieza艂o偶one
</string>
<string name="shoes_not_worn">
- Buty nie s膮 za艂o偶one
+ Buty nieza艂o偶one
</string>
<string name="socks_not_worn">
- Skarpetki nie s膮 za艂o偶one
+ Skarpetki nieza艂o偶one
</string>
<string name="jacket_not_worn">
- Kurtka nie jest za艂o偶ona
+ Kurtka nieza艂o偶ona
</string>
<string name="gloves_not_worn">
- R臋kawiczki nie s膮 za艂o偶one
+ R臋kawiczki nieza艂o偶one
</string>
<string name="undershirt_not_worn">
- Podkoszulek nie jest za艂o偶ony
+ Podkoszulek nieza艂o偶ony
</string>
<string name="underpants_not_worn">
- Bielizna nie jest za艂o偶ona
+ Bielizna nieza艂o偶ona
</string>
<string name="skirt_not_worn">
- Sp贸dnica nie jest za艂o偶ona
+ Sp贸dnica nieza艂o偶ona
</string>
<string name="alpha_not_worn">
- Alpha nie jest za艂o偶one
+ Alpha nieza艂o偶one
</string>
<string name="tattoo_not_worn">
- Tatua偶 nie jest za艂o偶ony
+ Tatua偶 nieza艂o偶ony
</string>
<string name="invalid_not_worn">
niewa偶ny
@@ -943,10 +943,10 @@
OK
</string>
<string name="GroupNotifyGroupNotice">
- Og艂oszenie grupowe
+ Og艂oszenie Grupowe
</string>
<string name="GroupNotifyGroupNotices">
- Og艂oszenia grupowe
+ Og艂oszenia Grupowe
</string>
<string name="GroupNotifySentBy">
Wys艂ane przez
@@ -955,40 +955,40 @@
Za艂膮czone:
</string>
<string name="GroupNotifyViewPastNotices">
- Zobacz poprzednie zawiadomienia lub otrzymane wiadomo艣ci tutaj.
+ Zobacz poprzednie zawiadomienia lub otrzymanen wiadomo艣ci tutaj.
</string>
<string name="GroupNotifyOpenAttachment">
- Otw贸rz za艂膮cznik
+ Otw贸rz Za艂膮cznik
</string>
<string name="GroupNotifySaveAttachment">
- Zapisz za艂膮cznik
+ Zapisz Za艂膮cznik
</string>
<string name="TeleportOffer">
Oferta teleportacji
</string>
<string name="StartUpNotifications">
- Nowe zawiadomienia zosta艂y wys艂ane kiedy by艂e艣/by艂a艣 w trybie oddalenia...
+ Nowe zawiadomienia zosta艂y wys艂ane kiedy by艂e艣 w trybie oddalenia...
</string>
<string name="OverflowInfoChannelString">
Masz jeszcze [%d] powiadomie艅
</string>
<string name="BodyPartsRightArm">
- Prawe rami臋
+ Prawe Rami臋
</string>
<string name="BodyPartsHead">
G艂owa
</string>
<string name="BodyPartsLeftArm">
- Lewe rami臋
+ Lewe Rami臋
</string>
<string name="BodyPartsLeftLeg">
- Lewa noga
+ Lewa Noga
</string>
<string name="BodyPartsTorso">
Tu艂贸w
</string>
<string name="BodyPartsRightLeg">
- Prawa noga
+ Prawa Noga
</string>
<string name="GraphicsQualityLow">
Niska
@@ -1000,7 +1000,7 @@
Wysoka
</string>
<string name="LeaveMouselook">
- Wybierz ESC aby powr贸ci膰 do trybu widoku normalnego
+ Wybierz ESC by powr贸ci膰 do trybu widoku normalne
</string>
<string name="InventoryNoMatchingItems">
Nie znaleziono tego czego szukasz? Spr贸buj [secondlife:///app/search/all/[SEARCH_TERM] Szukaj].
@@ -1031,18 +1031,18 @@
<string name="Chat" value=" Czat :"/>
<string name="Sound" value=" D藕wi臋k :"/>
<string name="Wait" value=" --- Zaczekaj :"/>
- <string name="AnimFlagStop" value=" Zatrzymaj animacj臋 :"/>
- <string name="AnimFlagStart" value=" Rozpocznij animacj臋 :"/>
+ <string name="AnimFlagStop" value=" Zatrzymaj Animacj臋 :"/>
+ <string name="AnimFlagStart" value=" Rozpocznij Animacj臋 :"/>
<string name="Wave" value=" Wave"/>
<string name="GestureActionNone" value="呕adne"/>
<string name="HelloAvatar" value=" Witaj, Awatarze!"/>
- <string name="ViewAllGestures" value=" Zobacz wszystkie &gt;&gt;"/>
+ <string name="ViewAllGestures" value=" Zobacz Wszystkie &gt;&gt;"/>
<string name="GetMoreGestures" value="Wi臋cej gesturek &gt;&gt;"/>
<string name="Animations" value=" Animacje,"/>
<string name="Calling Cards" value=" Wizyt贸wki,"/>
<string name="Clothing" value=" Ubrania,"/>
<string name="Gestures" value=" Gesturki,"/>
- <string name="Landmarks" value=" Ulubione miejsca,"/>
+ <string name="Landmarks" value=" Ulubione Miejsca,"/>
<string name="Notecards" value=" Notki,"/>
<string name="Objects" value=" Obiekty,"/>
<string name="Scripts" value=" Skrypty,"/>
@@ -1055,7 +1055,7 @@
Moja Szafa
</string>
<string name="InvFolder My Favorites">
- Moje ulubione
+ Moje Ulubione
</string>
<string name="InvFolder Library">
Biblioteka
@@ -1070,7 +1070,7 @@
Wizyt贸wki
</string>
<string name="InvFolder Landmarks">
- Landmarki
+ Ulubione Miejsca
</string>
<string name="InvFolder Scripts">
Skrypty
@@ -1085,28 +1085,28 @@
Noty
</string>
<string name="InvFolder New Folder">
- Nowy folder
+ Nowy Folder
</string>
<string name="InvFolder Inventory">
Szafa
</string>
<string name="InvFolder Uncompressed Images">
- Nieskompresowane obrazy
+ Nieskompresowane Obrazy
</string>
<string name="InvFolder Body Parts">
- Cz臋艣ci cia艂a
+ Cz臋艣ci Cia艂a
</string>
<string name="InvFolder Trash">
Kosz
</string>
<string name="InvFolder Photo Album">
- Album ze zdj臋ciami
+ Album ze Zdj臋ciami
</string>
<string name="InvFolder Lost And Found">
- Zagubione i odnalezione
+ Zagubione i Odnalezione
</string>
<string name="InvFolder Uncompressed Sounds">
- Nieskompresowane d藕wi臋ki
+ Nieskompresowane D藕wi臋ki
</string>
<string name="InvFolder Animations">
Animacje
@@ -1115,13 +1115,13 @@
Gesturki
</string>
<string name="InvFolder Current Outfit">
- Obecny str贸j
+ Obecne Ubranie
</string>
<string name="InvFolder Initial Outfits">
Pocz膮tkowe stroje
</string>
<string name="InvFolder My Outfits">
- Moje stroje
+ Moje Ubranie
</string>
<string name="InvFolder Accessories">
Akcesoria
@@ -1169,34 +1169,34 @@
Ctrl
</string>
<string name="Chest">
- Klatka piersiowa
+ Klatka Piersiowa
</string>
<string name="Skull">
Czaszka
</string>
<string name="Left Shoulder">
- Lewe rami臋
+ Lewe Rami臋
</string>
<string name="Right Shoulder">
- Prawe rami臋
+ Prawe Rami臋
</string>
<string name="Left Hand">
- Lewa d艂o艅
+ Lewa D艂o艅
</string>
<string name="Right Hand">
- Prawa d艂o艅
+ Prawa D艂o艅
</string>
<string name="Left Foot">
- Lewa stopa
+ Lewa Stopa
</string>
<string name="Right Foot">
- Prawa stopa
+ Prawa Stopa
</string>
<string name="Spine">
Kr臋gos艂up
</string>
<string name="Pelvis">
- Miednica
+ Mednica
</string>
<string name="Mouth">
Usta
@@ -1205,16 +1205,16 @@
Szcz臋ka
</string>
<string name="Left Ear">
- Lewe ucho
+ Lewe Ucho
</string>
<string name="Right Ear">
- Prawe ucho
+ Prawe Ucho
</string>
<string name="Left Eyeball">
- Lewe oko
+ Lewe Oko
</string>
<string name="Right Eyeball">
- Prawe oko
+ Prawe Oko
</string>
<string name="Nose">
Nos
@@ -1223,40 +1223,40 @@
P Rami臋
</string>
<string name="R Forearm">
- P przedrami臋
+ P Przedrami臋
</string>
<string name="L Upper Arm">
- L rami臋
+ L Rami臋
</string>
<string name="L Forearm">
- L przedrami臋
+ L Przedrami臋
</string>
<string name="Right Hip">
- Prawe biodro
+ Prawe Biodro
</string>
<string name="R Upper Leg">
- P udo
+ P Udo
</string>
<string name="R Lower Leg">
- P dolna noga
+ P Dolna Noga
</string>
<string name="Left Hip">
- Lewe biodro
+ Lewe Biodro
</string>
<string name="L Upper Leg">
- L udo
+ L Udo
</string>
<string name="L Lower Leg">
- L dolna noga
+ L Dolna Noga
</string>
<string name="Stomach">
Brzuch
</string>
<string name="Left Pec">
- Lewy Pec
+ Left Pec
</string>
<string name="Right Pec">
- Prawy Pec
+ Right Pec
</string>
<string name="YearsMonthsOld">
[AGEYEARS] [AGEMONTHS]
@@ -1328,49 +1328,49 @@
Proces
</string>
<string name="AcctTypeCharterMember">
- Wyr贸偶niony cz艂onek
+ Wyr贸偶niony Cz艂onek
</string>
<string name="AcctTypeEmployee">
Pracownik Linden Lab
</string>
<string name="PaymentInfoUsed">
- Dane konta u偶ywane
+ Dane Konta U偶ywane
</string>
<string name="PaymentInfoOnFile">
- Dane p艂atnicze na koncie
+ Dane P艂atnicze na Koncie
</string>
<string name="NoPaymentInfoOnFile">
- Brak danych na koncie
+ Brak Danych na Koncie
</string>
<string name="AgeVerified">
- Weryfikacja wieku przeprowadzona
+ Weryfikacja Wieku Przeprowadzona
</string>
<string name="NotAgeVerified">
- Brak weryfikacji wieku
+ Brak Weryfikacji Wieku
</string>
<string name="Center 2">
艢rodek 2
</string>
<string name="Top Right">
- Prawa g贸ra
+ Prawa G贸ra
</string>
<string name="Top">
G贸ra
</string>
<string name="Top Left">
- Lewa g贸ra
+ Lewa G贸ra
</string>
<string name="Center">
艢rodek
</string>
<string name="Bottom Left">
- Lewy d贸艂
+ Lewy D贸艂
</string>
<string name="Bottom">
D贸艂
</string>
<string name="Bottom Right">
- Prawy d贸艂
+ Prawy D贸艂
</string>
<string name="CompileQueueDownloadedCompiling">
Pobieranie zako艅czone, rozpocz臋cie kompilacji
@@ -1391,7 +1391,7 @@
Nieznany b艂膮d podczas pr贸by pobierania
</string>
<string name="CompileQueueTitle">
- Post臋p rekompilacji
+ Post臋p Rekompilacji
</string>
<string name="CompileQueueStart">
rekompiluj
@@ -1403,13 +1403,13 @@
zresetuj
</string>
<string name="RunQueueTitle">
- Ustaw uruchomiaj progres
+ Ustaw Uruchomiaj Progres
</string>
<string name="RunQueueStart">
ustaw uruchom
</string>
<string name="NotRunQueueTitle">
- Ustaw nie uruchamiaj progres
+ Ustaw Nie Uruchamiaj Progres
</string>
<string name="NotRunQueueStart">
ustaw nie uruchamiaj
@@ -1427,7 +1427,7 @@
Skrypt (obiekt poza zasi臋giem)
</string>
<string name="GodToolsObjectOwnedBy">
- Obiekt [OBJECT] nale偶膮cy do [OWNER]
+ Obiekt [OBJECT] nale偶膮cy [OWNER]
</string>
<string name="GroupsNone">
偶adne
@@ -1483,10 +1483,10 @@
Grupy maj膮ce dost臋p: ([ALLOWEDGROUPS], max [MAXACCESS])
</string>
<string name="ScriptLimitsParcelScriptMemory">
- Pami臋膰 skrypt贸w Posiad艂o艣ci
+ Pami臋膰 Skrypt贸w Parceli
</string>
<string name="ScriptLimitsParcelsOwned">
- Posiad艂o艣ci: [PARCELS]
+ Parcele: [PARCELS]
</string>
<string name="ScriptLimitsMemoryUsed">
Pami臋膰 wykorzystana: [COUNT] kb z [MAX] kb; [AVAILABLE] kb pozosta艂o
@@ -1495,7 +1495,7 @@
Pami臋膰 wykorzystana: [COUNT] kb
</string>
<string name="ScriptLimitsParcelScriptURLs">
- Skrypty URL Posiad艂o艣ci
+ Skrypty URL Parceli
</string>
<string name="ScriptLimitsURLsUsed">
URL: [COUNT] z [MAX]; [AVAILABLE] dost臋pne
@@ -1516,7 +1516,7 @@
Wyszukiwanie informacji...
</string>
<string name="ScriptLimitsRequestDontOwnParcel">
- Nie masz pozwolenia na sprawdzenie pasiad艂o艣ci.
+ Nie masz pozwolenia na sprawdzenie parceli.
</string>
<string name="SITTING_ON">
Usi膮d藕 na
@@ -1528,22 +1528,22 @@
G艂owa
</string>
<string name="ATTACH_LSHOULDER">
- Lewe rami臋
+ Lewe Rami臋
</string>
<string name="ATTACH_RSHOULDER">
- Prawe rami臋
+ Rami臋 Prawe
</string>
<string name="ATTACH_LHAND">
- Lewa r臋ka
+ R臋ka Lewa
</string>
<string name="ATTACH_RHAND">
- Prawa r臋ka
+ Prawa R臋ka
</string>
<string name="ATTACH_LFOOT">
- Lewa stopa
+ Lewa Stopa
</string>
<string name="ATTACH_RFOOT">
- Prawa stopa
+ Stopa Prawa
</string>
<string name="ATTACH_BACK">
Plecy
@@ -1558,22 +1558,22 @@
Podbr贸dek
</string>
<string name="ATTACH_LEAR">
- Ucho lewe
+ Ucho Lewe
</string>
<string name="ATTACH_REAR">
- Prawe ucho
+ Prawe Ucho
</string>
<string name="ATTACH_LEYE">
- Lewe oko
+ Lewe Oko
</string>
<string name="ATTACH_REYE">
- Prawe oko
+ Prawe Oko
</string>
<string name="ATTACH_NOSE">
Nos
</string>
<string name="ATTACH_RUARM">
- Prawe g贸rne rami臋
+ Rami臋 P G贸rne
</string>
<string name="ATTACH_RLARM">
Prawe dolne rami臋
@@ -1588,19 +1588,19 @@
Biodro prawe
</string>
<string name="ATTACH_RULEG">
- Prawa g贸rna noga
+ P G贸rna Noga
</string>
<string name="ATTACH_RLLEG">
- Prawa dolna noga
+ Noga P Dolna
</string>
<string name="ATTACH_LHIP">
- Biodro lewe
+ Biodro Lewe
</string>
<string name="ATTACH_LULEG">
- Lewa gorna noga
+ L G贸rna Noga
</string>
<string name="ATTACH_LLLEG">
- Lewa dolna noga
+ Noga L Dolna
</string>
<string name="ATTACH_BELLY">
Brzuch
@@ -1612,28 +1612,28 @@
Lewa klatka
</string>
<string name="ATTACH_HUD_CENTER_2">
- HUD 艣rodek 2
+ HUD 艢rodek 2
</string>
<string name="ATTACH_HUD_TOP_RIGHT">
- HUD prawy g贸rny
+ HUD P G贸rny
</string>
<string name="ATTACH_HUD_TOP_CENTER">
- HUD 艣rodek g贸rny
+ HUD 艢rodek G贸rny
</string>
<string name="ATTACH_HUD_TOP_LEFT">
- HUD lewa gora
+ HUD L G贸ra
</string>
<string name="ATTACH_HUD_CENTER_1">
- HUD 艣rodek 1
+ HUD 艢rodek 1
</string>
<string name="ATTACH_HUD_BOTTOM_LEFT">
- HUD lewa dolna strona
+ HUD Dolna L Strona
</string>
<string name="ATTACH_HUD_BOTTOM">
- HUD dolny
+ HUD Dolny
</string>
<string name="ATTACH_HUD_BOTTOM_RIGHT">
- HUD prawa dolna strona
+ HUD Dolna P Strona
</string>
<string name="Bad attachment point">
Nieprawid艂owy punkt za艂膮czenia
@@ -1648,10 +1648,10 @@
Zawarto艣膰 obiektu
</string>
<string name="PanelContentsNewScript">
- Nowy skrypt
+ Nowy Skrypt
</string>
<string name="BusyModeResponseDefault">
- Rezydent, do kt贸rego wys艂a艂e艣 wiadomo艣膰 prywatn膮 znajduje si臋 w trybie pracy. Oznacza to, i偶 Twoja wiadomo艣膰 zostanie zapisana do przejrzenia po藕niej.
+ Rezydent, do kt贸rego wys艂a艂e艣 wiadomo艣膰 prywatn膮 znajduje si臋 w trybie pracy. Oznacza to, i偶 Twoja wiadomo艣膰 zostanie zapisana do przegl膮dni臋cia po藕niej.
</string>
<string name="NoOutfits">
Nie posiadasz jeszcze 偶adnych stroj贸w. Spr贸buj [secondlife:///app/search/all/ Szukaj]
@@ -1678,13 +1678,13 @@
Brak umowy dla tego maj膮tku.
</string>
<string name="RegionNoCovenantOtherOwner">
- Brak umowy dla tego maj膮tku. Ka偶da posiad艂o艣膰 w tym maj膮tku zosta艂a sprzedana przez w艂a艣ciciela maj膮tku nie Linden Lab. Skontaktuj si臋 z w艂a艣cicielem maj膮tku w celu uzuskania szczeg贸艂贸w sprzeda偶y.
+ Brak umowy dla tego maj膮tku. Ka偶da posiad艂o艣膰 w tym maj膮tku zosta艂a sprzedana przez W艂a艣ciciela maj膮tku nie Linden Lab. Skontaktuj si臋 z w艂a艣cicielem maj膮tku w celu uzuskania szczeg贸艂贸w sprzeda偶y.
</string>
<string name="covenant_last_modified" value="Ostatnio modyfikowano:"/>
<string name="none_text" value=" (偶adne) "/>
<string name="never_text" value=" (nigdy) "/>
<string name="GroupOwned">
- W艂asno艣膰 grupy
+ W艂asno艣膰 Grupy
</string>
<string name="Public">
Publiczny
@@ -1768,7 +1768,7 @@
Zawarto艣膰
</string>
<string name="AcquiredItems">
- Zdobyte obiekty
+ Zdobyte Obiekty
</string>
<string name="Cancel">
Anuluj
@@ -1814,7 +1814,7 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh
Shift+
</string>
<string name="FileSaved">
- Zapisane pliki
+ Zapisane Pliki
</string>
<string name="Receiving">
Otrzymane
@@ -1832,13 +1832,13 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh
PDT
</string>
<string name="Forward">
- Do przodu
+ Do Przodu
</string>
<string name="Left">
- W lewo
+ W Lewo
</string>
<string name="Right">
- W prawo
+ W Prawo
</string>
<string name="Back">
Wr贸膰
@@ -1856,10 +1856,10 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh
Wsch贸d
</string>
<string name="Up">
- W g贸r臋
+ W G贸r臋
</string>
<string name="Down">
- W d贸艂
+ W D贸艂
</string>
<string name="Any Category">
Ka偶da Kategoria
@@ -1868,7 +1868,7 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh
Zakupy
</string>
<string name="Land Rental">
- Wynajem ziemi
+ Wynajem Ziemi
</string>
<string name="Property Rental">
Wynajem Posiad艂o艣ci
@@ -1877,7 +1877,7 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh
Specjalne Oferty
</string>
<string name="New Products">
- Nowe produkty
+ Nowe Produkty
</string>
<string name="Employment">
Praca
@@ -1895,7 +1895,7 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh
呕adne
</string>
<string name="Linden Location">
- Linden Lokalizacja
+ Linden Lokacja
</string>
<string name="Adult">
&apos;Adult&apos;
@@ -1919,7 +1919,7 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh
Przyjazne dla nowych
</string>
<string name="Parks&amp;Nature">
- Parki i Natura
+ Park i Natura
</string>
<string name="Residential">
Mieszkalna
@@ -1937,10 +1937,10 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh
Ty
</string>
<string name="Multiple Media">
- Multimedia
+ Multi Media
</string>
<string name="Play Media">
- Uruchom/Zatrzymaj media
+ Uruchom/Zatrzymaj Media
</string>
<string name="MBCmdLineError">
Podczas realizacji podanej komendy, wyst膮pi艂 b艂膮d.
@@ -1958,14 +1958,14 @@ Je偶eli nadal otrzymujesz ten komunikat, uruchom sw贸j komputer ponownie.
Je偶eli problem nadal wyst臋puje, proponujemy ca艂kowite odinstalowanie aplikacji [APP_NAME] oraz ponown膮 jej instalacj臋.
</string>
<string name="MBFatalError">
- B艂膮d krytyczny
+ B艂膮d Krytyczny
</string>
<string name="MBRequiresAltiVec">
Aplikacja [APP_NAME] wymaga procesora z AltiVec (wersja G4 lub starsza).
</string>
<string name="MBAlreadyRunning">
Aplikacja [APP_NAME] zosta艂a ju偶 uruchomiona.
-Sprawd藕 czy Tw贸j pasek aplikacji nie ma zminimalizowanych okien programu.
+Sprawd藕 czy Tw贸j pasek aplikacji nie ma zminimaliwoanych okien programu.
Je偶eli nadal otrzymujesz ten komunikat, uruchom sw贸j komputer ponownie.
</string>
<string name="MBFrozenCrashed">
@@ -1977,7 +1977,7 @@ Czy chcesz wys艂a膰 raport na temat zawieszenia?
</string>
<string name="MBNoDirectX">
Aplikacja [APP_NAME] nie wykry艂a oprogramowania DirectX 9.0b lub wersji nowszej.
-[APP_NAME] u偶ywa oprogramowaniau DirectX w celu wykrycia dysku twardego i/lub nieaktualizowanych dysk贸w twardych, kt贸re mog膮 przyczyni膰 si臋 do obni偶enia stabilno艣ci, wydajno艣ci systemowej oraz zawiesze艅. Je偶eli chcesz uruchomi膰 aplikacj臋 [APP_NAME] bez problem贸w, doradzamy korzystanie z uruchomionym oprogramowaniem min. DirectX 9.0b.
+[APP_NAME] u偶ywa oprogramowaniau DirectX w celu detekcji dysku twardego i/lub nieaktualizowanych dysk贸w twardych, kt贸re mog膮 przyczyni膰 si臋 do obni偶enia stabilno艣ci, wydajno艣ci systemoweu oraz zawiesze艅. Je偶eli chcesz uruchomi膰 aplikacj臋 [APP_NAME] bez problem贸w, doradzamy korzystanie z uruchomionym oprogramowaniem min. DirectX 9.0b.
Czy chcesz kontynuowa膰?
</string>
@@ -1995,7 +1995,7 @@ Prosimy o pobranie najnowszej wersji ze strony internetowej: www.secondlife.com.
B艂膮d
</string>
<string name="MBFullScreenErr">
- Nie mo偶na uruchomi膰 trybu pe艂noekranowego w proporcji [WIDTH] x [HEIGHT].
+ Niemo偶liwo艣膰 uruchomienia trybu pe艂noekranowego w proporcji [WIDTH] x [HEIGHT].
Uruchomione w oknie.
</string>
<string name="MBDestroyWinFailed">
@@ -2014,11 +2014,11 @@ Uruchomione w oknie.
Brak otrzymania formatu pikselowego opisu
</string>
<string name="MBTrueColorWindow">
- Aplikacja [APP_NAME] wymaga ustawienia koloru na (32-bit) do uruchomienia.
+ Aplikacja [APP_NAME] wymaga ustawienia Koloru na (32-bit) do uruchomienia.
Sprawd藕 swoje ustawienia dla wy艣wietlacza i ustaw tryb koloru na 32-bity.
</string>
<string name="MBAlpha">
- Aplikacja [APP_NAME] nie mo偶e zosta膰 uruchomiona, poniewa偶 nie jest mo偶liwe dostanie si臋 na kana艂 8 bitowy alpha. Najcze艣ciej jest to spowodowane b艂臋dami sterownik贸w karty video.
+ Aplikacja [APP_NAME] nie mo偶e zosta膰 uruchomiona z powodu niemo偶liwo艣ci dostania si臋 na kana艂 8 bitowy alpha. Najcze艣ciej jest to spowodowane b艂臋dami sterownik贸w karty video.
Upewnij si臋, 偶e posiadasz najnowsze aktualizacje sterownik贸w karty video.
Dodatkowo, sprawd藕 czy Tw贸j monitor posiada poprawn膮 konfiguracj臋 koloru (32-bity) w Panelu Kontroli &gt; Display &gt; Ustawienia.
Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
@@ -2068,34 +2068,34 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Pasemka
</string>
<string name="Beady Eyes">
- Oczy za艂zawione
+ Oczy Za艂zawione
</string>
<string name="Belly Size">
- Rozmiar brzucha
+ Rozmiar Brzucha
</string>
<string name="Big">
Du偶y
</string>
<string name="Big Butt">
- Du偶y po艣ladek
+ Du偶y Po艣ladek
</string>
<string name="Big Hair Back">
- Du偶e w艂osy: z ty艂u
+ Du偶e W艂osy: z ty艂u
</string>
<string name="Big Hair Front">
- Du偶e w艂osy: z przodu
+ Du偶e W艂osy: z przodu
</string>
<string name="Big Hair Top">
- Du偶e w艂osy: z g贸ry
+ Du偶e W艂osy: z g贸ry
</string>
<string name="Big Head">
- Du偶a g艂owa
+ Du偶a G艂owa
</string>
<string name="Big Pectorals">
- Du偶e mi臋艣nie piersiowe
+ Du偶e Mi臋艣nie Piersiowe
</string>
<string name="Big Spikes">
- Du偶e kolce
+ Du偶e Kolce
</string>
<string name="Black">
Czarne
@@ -2104,7 +2104,7 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Blond
</string>
<string name="Blonde Hair">
- W艂osy blond
+ W艂osy Blond
</string>
<string name="Blush">
Rumieniec
@@ -2125,10 +2125,10 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Piegi
</string>
<string name="Body Thick">
- Zag臋szczenie cia艂a
+ Zag臋szczenie Cia艂a
</string>
<string name="Body Thickness">
- Grubo艣膰 cia艂a
+ Grubo艣膰 Cia艂a
</string>
<string name="Body Thin">
Szczup艂o艣膰
@@ -2155,25 +2155,25 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Rozmiar czo艂a
</string>
<string name="Bug Eyes">
- Wytrzeszcz oczu
+ Bug Eyes
</string>
<string name="Bugged Eyes">
- Wytrzeszczone oczy
+ Bugged Eyes
</string>
<string name="Bulbous">
Bulwiasty
</string>
<string name="Bulbous Nose">
- Bulwiasty nos
+ Bulwiasty Nos
</string>
<string name="Bushy Eyebrows">
- Bujne brwi
+ Bujne Brwi
</string>
<string name="Bushy Hair">
- Bujne w艂osy
+ Bujne W艂osy
</string>
<string name="Butt Size">
- Rozmiar po艣ladk贸w
+ Rozmiar Po艣ladk贸w
</string>
<string name="bustle skirt">
Bustle Skirt
@@ -2224,7 +2224,7 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Rozszczepienie
</string>
<string name="Close Set Eyes">
- Oczy blisko ustawione
+ Close Set Eyes
</string>
<string name="Closed">
Zamkni臋te
@@ -2236,10 +2236,10 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Zamkni臋te z przodu
</string>
<string name="Closed Left">
- Lewe oko zamkni臋te
+ Lewe Oko zamkni臋te
</string>
<string name="Closed Right">
- Prawe oko zamkni臋te
+ Prawe Oko zamkni臋te
</string>
<string name="Coin Purse">
Coin Purse
@@ -2251,10 +2251,10 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Ko艂nierz z przodu
</string>
<string name="Corner Down">
- K膮cik w d贸艂
+ Corner Down
</string>
<string name="Corner Up">
- K膮cik w g贸r臋
+ Corner Up
</string>
<string name="Creased">
Pognieciony
@@ -2263,7 +2263,7 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Skrzywienie nosa
</string>
<string name="Cuff Flare">
- Szeroki r臋kaw
+ Cuff Flare
</string>
<string name="Dark">
Ciemne
@@ -2278,7 +2278,7 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Gl臋bokie
</string>
<string name="Default Heels">
- Domy艣lne buty na obcasie
+ Domy艣lne Buty na Obcasie
</string>
<string name="Dense">
G臋sto艣膰
@@ -2347,13 +2347,13 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
D艂ugo艣膰 rz臋s
</string>
<string name="Eyeliner">
- Kredka do oczu
+ Eyeliner
</string>
<string name="Eyeliner Color">
- Kolor kredki do oczu&apos;a
+ Kolor Eyeliner&apos;a
</string>
<string name="Eyes Bugged">
- Wytrzeszczone oczy
+ Eyes Bugged
</string>
<string name="Face Shear">
Usuni臋cie twarzy
@@ -2362,7 +2362,7 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Detale twarzy
</string>
<string name="Far Set Eyes">
- Oczy szeroko rozstawione
+ Far Set Eyes
</string>
<string name="Fat Lips">
Grube usta
@@ -2371,7 +2371,7 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Kobieta
</string>
<string name="Fingerless">
- Bez palc贸w
+ Fingerless
</string>
<string name="Fingers">
Palce
@@ -2404,7 +2404,7 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Piegi
</string>
<string name="Front Fringe">
- Przednia grzywka
+ Przednia Grzywka
</string>
<string name="Full Back">
G臋sto艣膰 w艂os贸w po bokach
@@ -2497,13 +2497,13 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Wysokie obcasy
</string>
<string name="High Jaw">
- Wysoka szcz臋ka
+ High Jaw
</string>
<string name="High Platforms">
- Wysokie obcasy
+ High Platforms
</string>
<string name="High and Tight">
- Wysokie i w膮skie
+ High and Tight
</string>
<string name="Higher">
Wy偶ej
@@ -2524,7 +2524,7 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Wewn臋trzna intensywno艣膰 cienia
</string>
<string name="Inner Eye Corner">
- Wewn臋trzny bok oka
+ Wenw臋trzny bok oka
</string>
<string name="Inner Eye Shadow">
Wewn臋trzny cie艅 oka
@@ -2539,25 +2539,25 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Zmarszczki na kurtce
</string>
<string name="Jaw Angle">
- K膮t szcz臋ki
+ Jaw Angle
</string>
<string name="Jaw Jut">
- Wystaj膮ca szcz臋ka
+ Jaw Jut
</string>
<string name="Jaw Shape">
- Kszta艂t szcz臋ki
+ Jaw Shape
</string>
<string name="Join">
Z艂膮cz
</string>
<string name="Jowls">
- Dolna cz臋艣膰 policzka
+ Jowls
</string>
<string name="Knee Angle">
K膮t kolana
</string>
<string name="Knock Kneed">
- Iksowate nogi
+ Knock Kneed
</string>
<string name="Large">
Du偶e
@@ -2566,7 +2566,7 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Du偶e d艂onie
</string>
<string name="Left Part">
- Lewa cz臋艣膰
+ Left Part
</string>
<string name="Leg Length">
D艂ugo艣膰 nogi
@@ -2584,13 +2584,13 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Less Curtains
</string>
<string name="Less Freckles">
- Mniej pieg贸w
+ Mniej Pieg贸w
</string>
<string name="Less Full">
- Mniej pe艂ne
+ Mniej Pe艂ne
</string>
<string name="Less Gravity">
- Mniej ci臋偶aru
+ Mniej Ci臋偶aru
</string>
<string name="Less Love">
Less Love
@@ -2602,7 +2602,7 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Mniej umi臋艣nienia
</string>
<string name="Less Rosy">
- Mniej zar贸偶owione
+ Less Rosy
</string>
<string name="Less Round">
Mniej zaaokr膮glone
@@ -2623,7 +2623,7 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
L偶ejsze
</string>
<string name="Lip Cleft">
- Szeroko艣膰 rozszczepienia g贸rnej wargi
+ Szeroko艣膰 Rozszczepienia g贸rnej wargi
</string>
<string name="Lip Cleft Depth">
G艂臋boko艣膰 rozszczepienia g贸rnej wargi
@@ -2701,7 +2701,7 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Niska szcz臋ka
</string>
<string name="Low Platforms">
- Niskie obcasy
+ Low Platforms
</string>
<string name="Low and Loose">
Niskie i lu藕ne
@@ -2710,10 +2710,10 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Ni偶ej
</string>
<string name="Lower Bridge">
- Dolny mostek
+ Lower Bridge
</string>
<string name="Lower Cheeks">
- Ni偶sze policzki
+ Lower Cheeks
</string>
<string name="Male">
M臋偶czyzna
@@ -2725,7 +2725,7 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Wi臋cej
</string>
<string name="More Blush">
- Bardziej zarumienione
+ More Blush
</string>
<string name="More Body Fat">
Wi臋cej zawarto艣ci tkanki t艂uszczowej
@@ -2734,13 +2734,13 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
More Curtains
</string>
<string name="More Eyeshadow">
- Ciemniejszy cie艅 oczu
+ More Eyeshadow
</string>
<string name="More Freckles">
Wi臋cej pieg贸w
</string>
<string name="More Full">
- Bardziej pe艂ne
+ More Full
</string>
<string name="More Gravity">
Wi臋cej ci臋偶aru
@@ -2761,7 +2761,7 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Wi臋cej umi臋艣nienia
</string>
<string name="More Rosy">
- Bardziej zar贸偶owione
+ More Rosy
</string>
<string name="More Round">
Wi臋cej zaokr膮glenia
@@ -2770,7 +2770,7 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
More Saddle
</string>
<string name="More Sloped">
- Bardziej spadziste
+ More Sloped
</string>
<string name="More Square">
Wi臋cej kwadratowy
@@ -2779,7 +2779,7 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Wi臋cej g贸rnej wargi
</string>
<string name="More Vertical">
- Bardziej pionowe
+ More Vertical
</string>
<string name="More Volume">
Wi臋cej obj臋to艣ci
@@ -2791,10 +2791,10 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
W膮sy
</string>
<string name="Mouth Corner">
- K膮ciki ust
+ K膮ciki Ust
</string>
<string name="Mouth Position">
- Pozycja ust
+ Pozycja Ust
</string>
<string name="Mowhawk">
Mowhawk
@@ -2815,13 +2815,13 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
W膮skie
</string>
<string name="Narrow Back">
- W膮ski ty艂
+ W膮ski Ty艂
</string>
<string name="Narrow Front">
- W膮ski prz贸d
+ W膮ski Prz贸d
</string>
<string name="Narrow Lips">
- W膮skie usta
+ W膮skie Usta
</string>
<string name="Natural">
Naturalne
@@ -2833,10 +2833,10 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Grubo艣膰 karku
</string>
<string name="No Blush">
- Brak rumie艅ca
+ No Blush
</string>
<string name="No Eyeliner">
- Brak kredki do oczu&apos;s
+ Brak Eyeliner&apos;s
</string>
<string name="No Eyeshadow">
Brak cienia pod powiek膮
@@ -2938,7 +2938,7 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Zewn臋trzny cie艅
</string>
<string name="Overbite">
- Przodozgryz g贸rny
+ Overbite
</string>
<string name="Package">
Package
@@ -2947,13 +2947,13 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Pomalowane paznokcie
</string>
<string name="Pale">
- Blady
+ Pale
</string>
<string name="Pants Crotch">
Krocze spodni
</string>
<string name="Pants Fit">
- Dopasowanie spodni
+ Pants Fit
</string>
<string name="Pants Length">
D艂ugo艣膰 spodni
@@ -2968,7 +2968,7 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Cz臋艣膰
</string>
<string name="Part Bangs">
- Cz臋艣膰 grzywki
+ Part Bangs
</string>
<string name="Pectorals">
Mi臋艣nie klatki piersiowej
@@ -2977,7 +2977,7 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Pigment
</string>
<string name="Pigtails">
- Warkocz
+ Pigtails
</string>
<string name="Pink">
R贸偶owe
@@ -2986,16 +2986,16 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
R贸偶
</string>
<string name="Platform Height">
- Wysokie obcasy
+ Platform Height
</string>
<string name="Platform Width">
- Szerokie obcasy
+ Platform Width
</string>
<string name="Pointy">
Pointy
</string>
<string name="Pointy Heels">
- Obcasy pointy
+ Pointy Heels
</string>
<string name="Ponytail">
Kucyk
@@ -3004,22 +3004,22 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Poofy Skirt
</string>
<string name="Pop Left Eye">
- Wyba艂uszone lewe oko
+ Pop Left Eye
</string>
<string name="Pop Right Eye">
- Wyba艂uszone prawe oko
+ Pop Right Eye
</string>
<string name="Puffy">
- Opuchni臋ty
+ Puffy
</string>
<string name="Puffy Eyelids">
- Spuchni臋te powieki
+ Spuchni臋te Powieki
</string>
<string name="Rainbow Color">
- Kolor t臋czy
+ Kolor T臋czy
</string>
<string name="Red Hair">
- Czerwone w艂osy
+ Czerwone W艂osy
</string>
<string name="Regular">
Regularne
@@ -3040,13 +3040,13 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Rudy
</string>
<string name="Rumpled Hair">
- W艂osy w nie艂adzie
+ W艂osy w Nie艂adzie
</string>
<string name="Saddle Bags">
Saddle Bags
</string>
<string name="Scrawny Leg">
- Ko艣cista noga
+ Scrawny Leg
</string>
<string name="Separate">
Odzielne
@@ -3085,13 +3085,13 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Przesu艅 w prawo
</string>
<string name="Shirt Bottom">
- Dolna cz臋艣膰 koszuli
+ Dolna Cz臋艣膰 Koszulki
</string>
<string name="Shirt Fit">
- Dopasowanie koszuli
+ Shirt Fit
</string>
<string name="Shirt Wrinkles">
- Zmarszczki na koszuli
+ Zmarszczki na koszulce
</string>
<string name="Shoe Height">
Wysoko艣膰 buta
@@ -3109,13 +3109,13 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Kr贸tki kark
</string>
<string name="Short Pigtails">
- Kr贸tkie warkoczyki
+ Short Pigtails
</string>
<string name="Short Ponytail">
- Kr贸tki kucyk
+ Kr贸tki Kucyk
</string>
<string name="Short Sideburns">
- Kr贸tkie baczki
+ Kr贸tkie Baczki
</string>
<string name="Short Torso">
Kr贸tki tu艂贸w
@@ -3133,19 +3133,19 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Baczki
</string>
<string name="Sides Hair">
- Boczne w艂osy
+ Boczne W艂osy
</string>
<string name="Sides Hair Down">
- Boczne w艂osy w d贸艂
+ Boczne W艂osy w D贸艂
</string>
<string name="Sides Hair Up">
- Boczne w艂osy do g贸ry
+ Boczne W艂osy do G贸ry
</string>
<string name="Skinny Neck">
- Smuk艂y kark
+ Smuk艂y Kark
</string>
<string name="Skirt Fit">
- Dopasowanie sp贸dnicy
+ Skirt Fit
</string>
<string name="Skirt Length">
D艂ugo艣膰 sp贸dnicy
@@ -3157,19 +3157,19 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
D艂ugo艣膰 r臋kaw贸w
</string>
<string name="Sleeve Looseness">
- Lu藕ne r臋kawy
+ Lu藕no艣膰 r臋kaw贸w
</string>
<string name="Slit Back">
- Rozci臋cie: ty艂
+ Slit: Back
</string>
<string name="Slit Front">
- Rozci臋cie: prz贸d
+ Slit: Front
</string>
<string name="Slit Left">
- Rozci臋cie: po prawej
+ Slit: Left
</string>
<string name="Slit Right">
- Rozci臋cie: po lewej
+ Slit: Right
</string>
<string name="Small">
Ma艂e
@@ -3190,13 +3190,13 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
D艂ugo艣膰 skarpetek
</string>
<string name="Soulpatch">
- Zarost na dolnej wardze
+ Soulpatch
</string>
<string name="Sparse">
- Rzadki
+ Sparse
</string>
<string name="Spiked Hair">
- Kolczaste w艂osy
+ Kolczaste W艂osy
</string>
<string name="Square">
Kwadratowe
@@ -3211,13 +3211,13 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Rozci膮gni臋ta g艂owa
</string>
<string name="Sunken">
- Zapadni臋te
+ Sunken
</string>
<string name="Sunken Chest">
- Zapadni臋ta klatka piersiowa
+ Sunken Chest
</string>
<string name="Sunken Eyes">
- Zapadni臋te oczy
+ Sunken Eyes
</string>
<string name="Sweep Back">
Sweep Back
@@ -3229,10 +3229,10 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Wysoko艣膰
</string>
<string name="Taper Back">
- Zw臋偶enie do przodu
+ Taper Back
</string>
<string name="Taper Front">
- Zw臋偶enie do ty艂u
+ Taper Front
</string>
<string name="Thick Heels">
Grube obcasy
@@ -3295,7 +3295,7 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Uncreased
</string>
<string name="Underbite">
- Przodozgryz
+ Underbite
</string>
<string name="Unnatural">
Nienaturalne
@@ -3322,7 +3322,7 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Wysoko艣膰 talii
</string>
<string name="Well-Fed">
- Dobrze od偶ywiony
+ Well-Fed
</string>
<string name="White Hair">
Bia艂e w艂osy
@@ -3346,10 +3346,10 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Zmarszczki
</string>
<string name="LocationCtrlAddLandmarkTooltip">
- Dodaj do landmark贸w
+ Dodaj do Zapisanych Miejsc
</string>
<string name="LocationCtrlEditLandmarkTooltip">
- Edytuj Landmarki
+ Edytuj Zapisane Miejsca
</string>
<string name="LocationCtrlInfoBtnTooltip">
Zobacz wi臋cej szczeg贸艂贸w na temat obecnej lokalizacji
@@ -3445,7 +3445,7 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Rozmowa g艂osowa...
</string>
<string name="connected-im">
- Po艂膮czono, kliknij Zako艅cz rozmow臋 aby si臋 roz艂膮czy膰
+ Po艂膮czono, kliknij Zako艅cz Rozmowe aby si臋 roz艂膮czy膰
</string>
<string name="hang_up-im">
Rozmowa g艂osowa zako艅czona
@@ -3517,7 +3517,7 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
[SOURCES] powiedzia艂/a co艣 nowego
</string>
<string name="session_initialization_timed_out_error">
- Inicjacja sesji wygas艂a
+ Inicjalizacja sesji wygas艂a
</string>
<string name="voice_morphing_url">
http://secondlife.com/landing/voicemorphing
@@ -3538,7 +3538,7 @@ Je偶eli nadal otrzymujesz ten komunikat, skontaktuj si臋 z [SUPPORT_SITE].
Zap艂acono [AMOUNT]L$ [REASON].
</string>
<string name="for a parcel of land">
- za Posiad艂o艣膰
+ za posiad艂o艣膰
</string>
<string name="for a land access pass">
za przepustk臋 na Posiad艂o艣膰
@@ -3627,7 +3627,7 @@ Raport o Nadu偶yciu
Nowa sp贸dnica
</string>
<string name="New Alpha">
- Nowa alpha
+ Nowa Alpha
</string>
<string name="New Tattoo">
Nowy tatua偶
@@ -3636,7 +3636,7 @@ Raport o Nadu偶yciu
Nieaktualne ubranie/cz臋艣膰 cia艂a
</string>
<string name="New Gesture">
- Nowa gesturka
+ Nowy gest
</string>
<string name="New Script">
Nowy skrypt
@@ -3675,7 +3675,7 @@ Raport o Nadu偶yciu
M臋偶czyzna - Get lost
</string>
<string name="Male - Blow kiss">
- M臋偶czyzna - Ca艂usek
+ M臋偶czyzna - Blow kiss
</string>
<string name="Male - Boo">
M臋偶czyzna - Boo
@@ -3717,7 +3717,7 @@ Raport o Nadu偶yciu
Kobieta - Get lost
</string>
<string name="Female - Blow kiss">
- Kobieta - Ca艂usek
+ Kobieta - Blow kiss
</string>
<string name="Female - Boo">
Kobieta - Boo
@@ -3802,7 +3802,7 @@ Raport o Nadu偶yciu
Funkcje
</string>
<string name="Group Identity">
- Status grupy
+ Status Grupy
</string>
<string name="Parcel Management">
Parcel Management
diff --git a/indra/newview/skins/default/xui/pl/teleport_strings.xml b/indra/newview/skins/default/xui/pl/teleport_strings.xml
index 57fb55bf4c..6c4723dd7e 100644
--- a/indra/newview/skins/default/xui/pl/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/pl/teleport_strings.xml
@@ -2,12 +2,12 @@
<teleport_messages>
<message_set name="errors">
<message name="invalid_tport">
- Przepraszamy, ale pojawi艂 si臋 b艂膮d podczas Twojej pr贸by teleportacji. Aby ponowi膰 teleportacj臋, wyloguj si臋 i zaloguj ponownie.
-Je偶eli nadal otrzymujesz komunikat o b艂臋dzie teleportacji, sprawd藕 [SUPPORT_SITE].
+ Przepraszamy, ale pojawi艂 si臋 b艂膮d podczas Twojej pr贸by teleportacji. By ponowi膰 teleportacj臋, wyloguj si臋 i zaloguj ponownie.
+Je偶eli nadal otrzymujesz komunikat b艂臋du teleportacji, sprawd藕 [SUPPORT_SITE].
</message>
<message name="invalid_region_handoff">
- Przepraszamy, ale pojawi艂 si臋 b艂膮d podczas pr贸by zmiany regionu. Aby ponowi膰 pr贸b臋 przej艣cia na drugi region, wyloguj si臋 i zaloguj ponownie.
-Je偶eli nadal otrzymujesz komunikat o b艂臋dzie podczas przej艣cia na drugi region, sprawd藕 [SUPPORT_SITE].
+ Przepraszamy, ale pojawi艂 si臋 b艂膮d podczas pr贸by zmiany regionu. By ponowi膰 pr贸b臋 przej艣cia na drugi region, wyloguj si臋 i zaloguj ponownie.
+Je偶eli nadal otrzymujesz komunikat b艂臋du podczas przej艣cia na drugi region, sprawd藕 [SUPPORT_SITE].
</message>
<message name="blocked_tport">
Przepraszamy, teleportacja jest chwilowo niedost臋pna. Spr贸buj jeszcze raz.
@@ -26,7 +26,7 @@ Je艣li nadal nie mo偶esz si臋 teleportowa膰 wyloguj si臋 i ponownie zaloguj.
Czekamy na Twoje akcesoria. Mo偶esz poczeka膰 kilka minut lub zrobi膰 relog przed nast臋pn膮 pr贸b膮 teleportacji.
</message>
<message name="too_many_uploads_tport">
- Obecnie ten region ma problemy z 艂adowaniem obiekt贸w, w zwi膮zku z czym teleportacja bardzo sie op贸藕nia.
+ Obecnie ten region ma problemy z 艂adowaniem obiekt贸w w zwi膮zku z czym teleportacja bardzo sie op贸znia.
Spr贸buj jeszcze raz za kilka minut albo teleportuj si臋 do mniej zat艂oczonego miejsca.
</message>
<message name="expired_tport">
@@ -36,7 +36,7 @@ Spr贸buj jeszcze raz za kilka minut albo teleportuj si臋 do mniej zat艂oczonego
Przepraszamy, ale nie uda艂o si臋 przeprowadzi膰 zmiany regionu wystarczaj膮co szybko. Spr贸buj jeszcze raz za kilka minut.
</message>
<message name="no_host">
- Nie mo偶emy znale藕膰 miejsca docelowego. To miejsce mo偶e by膰 chwilowo nieosi膮galne albo przesta艂o istnie膰.
+ Nie mo偶emy znale艣膰 miejsca docelowego. To miejsce mo偶e by膰 chwilowo nieosi膮galne albo przesta艂o istnie膰.
Spr贸buj jeszcze raz za kilka minut.
</message>
<message name="no_inventory_host">
@@ -57,7 +57,7 @@ Spr贸buj jeszcze raz za kilka minut.
Wysy艂anie do miejsca startu.
</message>
<message name="sending_landmark">
- Lokalizowanie landmarka(LM).
+ Lokalizowanie zapami臋tanego miejsca (LM).
</message>
<message name="completing">
Finalizowanie teleportacji.
diff --git a/indra/newview/tests/llmediadataclient_test.cpp b/indra/newview/tests/llmediadataclient_test.cpp
index 5f3dc5b162..495073cf67 100644
--- a/indra/newview/tests/llmediadataclient_test.cpp
+++ b/indra/newview/tests/llmediadataclient_test.cpp
@@ -64,8 +64,8 @@
#define MEDIA_DATA "\
<array> \
-<string>http://foo.example.com</string> \
-<string>http://bar.example.com</string> \
+<string>foo</string> \
+<string>bar</string> \
<string>baz</string> \
</array>"
@@ -161,8 +161,6 @@ public:
{ return mRep["media_data"].size(); }
virtual LLSD getMediaDataLLSD(U8 index) const
{ return mRep["media_data"][(LLSD::Integer)index]; }
- virtual bool isCurrentMediaUrl(U8 index, const std::string &url) const
- { return (mRep["media_data"][(LLSD::Integer)index].asString() == url); }
virtual LLUUID getID() const
{ return mRep["uuid"]; }
virtual void mediaNavigateBounceBack(U8 index)
@@ -563,39 +561,38 @@ namespace tut
mdc->fetchMedia(o2);
mdc->fetchMedia(o3);
mdc->fetchMedia(o4);
-
- ensure("is in queue 1", mdc->isInQueue(o1));
- ensure("is in queue 2", mdc->isInQueue(o2));
- ensure("is in queue 3", mdc->isInQueue(o3));
- ensure("is in queue 4", mdc->isInQueue(o4));
- ensure("post records", gPostRecords->size(), 0);
- // and mark the second and fourth ones dead. Call removeFromQueue when marking dead, since this is what LLVOVolume will do.
+ // and mark the second and fourth ones dead.
dynamic_cast<LLMediaDataClientObjectTest*>(static_cast<LLMediaDataClientObject*>(o2))->markDead();
- mdc->removeFromQueue(o2);
dynamic_cast<LLMediaDataClientObjectTest*>(static_cast<LLMediaDataClientObject*>(o4))->markDead();
- mdc->removeFromQueue(o4);
- // The removeFromQueue calls should remove the second and fourth ones
ensure("is in queue 1", mdc->isInQueue(o1));
- ensure("is not in queue 2", !mdc->isInQueue(o2));
+ ensure("is in queue 2", mdc->isInQueue(o2));
ensure("is in queue 3", mdc->isInQueue(o3));
- ensure("is not in queue 4", !mdc->isInQueue(o4));
+ ensure("is in queue 4", mdc->isInQueue(o4));
ensure("post records", gPostRecords->size(), 0);
::pump_timers();
- // The first tick should process the first item
+ // The first tick should remove the first one
ensure("is not in queue 1", !mdc->isInQueue(o1));
- ensure("is not in queue 2", !mdc->isInQueue(o2));
+ ensure("is in queue 2", mdc->isInQueue(o2));
ensure("is in queue 3", mdc->isInQueue(o3));
- ensure("is not in queue 4", !mdc->isInQueue(o4));
+ ensure("is in queue 4", mdc->isInQueue(o4));
ensure("post records", gPostRecords->size(), 1);
::pump_timers();
- // The second tick should process the third, emptying the queue
+ // The second tick should skip the second and remove the third
+ ensure("is not in queue 2", !mdc->isInQueue(o2));
ensure("is not in queue 3", !mdc->isInQueue(o3));
+ ensure("is in queue 4", mdc->isInQueue(o4));
+ ensure("post records", gPostRecords->size(), 2);
+
+ ::pump_timers();
+
+ // The third tick should skip the fourth one and empty the queue.
+ ensure("is not in queue 4", !mdc->isInQueue(o4));
ensure("post records", gPostRecords->size(), 2);
ensure("queue empty", mdc->isEmpty());
@@ -706,7 +703,7 @@ namespace tut
// queue up all 4 objects. The first two should be in the sorted
// queue [2 1], the second in the round-robin queue. The queues
// are serviced interleaved, so we should expect:
- // 2, 3, 1, 4
+ // 2, 4, 1, 3
mdc->fetchMedia(o1);
mdc->fetchMedia(o2);
mdc->fetchMedia(o3);
@@ -725,8 +722,8 @@ namespace tut
++tick_num;
// 1 The first tick should remove object 2
- ensure(STR(tick_num) + ". is in queue 1", mdc->isInQueue(o1));
ensure(STR(tick_num) + ". is not in queue 2", !mdc->isInQueue(o2));
+ ensure(STR(tick_num) + ". is in queue 1", mdc->isInQueue(o1));
ensure(STR(tick_num) + ". is in queue 3", mdc->isInQueue(o3));
ensure(STR(tick_num) + ". is in queue 4", mdc->isInQueue(o4));
ensure(STR(tick_num) + ". post records", gPostRecords->size(), 1);
@@ -735,21 +732,22 @@ namespace tut
::pump_timers();
++tick_num;
- // 2 The second tick should send object 3
- ensure(STR(tick_num) + ". is in queue 1", mdc->isInQueue(o1));
+ // 2 The second tick should send object 4, but it will still be
+ // "in the queue"
ensure(STR(tick_num) + ". is not in queue 2", !mdc->isInQueue(o2));
- ensure(STR(tick_num) + ". is not in queue 3", !mdc->isInQueue(o3));
+ ensure(STR(tick_num) + ". is in queue 1", mdc->isInQueue(o1));
+ ensure(STR(tick_num) + ". is in queue 3", mdc->isInQueue(o3));
ensure(STR(tick_num) + ". is in queue 4", mdc->isInQueue(o4));
ensure(STR(tick_num) + ". post records", gPostRecords->size(), 2);
- ensure(STR(tick_num) + ". post object id", (*gPostRecords)[1]["body"][LLTextureEntry::OBJECT_ID_KEY].asUUID(), LLUUID(VALID_OBJECT_ID_3));
+ ensure(STR(tick_num) + ". post object id", (*gPostRecords)[1]["body"][LLTextureEntry::OBJECT_ID_KEY].asUUID(), LLUUID(VALID_OBJECT_ID_4));
::pump_timers();
++tick_num;
// 3 The third tick should remove object 1
- ensure(STR(tick_num) + ". is not in queue 1", !mdc->isInQueue(o1));
ensure(STR(tick_num) + ". is not in queue 2", !mdc->isInQueue(o2));
- ensure(STR(tick_num) + ". is not in queue 3", !mdc->isInQueue(o3));
+ ensure(STR(tick_num) + ". is not in queue 1", !mdc->isInQueue(o1));
+ ensure(STR(tick_num) + ". is in queue 3", mdc->isInQueue(o3));
ensure(STR(tick_num) + ". is in queue 4", mdc->isInQueue(o4));
ensure(STR(tick_num) + ". post records", gPostRecords->size(), 3);
ensure(STR(tick_num) + ". post object id", (*gPostRecords)[2]["body"][LLTextureEntry::OBJECT_ID_KEY].asUUID(), LLUUID(VALID_OBJECT_ID_1));
@@ -757,20 +755,22 @@ namespace tut
::pump_timers();
++tick_num;
- // 4 The fourth tick should send object 4
- ensure(STR(tick_num) + ". is not in queue 1", !mdc->isInQueue(o1));
+ // 4 The fourth tick should send object 3, but it will still be
+ // "in the queue"
ensure(STR(tick_num) + ". is not in queue 2", !mdc->isInQueue(o2));
- ensure(STR(tick_num) + ". is not in queue 3", !mdc->isInQueue(o3));
- ensure(STR(tick_num) + ". is not in queue 4", !mdc->isInQueue(o4));
+ ensure(STR(tick_num) + ". is not in queue 1", !mdc->isInQueue(o1));
+ ensure(STR(tick_num) + ". is in queue 3", mdc->isInQueue(o3));
+ ensure(STR(tick_num) + ". is in queue 4", mdc->isInQueue(o4));
ensure(STR(tick_num) + ". post records", gPostRecords->size(), 4);
- ensure(STR(tick_num) + ". post object id", (*gPostRecords)[3]["body"][LLTextureEntry::OBJECT_ID_KEY].asUUID(), LLUUID(VALID_OBJECT_ID_4));
+ ensure(STR(tick_num) + ". post object id", (*gPostRecords)[3]["body"][LLTextureEntry::OBJECT_ID_KEY].asUUID(), LLUUID(VALID_OBJECT_ID_3));
::pump_timers();
++tick_num;
- // 5 The fifth tick should not change the state of anything.
- ensure(STR(tick_num) + ". is not in queue 1", !mdc->isInQueue(o1));
+ // 5 The fifth tick should now identify objects 3 and 4 as no longer
+ // needing "updating", and remove them from the queue
ensure(STR(tick_num) + ". is not in queue 2", !mdc->isInQueue(o2));
+ ensure(STR(tick_num) + ". is not in queue 1", !mdc->isInQueue(o1));
ensure(STR(tick_num) + ". is not in queue 3", !mdc->isInQueue(o3));
ensure(STR(tick_num) + ". is not in queue 4", !mdc->isInQueue(o4));
ensure(STR(tick_num) + ". post records", gPostRecords->size(), 4);
@@ -920,7 +920,7 @@ namespace tut
// But, we need to clear the queue, or else we won't destroy MDC...
// this is a strange interplay between the queue timer and the MDC
- mdc->removeFromQueue(o2);
+ ensure("o2 couldn't be removed from queue", mdc->removeFromQueue(o2));
// tick
::pump_timers();
}
@@ -929,41 +929,4 @@ namespace tut
ensure("refcount of o3", o3->getNumRefs(), 1);
ensure("refcount of o4", o4->getNumRefs(), 1);
}
-
- template<> template<>
- void mediadataclient_object_t::test<13>()
- {
- //
- // Test supression of redundant navigates.
- //
- LOG_TEST(13);
-
- LLMediaDataClientObject::ptr_t o1 = new LLMediaDataClientObjectTest(_DATA(VALID_OBJECT_ID_1,"1.0","true"));
- {
- LLPointer<LLObjectMediaNavigateClient> mdc = new LLObjectMediaNavigateClient(NO_PERIOD,NO_PERIOD);
- const char *TEST_URL = "http://foo.example.com";
- const char *TEST_URL_2 = "http://example.com";
- mdc->navigate(o1, 0, TEST_URL);
- mdc->navigate(o1, 1, TEST_URL);
- mdc->navigate(o1, 0, TEST_URL_2);
- mdc->navigate(o1, 1, TEST_URL_2);
-
- // This should add two requests to the queue, one for face 0 of the object and one for face 1.
-
- ensure("before pump: 1 is in queue", mdc->isInQueue(o1));
-
- ::pump_timers();
-
- ensure("after first pump: 1 is in queue", mdc->isInQueue(o1));
-
- ::pump_timers();
-
- ensure("after second pump: 1 is not in queue", !mdc->isInQueue(o1));
-
- ensure("first post has correct url", (*gPostRecords)[0]["body"][LLMediaEntry::CURRENT_URL_KEY].asString(), std::string(TEST_URL_2));
- ensure("second post has correct url", (*gPostRecords)[1]["body"][LLMediaEntry::CURRENT_URL_KEY].asString(), std::string(TEST_URL_2));
-
- }
- }
-
}
diff --git a/indra/newview/tests/llsecapi_test.cpp b/indra/newview/tests/llsecapi_test.cpp
index 90cacfe3c9..d5b6555b6e 100644
--- a/indra/newview/tests/llsecapi_test.cpp
+++ b/indra/newview/tests/llsecapi_test.cpp
@@ -29,7 +29,6 @@
#include "../llviewernetwork.h"
#include "../test/lltut.h"
#include "../llsecapi.h"
-#include "../llsechandler_basic.h"
#include "../../llxml/llcontrol.h"
@@ -51,21 +50,82 @@ std::string LLControlGroup::getString(const std::string& name)
LLControlGroup gSavedSettings("test");
-
-LLSecAPIBasicHandler::LLSecAPIBasicHandler() {}
-void LLSecAPIBasicHandler::init() {}
-LLSecAPIBasicHandler::~LLSecAPIBasicHandler() {}
-LLPointer<LLCertificate> LLSecAPIBasicHandler::getCertificate(const std::string& pem_cert) { return NULL; }
-LLPointer<LLCertificate> LLSecAPIBasicHandler::getCertificate(X509* openssl_cert) { return NULL; }
-LLPointer<LLCertificateChain> LLSecAPIBasicHandler::getCertificateChain(const X509_STORE_CTX* chain) { return NULL; }
-LLPointer<LLCertificateStore> LLSecAPIBasicHandler::getCertificateStore(const std::string& store_id) { return NULL; }
-void LLSecAPIBasicHandler::setProtectedData(const std::string& data_type, const std::string& data_id, const LLSD& data) {}
-LLSD LLSecAPIBasicHandler::getProtectedData(const std::string& data_type, const std::string& data_id) { return LLSD(); }
-void LLSecAPIBasicHandler::deleteProtectedData(const std::string& data_type, const std::string& data_id) {}
-LLPointer<LLCredential> LLSecAPIBasicHandler::createCredential(const std::string& grid, const LLSD& identifier, const LLSD& authenticator) { return NULL; }
-LLPointer<LLCredential> LLSecAPIBasicHandler::loadCredential(const std::string& grid) { return NULL; }
-void LLSecAPIBasicHandler::saveCredential(LLPointer<LLCredential> cred, bool save_authenticator) {}
-void LLSecAPIBasicHandler::deleteCredential(LLPointer<LLCredential> cred) {}
+class LLSecAPIBasicHandler : public LLSecAPIHandler
+{
+protected:
+ LLPointer<LLCertificateChain> mCertChain;
+ LLPointer<LLCertificate> mCert;
+ LLPointer<LLCertificateStore> mCertStore;
+ LLSD mLLSD;
+
+public:
+ LLSecAPIBasicHandler() {}
+
+ virtual ~LLSecAPIBasicHandler() {}
+
+ // instantiate a certificate from a pem string
+ virtual LLPointer<LLCertificate> getCertificate(const std::string& pem_cert)
+ {
+ return mCert;
+ }
+
+
+ // instiate a certificate from an openssl X509 structure
+ virtual LLPointer<LLCertificate> getCertificate(X509* openssl_cert)
+ {
+ return mCert;
+ }
+
+
+ // instantiate a chain from an X509_STORE_CTX
+ virtual LLPointer<LLCertificateChain> getCertificateChain(const X509_STORE_CTX* chain)
+ {
+ return mCertChain;
+ }
+
+ // instantiate a cert store given it's id. if a persisted version
+ // exists, it'll be loaded. If not, one will be created (but not
+ // persisted)
+ virtual LLPointer<LLCertificateStore> getCertificateStore(const std::string& store_id)
+ {
+ return mCertStore;
+ }
+
+ // persist data in a protected store
+ virtual void setProtectedData(const std::string& data_type,
+ const std::string& data_id,
+ const LLSD& data) {}
+
+ // retrieve protected data
+ virtual LLSD getProtectedData(const std::string& data_type,
+ const std::string& data_id)
+ {
+ return mLLSD;
+ }
+
+ virtual void deleteProtectedData(const std::string& data_type,
+ const std::string& data_id)
+ {
+ }
+
+ virtual LLPointer<LLCredential> createCredential(const std::string& grid,
+ const LLSD& identifier,
+ const LLSD& authenticator)
+ {
+ LLPointer<LLCredential> cred = NULL;
+ return cred;
+ }
+
+ virtual LLPointer<LLCredential> loadCredential(const std::string& grid)
+ {
+ LLPointer<LLCredential> cred = NULL;
+ return cred;
+ }
+
+ virtual void saveCredential(LLPointer<LLCredential> cred, bool save_authenticator) {}
+
+ virtual void deleteCredential(LLPointer<LLCredential> cred) {}
+};
// -------------------------------------------------------------------------------------------
// TUT
diff --git a/indra/newview/tests/llslurl_test.cpp b/indra/newview/tests/llslurl_test.cpp
index b5adb217fd..753151bdd8 100644
--- a/indra/newview/tests/llslurl_test.cpp
+++ b/indra/newview/tests/llslurl_test.cpp
@@ -73,11 +73,6 @@ LLSD LLControlGroup::getLLSD(const std::string& name)
return LLSD();
}
-LLPointer<LLControlVariable> LLControlGroup::getControl(const std::string& name)
-{
- ctrl_name_table_t::iterator iter = mNameTable.find(name);
- return iter == mNameTable.end() ? LLPointer<LLControlVariable>() : iter->second;
-}
LLControlGroup gSavedSettings("test");
diff --git a/indra/newview/tests/llviewernetwork_test.cpp b/indra/newview/tests/llviewernetwork_test.cpp
index d5d6ca671d..2320201ee8 100644
--- a/indra/newview/tests/llviewernetwork_test.cpp
+++ b/indra/newview/tests/llviewernetwork_test.cpp
@@ -73,11 +73,6 @@ LLSD LLControlGroup::getLLSD(const std::string& name)
return LLSD();
}
-LLPointer<LLControlVariable> LLControlGroup::getControl(const std::string& name)
-{
- ctrl_name_table_t::iterator iter = mNameTable.find(name);
- return iter == mNameTable.end() ? LLPointer<LLControlVariable>() : iter->second;
-}
LLControlGroup gSavedSettings("test");